Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-1675 — # Pädagogischer Proof-of-Concept für PrintNightmare (CVE-2021-1675/34527) mit simuliertem, nicht funktionsfähigem Payload, Angriffsablauf-Analyse, MITRE-Zuordnung, Erkennungsanleitung und Behebungsmaßnahmen. | Kitploit
Tools/GitHubGitHub/hkenzokimura/cve-2021-1675
Privilege EscalationSchwachstellenanalyseExploitationLaterale BewegungPenetrationstestsLernen & Bildung
GitHubhkenzokimura/cve-2021-1675

CVE-2021-1675

# Pädagogischer Proof-of-Concept für PrintNightmare (CVE-2021-1675/34527) mit simuliertem, nicht funktionsfähigem Payload, Angriffsablauf-Analyse, MITRE-Zuordnung, Erkennungsanleitung und Behebungsmaßnahmen.

Repository anzeigen
vor 5h 24mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

🖨️ CVE-2021-1675 — PrintNightmare Windows Print Spooler RCE/LPE

Typ: Proof of Concept — Simuliert (nicht funktionsfähig) CVE: CVE-2021-1675 + CVE-2021-34527 CVSS: 7.8 (LPE) / 8.8 (RCE) Alias: PrintNightmare Gepatcht: Juni/Juli 2021 — KB5004945 Zur CISA KEV hinzugefügt: Juli 2021

⚠️ Das Payload dieses PoC ist ausdrücklich fiktiv und nicht bösartig — nur 4 Bytes DCE/RPC-Header, gefolgt vom Funktionsnamen in ASCII. Es führt keinen Code aus, installiert keinen Treiber, erhöht keine Privilegien. Ausschließlich für Lernzwecke und die Entwicklung von Erkennungsregeln.

Developed by: HKK


$ cat ./vulnerability_summary.txt

CVE-2021-1675, bekannt als PrintNightmare, ist eine kritische Schwachstelle für Remote Code Execution und Local Privilege Escalation im Windows Print Spooler-Dienst. Der Fehler ermöglicht es Angreifern, beliebigen Code mit SYSTEM-Rechten auszuführen, indem die Funktion RpcAddPrinterDriverEx() ausgenutzt wird, die für die Remote-Installation von Druckertreibern ohne angemessene Zugriffskontrollvalidierung verwendet wird.

Ursprünglich als LPE (CVSS 7.8) eingestuft und im Patch Tuesday vom Juni 2021 gepatcht, stufte Microsoft die Schwachstelle am 21. Juni als RCE (CVSS 8.8) neu ein. Um Verwirrung zu vermeiden, erhielt der RCE-Vektor eine neue Kennung, CVE-2021-34527 — beide werden allgemein als PrintNightmare bezeichnet.


$ cat ./timeline.txt

root@kitploit:~
Jun 08, 2021  Microsoft veröffentlicht ersten Patch im Patch Tuesday — CVE-2021-1675 (LPE, CVSS 7.8)
Jun 21, 2021  Microsoft stuft als RCE neu ein (CVSS 8.8)
Jun 29, 2021  Forscher veröffentlichen versehentlich PoC — in der Annahme, es sei dieselbe bereits gepatchte Schwachstelle
Jul 01, 2021  CVE-2021-34527 für den RCE-Vektor vergeben — getrennt von der ursprünglichen LPE
Jul 02, 2021  Microsoft veröffentlicht Notfall-Patch außerhalb der Reihe: KB5004945
Jul 2021      CISA nimmt in den Known Exploited Vulnerabilities Catalog auf
              Aktive Ausnutzung durch Ransomware-Gruppen (Vice Society, Magniber, etc.)

$ cat ./architecture.txt

Warum ist der Print Spooler ein so wertvoller Vektor?

root@kitploit:~
┌──────────────────────────────────────────────────────────────────────────┐
│              PRINTNIGHTMARE — ANGRIFFSABLAUF                              │
│                                                                          │
│  ANGREIFER (authentifizierter Benutzer)   WINDOWS PRINT SPOOLER          │
│                                                  (spoolsv.exe)           │
│  1. Authentifizierung mit beliebigem      ┌────────────────────────────┐ │
│     gültigem Domänenkonto                 │  Läuft als SYSTEM          │ │
│                    │                      │  Standardmäßig aktiv auf   │ │
│  2. Verbindung über RPC zum               │  allen Windows, inkl. DCs  │ │
│     Named Pipe \pipe\spoolss              └──────────────┬─────────────┘ │
│                    │                                     │               │
│  3. Aufruf von RpcAddPrinterDriverEx()                   │               │
│     mit Pfad zu bösartiger DLL ─────────────────────────►│               │
│     (UNC: \\attacker\share\evil.dll)                     │               │
│                                           ┌────────────▼────────────┐   │
│                                           │ Print Spooler lädt den  │   │
│                                           │ Treiber (DLL) als       │   │
│                                           │ SYSTEM, ohne Herkunft   │   │
│                                           │ oder Integrität zu      │   │
│                                           │ prüfen                  │   │
│                                           └────────────┬────────────┘   │
│                                                        │                 │
│  ◄── RCE / LPE als SYSTEM ────────────────────────────┘                 │
│       Neuer Admin-Benutzer, Reverse Shell,                               │
│       Ransomware-Bereitstellung, etc.                                    │
│                                                                          │
│  ─────────────────────────────────────────────────────────────────────  │
│  DIESER POC: nur TCP-Connect + 25 Bytes → kein echtes RPC → kein Exploit│
└──────────────────────────────────────────────────────────────────────────┘

$ cat ./design_decisions.md

1. Analyse des fiktiven Payloads

root@kitploit:~
fake_rpc_payload = b"\x05\x00\x0b\x03RpcAddPrinterDriverEx"

Dieses Payload hat 25 Bytes und demonstriert zwei Konzepte gleichzeitig:

Bytes 0-3: Legitimer DCE/RPC-Header

Bytes 4-24: Funktionsname in ASCII

RpcAddPrinterDriverEx — der Name der verwundbaren Funktion, im Klartext.

Warum funktioniert dieses Payload nicht als echter Exploit?

Ein legitimes RPC-BIND würde nach dem 4-Byte-Header Folgendes erfordern:

root@kitploit:~
- max_xmit_frag     (2 Bytes)
- max_recv_frag     (2 Bytes)
- assoc_group_id    (4 Bytes)
- num_ctx_items     (1 Byte)
- context_elem[]    → Interface-UUID von MS-RPRN:
                      {12345678-1234-ABCD-EF00-0123456789AB}
- transfer_syntaxes → NDR-UUID

Ohne diese Struktur weist Windows das Paket sofort zurück. Das Payload ist effektiv nur eine Konnektivitätsprüfung — „Kann ich Port 445 mit diesem fiktiven Payload erreichen?".


2. Port 445 — SMB als RPC-Transport

root@kitploit:~
sock.connect((target_ip, 445))

Warum 445 und nicht 135 (RPC Endpoint Mapper)?

PrintNightmare verwendet die SMB-Named-Pipe \pipe\spoolss als Transport — nicht direktes RPC. Der tatsächliche Ablauf ist:

root@kitploit:~
1. TCP-Connect → Port 445 (SMB)
2. SMB-Negotiation + Session-Setup (NTLM/Kerberos-Authentifizierung)
3. Tree-Connect → IPC$
4. Named-Pipe-Öffnung → \pipe\spoolss
5. DCE/RPC-BIND → Schnittstelle MS-RPRN
6. RpcAddPrinterDriverEx()-Aufruf mit NDR-Marshaling

Der PoC simuliert nur Schritt 1 — die anfängliche TCP-Verbindung — ohne die Schritte 2-6 zu implementieren.

sock.settimeout(5): Ein Timeout von 5 Sekunden verhindert, dass der PoC bei Hosts hängen bleibt, die nicht antworten. Nützlich für schnelles Scannen der Portverfügbarkeit.


3. CVE-2021-1675 vs CVE-2021-34527 — Die Unterscheidung

Die Ursache ist in beiden Fällen dieselbe: Die Funktion RpcAddPrinterDriverEx() versäumt es, die Herkunft der Treiberdateien zu validieren, erzwingt keine angemessenen Privilegienbeschränkungen für die Treiberinstallation und prüft nicht die Authentizität oder Integrität der geladenen DLLs.


$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access / Lateral Movement
  - T1210    # Exploitation of Remote Services
             # RPC-Aufruf über \pipe\spoolss an entfernten Host
             # Erfordert gültige Domänenanmeldedaten

tactic: Privilege Escalation
  - T1068    # Exploitation for Privilege Escalation
             # normaler Benutzer → SYSTEM über Print Spooler
             # CVE-2021-1675 (LPE): lokaler Prozess erhöht auf SYSTEM

tactic: Execution
  - T1569.002  # System Services: Service Execution
               # Bösartige DLL, geladen von spoolsv.exe als SYSTEM
               # Entspricht Codeausführung über Windows-Dienst

  - T1055      # Process Injection
               # DLL injiziert in den Kontext des spoolsv.exe-Prozesses (SYSTEM)

tactic: Persistence
  - T1547.012  # Boot or Logon Autostart: Print Processors
               # Registrierter Treiber bleibt über Neustarts hinweg bestehen
               # Gespeichert in: HKLM\SYSTEM\CurrentControlSet\Control\Print\

tactic: Defense Evasion
  - T1036.005  # Masquerading: Match Legitimate Name or Location
               # Bösartige DLL benannt wie legitimer Treiber (z. B. Canon_XP.dll)

$ cat ./detection_opportunities.md

Windows-Ereignisprotokoll

root@kitploit:~
# Ereignis-ID 808 — Print Spooler konnte verdächtige DLL nicht laden
# Quelle: Microsoft-Windows-PrintService/Admin

Bedingung:
  EventID: 808
  Log: Microsoft-Windows-PrintService/Admin
  Level: Error
  Description ENTHÄLT: "failed to load a plug-in module"

Echte Beweise (in-the-wild beobachtet):
  "The print spooler failed to load a plug-in module
   C:\Windows\system32\spool\DRIVERS\x64\3\svch0st.dll"
  # Typosquatting von svchost.dll → bösartige DLL
root@kitploit:~
# Ereignis-ID 316 — Treiber installiert über RpcAddPrinterDriverEx
# Quelle: Microsoft-Windows-PrintService/Admin

Bedingung:
  EventID: 316
  Log: Microsoft-Windows-PrintService/Admin
  Message ENTHÄLT: "RpcAddPrinterDriverEx"
  ODER
  Message ENTHÄLT: "\\\\*\\*"   # UNC-Pfad → entfernte DLL

Sysmon / EDR

root@kitploit:~
# Verdächtiger untergeordneter Prozess des Print Spooler
EventID: 1 (Process Creation)
Bedingung:
  ParentImage: C:\Windows\System32\spoolsv.exe
  Image: cmd.exe ODER powershell.exe ODER wscript.exe ODER mshta.exe
Schweregrad: KRITISCH — spoolsv sollte keine Shells erzeugen
root@kitploit:~
# DLL aus nicht standardmäßigem Pfad geladen
EventID: 7 (Image Loaded)
Bedingung:
  Image: C:\Windows\System32\spoolsv.exe
  ImageLoaded BEGINNT NICHT MIT:
    - C:\Windows\System32\spool\DRIVERS\
    - C:\Windows\System32\
    - C:\Windows\SysWOW64\
Schweregrad: HOCH

Netzwerk — IDS/IPS

Für die Erkennung auf Netzwerkebene sollten SMB-Named-Pipes überwacht werden: Das Vorhandensein von \pipe\spoolss in Kombination mit den Operationen RpcEnumPrinterDrivers oder RpcAddPrinterDriverEx sind direkte Indikatoren für die Ausnutzung von PrintNightmare.

root@kitploit:~
# Konzeptionelle Zeek-/Suricata-Regel:
alert smb any any -> $SERVERS 445 (
  msg:"PrintNightmare RpcAddPrinterDriverEx via SMB";
  content:"|5c 70 69 70 65 5c 73 70 6f 6f 6c 73 73|";  # \pipe\spoolss
  content:"RpcAddPrinterDriverEx";
  sid:2021001675;
)

$ cat ./remediation.md

root@kitploit:~
OPTION 1 — Print Spooler deaktivieren (falls Drucken nicht benötigt wird)
  PowerShell:
    Stop-Service -Name Spooler -Force
    Set-Service -Name Spooler -StartupType Disabled

OPTION 2 — Remotedruck über Gruppenrichtlinie blockieren
  Computerkonfiguration → Administrative Vorlagen → Drucker
  → "Allow Print Spooler to accept client connections": DEAKTIVIERT
  Dies deaktiviert nur den Remote-Vektor und behält lokales Drucken bei

OPTION 3 — Patches anwenden (obligatorisch unabhängig von den obigen Optionen)
  KB5004945 → Notfall-Patch Juli 2021
  + Nachfolgende kumulative Patches

ÜBERPRÜFUNG NACH DEM PATCH — Registry kann weiterhin verwundbar lassen:
  REG QUERY "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint"
  Wenn NoWarningNoElevationOnInstall=1 ODER UpdatePromptSettings=0 → NOCH VERWUNDBAR
  Behebung: Beide Werte auf 0 setzen oder die Schlüssel entfernen

BESONDERE PRIORITÄT: Domain Controller
  DCs führen Print Spooler standardmäßig aus
  Kompromittierung eines DC über PrintNightmare = vollständige Kompromittierung der AD-Domäne

$ cat ./usage.sh

root@kitploit:~
# Abhängigkeit installieren (socket ist stdlib)
python --version  # Python 3.x, kein pip erforderlich

# Ziel-IP im Skript bearbeiten (nur in autorisiertem Labor)
# simulate_printnightmare_attack("192.168.1.xxx")

python poc_cve_2021_1675.py
root@kitploit:~
# Erwartete Ausgabe, wenn Port 445 erreichbar ist:
[+] Payload gesendet an 192.168.1.117

# Erwartete Ausgabe, wenn Port geschlossen/gefiltert ist:
[-] Verbindungsfehler: [Errno 111] Connection refused
# oder
[-] Verbindungsfehler: timed out

Was diese Ausgabe bedeutet: Nur dass Port 445 erreichbar ist. Bestätigt keine Schwachstelle — dafür wäre ein echtes RPC-BIND + Überprüfung der Patch-Version erforderlich.


$ cat ./poc_vs_real_exploit.md

Expliziter Vergleich zwischen dem simulierten PoC und einem echten Exploit.


$ cat ./lessons_learned.txt

root@kitploit:~
[+] Print Spooler standardmäßig aktiv auf DCs ist das kritischste Szenario — SYSTEM auf DC = Game Over
[+] SMB-Named-Pipes als RPC-Transport sind ein unterschätzter Vektor in perimeter-fokussierten Verteidigungen
[+] DCE/RPC ist ein komplexes Protokoll — das Verständnis der Bind-/Call-Struktur hilft beim Erstellen von Signaturen
[+] Veröffentlichte CVE ≠ angewendeter Patch — Wochen nach dem Patch waren die meisten Umgebungen noch verwundbar
[+] PointAndPrint-Registry-Schlüssel können die Schwachstelle selbst nach dem Patch wieder einführen — kritische Kontrolle nach dem Patch
[-] Dieser PoC prüft nur TCP-Konnektivität — validiert nicht, ob das System tatsächlich gepatcht ist
[-] Reiner Socket ohne SMB kann keine Authentifizierung aushandeln — grundlegende Einschränkung des Ansatzes
[-] settimeout(5) kann in langsamen Netzwerken falsch-negative Ergebnisse erzeugen — parametrisierbaren Timeout in Betracht ziehen
[→] Verbesserungen: impacket für echtes RPC verwenden, SMB-Banner für OS-Versions-Fingerprinting prüfen,
    angewendetes KB über Remote-Registry-Abfrage testen

CVE-Forschung · PrintNightmare · Gepatcht Juli 2021 · CISA KEV · Nur simuliertes Payload

Tool herunterladen
ByteWertBedeutung
\x055Version des DCE/RPC-Protokolls (Version 5 — Windows-Standard)
\x000Minor-Version 0
\x0b11PDU-Typ: BIND — erster Schritt der RPC-Aushandlung
\x033Flags: `PFC_FIRST_FRAG(0x01)
AspektCVE-2021-1675CVE-2021-34527
VektorLokal (LPE)Remote (RCE)
CVSS7.88.8
AuthentifizierungLokales KontoAuthentifiziertes Domänenkonto
PatchJuni 2021 (Patch Tuesday)Juli 2021 (außer der Reihe KB5004945)
Verwundbare FunktionRpcAddPrinterDriverExRpcAddPrinterDriverEx
SzenarioLokale EskalationRemote-RCE über SMB-Named-Pipe
KomponenteDieser PoCEchter Exploit
VerbindungTCP-Socket Port 445SMB-Session + Tree-Connect IPC$
AuthentifizierungKeineNTLM oder Kerberos (Domänenkonto)
Named PipeNicht implementiert\pipe\spoolss
RPC-BINDGefälscht (4 Bytes + ASCII)DCE/RPC-BIND mit MS-RPRN-UUID
Aufgerufene FunktionNicht aufgerufenRpcAddPrinterDriverEx() über NDR
DLL-PfadNicht gesendetUNC: \\attacker\share\evil.dll
ErgebnisAusgabe auf KonsoleRCE als SYSTEM / LPE
ErkennungNahezu nullEventID 808, 316, Sysmon 1/7