Инвентаризация *NIX

Инвентаризация *NIX
Итак, сейчас бы я хотел перейти к одной из самых противоречивых тем в инвентаризации. Противоречивой потому, что никакой важной информации вы можете не собрать вообще, т.к. nix системы основываются на безопасности TCP – IP протокола (которая отрабатывалась годами) практически без нововведений.
*** Оговорюсь, что Linux имеет больше нововведений.
Поэтому, если вам попадётся система, которая была построена с умом, то ничего полезного вы можете и не собрать, но если опять же кто – то решил установить всего и побольше, то… система может стать очень слабой в защите.
Для меня лично вопрос, как написать эту статью правильно(!!!) стоит очень остро. Причина опять же стоит в том, что «сказать лишнее» может почти каждый сетевой демон, но при этом я не могу посвятить своё внимание тому, как «разговорить» Apache или SendMail (это можно найти и в более узких статьях или багтаках, адвисори и пр.). Поэтому придётся сказать о том, что более популярно и что, скорее всего, сработает. Поэтому, эта статья будет очень короткая.
Для начала скажу, что стоит прочитать про сканирование портов, прежде чем читать дальше.
В *nix системах есть очень популярные пакеты, которые, безусловно нас и интересуют. Например, уже печально известная служба RPC (Remote Procedure Call), а так же NFS (Network File System) и NIS (Network Information Service).
Давайте сначала посмотрим на RPC. Эта служба необходима программам, которые обмениваются информацией по сети. Специально для этого и был разработан RPC. На основе данного протокола работает программа rpcbind. Её назначение: быть посредником между клиентом и портом. Программа динамически назначает порты клиентам. Для инвентаризации RPC существует утилита rpcinfo, которая работает подобно finger (рассмотрю ниже).
Ну, мы опять столкнёмся с тем, что нам нужен список открытых портов, т.к. нам нужен порт 111. Если мы знаем, что мы имеем дело с Sun, то порт 32771.
/* Имейте в виду, что в реальности вы, скорее всего, аналогичного не увидите, как это было в моих предыдущих статьях, которые писались, используя дырявые машины, которые и по сей день в сети. Сейчас я смоделировал такую машину в своей сети, чтобы сэкономить время на поиске дырявой машины в Интернете. Поэтому в листингах вы будете видеть в основном то, что имеет в себе уязвимости и на что вы должны обращать внимание при инвентаризации */
---------------------------------------
#rpcinfo –p XX.XXX.XX.XXX
program vers proto port
100000 2 tcp 111 rpcbind
100002 3 udp 712 rusersd
100005 1 udp 635 mountd
100003 2 udp 2049 nfs
100004 2 tcp 778 ypserv
... ... ... ... ...
---------------------------------------
Отсюда мы видим то, что у нас есть демон rusersd (который может нам показать более подробную информацию), ypserv (сервер службы NIS), mountd, от которого мы получим информацию с помощью showmount –e (более подробно рассмотрю ниже). Можно посмотреть есть ли сервер rquotad: rpcinfo –n 111 –t 100011
В службе RPC серверу rquotad соответствует номер 100011.
Так мы можем легко узнать, что запущено в системе, а так же получить кое какую дополнительную информацию. Конечно, мы могли бы получить это и с помощью сканирования портов, но! Обратите внимание, что мы видим udp и tcp, а сканеру пришлось бы сканировать udp дополнительно.
Теперь рассмотрим NFS.
Здесь всё достаточно просто. Если мы знаем, что у нас (100003 2 udp 2049 nfs), то мы вводим и видим шары
--------------------------------------
showmount -e XX.XXX.XX.XXX
export list for XX.XXX.XX.XXX
/pub (everyone)
/source (everyone)
/loc (everyone)
/usr user
--------------------------------------
Стоит заметить, что теперь в состав Linux входит альтернатива NFS Samba! В которой исправлены недочёты NFS, само собой добавлены свои. Samba использует протокол SMB (Server Message Block), это является своего рода точкой прикосновения *nix и Windows систем, касательно совместно используемых файлов и принтеров.
Следующий более «лакомый кусочек» называется NIS. Иногда мне кажется, что она была разработана нашим правительством. Идея хороша, но реализация всё загубила. Итак, её хорошая сторона то, что она создана для поддержки распределённой базы данных сетевой информации. А теперь реализация… с помощью простого RPC запроса NIS серверу мы получим любую карту NIS. Карта представляет собой файл, в котором содержится информация каждого узла домена, вплоть до паролей :-(
Для начала нам нужно узнать доменное имя. Для этого можно воспользоваться pscan(валяется всюду). Она методом подбора предоставит нам всю информацию.
У нас есть список файлов и соответствующих им карт.
___________________________________________________________
/etc/hosts | hosts.byname, hosts.byaddr
/etc/networks | networks.byname, networks.byaddr
/etc/passwd | passwd.byname, passwd.byuid
/etc/group | group.byname, group.bygid
/etc/services | services.byname, services.bynumber
/etc/rpc | rpc.byname, rpc.bynumber
/etc/protocols | protocols.byname, protocols.bynumber
/usr/lib/aliases | mail.aliases
-----------------------------------------------------------
Забегу вперёд и скажу, что весь взлом может закончится здесь ---> #ypx -o passwd.byname -g target.remote.com
Дальше скормим пароли какой нибудь любимой проге, которая нам их в нормальном виде представит, ну и предположим рута можем и не добыть, но пароли некоторые у нас будут.
Представим, что у нас есть догадки об именах пользователей системы, либо мы хотим проверить есть ли определённый пользователь в системе. В этом деле нам поможет SMTP (Simple Mail Transfer Protocol). Среди всех прочих, у него есть 2 полезные команды:
//в конфигах их можно отключить
1. vrfy – подтверждает что введённое имя имеется в системе
2. expn – отображает реальный адрес доставки письма. Но если мы имеем дело со списком рассылки (mailing list), то поа покажет всех членов эого списка.
Пример:
---------------------------------------
#telnet XX.XXX.XX.XXX 25
Trying XX.XXX.XX.XXX...
Connected to XX.XXX.XX.XXX.
Escape character is ‘^]’.
220 mail.target.ru ESMTP Postfix
vrfy john
252 john
expn mike
250 mike
quit
221 mail.target.ru closing connection
----------------------------------------
Теперь очень кратко. Если мы увидели, что открыт 79 порт, значит мы имеем дело с finger. Очень старая утилита, но всё же ещё встречается. Просто на самом деле она быладействительно нужна на заре интернета, когда он не был таким простым в использовании. Finger служила для того, чтобы кто либо мог получить информацию о пользователях.
Лучше всего всё посмотреть на примере:
--------------------------------------------
#finger –l @haha.lala.com

[haha.lala.com]
Login: root
Directory: /root
On since Thu Jan 28 23:12 (PST) on tty1 2 minutes idle
(messages off)
On since Thu Jan 28 23:12 (PST) on ttyp1 12 minutes idle
1 mail
Plan:
I am root
My phone num 555.555.55
--------------------------------------------
В общем то ничего особенного, но мы сможем посмотреть какие пользователи есть, как долго они неактивны. Например можем посмотреть приглядывает ли сейчас за системой рут, в нашем случае я работал активно, так что лезть не стоило бы.
В заключении хочу сказать, что для каждого дистрибутива можно найти свои методы инвентаризации, может быть когда нибудь я соберу всю возможную информацию по этой теме. Выложу как дополнения а-ля “Инвентаризация RedHat”. То, что было изложено выше так или иначе поможет в понимании инвентаризации системы Unix и её клонов. Можно найти много систем с подобными брешами. В моей будущей статье я опишу, как использовать брандмауэр себе на пользу. Как маршрутизатор. Поэтому в сети откроются многие совсем незащищённые Unix, Windows и пр. системы. Инвентаризация каждой в отдельности будет тоже очень полезна, т.к. они и будут точками вторжения в сеть. Вот там и вспомним ВСЁ.

Дата створення/оновлення: 25.05.2018

stop war in Ukraine

ukrTrident

stand with Ukraine