PrintNightmare
adDéfinition
Vulnérabilité critique (CVE-2021-34527) du service Print Spooler Windows permettant l'exécution de code à distance avec privilèges SYSTEM.
Fonctionnement technique
PrintNightmare désigne un ensemble de vulnérabilités critiques (CVE-2021-34527 et CVE-2021-1675) affectant le service Windows Print Spooler. La faille permet à un attaquant authentifié d'exécuter du code arbitraire avec les privilèges SYSTEM en exploitant la fonction RpcAddPrinterDriverEx, qui charge des drivers d'imprimante depuis un partage réseau contrôlé par l'attaquant.
L'exploitation fonctionne en deux temps. L'attaquant héberge une DLL malveillante sur un partage SMB accessible depuis la machine cible. Il appelle ensuite la fonction RPC du Spooler en spécifiant le chemin UNC vers cette DLL comme driver d'imprimante. Le service Print Spooler, s'exécutant en tant que SYSTEM, charge et exécute la DLL malveillante avec des privilèges élevés.
La variante LPE (Local Privilege Escalation) exploite la même fonction localement pour élever les privilèges d'un utilisateur standard à SYSTEM. La variante RCE (Remote Code Execution) utilise le protocole MS-RPRN ou MS-PAR pour cibler des machines distantes. Sur les contrôleurs de domaine, l'exploitation est particulièrement dévastatrice car elle accorde un accès SYSTEM au DC.
Cas d'usage
PrintNightmare a été massivement exploité en 2021-2022 par des groupes de ransomware comme Vice Society et Magniber pour obtenir des privilèges SYSTEM sur les systèmes ciblés. La combinaison avec d'autres techniques (DCSync, credential dumping) permettait de compromettre l'intégralité du domaine Active Directory.
En test d'intrusion, PrintNightmare reste pertinent sur les systèmes non patchés. L'attaquant compromet d'abord un compte utilisateur standard (phishing, password spraying), puis exploite PrintNightmare pour obtenir les privilèges SYSTEM, ce qui donne accès aux credentials en mémoire via Mimikatz.
Outils et implémentation
L'exploit CVE-2021-1675.py (cube0x0) utilise Impacket pour exploiter la vulnérabilité à distance. SharpPrintNightmare est une implémentation en C# utilisable avec des frameworks C2 comme Cobalt Strike. Mimikatz intègre un module d'exploitation PrintNightmare natif.
Pour la détection, Sysmon (Event ID 11 - FileCreate dans le répertoire des drivers) et les logs Print Spooler (Event ID 316, 808) sont essentiels. Sigma propose des règles de détection prêtes à l'emploi. DVCP (Driver Verification Code Protection) renforce la vérification des drivers signés.
Défense / Bonnes pratiques
La première mesure est d'appliquer les patches Microsoft de juillet 2021 et les mises à jour ultérieures qui corrigent les différentes variantes. Si le patch ne peut pas être appliqué immédiatement, désactivez le service Print Spooler sur les serveurs qui n'ont pas besoin d'imprimer, en particulier les contrôleurs de domaine : Stop-Service Spooler -Force; Set-Service Spooler -StartupType Disabled.
Activez la politique « Point and Print Restrictions » via GPO pour empêcher les utilisateurs standard d'installer des drivers d'imprimante. Configurez la clé de registre RestrictDriverInstallationToAdministrators à 1. Limitez les machines autorisées à se connecter au service RPC du Spooler via le pare-feu Windows.
Surveillez les indicateurs de compromission : création de fichiers DLL dans C:\Windows\System32\spool\drivers, appels RPC au service Spooler depuis des machines inhabituelles, et processus spoolsv.exe engendrant des processus suspects (cmd.exe, powershell.exe).
Articles associés
Voir nos articles détaillés sur ce sujet.
Besoin d'un expert sur ce sujet ?
Audit, pentest, conformité ISO 27001, développement IA sécurisé — demandez un devis gratuit.
Demander un devis