
Certighost POC
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.
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
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.
GHOSTABCDEFGH$) oder verwendet ein über --computer-name übergebenes erneut.cdc-Attribut eingebettet wird, das auf eine kontrollierte IP verweist (über --listener; optional, wird bei Auslassung automatisch erkannt), plus ein rmd-Attribut, das den DNS-Namen des Ziel-DCs trägt..ccache und NT-Hash anzufordern.STATUS_NOLOGON_SERVER_TRUST_ACCOUNT-Problem behebt. certighost enthält jetzt einen ordnungsgemäßen In-Script-Hotpatch des Rogue-SMB-NetLogon-Pfads (Setzen des E-Bits 0x20 zusammen mit dem K-Bit 0x800 in ParameterControl, 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.EDITF_ATTRIBUTESUBJECTALTNAME2 / ESC6), setzt die Zertifikatsanfrage die SAN:dns-Identität nun auf den DNS-Namen des Ziel-DCs (rmd_value) anstelle des Rogue-Computers, wodurch KDC_ERR_CLIENT_NAME_MISMATCH beim PKINIT-Schritt vermieden wird. Bei aus AD-Templates erstellten Vorlagen wird das angefragte SAN ignoriert, daher ist die Änderung ein sicheres No-op.