Attacktive Directory
Основная задача - эксплуатация уязвимого AD домена с помощью утилит:
- kerbrute
- inpacket:GetNPUsers
- inpacket:secretsdump
- inpacket:psexec
- evil-winrm
Описание задания можно найти на TryHackme
Сканирование
Проведение разведки с nmap на предмет наличия открытых портов:
sudo nmap -T4 -p- IP-ADDRESS
#После получения сведений о портах
sudo nmap -sV -sC -O -p 53,80,88,135,139,389,445,464,593,636,3268,3269,3389 IP-ADDRESS
Обнаружены открытые порты 53,80,88,135,139,389,445,464,593,636,3268,3269,3389
Получены версии, наименование ПО работающего на открытых портах
Обращаем внимание на 88, 389, 3268, 139 порты - на хосте развернут Kerberos, LDAP, smb. Запоминаем определившийся домен и имя контроллера домена.
пробуем получить информацию о smb:
Не находим ничего, что говорит о том, что анонимных шар не доступно.
Далее, пробуем получить информацию о доменных пользователях с помощью kerbrute:
./kerbrute_linux_amd64 userenum -d spookysec.local --dc spookysec.local userlist.txt
# userlist.txt - файл вида domain/username
получаем список пользователей. Обращаем внимание на svc-admin@spookysec.local и backup@spookysec.local
Эскплуатация уязвимости и брутфорс
В качестве проверки доступности уязвимости ASREPRoast используем утилиту GetNPUsers из состава проекта Impacket
Уязвимость заключается в том, что в случае наличия пользователей с установленным флагом DONT_REQUIRE_PREAUTH
имеется возможность без наличия доменной учётки получить сообщение зашифрованное ключём пользователя, который, в свою очередь, получается из его пароля. Далее, из этого сообщения можно попытаться сбрутить сам пароль:
Получаем хэш пользователя src-admin@spookysec.local
Через hashcat wiki узнаем тип хэша и скармливаем его Джону:
Зная пароль от src-admin@spookysec.local
просматриваем доступные шары SMB:
Находим файл под названием backup_credentials содержимое которого представляет собой последовательность символов.
Узнаем кодировку через hashes.com - base64.
Идем на base64decode.com для получения исходного текста, получаем логин/пароль пользователя backup.
Как правило, пользователь с таким наименованием, должен использоваться для бэкапов, поэтому у него с высокой долей вероятности есть права SeBackup
Пробуем получить NTDS.dit, для извлечени хэша пароля локального администратора:
RCE
Имея на руках хэш локального Администратора запускаем psexec или evil-winrm:
# Impacket:psexec
python3.9 psexec.py -hashes HASH-TYPE:HASH Administrator@IP-ADDRESS
# HASH-TYPE - как правило LM - aad3b435b51404eeaad3b435b51404ee
# evil-winrm
evil-winrm -i IP-ADDRESS -u Administrator -H HASH
получаем cmd под локальным администратором. Забираем флаги в C:\Users\%USERNAME%\Desktop