Licence pro ASS&RProductionLecture : 4 min

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.

Contexte
Production · PME, 808 objets, deux contrôleurs de domaine Windows Server
Période
Juin – septembre 2026
Mon rôle
Mené en autonomie ; actions sur les comptes validées par la direction
Outils
PingCastle · PowerShell · GPO · auditpol · repadmin

En bref

Le problème

Un Active Directory de 808 objets jamais audité : score PingCastle de 100/100, le pire possible, et aucun environnement de test.

Ce que j'ai fait

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.

Le résultat

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.

100 → 74score PingCastle « Anomalies »
169objets obsolètes supprimés
11 ansâge du mot de passe krbtgt avant rotation

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.

Console PingCastle : choix du domaine à analyser, démarrage de la tâche et détection d'environ 808 objets ; le nom de domaine est masqué.
Fig. 1Lancement de l'audit PingCastle 3.5 en mode healthcheck privilégié sur le domaine de production : environ 808 objets Active Directory analysés.

Ce que j'ai fait

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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épartRisquePoints
SMBv1 actif sur le contrôleur de domaineExécution de code à distance sans authentification (EternalBlue)100
krbtgt inchangé depuis 4 019 joursGolden Ticket toujours valable50
74 % des comptes ordinateurs inactifsComptes réutilisables que personne ne surveille30
Administrateurs sans l'option « compte sensible »Vol d'identifiants par délégation Kerberos20
NTLMv1 et LM acceptésEmpreintes capturables et cassables rapidement15

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"
}
Fenêtre de paramètre de stratégie de sécurité Windows : niveau d'authentification LAN Manager réglé sur l'envoi de réponses NTLM version 2 uniquement.
Fig. 2Stratégie des contrôleurs de domaine réglée sur « NTLMv2 uniquement, refuser LM et NTLM », ce qui ferme l'authentification LM/NTLMv1.
Deux extraits de la stratégie de mot de passe du domaine : avant, complexité désactivée et longueur minimale de 1 caractère ; après, complexité activée et 10 caractères.
Fig. 3Politique de mot de passe du domaine avant et après correction : longueur minimale portée de 1 à 10 caractères et complexité activée.
Deux tableaux de stratégie d'audit : avant, presque toutes les catégories sont sur « Pas d'audit » ; après, accès à l'annuaire, connexions, gestion des comptes et privilèges sont audités en réussite et échec.
Fig. 4Stratégie d'audit des contrôleurs de domaine avant et après : les catégories clés passent de « Pas d'audit » à « Réussite, Échec ».
CorrectionTechnique MITRE ATT&CK atténuée
SMBv1 désinstalléT1210 · exploitation de services distants (EternalBlue, MS17-010)
Double rotation krbtgtT1558.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ésT1557 · interception d'authentification : les réponses LM et NTLMv1 capturées ne se cassent plus en quelques minutes
Comptes obsolètes supprimésT1078 · comptes valides : moins de comptes dormants à détourner
MachineAccountQuota à 0T1136.002 · création de compte de domaine (comptes machines)

L'incident

Un compte à privilèges ne peut plus se connecter à distance

Problème

Quelques minutes après l'ajout de son compte au groupe Protected Users, sa connexion bureau à distance est refusée.

Résolution

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.

Jauge PingCastle de la catégorie « Anomalies », à 74 sur 100.
Fig. 5Scan PingCastle final (août 2026) : la catégorie « Anomalies » ramenée de 100 à 74/100.

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

  • Audit de sécurité Active Directory
  • Kerberos et comptes à privilèges
  • GPO
  • PowerShell
  • Gestion du changement en production
  • Communication des risques à la direction

Pour aller plus loin