Проводя тестирование на проникновение, довольно часто приходится иметь дело с доменами Active Directory. Домен — группа подключенных к сети компьютеров, которые совместно используют информацию об учетных записях пользователей и политику безопасности. За его управление отвечает контроллер домена, на котором работает служба Active Directory, если используется Windows Server, или Samba — для Unix-подобных систем. Эти службы позволяют хранить информацию о самом домене, всех ее пользователях, настройках и т.д.
Чтобы получить информацию о домене, необходимо использовать специальный инструментарий, например Enum4linux. Этот инструмент написан на Perl и представляет собой обёртку вокруг инструментов из пакета Samba: smbclient, rpclient, net и nmblookup, поэтому необходимо установить сам пакет Samba в качестве зависимости.
Ключевые функции:
Установка
Если говорить про Kali Linux, то пакет присутствует в стандартном репозитории, поэтому проблем с установкой не возникает:
Основные опции для запуска:
Получение списка пользователей
Как правило, название домена определяется автоматически и довольно точно, поэтому указывать его нет необходимости. В случае, если по каким-либо причинам Enum4linux не смог определить этот параметр, то указать вручную его можно через опцию -w, например: -w EXAMPLE.COM. При сборе подобной информации обращаться необходимо непосредственно к контроллеру домена, иначе ответ получен не будет. Чтобы определить, какой сервер является контроллером домена, можно использовать nslookup. Выполняем команду:
В результате мы получим доменное имя DC. Дальше остается только узнать его IP-адрес:
В нашем случае контроллер домена и DNS-сервер — это одна и та же машина, но такой вариант бывает не всегда, поэтому используя этот метод можно довольно точно определить контроллер домена в сети.
Получение списка компьютеров в домене
В текущем релизе функционал работает некорректно.
Пример
Получение списка общих ресурсов
В нашем случае каких-то специфичных общих ресурсов нет.
Получение списка групп и членов
Получение информации об ОС компьютеров в домене
Для выполнения данной команды применительно к Windows необходимо также указать логин/пароль от любой имеющейся доменной учетной записи. Сделать это можно используя опции -u и -p. Получить список пользователей можно с помощью опции -U, которую ранее рассматривали, а пароль — методом перебора для протоколов с включенной доменной аутентификацией, например, SSH или RDP для Linux и Windows соответственно.
Получение информации о парольной политике
Для получения этой информации необходим уже другой инструмент, который называется Polenum, а также логин/пароль от доменной учетной записи. Об этом написано в справочной информации вместе со ссылкой на него. Указав логин/пароль и выбрав один из двух вариантов протоколов (445/SMB или 139/SMB), получим информацию для конкретного компьютера.
Результат
by @Hekpo
Чтобы получить информацию о домене, необходимо использовать специальный инструментарий, например Enum4linux. Этот инструмент написан на Perl и представляет собой обёртку вокруг инструментов из пакета Samba: smbclient, rpclient, net и nmblookup, поэтому необходимо установить сам пакет Samba в качестве зависимости.
Ключевые функции:
- вывод списка пользователей;
- вывод информации о членстве в группе;
- перечисление общих ресурсов;
- определение принадлежности к рабочей группе или к домену;
- идентификация удалённой операционной системы;
- получение информации о парольной политике.
Установка
Если говорить про Kali Linux, то пакет присутствует в стандартном репозитории, поэтому проблем с установкой не возникает:
Код:
# apt install enum4linux
- -U — получение списка пользователей;
- -M — получение списка машин в домене;
- -S — получение списка общих ресурсов;
- -P — получение информации о парольной политике;
- -G — получение списка групп и членов;
- -o — получить информацию об ОС на компьютерах.
Получение списка пользователей
Код:
# enum4linux -U 192.168.60.100
Как правило, название домена определяется автоматически и довольно точно, поэтому указывать его нет необходимости. В случае, если по каким-либо причинам Enum4linux не смог определить этот параметр, то указать вручную его можно через опцию -w, например: -w EXAMPLE.COM. При сборе подобной информации обращаться необходимо непосредственно к контроллеру домена, иначе ответ получен не будет. Чтобы определить, какой сервер является контроллером домена, можно использовать nslookup. Выполняем команду:
Код:
# nslookup -q=SRV _ldap._tcp.dc._msdcs.EXAMPLE.COM 192.168.60.100, где
EXAMPLE.COM— название домена;192.168.60.100— IP-адрес DNS-сервера.
В результате мы получим доменное имя DC. Дальше остается только узнать его IP-адрес:
Код:
# nslookup master.example.com 192.168.60.100
В нашем случае контроллер домена и DNS-сервер — это одна и та же машина, но такой вариант бывает не всегда, поэтому используя этот метод можно довольно точно определить контроллер домена в сети.
Получение списка компьютеров в домене
В текущем релизе функционал работает некорректно.
Пример
Получение списка общих ресурсов
Код:
# enum4linux -S 192.168.60.100
В нашем случае каких-то специфичных общих ресурсов нет.
Получение списка групп и членов
Код:
# enum4linux -G 192.168.60.100
Получение информации об ОС компьютеров в домене
Код:
# enum4linux -o 192.168.60.101
Для выполнения данной команды применительно к Windows необходимо также указать логин/пароль от любой имеющейся доменной учетной записи. Сделать это можно используя опции -u и -p. Получить список пользователей можно с помощью опции -U, которую ранее рассматривали, а пароль — методом перебора для протоколов с включенной доменной аутентификацией, например, SSH или RDP для Linux и Windows соответственно.
Получение информации о парольной политике
Для получения этой информации необходим уже другой инструмент, который называется Polenum, а также логин/пароль от доменной учетной записи. Об этом написано в справочной информации вместе со ссылкой на него. Указав логин/пароль и выбрав один из двух вариантов протоколов (445/SMB или 139/SMB), получим информацию для конкретного компьютера.
Код:
# ./polenum.py ivanov:OIWjdjsid92@192.168.60.101 139/SMB
Результат
by @Hekpo