Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Certighost_CVE-2026-54121 — Exploit en un clic pour CVE-2026-54121 (Certighost) ciblant l'usurpation d'identité de certificats AD CS. Automatise la création de comptes machine, la redirection de trafic, l'AC rogue, PKINIT et l'extraction de hash NT pour compromettre le domaine. | Kitploit
Outils/GitHubGitHub/trya9ain/certighost_cve-2026-54121
Analyse des VulnérabilitésExploitationPost-ExploitationTests d'IntrusionRed Teaming
GitHubtrya9ain/certighost_cve-2026-54121

Certighost_CVE-2026-54121

Exploit en un clic pour CVE-2026-54121 (Certighost) ciblant l'usurpation d'identité de certificats AD CS. Automatise la création de comptes machine, la redirection de trafic, l'AC rogue, PKINIT et l'extraction de hash NT pour compromettre le domaine.

Voir le dépôt
il y a 9h 25mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

certighost-oneclick

Outil d'exploitation en une commande pour CVE-2026-54121 (Certighost) — réservé aux environnements de test locaux / tests autorisés.

Version native Windows basée sur le PoC amont (analyse @h0j3n / implémentation @aniqfakhrul) : redirection intégrée maison via WinDivert (pydivert), une seule commande pour « création de compte → redirection → écoute rogue → chasse CA → certificat d'identité du contrôleur de domaine → PKINIT → hash NT du compte machine du contrôleur de domaine », sans jamais arrêter le service Server, sans modifier aucune configuration de l'hôte, restauration immédiate à la sortie.

Différences avec l'amont (liste des correctifs)

CorrectifDescription
--redirectRedirection intégrée WinDivert (445 → --lsa-port, filtrage étroit : n'intercepte que le trafic de l'IP du listener), démarrage/arrêt avec le processus, restauration automatique du 445 à la sortie. Remplace le PortBender officiel (dont le livrable officiel est une DLL réfléchie 32 bits spécifique à CS, impossible à exécuter de manière autonome)
--lsa-portPort d'écoute rogue LSA/SMB paramétrable (défaut 445 ; avec --redirect défaut 8445)
Garde os.geteuidLe contrôle root amont plante sous Windows → garde hasattr + message sur le port Windows
Vérification de disponibilité paramétrableport_ok(127.0.0.1, 445) codé en dur en amont → args.lsa_port
En-tête PEP 723uv run certighost.py ... s'exécute directement, résolution automatique des dépendances (impacket git-master inclus), zéro pollution de l'environnement
--new-computer-nameNom personnalisé pour la création de compte (évite la signature de détection GHOST*)
--new-computer-passMot de passe personnalisé pour la création de compte (doit respecter la politique de mots de passe du domaine)
Polyfill random.randbytesimpacket git-master utilise une API 3.9+ lors de l'import de smbserver ; nécessaire pour la version 3.8, implémentation via os.urandom
Sortie immédiateflush + os._exit() après GGWP (élimine les blocages de plusieurs minutes dus aux threads non-daemon d'impacket)
Codes de sortie sémantiques0 succès / 1 échec
Écriture de <dc>.hash.txtLe hash NT du compte machine du contrôleur de domaine est écrit dans un fichier (une seule ligne name:lm:nt)

Utilisation

① Pré-vérification (lecture seule, confirme la CA et les prérequis d'exploitation) :

root@kitploit:~
uv run check_ca.py -d bingo.com -dc-ip 192.168.16.144 -u zhaolei -p 'pass'

Affiche la liste des CA d'entreprise, la délivrance du modèle Machine et les droits d'inscription (nécessite Enroll pour Domain Computers). Vérifier également le flag chase sur la machine CA : certutil -getreg policy\EditFlags (doit contenir EDITF_ENABLECHASECLIENTDC ; vérifié actif par défaut sur Server 2016).

② Exploitation en une commande (Windows, administrateur) :

root@kitploit:~
uv run certighost.py -d bingo.com -u zhaolei -p '[email protected]' \
  --dc-ip 192.168.16.144 --listener <IP accessible depuis la machine> --redirect \
  --new-computer-name MACH$ --new-computer-pass 'Your@Pw123!'

Triple livrable (écrit automatiquement dans le répertoire d'exécution) :

FichierContenu
<dc>.pfxCertificat d'identité du contrôleur de domaine (matériau PKINIT)
<dc>.ccacheCache de tickets Kerberos
<dc>.hash.txtHash NT du compte machine du contrôleur de domaine (une seule ligne name:lm:nt)

③ Nettoyage (suppression du compte créé) :

root@kitploit:~
uv run cleanup_ghost.py -d bingo.com -dc-ip 192.168.16.144 -u administrator -p 'pass' --prefix MACH

Paramètres (style impacket)

ParamètreDescription
-d / -u / -p / -HDomaine / utilisateur privilégié faible / mot de passe / hash NTLM
--dc-ipAdresse du DC (obligatoire)
--listener IPIP du listener rogue (à spécifier explicitement en cas de plusieurs cartes réseau)
--redirectCœur Windows : redirection WinDivert 445 intégrée (nécessite administrateur + pydivert)
--lsa-port NPort LSA rogue (défaut 8445 avec --redirect)
--new-computer-nameNom personnalisé pour la création de compte ($ ajouté automatiquement)
--new-computer-passMot de passe personnalisé pour la création de compte (mutuellement exclusif avec le chemin existing)
--computer-name/--computer-pass/--computer-hashSans MAQ : réutilisation d'un compte machine déjà contrôlé
--target-san DC01$Spécifie la cible à usurper (découverte automatique du DC par défaut)
--templateModèle de certificat (défaut Machine)
--ca / --ca-ipSpécification manuelle de la CA
--debugTraçage complet des phases de protocole

Flux interne

root@kitploit:~
Phase1  L'utilisateur privilégié faible crée un compte machine (chemin MAQ automatique / --new-computer-* personnalisé / --computer-* réutilisation existante)
Phase2  [Windows] Redirection WinDivert intégrée : listener_ip:445 -> :lsa_port
        Filtrage étroit (uniquement cette IP), paquets réécrits hors filtre = pas de boucle de réinjection ; handle fermé avec le processus
Phase3  Serveur rogue : LDAP:389 + LSA/SMB:lsa_port (répond à la chasse cdc/rmd, alimente les données d'identité du DC)
Phase4  Soumission de la demande de certificat en tant que machine (modèle Machine), la CA rappelle le rogue → délivrance du certificat d'identité du DC
Phase5  PKINIT → le KDC renvoie le hash NT du compte machine du DC dans le PAC → extraction et écriture dans .hash.txt
Phase6  (Suite) secretsdump DCSync → krbtgt → prise de contrôle totale du domaine ; cleanup_ghost supprime le compte créé

Utilisation Linux inchangée (bind direct root 445/389, sans --redirect).

Mécanisme d'extraction du hash (pas un DCSync)

L'extraction du hash dans la chaîne d'attaque passe par PKINIT → PAC → hash NT, pas par DCSync :

  1. La CA est trompée pour délivrer un certificat « identité = compte machine du contrôleur de domaine »
  2. Le script utilise le certificat pour un Kerberos PKINIT (pré-authentification par clé publique)
  3. Le KDC renvoie le hash NT de ce compte dans PAC_CREDENTIAL_INFO de l'AS-REP (comportement de conception du protocole Kerberos : lors de l'authentification par certificat, le hash NT est inséré dans le PAC pour la compatibilité avec les anciennes applications NTLM)
  4. Le script déchiffre le PAC et extrait le hash → affichage + écriture sur disque

Une fois le hash obtenu, utiliser secretsdump pour un DCSync est une opération deuxième étape, ce n'est pas la source du hash.

Empaquetage (exe mono-fichier, forme de livraison de l'architecture A)

root@kitploit:~
# PowerShell 7
./build_exe.ps1              # Niveau par défaut  (Win10 / Server 2016+)
./build_exe.ps1 3.10         # Niveau compatibilité  (Win8.1 / Server 2012 R2+)
./build_exe.ps1 legacy       # Niveau hérité  (Win7 SP1 / Server 2008 R2 x64)

Livrable dist\certighost_x64.exe : 19-27 Mo (selon le niveau), élévation automatique --uac-admin, zéro dépendance, le script affiche automatiquement la somme de contrôle SHA256.

Prérequis de construction du niveau hérité (legacy)

Nécessite CPython 3.8.10 officiel de python.org installé au chemin suivant (dernière build binaire officielle supportant le noyau Win7, ne dépend pas des nouvelles API UCRT) :

root@kitploit:~
D:\网安相关\Tools\Python\cpython-3.8.10-x64\

Commande d'installation (silencieuse, sans PATH, sans lanceur) :

root@kitploit:~
python-3.8.10-amd64.exe /quiet InstallAllUsers=0 TargetDir=D:\网安相关\Tools\Python\cpython-3.8.10-x64 PrependPath=0 Include_launcher=0

Épingler également PyInstaller==5.13.2 (le bootloader 6.x ne supporte pas le noyau Win7) et cryptography==38.0.4 (les wheels Rust exigent Win10+ à partir de 38.x), tous deux déjà figés dans le script.

Matrice de validation sur machines réelles

NiveauSystème réelChaîne complèteRemarques
DéfautWin11✅
Compatibilité 3.10Win11 / Win10 / Server 2012 R2✅ ×3WinDivert réel inclus
Hérité legacyWin11 / Server 2008 R2 x64✅ ×23.8.10 officiel + PyInstaller 5.13.2

Attention : PyInstaller+impacket est une zone à forte détection antivirale, évaluer vous-même avant déploiement.

Architecture de déploiement opérationnel (modèle à deux machines)

  • Architecture A (forme par défaut de cet outil) : l'exe complet est livré sur un point d'appui avec accès sortant (nécessite administrateur) et exécuté directement ;
  • Architecture B (point d'appui précieux) : l'outil reste en local, le point d'appui ne contient qu'un tunnel de redirection à distance (bind direct 389 + 445 nécessite la redirection du même type que cet outil).

Points de détection (équipe bleue)

  • Apparition dans la base CA de certificats suspects délivrés à une identité de DC (résidu permanent) — premier ancrage forensique
  • Événements CA 4886/4887 (délivrance de certificats) avec décalage demandeur-identité cible (règles existantes Elastic/Nextron)
  • Nouveaux comptes machine GHOST*/personnalisés (4741) + demandes d'inscription d'utilisateurs privilégiés faibles auprès de la CA
  • Événement de chargement du pilote WinDivert sur le point d'appui (commun aux architectures A/B)

Limites connues

  • Nécessite une CA d'entreprise + inscription possible pour un utilisateur privilégié faible + DC sans le correctif de juillet 2026 + flag chase activé
  • La cible ne peut être qu'un compte machine (limité par les droits d'inscription du modèle Machine et le mécanisme d'identité dNSHostName) mais le compte machine du contrôleur de domaine = DCSync = domaine entier, effet équivalent à l'obtention de tous les administrateurs de domaine
  • Chaîne complète prouvée sur Server 2016 ; 2012R2~2025 jugé faisable (même mécanisme chase)
  • Le chemin de création de compte est une échelle de repli : repli automatique sur SAMR en cas d'échec LDAPS
  • Occasionnel ciphertext integrity failure à la phase PKINIT : observé une fois, un nouvel essai suffit
  • Le redirigeur est conçu pour un domaine étroit IPv4, le scénario IPv6 n'est pas couvert

Liste des fichiers

root@kitploit:~
certighost.py            Exploit principal (amont + correctifs de native Windows + PEP 723)
certighost_redirect.py   Redirigeur WinDivert 445 maison (pydivert ; auto-test --selftest/--e2e)
check_ca.py              Pré-vérification : CA/modèle/droits d'inscription/flag chase (lecture seule)
cleanup_ghost.py         Finalisation : suppression du compte créé
build_exe.ps1            Empaquetage mono-fichier PyInstaller (pwsh7, matrice à trois niveaux, SHA256 automatique)

Amont et remerciements

  • Recherche originale et PoC : @h0j3n (analyse gist), @aniqfakhrul/CVE-2026-54121 (implémentation amont)
  • Kudelski Security (découvreur de la vulnérabilité) ; PortBender (Praetorian, source de l'idée de redirection)
  • pydivert (bindings Python WinDivert 2.2.2)
Télécharger l’outil