PingCastle & Hardening Active Directory
Active Directory est le pilier de la gestion des identités et des accès dans la majorité des environnements Windows. Sa criticité en fait aussi une cible privilégiée des attaquants. Un AD mal configuré peut permettre une élévation de privilèges, un mouvement latéral, voir une compromission totale du domaine.
PingCastle est aujourd’hui l’un des outils de référence pour évaluer la posture de sécurité d’un Active Directory. Il a été développé par Vincent Le Toux, expert français reconnu dans les cercles de la sécurité offensive et dont la maîtrise des internals Windows et Active Directory est de notoriété publique. On lui prête notamment des liens étroits avec l’ANSSI — une légende urbaine tenace dans la communauté, alimentée par la profondeur et la qualité des règles de détection de l’outil, qui reflètent une connaissance des vecteurs d’attaque rarement atteinte en dehors des sphères étatiques. Vincent Le Toux est par ailleurs co-auteur de mimikatz, l’outil de référence mondial pour l’extraction de credentials Windows.
PingCastle génère un rapport de maturité basé sur des indicateurs de risque concrets, permettant d’identifier rapidement les failles et de prioriser les actions correctives. Son niveau d’exigence s’aligne naturellement avec les recommandations publiées par l’ANSSI dans son guide de sécurisation Active Directory, faisant de ces deux ressources un duo complémentaire incontournable.
Qu’est-ce que PingCastle ?
PingCastle est un outil open-source. Il permet d’auditer la sécurité d’un Active Directory sans nécessiter de privilèges d’administrateur de domaine, bien que certaines analyses soient plus complètes avec des droits élevés.
Fonctionnalités principales
- Score de santé AD : PingCastle génère un score de 0 à 100 (0 = très sécurisé, 100 = très risqué), basé sur des règles pondérées.
- Cartographie des trusts : Visualisation des relations d’approbation entre domaines.
- Détection de failles connues : Kerberoasting, AS-REP Roasting, Pass-the-Hash, délégations Kerberos dangereuses, comptes inactifs, etc.
- Rapport HTML : Un rapport clair, structuré et exploitable par les équipes techniques et managériales.
- Mode consolidé : Analyse multi-domaines pour les environnements complexes.
Installation et utilisation
# Télécharger depuis https://www.pingcastle.com/download/
# Exécuter l'audit de base
.\PingCastle.exe --healthcheck --server <DC_FQDN>
# Audit du domaine courant
.\PingCastle.exe --healthcheck
# Cartographie des trusts
.\PingCastle.exe --graph
# Rapport consolidé
.\PingCastle.exe --hc-conso
Le rapport est généré en HTML dans le répertoire courant. Il contient :
- Un tableau de bord avec le score global
- Des catégories de risques : Stale Objects, Privileged Accounts, Trusts, Anomalies
- Des recommandations associées à chaque finding
Lecture du rapport PingCastle
Les 4 catégories de risque
| Catégorie | Description |
|---|---|
| StaleObjects | Comptes et objets obsolètes (comptes inactifs, machines non jointes, etc.) |
| Privileged Accounts | Gestion des comptes à hauts privilèges |
| Trusts | Relations d’approbation entre domaines |
| Anomalies | Configurations dangereuses (Kerberos, NTLM, délégations, etc.) |
Interpréter le score
- 0–30 : Posture correcte, améliorations mineures
- 30–50 : Risques modérés à adresser
- 50–70 : Risques significatifs, actions prioritaires
- 70–100 : Environnement très exposé, intervention urgente
Hardening Active Directory : Les points clés
1. Gestion des comptes privilégiés
Tier Model (Modèle à niveaux) : Séparer les comptes d’administration en trois niveaux pour limiter les mouvements latéraux.
- Tier 0 : Contrôleurs de domaine, AD DS, PKI
- Tier 1 : Serveurs d’applications
- Tier 2 : Postes de travail
Chaque niveau dispose de comptes dédiés qui ne peuvent pas se connecter aux niveaux inférieurs.
Protected Users : Ajouter les comptes sensibles au groupe Protected Users pour désactiver NTLM, la délégation Kerberos, et forcer des tickets Kerberos plus courts.
Add-ADGroupMember -Identity "Protected Users" -Members "Admin_Tier0"
LAPS (Local Administrator Password Solution) : Gérer les mots de passe des comptes administrateurs locaux de manière unique et automatisée.
# Vérifier que LAPS est déployé
Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd | Where-Object { $_."ms-Mcs-AdmPwd" -ne $null }
2. Durcissement de Kerberos
Désactiver AS-REP Roasting : S’assurer qu’aucun compte n’a Do not require Kerberos preauthentication activé.
Get-ADUser -Filter { DoesNotRequirePreAuth -eq $true } -Properties DoesNotRequirePreAuth
Limiter le Kerberoasting : Auditer les comptes avec un SPN et réduire la durée de vie des tickets de service.
Get-ADUser -Filter { ServicePrincipalName -ne "$null" } -Properties ServicePrincipalName, PasswordLastSet
Désactiver RC4 pour Kerberos : Forcer AES256.
# Via GPO : Computer Configuration > Windows Settings > Security Settings >
# Local Policies > Security Options >
# "Network security: Configure encryption types allowed for Kerberos"
# Cocher uniquement AES128_HMAC_SHA1 et AES256_HMAC_SHA1
krbtgt : Renouveler le mot de passe du compte krbtgt régulièrement (2 fois de suite pour invalider les anciens tickets).
# Réinitialiser krbtgt (à faire 2 fois à 10h d'intervalle)
Set-ADAccountPassword -Identity krbtgt -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "NewPassw0rd!" -Force)
3. Réduction de la surface d’attaque NTLM
Bien que NTLM soit parfois nécessaire, il doit être restreint au maximum.
GPO : Computer Configuration > Windows Settings > Security Settings >
Local Policies > Security Options
- "Network security: LAN Manager authentication level" ? Send NTLMv2 response only. Refuse LM & NTLM
- "Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers" ? Deny all
Auditer l’utilisation de NTLM avec :
# Activer l'audit NTLM
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "LogNTLMExclusions" -Value 1
4. Durcissement des délégations Kerberos
Les délégations mal configurées sont une voie royale pour les attaquants.
- Désactiver la délégation non contrainte (Unconstrained Delegation) sur tous les comptes sauf les DC.
- Utiliser la délégation contrainte basée sur les ressources (Resource-Based Constrained Delegation) quand nécessaire.
# Trouver les comptes avec délégation non contrainte (hors DC)
Get-ADComputer -Filter { TrustedForDelegation -eq $true } -Properties TrustedForDelegation, Name
Get-ADUser -Filter { TrustedForDelegation -eq $true } -Properties TrustedForDelegation
5. Sécurisation des GPO et ACL
Auditer les ACL dangereuses : Des droits WriteDACL, GenericAll, ou GenericWrite sur des objets sensibles peuvent permettre une escalade de privilèges.
Utiliser BloodHound/SharpHound en complément de PingCastle pour visualiser les chemins d’attaque.
AdminSDHolder : Vérifier les objets protégés par AdminSDHolder et surveiller les modifications.
# Lister les membres des groupes protégés
Get-ADGroupMember -Identity "Domain Admins" -Recursive
Get-ADGroupMember -Identity "Schema Admins" -Recursive
Get-ADGroupMember -Identity "Enterprise Admins" -Recursive
6. Gestion des objets obsolètes
Les comptes inactifs représentent un risque majeur.
# Comptes utilisateurs inactifs depuis 90 jours
$date = (Get-Date).AddDays(-90)
Get-ADUser -Filter { LastLogonDate -lt $date -and Enabled -eq $true } -Properties LastLogonDate
# Comptes machine inactifs
Get-ADComputer -Filter { LastLogonDate -lt $date -and Enabled -eq $true } -Properties LastLogonDate
Bonne pratique : Désactiver puis supprimer après une période de grâce, jamais directement supprimer.
7. Sécurisation des contrôleurs de domaine
- Limiter les connexions RDP aux DC
- Appliquer le Credential Guard et le Device Guard
- Activer Windows Defender Credential Guard pour protéger LSASS
- Activer l’audit avancé sur les DC (connexions, modifications d’objets, etc.)
- Déployer Microsoft Defender for Identity (MDI) pour la détection des attaques AD
# Vérifier Credential Guard
Get-ComputerInfo | Select-Object DeviceGuardSecurityServicesRunning
8. Patch et mises à jour
S’assurer que les correctifs critiques sont appliqués, notamment :
- MS14-068 : Élévation de privilèges Kerberos
- CVE-2020-1472 (Zerologon) : Compromission DC via Netlogon
- CVE-2021-42278 / 42287 (noPac) : Élévation de privilèges AD
- CVE-2022-26923 (Certifried) : PKI / AD CS
Workflow recommandé : PingCastle ? Plan de remédiation
1. Lancer PingCastle ? Identifier le score et les findings critiques
2. Prioriser par score de risque (Critical > High > Medium)
3. Pour chaque finding :
a. Comprendre l'impact
b. Identifier les objets concernés
c. Appliquer la correction
d. Re-scanner pour valider
4. Planifier des scans réguliers (mensuel recommandé)
5. Intégrer dans un processus de gestion des vulnérabilités
Ressources complémentaires
- PingCastle — Outil d’audit AD
- BloodHound — Visualisation des chemins d’attaque
- Microsoft STIG pour AD — Guides de durcissement officiels
- ANSSI — Guide de sécurisation AD — Recommandations ANSSI (FR)
- Purple Knight — Alternative/complément à PingCastle
- Tiering Model Microsoft — Modèle de niveaux d’accès
L’audit régulier avec PingCastle couplé à un plan de hardening structuré permet de réduire significativement la surface d’attaque d’un Active Directory. La sécurité de l’AD est un processus continu : les configurations évoluent, de nouvelles vulnérabilités apparaissent, et les attaquants s’adaptent. Une approche proactive, basée sur des outils comme PingCastle, BloodHound et les recommandations ANSSI/Microsoft, est essentielle pour maintenir un environnement AD robuste.
Rappel : Toujours effectuer ces analyses dans un cadre légal, avec les autorisations appropriées. Un audit AD non autorisé peut constituer une infraction pénale.