Qu'est-ce que la sécurité des mots de passe Active Directory ?
La sécurité des mots de passe Active Directory ne se limite pas à une longueur minimale. Elle regroupe tous les réglages qui déterminent comment un secret est choisi, stocké, dérivé, utilisé et renouvelé dans le domaine.
Dans un audit AD sérieux, six familles d'erreurs reviennent sans cesse :
- mots de passe qui n'expirent jamais
- politiques de mots de passe trop faibles
- comptes avec
PasswordNotRequired - mots de passe stockés dans des champs descriptifs
- WDigest encore capable d'exposer du clair dans LSASS
- NTLMv1 encore autorisé
Ce qui rend ces erreurs dangereuses, c'est qu'elles sont simples à exploiter et qu'elles s'enchaînent bien avec d'autres attaques : Kerberoasting, AS-REP Roasting, mouvement latéral via comptes de service, dump LSASS ou réutilisation de credentials anciens.
Le modèle technique à garder en tête
Les contrôles de mots de passe en environnement AD viennent de plusieurs endroits :
- Default Domain Password Policy
- Fine-Grained Password Policies (FGPP)
- flags de compte dans
userAccountControl - configuration d'authentification héritée sur les hôtes et contrôleurs de domaine
- habitudes d'exploitation, par exemple laisser un secret dans
description
Le vrai problème n'est donc pas seulement « un mot de passe faible ». Le vrai problème est la combinaison entre :
- un secret crackable ou exposé
- un compte utile
- une durée de vie trop longue
- un protocole ou un cache qui aide l'attaquant
Les six erreurs qui comptent vraiment
1. PasswordNeverExpires
Un compte avec PasswordNeverExpires = True donne à l'attaquant un secret qui peut rester exploitable pendant des années si personne ne le fait tourner.
Ce n'est pas seulement un problème d'hygiène. C'est un accélérateur de persistance, surtout sur les comptes de service, les comptes techniques et les comptes à privilèges.
2. Politique de mots de passe trop faible
Une politique trop permissive sur la longueur, l'historique ou la rotation réduit le coût du cracking hors ligne et augmente le succès des sprays.
Les FGPP compliquent souvent la lecture réelle du risque : le domaine peut paraître correctement configuré alors que certains groupes ou comptes sensibles héritent en fait d'une politique plus faible.
3. PasswordNotRequired
Le flag PASSWD_NOTREQD documenté par Microsoft est un vrai signal de posture dégradée. Il ne faut pas le banaliser. Même quand son exploitation dépend du contexte, un compte avec ce flag mérite une revue immédiate.
4. Mots de passe dans les descriptions
C'est l'une des erreurs les plus évitables et pourtant l'une des plus utiles à l'attaquant. Un secret laissé dans description ou dans un attribut texte transforme l'annuaire en dépôt de credentials.
5. WDigest encore actif
L'avis de sécurité Microsoft 2871997 existe précisément parce que WDigest peut exposer des credentials exploitables en mémoire. Si UseLogonCredential est activé, un dump LSASS peut redevenir beaucoup plus rentable pour l'attaquant.
6. NTLMv1 encore autorisé
Microsoft documente LMCompatibilityLevel depuis longtemps. Si l'environnement accepte encore des niveaux hérités, vous conservez un protocole plus faible qui facilite la réutilisation et l'analyse de réponses anciennes.
Comment un attaquant relie ces erreurs
Étape 1 - Inventorier les comptes faibles
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpires, PasswordLastSet |
Select-Object SamAccountName, PasswordLastSet
Get-ADUser -Filter {PasswordNotRequired -eq $true} -Properties PasswordNotRequired |
Select-Object SamAccountName
Get-ADUser -Filter * -Properties Description |
Where-Object {$_.Description -match "pass|pwd|mdp|mot de passe|password"} |
Select-Object SamAccountName, Description
Étape 2 - Vérifier les chemins d'exposition mémoire ou protocolaire
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' -Name UseLogonCredential
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name LmCompatibilityLevel
Étape 3 - Exploiter selon le cas
Selon l'exposition trouvée, l'attaquant peut :
- dumper LSASS pour récupérer du clair ou des dérivés exploitables
- lancer du password spray sur des comptes trop anciens ou trop faibles
- casser hors ligne des matériaux récupérés via Kerberoasting ou AS-REP Roasting
- réutiliser des passwords locaux ou de service jamais changés
Le point clé est qu'une mauvaise posture mot de passe ne reste presque jamais isolée. Elle alimente d'autres techniques.
Détection
Ce qu'il faut suivre côté AD
Sur les contrôleurs de domaine, les événements liés aux comptes et aux échecs Kerberos sont utiles, mais ils ne suffisent pas seuls.
Commencez par surveiller :
- 4738 pour les changements de compte, notamment les flags sensibles
- 4723 et 4724 pour les changements et resets de mot de passe
- 4771 pour les échecs de pré-authentification Kerberos pouvant révéler un spray
- 4624 et les champs d'authentification quand l'environnement montre encore du NTLM hérité
Ce qu'il faut mesurer en posture
Le plus rentable reste souvent l'inventaire régulier de :
- comptes avec
PasswordNeverExpires - comptes avec
PasswordNotRequired - comptes avec
SIDHistoryou privilèges élevés combinés à une hygiène faible - présence de
UseLogonCredential - valeur effective de
LmCompatibilityLevel - utilisateurs ou comptes techniques avec
PasswordLastSettrès ancien
Exemple SIEM pour NTLMv1
event.code: "4624" AND
winlog.event_data.LmPackageName: "NTLM V1"
Le bon réflexe défensif n'est pas de chercher un seul Event ID magique. Il faut corréler posture faible + activité d'authentification + criticité du compte.
Remediation
1. Renforcer la politique du domaine et les FGPP
Set-ADDefaultDomainPasswordPolicy -Identity corp.local `
-MinPasswordLength 14 `
-ComplexityEnabled $true `
-MaxPasswordAge (New-TimeSpan -Days 90) `
-MinPasswordAge (New-TimeSpan -Days 1) `
-PasswordHistoryCount 24
Le paramétrage exact dépend du contexte, mais l'objectif est clair : rendre le secret plus coûteux à casser et éviter la réutilisation triviale.
2. Corriger PasswordNeverExpires
Get-ADUser -Filter {PasswordNeverExpires -eq $true -and Enabled -eq $true} |
Set-ADUser -PasswordNeverExpires $false
Pour les comptes de service, ne vous contentez pas d'un changement aveugle. Préparez la rotation applicative ou migrez vers des gMSA quand c'est possible.
3. Corriger PasswordNotRequired
Get-ADUser -Filter {PasswordNotRequired -eq $true} | ForEach-Object {
Set-ADAccountControl -Identity $_ -PasswordNotRequired $false
}
4. Nettoyer immédiatement les descriptions contenant des secrets
Get-ADUser -Filter * -Properties Description |
Where-Object {$_.Description -match "pass|pwd|mdp|password"} |
ForEach-Object {
Set-ADUser -Identity $_ -Description ""
}
Si un mot de passe a été stocké dans un attribut, il faut considérer qu'il est exposé et le faire tourner, pas seulement effacer le texte.
5. Désactiver WDigest exposant les secrets
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' `
-Name UseLogonCredential -Value 0
6. Forcer NTLMv2 uniquement
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' `
-Name LmCompatibilityLevel -Value 5
Avant de le faire, vérifiez les systèmes ou applications hérités qui reposent encore sur des comportements anciens.
7. Valider la politique réellement appliquée aux comptes sensibles
Un durcissement propre doit vérifier la politique résultante sur les comptes à privilèges, les comptes de service et les comptes d'urgence. Beaucoup d'équipes relèvent la politique par défaut puis découvrent trop tard qu'une FGPP plus faible s'applique encore à certains objets critiques.
Get-ADUserResultantPasswordPolicy -Identity admin.exemple
Get-ADUserResultantPasswordPolicy -Identity svc.exemple
Le point de contrôle utile n'est pas « quelle politique a été configurée ? », mais quelle politique reçoit réellement le compte qui protège un service critique ou des privilèges élevés.
Remediation et priorisation operationnelle
L'ordre de remédiation compte. Commencez par retirer les expositions directes : secrets en clair dans description, PasswordNotRequired, WDigest encore actif. Ensuite, traitez les dépendances héritées comme NTLMv1, puis les exceptions de cycle de vie comme PasswordNeverExpires.
Pour les comptes de service, la vraie fermeture du sujet passe souvent par une migration vers gMSA ou par une rotation pilotée applicativement. Sinon, la même exception revient après le prochain incident ou la prochaine mise à jour. Une équipe technique doit donc documenter trois choses pour chaque exception restante : le propriétaire, la dépendance réelle et la date de sortie.
Une posture saine sur les mots de passe AD ne se résume pas à une case de conformité. Elle consiste à prouver qu'un secret utile est devenu plus difficile à extraire, plus difficile à casser et moins rentable à réutiliser.
Les comptes d'urgence et les comptes break-glass doivent aussi faire partie de la revue. Même peu utilisés, ils deviennent critiques si leur mot de passe échappe à la politique standard ou si leur rotation n'est jamais testée en conditions réelles.
Validation après correction
Une vraie fermeture du sujet doit permettre de démontrer :
- quels comptes gardent encore des exceptions (
PasswordNeverExpires,PasswordNotRequired) et pourquoi - que les secrets trouvés en clair dans des attributs ont été rotés, pas seulement supprimés du texte
- que
UseLogonCredentialn'expose plus de credentials en clair là où il ne devrait pas - que l'environnement n'autorise plus NTLMv1
- que les comptes de service anciens ont un plan de migration ou de rotation crédible
Sans ces cinq points, on parle d'un nettoyage partiel, pas d'une vraie amélioration de posture. Cette validation doit aussi confirmer la politique résultante réellement appliquée aux comptes privilégiés et aux comptes de service, afin d'éviter qu'une FGPP plus faible ne recrée le même risque après la correction.
Erreurs classiques côté défense
Les erreurs qui reviennent le plus souvent :
- considérer
PasswordNeverExpirescomme une simple commodité d'exploitation - oublier les FGPP et croire que la politique du domaine raconte toute l'histoire
- vider un champ
descriptionsans changer le mot de passe qu'il contenait - désactiver un comportement hérité sur un hôte mais pas dans le reste du parc
- corriger les flags de compte sans revoir les comptes de service, tâches planifiées et applications dépendantes
Un lecteur technique attend une conclusion simple : quels secrets restent faciles à trouver, faciles à casser ou faciles à réutiliser, et sur quels comptes cela devient critique.
Références primaires
- Microsoft Learn : userAccountControl flags
- Microsoft Learn : Fine-grained password policies
- Microsoft Security Advisory 2871997
- Microsoft Learn : Enable NTLM 2 authentication
Comment EtcSec détecte cela
EtcSec couvre ce sujet sous plusieurs angles :
- PASSWORD_NEVER_EXPIRES
- PASSWORD_POLICY_WEAK
- PASSWORD_NOT_REQUIRED
- PASSWORD_IN_DESCRIPTION
- WDIGEST_ENABLED
- NTLMV1_ALLOWED
Pris ensemble, ces constats permettent de répondre à une seule question utile : est-ce que vos secrets AD sont seulement conformes sur le papier, ou réellement difficiles à extraire, casser et réutiliser ?



