Данная статья содержит подробный разбор лабораторной работы с TryHackMe, посвященной тестированию на проникновение Active Directory. Приятного прочтения!
Дисклеймер: Все методы примененные в статье продемонстрированы в учебных целях.
Шаг 0: Сканирование с помощью Nmap
Любой пентест начинается со сканирования внутренней сети. У нас есть ip машины, поэтому запустим nmap для того, чтобы посмотреть открытые порты и запущенные на них сервисы
nmap -sC -sV -T4 10.10.108.102
-sC -> опция, запускающая сканирование на основе скриптов;
-sV -> определяет версии служб, запущенных на открытых портах;
-T4 -> время сканирования.
Шаг 1: Перебор активных пользователей
После проведения рекона, следующей стадией становится поиск так называемых низко висящих фруктов путем перебора валидных имен пользователей для проведения дальнейшей атаки. Воспользуемся утилитой Kerbrute
./kerbrute_linux_amd64 userenum userlist.txt --dc spookysec.local -d spookysec.local -t 10
userenum -> перебор активных пользователей;
--dc -> местонахождение контроллера домена;
-d -> область действия, домен;
-t -> количество потоков.
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 -> делает запрос без пароля
Шаг 3: Локальный перебор TGT
Успешно перехватив TGT-билет с помощью утилиты JohnTheRipper локально запустим перебор паролей
john --rules --wordlist=rockyou.txt hash.txt
JohnTheRipper - утилита для брутфорса хэшей по словарю. Умеет по соли определять вид хеша, что упрощает работу;
--rules -> перебор не просто по словарю, а по определенным правилам, то есть изменение в словах регистра и тому подобное;
--wordlist-> указываем словарь, который будет использоваться для перебора. И в конце указываем файл, содержащий хэш.
Шаг 4: Используем SMBClient для проверки shares
Получив пароль в открытом виде, попробуем посмотреть доступные нам smb shares для поиска на них полезных нам файлов
smbclient -L \\\\spookysec.local\\ -U 'svc-admin'
-L -> при подключении получает список shares, доступных на хосте;
-U -> указание пользователя, под которым происходит подключение через SMB.
Интересным для нас будет вероятно всего share /backup.Заходим на \spookysec.local\backup и забираем файл backup_credentials.txt
В файле лежит строка, закодированная в base64 строка YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw
Декодим ее:
backup@spookysec.local:backup2517860
Шаг 5: Используем secretsdump, чтобы сдампить хеши
Получив пароль, мы можем сдампить секреты пользователей с помощью модуля secretsdump из утилиты Impacket
secretsdump.py spookysec.local/backup:backup2517860@spookysec.local
secretsdump - модуль из утилиты Impacket, позволяющий удаленно сдампить хэши с контроллера домена. Для этого указываем домен, пользователя, его пароль и ip целевого хоста
Как это работает?
По сути secretsdump делает так называемый DCSync, то есть репликацию домена. Это атака, при проведении которой хакер выдает себя за DC с целью получения секретов пользователей для дальнейшего перемещения по домену. Как это происходит:
Происходит обнаружение DC по доменному имени или по ip-адресу.
Далее хакер от лица DC посылает запрос на репликацию учетных данных пользователей к другому контроллеру домена через функцию GetNCChanges(), используя Directory Replication Service (DRS) Remote Protocol.
Все эти данные сохраняются в ветви реестра SYSTEM, SECURITY,SAM и дальше мы извлекаем их из реестра целевой машины.
Вот и все, что мы хотели вам показать в этом кратком разборе! Помните, нет ни одной системы, полностью защищенной от атак!