Audit et durcissement d'un Active Directory en production
Un annuaire jamais audité depuis sa création, que j'ai mesuré avec PingCastle puis corrigé en production, faille par faille.
En bref
Un Active Directory de 808 objets jamais audité : score PingCastle de 100/100, le pire possible, et aucun environnement de test.
J'ai classé les failles par risque réel et je les ai corrigées en production : SMBv1, krbtgt, NTLMv1, comptes à privilèges et 169 objets obsolètes.
Score « Anomalies » de 100 à 74, 169 objets obsolètes supprimés, SMBv1 retiré du contrôleur et Golden Tickets existants invalidés, sans coupure imprévue.
Contexte
L'annuaire avait été créé avec l'entreprise et jamais audité depuis. Il comptait 808 objets pour une vingtaine d'utilisateurs réels : anciens salariés, postes disparus, reliquats d'un serveur Exchange migré vers Microsoft 365.
Deux contraintes : aucun environnement de test, chaque commande passait sur les contrôleurs de production ; et aucune coupure non annoncée, avec validation de la direction pour toute action sur un compte.

Ce que j'ai fait
- Mesurer, puis prioriserPremier scan PingCastle : 100/100 sur trois des quatre catégories. J'ai trié les constats par ce qu'un attaquant peut en faire, pas seulement par points.
- Retirer SMBv1 sans rien casserCinq jours d'écoute des accès SMBv1 : aucun. Désactivation, désinstallation, redémarrage du contrôleur principal pendant que le second assurait l'authentification.
- Renouveler krbtgt deux foisSon mot de passe n'avait pas changé depuis 11 ans : un Golden Ticket forgé pendant cette période restait valable. Deux rotations à cinq jours d'écart l'invalident.
- Nettoyer les comptes sans suppression directeChaque objet était désactivé, isolé dans une unité « Quarantaine », observé, puis seulement supprimé : 100 ordinateurs et 69 comptes au total.
- Fermer les accès faiblesNTLMv1 et LM refusés par GPO, 11 comptes d'administration protégés contre la délégation, mot de passe minimal porté de 1 à 10 caractères, audit avancé envoyé au SIEM Wazuh.
Voir les détails techniques
| Constat de départ | Risque | Points |
|---|---|---|
| SMBv1 actif sur le contrôleur de domaine | Exécution de code à distance sans authentification (EternalBlue) | 100 |
| krbtgt inchangé depuis 4 019 jours | Golden Ticket toujours valable | 50 |
| 74 % des comptes ordinateurs inactifs | Comptes réutilisables que personne ne surveille | 30 |
| Administrateurs sans l'option « compte sensible » | Vol d'identifiants par délégation Kerberos | 20 |
| NTLMv1 et LM acceptés | Empreintes capturables et cassables rapidement | 15 |
PowerShell · retrait de SMBv1
# Écouter avant de couper : qui utilise encore SMBv1 ?
Set-SmbServerConfiguration -AuditSmb1Access $true -Force
Get-WinEvent -LogName "Microsoft-Windows-SMBServer/Audit" | Where-Object Id -eq 3000
# Aucun accès en 5 jours : désactivation puis désinstallation
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
# Après le redémarrage (le second contrôleur assure l'authentification) :
# forcer la réplication pour vérifier qu'elle repart sans erreur
repadmin /syncall /AdeP
PowerShell · mise en quarantaine (extrait)
$quarantaine = "OU=Quarantaine,DC=corp,DC=local"
Import-Csv .\postes_inactifs.csv | ForEach-Object {
$pc = Get-ADComputer $_.Name
Disable-ADAccount -Identity $pc
Move-ADObject -Identity $pc.DistinguishedName -TargetPath $quarantaine
Add-Content C:\Temp\log_postes.txt "$(Get-Date -Format s);$($pc.Name);quarantaine"
}



| Correction | Technique MITRE ATT&CK atténuée |
|---|---|
| SMBv1 désinstallé | T1210 · exploitation de services distants (EternalBlue, MS17-010) |
| Double rotation krbtgt | T1558.001 · Golden Ticket : les tickets déjà forgés sont invalidés, pas ceux qu'un nouveau vol de la clé permettrait |
| NTLMv1 et LM refusés | T1557 · interception d'authentification : les réponses LM et NTLMv1 capturées ne se cassent plus en quelques minutes |
| Comptes obsolètes supprimés | T1078 · comptes valides : moins de comptes dormants à détourner |
| MachineAccountQuota à 0 | T1136.002 · création de compte de domaine (comptes machines) |
L'incident
Un compte à privilèges ne peut plus se connecter à distance
Quelques minutes après l'ajout de son compte au groupe Protected Users, sa connexion bureau à distance est refusée.
Retrait du groupe, remise à zéro de la délégation, fermeture complète de sa session : accès rétabli le jour même. Depuis, je teste chaque ajout sur un compte non critique aux usages identiques, et je préviens l'utilisateur avant.
Résultats
Au dernier scan, en août 2026, SMBv1 était désinstallé, le mot de passe krbtgt avait moins de dix jours, LM et NTLMv1 étaient refusés, et un simple utilisateur ne pouvait plus joindre de machine au domaine. Les chantiers nécessitant une fenêtre de maintenance ont été remis à la direction sous forme de feuille de route.

Ce que j'améliorerais
- Activer la corbeille Active Directory et sauvegarder l'état système des contrôleurs avant toute suppression.
- Utiliser le script de rotation krbtgt de Microsoft, qui vérifie la réplication entre chaque étape.
- Viser 12 caractères minimum, comme le recommande l'ANSSI, et déployer l'audit avancé par GPO.
Compétences
Pour aller plus loin
- Retirer SMBv1 d'un contrôleur de domaine : Écouter cinq jours qui utilise encore SMBv1, le retirer, redémarrer le contrôleur pendant que le second authentifie, puis vérifier la réplication.