Licence pro ASS&RHomelabLecture : 7 min

Du simple compte au Golden Ticket : attaque d'un Active Directory en homelab

Pour voir ce que mes corrections de production empêchent vraiment, j'ai attaqué dans mon homelab un Active Directory volontairement vulnérable, d'un simple compte utilisateur jusqu'au contrôle complet du domaine.

Contexte
Homelab · cluster Proxmox de 3 nœuds, domaine LAB.AD.local sous Windows Server 2022
Période
Août 2026
Mon rôle
Mené en autonomie, de la construction du labo à la synthèse défensive
Outils
Impacket · BloodHound · Hashcat · CrackMapExec · Nmap · PowerShell

En bref

Le problème

J'avais durci un annuaire de production sans jamais voir à l'œuvre les attaques que chaque correction devait contrer.

Ce que j'ai fait

J'ai monté un domaine vulnérable dans mon homelab et mené huit étapes, de la reconnaissance au Golden Ticket, en notant pour chacune sa trace et sa parade.

Le résultat

Contrôle complet du domaine à partir d'un simple compte. Defender a bloqué le Pass-the-Hash par psexec, et le Golden Ticket n'est passé qu'après trois refus du contrôleur.

8étapes, d'un simple compte utilisateur au contrôle complet du domaine
< 1spour casser le ticket d'un compte de service au mot de passe courant
9 / 52utilisateurs / groupes cartographiés avec un simple compte

Contexte

En production, j'ai audité et durci l'Active Directory d'une PME, sans avoir jamais vu les attaques que ces corrections bloquent. Ce projet comble ce manque, côté attaquant.

Tout se passe dans mon homelab, un cluster Proxmox de trois nœuds : rien ne touche l'entreprise, et ces techniques n'ont servi que sur ce labo, qui m'appartient. Le scénario part d'un accès minimal, le mot de passe d'un simple utilisateur, comme après un hameçonnage réussi. Pour chaque étape, trois questions : ce que l'attaque exploite, la trace qu'elle laisse, la mesure qui l'aurait arrêtée.

Ce que j'ai fait

  1. Construire un labo reproductibleUn contrôleur Windows Server 2022 et une station Kali, en adressage fixe. Un script PowerShell injecte les faiblesses courantes en entreprise : mots de passe faibles, comptes de service avec SPN, administrateur au mot de passe devinable, politique assouplie. Instantané du contrôleur avant la première attaque.
  2. Cartographier avec un simple compteNmap repère le contrôleur aux ports qu'il expose forcément (DNS, Kerberos, LDAP, SMB). BloodHound lit ensuite tout l'annuaire et montre les chemins vers les Admins du domaine, sans aucun privilège.
  3. Casser un compte de service hors ligneTout utilisateur peut demander le ticket d'un compte de service et chercher son mot de passe hors ligne : c'est le Kerberoasting. Deux comptes résistent au dictionnaire rockyou sans règles, ce qui ne les rend pas robustes ; un troisième, ajouté avec un mot de passe courant, cède en moins d'une seconde.
  4. Obtenir un administrateur du domaineAttaque par dictionnaire sur le seul compte désigné par BloodHound, et non du password spraying, qui essaie un mot de passe sur beaucoup de comptes. Le bon mot de passe fait 11 caractères et respecte la complexité Windows : il faut aussi refuser les mots de passe courants.
  5. Prendre le domaineAvec ce compte, DCSync réplique les empreintes de tous les comptes, dont krbtgt. Defender bloque le Pass-the-Hash tenté avec psexec ; un Golden Ticket forgé avec la clé AES256 de krbtgt, comme les tickets légitimes, ouvre tous les partages du contrôleur sans mot de passe.
Chaîne d'attaque en huit étapes, de la découverte du réseau au Golden Ticket 1 · Nmap DC-LAB identifié sans compte 2 · BloodHound chemins vers admins avec amartin 3 · Kerberoasting 1 compte sur 3 cassé avec amartin 4 · CrackMapExec comptes énumérés avec svc-backup 5 · Dictionnaire Summer2023! trouvé cible : cadmin 6 · DCSync empreinte krbtgt avec cadmin 7 · Pass-the-Hash bloqué par Defender Administrateur 8 · Golden Ticket partages du DC après 3 refus tentative bloquée objectif atteint
Fig. 1Les huit étapes, avec le compte utilisé ou obtenu à chacune. L'AS-REP roasting, testé sans succès, n'y figure pas.
Voir les détails techniques

Le labo. Deux VM sur un réseau interne sans DHCP : le contrôleur DC-LAB (4 vCPU, 4 Go de RAM), nouvelle forêt LAB.AD.local, DNS pointé sur lui-même ; la station Kali (2 vCPU, 4 Go), DNS pointé sur le contrôleur, car Kerberos exige une résolution de noms correcte. Pare-feu Windows du contrôleur désactivé, Microsoft Defender actif.

Faiblesse introduiteCe qu'elle permet
Utilisateurs à mot de passe courantLe compte de départ de l'attaquant
Deux comptes de service avec SPNKerberoasting
Délégation non contrainte sur un compte de serviceUsurper l'identité de quiconque s'y authentifie
Un compte membre des Admins du domaine, au mot de passe devinablePrendre le contrôle du domaine
Politique : 4 caractères, sans complexité ni expirationRendre tout ce qui précède possible
Terminal Kali : nmap -sV sur les ports AD du contrôleur 10.0.10.10, services Kerberos, LDAP (domaine LAB.AD.local), SMB et Terminal Services ouverts ; identifiant utilisateur, adresse MAC et nom d'hôte masqués.
Fig. 2Laboratoire : reconnaissance Nmap du contrôleur de domaine, qui expose DNS, Kerberos, LDAP, SMB et RDP et révèle le nom du domaine.

Cartographie. Le collecteur BloodHound relève 9 utilisateurs et 52 groupes, avec leurs droits et délégations. La Community Edition refusait de démarrer correctement sur Kali ; la version 4, une seule base graphe, a suffi : le besoin était la carte, pas la dernière interface. PingCastle, lancé en parallèle, classe bien les failles introduites en risque élevé.

Graphe BloodHound : nœuds utilisateurs, groupes, ordinateur, OU et GPO reliés par des arêtes MemberOf, GenericWrite, Contains, GPLink, DCSync et AddKeyCredentialLink, convergeant vers le groupe cible des admins du domaine.
Fig. 3Laboratoire : graphe BloodHound des chemins vers les administrateurs du domaine (MemberOf, GenericWrite, DCSync, AddKeyCredentialLink).
Terminal Hashcat : mode 13100 (Kerberos 5 TGS-REP), dictionnaire rockyou.txt, statut Exhausted, 0 empreinte sur 2 récupérée ; candidat affiché et identifiant utilisateur masqués.
Fig. 4Laboratoire : Hashcat épuise les quelque 14 millions de mots de rockyou sans casser les deux comptes de service (0 sur 2).

Voies abandonnées et constats. L'AS-REP roasting exige un compte sans pré-authentification Kerberos : elle était active sur le compte visé, voie abandonnée. Dans les empreintes répliquées par DCSync, les empreintes LM sont vides : l'ancien algorithme n'est pas stocké.

Notification Sécurité Windows : « Menaces détectées, l'antivirus Microsoft Defender a détecté des menaces », deux alertes successives.
Fig. 5Laboratoire : la tentative de Pass-the-Hash avec psexec est bloquée par Microsoft Defender, qui supprime le binaire déposé.

Une alerte que personne ne voit. Le blocage Defender reste local au contrôleur. Sur un serveur sans session ouverte, l'alerte passe inaperçue : c'est le rôle d'une collecte centralisée comme mon SOC Wazuh.

Un fichier de tickets vide, sans erreur. L'option d'écriture de l'outil d'extraction produisait un fichier vide alors que les tickets s'affichaient à l'écran. J'ai contrôlé le contenu réel du fichier, puis filtré la sortie standard moi-même : plus simple à vérifier.

AttaqueTrace et détectionContre-mesure
Reconnaissance (Nmap, BloodHound)Volume inhabituel de requêtes LDAP depuis un poste, visible seulement si les journaux sont centralisésOn ne peut pas interdire la lecture de l'annuaire à un compte authentifié : on détecte
KerberoastingRafale de demandes de tickets de service en RC4 (événement 4769 sur le contrôleur)Mots de passe de service de 25 caractères aléatoires ou plus, ou comptes de service gérés (gMSA)
Dictionnaire sur un compteÉchecs d'authentification répétés sur le même compteSeuil de verrouillage, mot de passe long et non courant pour tout compte d'administration, MFA sur les comptes sensibles
DCSyncDemande de réplication venue d'une machine qui n'est pas un contrôleur (événement 4662)Limiter les comptes qui ont les droits de réplication
Pass-the-HashAlerte Defender, observée ici, mais locale au serveurGroupe Protected Users pour les comptes sensibles, antivirus ou EDR à jour, collecte centralisée
Golden TicketPas de fichier ni de service, mais des anomalies Kerberos repérables si les journaux du contrôleur sont collectésProtéger les comptes qui ont les droits de réplication (la clé vient de DCSync) ; double rotation de krbtgt pour invalider les tickets déjà forgés ; un Windows Server à jour rejette déjà les comptes inexistants

L'incident

Le Golden Ticket refusé trois fois

Problème

Le contrôleur rejette le ticket forgé, alors que la clé de krbtgt est correcte.

Résolution

Trois causes levées une à une : plusieurs heures d'écart d'horloge, quand Kerberos en tolère cinq minutes ; un ticket forgé avant la correction de l'heure ; un compte inventé, qu'un Windows Server 2022 à jour rejette. Reforgé pour le compte réel « Administrateur », le ticket est accepté.

Résultats

Le ticket donne accès à tous les partages du contrôleur, disque système compris, et reste valable plusieurs années. Changer tous les mots de passe ne l'invalide pas ; seule une double rotation de krbtgt le fait.

C'est précisément ce que j'avais appliqué sur l'annuaire de production : double rotation de krbtgt, LM et NTLMv1 refusés, 11 comptes d'administration marqués « sensibles, ne peuvent pas être délégués », ce qui les protège d'une délégation non contrainte, et groupe Protected Users testé. Ce labo m'a montré concrètement ce que chacune de ces mesures neutralise, et ses limites : la double rotation invalide les tickets déjà forgés, elle n'empêche pas d'en forger un nouveau si la clé fuit à nouveau. Les correctifs récents réduisent aussi la marge de l'attaquant : la même attaque, qui passait autrefois avec un compte fictif, exige aujourd'hui un compte existant.

Terminal Kali : export KRB5CCNAME, impacket-smbclient en Kerberos sans mot de passe, puis commande shares listant ADMIN$, C$, IPC$, NETLOGON et SYSVOL ; identifiant utilisateur et nom d'hôte masqués.
Fig. 6Laboratoire : avec un Golden Ticket forgé à partir de la clé krbtgt, accès Kerberos sans mot de passe aux partages ADMIN$, C$, NETLOGON et SYSVOL du contrôleur.

Ce que j'améliorerais

  • Exploiter la délégation non contrainte configurée sur le compte de service : une étape réaliste de plus, et l'effet de l'option « compte sensible » de production rendu visible.
  • Relever les traces côté Windows (événements 4769 et 4662, après activation de l'audit) et les faire remonter dans le SIEM, pour vérifier que chaque étape déclenche une alerte.
  • Isoler le labo dans un VLAN dédié, sans route vers le reste du homelab : le premier scan voyait cinq hôtes pour deux machines de labo.

Compétences

  • Kerberos
  • Chaîne d'attaque Active Directory
  • BloodHound et Impacket
  • Diagnostic par élimination
  • Détection et contre-mesures
  • Labo reproductible

Pour aller plus loin

  • Golden Ticket refusé trois fois : Un Golden Ticket forgé avec la bonne clé krbtgt, refusé trois fois par le contrôleur, et ce que chaque refus montre des vérifications de Kerberos.