
UpdatedAug 1, 2026
CVE-2026-54121 — Updated!
Certighost POC
CVE-2026-54121 (Certighost)
Dies ist ein Proof-of-Concept-Tool zur Demonstration von CVE-2026-54121, auch bekannt als Certighost. Die detaillierte Analyse findest du hier: https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26.
Abhängigkeiten installieren
Der Proof of Concept ist ein eigenständiges Python-Skript. Er benötigt impacket, cryptography, pyasn1, asn1crypto und dnspython.
sudo pip install --break-system-packages git+https://github.com/fortra/impacket.git cryptography pyasn1 asn1crypto pycryptodome dnspython
Verwendung
Als root ausführen, da die Rogue-LDAP- und SMB-Dienste auf den privilegierten Ports 389 und 445 lauschen.
sudo python3 certighost.py -d playground.local -u lowpriv -p 'Password1234' --dc-ip 192.168.1.10
Bei erfolgreicher Ausführung werden das Zielzertifikat (.pfx) und der Kerberos-Cache (.ccache) im aktuellen Verzeichnis gespeichert.
Was dieses Skript tut
- Erstellt ein neues Computerkonto (z. B.
GHOSTABCDEFGH$) oder verwendet ein über--computer-nameübergebenes erneut. - Startet zwei Rogue-Listener: einen SMB/LSA-Server auf Port 445 und einen LDAP-Server auf Port 389.
- Sendet eine Zertifikatsanfrage als dieses Computerkonto, wobei ein benutzerdefiniertes
cdc-Attribut eingebettet wird, das auf eine kontrollierte IP verweist (über--listener; optional, wird bei Auslassung automatisch erkannt), plus einrmd-Attribut, das den DNS-Namen des Ziel-DCs trägt. - Die CA verbindet sich zurück zu den Rogue-LSA/LDAP-Listenern. Diese authentifizieren sich als das erstellte Konto (validiert über den echten DC per Netlogon) und beantworten die Abfragen der CA stattdessen mit der Identität des Ziel-DCs (sAMAccountName, SID, dNSHostName).
- Die CA stellt ein gültiges Zertifikat aus, das dem DC gehört.
- Das Skript führt außerdem PKINIT mit der PFX-Datei des DCs durch, um
.ccacheund NT-Hash anzufordern.
Zeitleiste
- 28. Juli 2026 — Dank an @GregDurys für den PR, der das
STATUS_NOLOGON_SERVER_TRUST_ACCOUNT-Problem behebt.certighostenthält jetzt einen ordnungsgemäßen In-Script-Hotpatch des Rogue-SMB-NetLogon-Pfads (Setzen des E-Bits0x20zusammen mit dem K-Bit0x800inParameterControl, gemäß MS-NRPC 2.2.1.4.15), sodass der Exploit gegen eine auf einem Domänencontroller gehostete CA funktioniert, ohne sich um die Installation einer anderen/geforkten Impacket-Version kümmern zu müssen. - 28. Juli 2026 — Dank an @Hack0ura für den Hinweis auf den Request-SAN-Fix. Bei einer CA, die anfrageseitig gelieferte SANs berücksichtigt (
EDITF_ATTRIBUTESUBJECTALTNAME2/ ESC6), setzt die Zertifikatsanfrage dieSAN:dns-Identität nun auf den DNS-Namen des Ziel-DCs (rmd_value) anstelle des Rogue-Computers, wodurchKDC_ERR_CLIENT_NAME_MISMATCHbeim PKINIT-Schritt vermieden wird. Bei aus AD-Templates erstellten Vorlagen wird das angefragte SAN ignoriert, daher ist die Änderung ein sicheres No-op.