
UpdatedAug 1, 2026
CVE-2026-54121 — Mis à jour !
Certighost POC
CVE-2026-54121 (Certighost)
Il s'agit d'un outil de preuve de concept pour démontrer la CVE-2026-54121, alias Certighost. Lisez ici https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26 pour l'analyse détaillée.
Installer les dépendances
La preuve de concept est un script Python autonome. Elle nécessite impacket, cryptography, pyasn1, asn1crypto et dnspython.
sudo pip install --break-system-packages git+https://github.com/fortra/impacket.git cryptography pyasn1 asn1crypto pycryptodome dnspython
Utilisation
Exécutez en root car les services LDAP et SMB pirates écoutent sur les ports privilégiés 389 et 445.
sudo python3 certighost.py -d playground.local -u lowpriv -p 'Password1234' --dc-ip 192.168.1.10
Une exécution réussie écrit le certificat cible (.pfx) et le cache Kerberos (.ccache) dans le répertoire courant.
Ce que fait ce script
- Créez un nouveau compte machine (par ex.
GHOSTABCDEFGH$) ou réutilisez celui passé via--computer-name. - Démarrez deux écouteurs pirates : un serveur SMB/LSA sur le port 445 et un serveur LDAP sur le port 389.
- Envoyez une demande de certificat en tant que ce compte machine, en intégrant un attribut
cdcpersonnalisé pointant vers une IP contrôlée (via--listener; facultatif, auto-détecté si omis) ainsi qu'un attributrmdcontenant le nom DNS du contrôleur de domaine cible. - L'AC se reconnecte aux écouteurs LSA/LDAP pirates. Ils s'authentifient en tant que compte créé (validé via le vrai DC sur Netlogon) et répondent aux requêtes de l'AC avec l'identité du contrôleur de domaine cible (sAMAccountName, SID, dNSHostName) à la place.
- L'AC délivre un certificat valide appartenant au DC.
- Le script effectue également PKINIT avec le pfx du DC pour demander le .ccache et le hash NT.
Chronologie
- 28 juillet 2026 — Remerciements à @GregDurys pour la PR corrigeant le problème
STATUS_NOLOGON_SERVER_TRUST_ACCOUNT.certighostfournit désormais un hotpatch approprié intégré au script du chemin NetLogon SMB pirate (définissant le bit E0x20en plus du bit K0x800dansParameterControl, selon MS-NRPC 2.2.1.4.15), afin que l'exploit fonctionne contre une AC hébergée sur un contrôleur de domaine sans avoir à installer une version différente / forkée d'Impacket. - 28 juillet 2026 — Remerciements à @Hack0ura pour avoir mentionné le correctif du SAN demandé. Sur une AC qui honore les SAN fournis dans la demande (
EDITF_ATTRIBUTESUBJECTALTNAME2/ ESC6), la demande de certificat définit désormais l'identitéSAN:dnssur le nom DNS du contrôleur de domaine cible (rmd_value) au lieu de celui de la machine pirate, évitantKDC_ERR_CLIENT_NAME_MISMATCHà l'étape PKINIT. Sur les modèles construits à partir d'AD, le SAN de la demande est ignoré, ce changement est donc un no-op sûr.