🏢 Checklist Sécurité Active Directory 2025
Audit complet AD : Kerberos, NTLM, GPO, délégation, tiering, AdminSDHolder, certificats ADCS et détection Golden/Silver Ticket.
Cette checklist couvre l'intégralité de la sécurisation d'Active Directory : architecture tiering, comptes à privilèges, Kerberos, NTLM, GPO, délégation, ADCS, AdminSDHolder et détection des attaques Golden/Silver Ticket. Inclut les commandes PowerShell de vérification et les seuils critiques pour chaque contrôle.
📑 Table des matières
CHECKLIST SÉCURITÉ ACTIVE DIRECTORY 2025
🛡️ AYI NEDJIMI CONSULTANTS (ANC)
Version : 1.0
Date : 2026-04-04
Classification : CONFIDENTIEL
Auteur : ANC Security Team
📋 Légende d’Évaluation
| Symbole | Statut | Description |
|---|---|---|
| ✅ | Conforme | Le contrôle est correctement implémenté |
| ❌ | Non-Conforme | Le contrôle n’est pas implémenté ou défaillant |
| ⚠️ | Partiel | Le contrôle est partiellement implémenté |
| N/A | Non Applicable | Le contrôle ne s’applique pas à cet environnement |
Niveaux de Criticité
| Niveau | Icône | Description | Priorité |
|---|---|---|---|
| Critique | 🔴 | Risque immédiat de compromission totale | P0 - Immédiat |
| Élevé | 🟠 | Risque élevé d’élévation de privilèges | P1 - < 7 jours |
| Moyen | 🟡 | Risque modéré d’exposition | P2 - < 30 jours |
| Faible | 🟢 | Bonnes pratiques et hardening | P3 - < 90 jours |
⚡ Mode Découverte Rapide — 15 Questions Clés
Évaluation rapide des risques critiques en 15 minutes
Q1. Comptes à privilèges administrateurs
# Nombre de Domain Admins
(Get-ADGroupMember "Domain Admins").Count
# Nombre d'Enterprise Admins
(Get-ADGroupMember "Enterprise Admins").Count
Seuil critique : >5 Domain Admins ou >2 Enterprise Admins
Évaluation : ✅ ❌ ⚠️ N/A
Q2. Rotation du compte KRBTGT
Get-ADUser krbtgt -Properties PasswordLastSet
Seuil critique : >180 jours sans rotation
Évaluation : ✅ ❌ ⚠️ N/A
Q3. Comptes Kerberoastables
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName,PasswordLastSet
Seuil critique : >10 comptes ou mots de passe >1 an
Évaluation : ✅ ❌ ⚠️ N/A
Q4. AdminSDHolder et SDProp
Get-ADObject -SearchBase "CN=AdminSDHolder,CN=System,DC=domain,DC=com" -Properties nTSecurityDescriptor
Seuil critique : ACL modifiées ou SDProp désactivé
Évaluation : ✅ ❌ ⚠️ N/A
Q5. Restriction NTLM
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LmCompatibilityLevel
Seuil critique : <5 (NTLM autorisé)
Évaluation : ✅ ❌ ⚠️ N/A
Q6. LDAP Signing et Channel Binding
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"
Seuil critique : <2 (signing non requis)
Évaluation : ✅ ❌ ⚠️ N/A
Q7. Délégation Kerberos non contrainte
Get-ADComputer -Filter {TrustedForDelegation -eq $true}
Get-ADUser -Filter {TrustedForDelegation -eq $true}
Seuil critique : >0 objets (hors DCs)
Évaluation : ✅ ❌ ⚠️ N/A
Q8. Niveau fonctionnel AD
Get-ADDomain | Select DomainMode
Get-ADForest | Select ForestMode
Seuil critique : <Windows2019
Évaluation : ✅ ❌ ⚠️ N/A
Q9. Comptes avec pré-authentification désactivée
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true}
Seuil critique : >0 comptes
Évaluation : ✅ ❌ ⚠️ N/A
Q10. GPO avec permissions dangereuses
Get-GPPermission -All | Where-Object {$_.Permission -eq "GpoEditDeleteModifySecurity" -and $_.Trustee -notlike "*Admins"}
Seuil critique : >0 permissions non-admin
Évaluation : ✅ ❌ ⚠️ N/A
Q11. Trusts inter-forêts
Get-ADTrust -Filter *
Seuil critique : Trusts bidirectionnels non justifiés
Évaluation : ✅ ❌ ⚠️ N/A
Q12. Sites AD sans DC
Get-ADReplicationSite | Where-Object {-not (Get-ADDomainController -Filter {Site -eq $_.Name})}
Seuil critique : >0 sites orphelins
Évaluation : ✅ ❌ ⚠️ N/A
Q13. Certificats AD CS dangereux
certutil -CATemplates | findstr "ENROLLEE_SUPPLIES_SUBJECT"
Seuil critique : Templates ESC1 actifs
Évaluation : ✅ ❌ ⚠️ N/A
Q14. Audit de sécurité activé
auditpol /get /category:"Account Logon"
Seuil critique : <50% events auditées
Évaluation : ✅ ❌ ⚠️ N/A
Q15. Score PingCastle global
PingCastle.exe --healthcheck --server domain.com
Seuil critique : >50 (risque élevé)
Évaluation : ✅ ❌ ⚠️ N/A
📊 Informations Client
| Champ | Valeur | Notes |
|---|---|---|
| Organisation | [À compléter] | |
| Domaine principal | [À compléter] | |
| Niveau de forêt | [À compléter] | |
| Niveau de domaine | [À compléter] | |
| Nombre de DC | [À compléter] | |
| Nombre d’utilisateurs | [À compléter] | |
| Nombre de sites AD | [À compléter] | |
| Score PingCastle | [À compléter] | 0-25: Excellent, 26-50: Bon, 51-75: Moyen, >75: Critique |
🏗️ SECTION 1 — ARCHITECTURE & TIERING (~25 contrôles)
1.1.1 — Modèle d’accès Enterprise (Tiering Model)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-001 / PingCastle A-Tier
MITRE ATT&CK : T1078
Description : Le modèle de tiering Microsoft sépare l’infrastructure en 3 niveaux (Tier 0: AD/DC, Tier 1: Serveurs, Tier 2: Workstations) pour limiter les mouvements latéraux. L’absence de séparation permet l’élévation de privilèges entre niveaux.
Vérification :
# Vérifier l'existence des OUs de tiering
Get-ADOrganizationalUnit -Filter "Name -like '*Tier*'" | Select Name,DistinguishedName
# Vérifier les GPO de tiering
Get-GPO -All | Where-Object {$_.DisplayName -like "*Tier*"}
# Comptes dans les groupes privilégiés par tier
Get-ADGroupMember "Tier 0 Admins" -Recursive
Remédiation :
- Créer la structure OU Tiering
- Implémenter les GPO de restriction par tier
- Migrer les comptes selon le modèle
Valeur par défaut : Aucun tiering implémenté
1.1.2 — Niveau fonctionnel de forêt minimum
Niveau : 🟡
Référence CIS : 2.2.1 / ANSSI-AD-002
MITRE ATT&CK : T1484
Description : Le niveau fonctionnel détermine les fonctionnalités AD disponibles. Windows Server 2019+ apporte des améliorations de sécurité importantes comme l’authentification Kerberos AES256 par défaut.
Vérification :
Get-ADForest | Select Name,ForestMode
Get-ADDomain | Select Name,DomainMode
Remédiation :
- Upgrader tous les DC vers WS2019+
- Élever le niveau fonctionnel : Set-ADForestMode -Identity forest.com -ForestMode Windows2019Forest
Valeur par défaut : Windows2019Forest recommandé
1.1.3 — Architecture sites et sous-réseaux
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-003
MITRE ATT&CK : T1018
Description : Une architecture sites incorrecte peut causer des problèmes de réplication, d’authentification et faciliter la reconnaissance réseau pour un attaquant.
Vérification :
Get-ADReplicationSite | Select Name,Description
Get-ADReplicationSubnet | Select Name,Site,Location
Get-ADReplicationSiteLink | Select Name,Cost,ReplicationFrequencyInMinutes
Remédiation :
- Créer des sites correspondant à la topologie réseau
- Associer les sous-réseaux aux sites appropriés
- Configurer les liens de sites avec des coûts adéquats
Valeur par défaut : Site par défaut uniquement
1.1.4 — Séparation des rôles FSMO
Niveau : 🟠
Référence CIS : 2.2.2 / ANSSI-AD-004 / PingCastle S-DC-Fsmo
MITRE ATT&CK : T1484
Description : Les rôles FSMO centralisés sur un seul DC créent un point de défaillance unique. La dispersion améliore la disponibilité et limite l’impact d’une compromission.
Vérification :
# Vérifier les détenteurs de rôles FSMO
Get-ADForest | Select SchemaMaster,DomainNamingMaster
Get-ADDomain | Select PDCEmulator,RIDMaster,InfrastructureMaster
netdom query fsmo
Remédiation :
- Séparer les rôles sur des DC différents
- Documenter les détenteurs de rôles
- Tester les procédures de transfert/saisie
Valeur par défaut : Tous rôles sur le premier DC
1.1.5 — Configuration des trusts inter-domaines
Niveau : 🔴
Référence CIS : 1.1.1 / ANSSI-AD-005 / PingCastle T-TrustDirection
MITRE ATT&CK : T1482
Description : Les trusts bidirectionnels permettent l’authentification et l’accès aux ressources entre domaines/forêts. Mal configurés, ils exposent à des attaques de type Golden Ticket inter-domaines.
Vérification :
Get-ADTrust -Filter * | Select Name,Direction,TrustType,SelectiveAuthentication,SIDFilteringEnabled
# Vérifier les SID History dangereux
Get-ADUser -Filter * -Properties SIDHistory | Where-Object {$_.SIDHistory}
Remédiation :
- Activer SID Filtering sur tous les trusts externes
- Implémenter Selective Authentication
- Auditer et nettoyer les SID History
Valeur par défaut : SID Filtering désactivé sur trusts internes
1.1.6 — Contrôle des connexions clients LDAP
Niveau : 🟠
Référence CIS : 2.3.7.4 / ANSSI-AD-006
MITRE ATT&CK : T1041
Description : Les connexions LDAP non sécurisées permettent l’interception des credentials et des requêtes. LDAPS et LDAP Signing doivent être imposés.
Vérification :
# Vérifier les paramètres LDAP sur DC
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LdapEnforceChannelBinding"
Remédiation :
- Set LDAPServerIntegrity = 2 (required signing)
- Set LdapEnforceChannelBinding = 2 (always)
- Configurer certificats LDAPS
Valeur par défaut : LDAPServerIntegrity = 1 (négocié)
1.1.7 — Isolation des contrôleurs de domaine
Niveau : 🟠
Référence CIS : 2.3.1.4 / ANSSI-AD-007
MITRE ATT&CK : T1210
Description : Les DC doivent être isolés dans des VLANs dédiés avec des règles firewall strictes. L’exposition directe facilite les attaques DCSync et DCShadow.
Vérification :
# Vérifier les interfaces réseau des DC
Get-NetAdapter | Select Name,InterfaceDescription,Status
Get-NetFirewallRule -DisplayGroup "Active Directory Domain Services" | Select DisplayName,Enabled,Action
Remédiation :
- Placer les DC dans un VLAN dédié
- Configurer des règles firewall strictes
- Surveiller le trafic réseau des DC
Valeur par défaut : Aucune isolation réseau
1.1.8 — Contrôle des ports et services DC
Niveau : 🟡
Référence CIS : 5.1 / ANSSI-AD-008
MITRE ATT&CK : T1046
Description : Les DC exposent de nombreux services réseau. Seuls les ports nécessaires doivent être ouverts pour limiter la surface d’attaque.
Vérification :
# Ports ouverts sur le DC
Get-NetTCPConnection -State Listen | Select LocalAddress,LocalPort,OwningProcess
Get-Service | Where-Object {$_.Status -eq "Running" -and $_.Name -like "*AD*"}
Remédiation :
- Désactiver les services non nécessaires
- Configurer le firewall Windows
- Auditer régulièrement les ports ouverts
Valeur par défaut : Nombreux services/ports ouverts
1.1.9 — Redondance et haute disponibilité
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-009
MITRE ATT&CK : T1489
Description : Un nombre insuffisant de DC par site peut causer des interruptions de service. La recommandation est minimum 2 DC par site critique.
Vérification :
# Nombre de DC par site
Get-ADDomainController | Group-Object Site | Select Name,Count
# État de réplication entre DC
Get-ADReplicationFailure -Target * -Scope Domain
Remédiation :
- Déployer minimum 2 DC par site critique
- Vérifier la santé de réplication
- Tester les procédures de basculement
Valeur par défaut : Souvent un seul DC par site
1.1.10 — Contrôle des objets GPO orphelins
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-010 / PingCastle A-PreWin2000
MITRE ATT&CK : T1484.001
Description : Les GPO non liées ou avec des permissions incorrectes peuvent être exploitées pour l’élévation de privilèges ou la persistence.
Vérification :
# GPO non liées
Get-GPO -All | Where-Object {(Get-GPOReport -Guid $_.Id -ReportType XML) -notmatch "LinksTo"}
# Permissions GPO dangereuses
Get-GPPermission -All | Where-Object {$_.Permission -match "Edit" -and $_.Trustee -notlike "*Admin*"}
Remédiation :
- Supprimer les GPO orphelines
- Auditer les permissions GPO
- Implémenter des processus de gouvernance GPO
Valeur par défaut : GPO orphelines présentes
1.1.11 — Gestion des comptes de service intégrés
Niveau : 🟠
Référence CIS : 2.3.1.1 / ANSSI-AD-011
MITRE ATT&CK : T1078.002
Description : Les comptes built-in comme Administrator, Guest, krbtgt doivent être sécurisés. Le compte Guest doit être désactivé, Administrator renommé.
Vérification :
Get-ADUser Administrator -Properties Enabled,PasswordLastSet,BadLogonCount
Get-ADUser Guest -Properties Enabled
Get-ADUser krbtgt -Properties PasswordLastSet,AccountNotDelegated
Remédiation :
- Désactiver le compte Guest
- Renommer le compte Administrator
- Définir AccountNotDelegated sur krbtgt
Valeur par défaut : Comptes avec noms par défaut
1.1.12 — Contrôle du catalogue global
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-012
MITRE ATT&CK : T1018
Description : Le catalogue global contient des informations sur tous les objets de la forêt. Un nombre insuffisant de serveurs GC peut impacter les performances d’authentification.
Vérification :
# Serveurs de catalogue global
Get-ADDomainController -Filter * | Select Name,Site,IsGlobalCatalog
# Vérifier la réplication du GC
Get-ADReplicationConnection -Filter * | Where-Object {$_.ReplicatedNamingContexts -like "*3268*"}
Remédiation :
- Configurer au moins un GC par site principal
- Vérifier la réplication GC
- Monitorer les performances d’authentification
Valeur par défaut : GC sur tous les DC en single-domain
1.1.13 — Protection contre DCShadow
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-013 / PingCastle A-DCShadow
MITRE ATT&CK : T1207
Description : L’attaque DCShadow permet à un attaquant de s’enregistrer comme DC temporaire pour injecter des changements dans AD. La détection nécessite un monitoring spécifique.
Vérification :
# Vérifier les enregistrements SPN suspects
Get-ADUser -Filter * -Properties ServicePrincipalNames | Where-Object {$_.ServicePrincipalNames -like "*GC/*" -or $_.ServicePrincipalNames -like "*ldap/*"}
Get-ADComputer -Filter * -Properties ServicePrincipalNames | Where-Object {$_.ServicePrincipalNames -like "*GC/*"}
Remédiation :
- Monitorer les créations de SPN DC
- Restreindre les permissions ms-DS-MachineAccountQuota
- Alerter sur les nouveaux objets DC
Valeur par défaut : Aucune protection spécifique
1.1.14 — Configuration des UPN alternatives
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-014
MITRE ATT&CK : T1078
Description : Les UPN suffixes alternatifs peuvent faciliter les attaques par confusion d’identité. Seuls les suffixes légitimes doivent être configurés.
Vérification :
# Suffixes UPN configurés
Get-ADForest | Select UPNSuffixes
# Utilisateurs avec UPN non-standard
Get-ADUser -Filter * -Properties UserPrincipalName | Where-Object {$_.UserPrincipalName -notlike "*@domain.com"}
Remédiation :
- Auditer tous les suffixes UPN
- Supprimer les suffixes non utilisés
- Standardiser les UPN utilisateurs
Valeur par défaut : Suffixe de domaine uniquement
1.1.15 — Contrôle des liens de sites coûteux
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-015
MITRE ATT&CK : T1018
Description : Des coûts de liens incorrects peuvent causer une réplication excessive ou insuffisante, impactant les performances et la cohérence AD.
Vérification :
# Liens de sites et coûts
Get-ADReplicationSiteLink | Select Name,Cost,ReplicationFrequencyInMinutes,Sites
# Connexions de réplication générées
Get-ADReplicationConnection -Filter * | Select Name,ReplicatedNamingContexts,FromServer,ToServer
Remédiation :
- Ajuster les coûts selon la bande passante
- Optimiser la fréquence de réplication
- Surveiller la charge de réplication
Valeur par défaut : Coût 100 pour DEFAULTIPSITELINK
1.1.16 — Validation de la cohérence DNS
Niveau : 🟠
Référence CIS : 2.3.7.1 / ANSSI-AD-016
MITRE ATT&CK : T1071.004
Description : Les enregistrements DNS AD incorrects peuvent causer des problèmes d’authentification et faciliter les attaques de redirection.
Vérification :
# Enregistrements SRV critiques
nslookup -type=SRV _ldap._tcp.domain.com
nslookup -type=SRV _kerberos._tcp.domain.com
# Vérifier la cohérence DNS sur tous les DC
dcdiag /test:dns /v
Remédiation :
- Corriger les enregistrements SRV manquants
- Vérifier la résolution DNS sur tous les DC
- Configurer des forwarders DNS redondants
Valeur par défaut : Enregistrements automatiques
1.1.17 — Contrôle des quotas d’objets AD
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-017
MITRE ATT&CK : T1484
Description : Les quotas AD limitent le nombre d’objets qu’un principal peut créer, prévenant les attaques DoS et l’abus de privilèges.
Vérification :
# Quotas définis
Get-ADObject -SearchBase "CN=NTDS Quotas,CN=NTDS Settings,CN=Configuration,DC=domain,DC=com" -Filter *
# Utilisation actuelle par principal
dsquery * -filter "(&(objectClass=user)(objectCategory=person))" -attr distinguishedName,msDS-QuotaUsed
Remédiation :
- Définir des quotas appropriés par type d’utilisateur
- Monitorer l’utilisation des quotas
- Alerter sur les dépassements
Valeur par défaut : Quotas illimités pour tous
1.1.18 — Architecture multi-forêt
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-018
MITRE ATT&CK : T1482
Description : Dans les environnements multi-forêts, l’isolation de sécurité entre forêts doit être maintenue. Les trusts doivent suivre le principe du moindre privilège.
Vérification :
# Trusts de forêt
Get-ADTrust -Filter "TrustType -eq 'Forest'" | Select Name,Direction,SelectiveAuthentication,SIDFilteringEnabled
# Comptes avec privilèges inter-forêts
Get-ADGroupMember "Enterprise Admins" -Server rootdomain.com
Remédiation :
- Limiter les trusts au strict nécessaire
- Activer Selective Authentication
- Éviter les comptes privilégiés inter-forêts
Valeur par défaut : Configuration permissive
1.1.19 — Contrôle des objets protégés AdminSDHolder
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-019 / PingCastle A-AdminSDHolder
MITRE ATT&CK : T1484.001
Description : AdminSDHolder protège les comptes privilégiés en réinitialisant leurs ACL toutes les heures. Les modifications non autorisées peuvent compromettre cette protection.
Vérification :
# État d'AdminSDHolder
Get-ADObject -Identity "CN=AdminSDHolder,CN=System,DC=domain,DC=com" -Properties nTSecurityDescriptor,Description
# Comptes avec adminCount=1
Get-ADUser -Filter {adminCount -eq 1} -Properties adminCount,memberOf | Select Name,adminCount,memberOf
Remédiation :
- Restaurer les ACL d’AdminSDHolder par défaut
- Vérifier que SDProp fonctionne (service Protected Storage)
- Auditer les comptes avec adminCount orphelins
Valeur par défaut : ACL par défaut intactes
1.1.20 — Surveillance des modifications de schéma
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-020 / PingCastle A-SchemaClass
MITRE ATT&CK : T1484
Description : Les modifications de schéma AD sont permanentes et peuvent introduire des vulnérabilités. Elles doivent être strictement contrôlées et auditées.
Vérification :
# Versions de schéma
Get-ADObject -Identity "CN=Schema,CN=Configuration,DC=domain,DC=com" -Properties objectVersion,whenChanged
# Membres du groupe Schema Admins
Get-ADGroupMember "Schema Admins"
Remédiation :
- Vider le groupe Schema Admins
- Activer l’audit des modifications de schéma
- Documenter toutes les extensions de schéma
Valeur par défaut : Groupe Schema Admins vide
1.1.21 — Contrôle des permissions sur les conteneurs système
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-021
MITRE ATT&CK : T1484.001
Description : Les conteneurs système AD (System, Configuration, Schema) contiennent des objets critiques. Leurs permissions doivent être strictement contrôlées.
Vérification :
# Permissions sur les conteneurs critiques
dsacls "CN=System,DC=domain,DC=com"
dsacls "CN=Configuration,DC=domain,DC=com"
dsacls "CN=Schema,CN=Configuration,DC=domain,DC=com"
Remédiation :
- Supprimer les permissions non-standards
- Limiter les accès aux groupes système
- Auditer régulièrement les permissions
Valeur par défaut : Permissions restrictives par défaut
1.1.22 — Configuration des sites Read-Only DC (RODC)
Niveau : 🟡
Référence CIS : 2.3.1.6 / ANSSI-AD-022
MITRE ATT&CK : T1078
Description : Les RODC dans des sites distants réduisent les risques de compromission. Les Password Replication Policy doivent être configurées selon le principe du moindre privilège.
Vérification :
# RODC configurés
Get-ADDomainController -Filter {IsReadOnly -eq $true} | Select Name,Site,IsReadOnly
# Password Replication Policy
Get-ADAccountResultantPasswordReplicationPolicy -Identity username -DomainController RODCname
Remédiation :
- Déployer des RODC dans les sites à risque
- Configurer des PRP restrictives
- Monitorer les tentatives de réplication de mots de passe
Valeur par défaut : Pas de RODC configurés
1.1.23 — Contrôle des objets Computer orphelins
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-023 / PingCastle S-C-Oldcomputer
MITRE ATT&CK : T1078.002
Description : Les comptes ordinateur obsolètes augmentent la surface d’attaque. Ils doivent être régulièrement nettoyés.
Vérification :
# Ordinateurs non connectés depuis 90+ jours
$date = (Get-Date).AddDays(-90)
Get-ADComputer -Filter {LastLogonTimeStamp -lt $date -and OperatingSystem -like "*"} -Properties LastLogonTimeStamp,OperatingSystem
Remédiation :
- Identifier les ordinateurs obsolètes
- Désactiver puis supprimer après validation
- Automatiser le nettoyage avec des scripts
Valeur par défaut : Pas de nettoyage automatique
1.1.24 — Validation de la topologie de réplication
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-024
MITRE ATT&CK : T1018
Description : Une topologie de réplication optimale assure la convergence rapide des changements tout en minimisant le trafic réseau.
Vérification :
# Connexions de réplication
Get-ADReplicationConnection -Filter * | Select Name,AutoGenerated,FromServer,ToServer,ReplicatedNamingContexts
# Analyse de la topologie
repadmin /showrepl /csv > replication-status.csv
Remédiation :
- Optimiser les connexions automatiques KCC
- Créer des connexions manuelles si nécessaire
- Surveiller la latence de réplication
Valeur par défaut : Topologie générée automatiquement par KCC
1.1.25 — Contrôle des attributs sensibles non répliqués
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-025
MITRE ATT&CK : T1003.006
Description : Certains attributs sensibles ne doivent pas être répliqués vers les RODC pour limiter l’exposition en cas de compromission.
Vérification :
# Attributs dans Filtered Attribute Set (FAS)
Get-ADObject -SearchBase "CN=Schema,CN=Configuration,DC=domain,DC=com" -Filter {searchFlags -band 512} | Select Name,lDAPDisplayName
Remédiation :
- Identifier les attributs sensibles métier
- Les ajouter au Filtered Attribute Set si nécessaire
- Tester l’impact sur les applications
Valeur par défaut : FAS contient attributs système sensibles
👑 SECTION 2 — COMPTES PRIVILÉGIÉS (~35 contrôles)
2.1.1 — Limitation des membres Domain Admins
Niveau : 🔴
Référence CIS : 2.2.3 / ANSSI-AD-026 / PingCastle P-Privileged
MITRE ATT&CK : T1078.002
Description : Le groupe Domain Admins a un contrôle total sur le domaine. Le nombre de membres doit être minimal (<5) et chaque ajout justifié et temporaire.
Vérification :
# Membres Domain Admins
Get-ADGroupMember "Domain Admins" -Recursive | Select Name,SamAccountName,objectClass,LastLogonDate
# Historique des modifications
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4728,4729} | Where-Object {$_.Message -like "*Domain Admins*"}
Remédiation :
- Limiter à maximum 5 membres permanents
- Utiliser des comptes dédiés (pas de comptes utilisateur normaux)
- Implémenter JIT pour les accès temporaires
Valeur par défaut : Administrateur et parfois Administrateurs du domaine
2.1.2 — Sécurisation du groupe Enterprise Admins
Niveau : 🔴
Référence CIS : 2.2.4 / ANSSI-AD-027 / PingCastle P-EnterpriseAdmin
MITRE ATT&CK : T1078.002
Description : Enterprise Admins contrôle toute la forêt. Ce groupe doit être vide sauf pendant les opérations de maintenance critique de la forêt.
Vérification :
# Membres Enterprise Admins
Get-ADGroupMember "Enterprise Admins" -Server (Get-ADForest).RootDomain | Select Name,SamAccountName,LastLogonDate
# Vérifier dans tous les domaines enfants
Get-ADTrust -Filter * | ForEach-Object {Get-ADGroupMember "Enterprise Admins" -Server $_.Target}
Remédiation :
- Vider complètement le groupe
- Ajouter temporairement seulement pour les opérations forêt
- Alerter sur toute modification
Valeur par défaut : Administrateur du domaine racine
2.1.3 — Contrôle du groupe Schema Admins
Niveau : 🟠
Référence CIS : 2.2.5 / ANSSI-AD-028 / PingCastle P-SchemaAdmin
MITRE ATT&CK : T1078.002
Description : Schema Admins peut modifier le schéma AD de façon permanente et irréversible. Le groupe doit être vide sauf pendant les extensions de schéma planifiées.
Vérification :
# Membres Schema Admins
Get-ADGroupMember "Schema Admins" -Server (Get-ADForest).RootDomain
# Historique des modifications de schéma
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=1137}
Remédiation :
- Vider complètement le groupe
- Ajouter temporairement uniquement pour extensions planifiées
- Documenter toutes les modifications de schéma
Valeur par défaut : Administrateur du domaine racine
2.1.4 — Audit des comptes de service privilégiés
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-029 / PingCastle P-ServiceAccount
MITRE ATT&CK : T1078.003
Description : Les comptes de service avec des privilèges élevés sont des cibles d’attaque privilégiées. Ils doivent utiliser des mots de passe complexes et être régulièrement rotés.
Vérification :
# Comptes de service dans groupes privilégiés
Get-ADUser -Filter {(memberOf -like "*Domain Admins*") -or (memberOf -like "*Enterprise Admins*") -or (ServicePrincipalName -like "*")} -Properties ServicePrincipalName,memberOf,PasswordLastSet
Remédiation :
- Migrer vers des Group Managed Service Accounts (gMSA)
- Retirer les privilèges excessifs
- Implémenter la rotation automatique des mots de passe
Valeur par défaut : Comptes de service souvent sur-privilégiés
2.1.5 — Configuration des Group Managed Service Accounts (gMSA)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-030
MITRE ATT&CK : T1003.002
Description : Les gMSA automatisent la gestion des mots de passe de comptes de service et éliminent les risques liés aux mots de passe partagés ou obsolètes.
Vérification :
# gMSA configurés
Get-ADServiceAccount -Filter * | Select Name,Enabled,PrincipalsAllowedToRetrieveManagedPassword
# Services utilisant encore des comptes utilisateur classiques
Get-Service | Where-Object {$_.StartName -like "*\*" -and $_.StartName -notlike "*$"}
Remédiation :
- Créer des gMSA pour tous les services critiques
- Migrer les services existants vers gMSA
- Désactiver les anciens comptes de service
Valeur par défaut : Comptes de service manuels
2.1.6 — Protection du compte KRBTGT
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-031 / PingCastle P-Krbtgt
MITRE ATT&CK : T1558.001
Description : Le compte KRBTGT chiffre les tickets Kerberos. Son compromission permet la création de Golden Tickets. Le mot de passe doit être roté régulièrement.
Vérification :
Get-ADUser krbtgt -Properties PasswordLastSet,AccountNotDelegated,msDS-SupportedEncryptionTypes
# Vérifier la rotation récente (>180 jours = critique)
$krbtgt = Get-ADUser krbtgt -Properties PasswordLastSet
(Get-Date) - $krbtgt.PasswordLastSet
Remédiation :
- Programmer une rotation semestrielle du KRBTGT
- Utiliser l’outil Microsoft New-KrbtgtKeys.ps1
- Coordonner avec tous les DC de la forêt
Valeur par défaut : Jamais changé depuis création domaine
2.1.7 — Comptes avec délégation Kerberos non contrainte
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-032 / PingCastle P-UnconstrainedDelegation
MITRE ATT&CK : T1558.003
Description : La délégation non contrainte permet à un service d’emprunter l’identité de n’importe quel utilisateur vers n’importe quel service. Très dangereux pour l’élévation de privilèges.
Vérification :
# Comptes avec délégation non contrainte (hors DCs)
Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties TrustedForDelegation,ServicePrincipalName
Get-ADComputer -Filter {TrustedForDelegation -eq $true -and PrimaryGroupID -ne 516} -Properties TrustedForDelegation,ServicePrincipalName
Remédiation :
- Migrer vers délégation contrainte ou RBCD
- Désactiver la délégation non contrainte sur tous les objets non-DC
- Surveiller les nouvelles configurations
Valeur par défaut : Potentiellement présente sur comptes de service
2.1.8 — Audit des comptes avec SPN (Kerberoasting)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-033 / PingCastle P-Kerberoasting
MITRE ATT&CK : T1558.003
Description : Les comptes utilisateur avec SPN sont vulnérables au Kerberoasting. Ils doivent avoir des mots de passe très complexes ou migrer vers gMSA.
Vérification :
# Utilisateurs avec SPN (cibles Kerberoasting)
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName,PasswordLastSet,AdminCount |
Select Name,ServicePrincipalName,PasswordLastSet,AdminCount
Remédiation :
- Utiliser des mots de passe >25 caractères pour comptes SPN
- Migrer vers gMSA quand possible
- Surveiller les demandes TGS suspectes (Event 4769)
Valeur par défaut : Mots de passe souvent faibles sur comptes SPN
2.1.9 — Contrôle des comptes dormants privilégiés
Niveau : 🟠
Référence CIS : 2.3.1.3 / ANSSI-AD-034 / PingCastle S-PwdNeverExpires
MITRE ATT&CK : T1078.002
Description : Les comptes privilégiés inactifs représentent un risque car ils peuvent avoir conservé des accès élevés sans supervision récente.
Vérification :
# Comptes privilégiés non connectés >90 jours
$date = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonTimeStamp -lt $date -and adminCount -eq 1} -Properties LastLogonTimeStamp,memberOf,PasswordLastSet
Remédiation :
- Désactiver les comptes inactifs >90 jours
- Supprimer après validation métier
- Implémenter un processus de revue trimestrielle
Valeur par défaut : Pas de nettoyage automatique
2.1.10 — Configuration des Privileged Access Workstations (PAW)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-035
MITRE ATT&CK : T1078.002
Description : Les comptes privilégiés doivent uniquement être utilisés depuis des postes dédiés et durcis (PAW) pour éviter la compromission par des malwares.
Vérification :
# Connexions admin depuis postes non-PAW
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Message -like "*Domain Admins*" -and $_.Properties[5].Value -ne "PAW-*"}
Remédiation :
- Déployer des PAW pour tous les administrateurs Tier 0/1
- Bloquer les connexions admin depuis postes standard
- Implémenter Credential Guard sur les PAW
Valeur par défaut : Pas de PAW déployées
2.1.11 — Just-in-Time (JIT) Administration
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-036
MITRE ATT&CK : T1078.002
Description : Les privilèges élevés doivent être accordés temporairement uniquement quand nécessaire, réduisant la fenêtre d’exposition aux attaques.
Vérification :
# Comptes avec privilèges permanents
Get-ADGroupMember "Domain Admins" | Where-Object {$_.Name -notlike "*JIT*"}
# Solutions JIT déployées (PIM, PAM, etc.)
Get-Service | Where-Object {$_.Name -like "*PIM*" -or $_.Name -like "*PAM*"}
Remédiation :
- Implémenter Azure AD PIM ou solution tierce
- Convertir les accès permanents en temporaires
- Auditer toutes les élévations de privilèges
Valeur par défaut : Privilèges accordés en permanence
2.1.12 — Contrôle des permissions AdminSDHolder
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-037 / PingCastle A-AdminSDHolder
MITRE ATT&CK : T1484.001
Description : AdminSDHolder protège les objets privilégiés. Ses ACL sont propagées toutes les heures vers les comptes protégés. Toute modification peut compromettre la sécurité.
Vérification :
# ACL AdminSDHolder
$adminSDHolder = "CN=AdminSDHolder,CN=System,DC=domain,DC=com"
(Get-ACL "AD:\$adminSDHolder").Access | Where-Object {$_.IdentityReference -notlike "*NT AUTHORITY*" -and $_.IdentityReference -notlike "*BUILTIN*"}
Remédiation :
- Restaurer les ACL par défaut d’AdminSDHolder
- Surveiller les modifications (Event 5136)
- Vérifier que SDProp fonctionne correctement
Valeur par défaut : ACL restrictives par défaut
2.1.13 — Protection contre AS-REP Roasting
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-038 / PingCastle P-PreAuthNotRequired
MITRE ATT&CK : T1558.004
Description : Les comptes avec pré-authentification Kerberos désactivée sont vulnérables à l’AS-REP Roasting, permettant de craquer les mots de passe hors-ligne.
Vérification :
# Comptes sans pré-authentification requise
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth,PasswordLastSet,AdminCount
Remédiation :
- Activer la pré-authentification sur tous les comptes
- Si nécessaire pour compatibilité, utiliser des mots de passe très complexes
- Surveiller les demandes AS-REP (Event 4768 avec code 0x18)
Valeur par défaut : Pré-authentification activée par défaut
2.1.14 — Gestion des comptes d’urgence (Break-Glass)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-039
MITRE ATT&CK : T1078.002
Description : Les comptes d’urgence permettent la récupération en cas de crise. Ils doivent être sécurisés, surveillés et testés régulièrement.
Vérification :
# Comptes d'urgence configurés
Get-ADUser -Filter {Description -like "*break*glass*" -or Description -like "*emergency*"} -Properties Description,LastLogonDate,PasswordLastSet
Remédiation :
- Créer 2 comptes d’urgence avec mots de passe complexes
- Stocker les credentials dans des coffres physiques séparés
- Tester semestriellement l’accès
Valeur par défaut : Souvent aucun compte d’urgence formalisé
2.1.15 — Local Administrator Password Solution (LAPS)
Niveau : 🟡
Référence CIS : 18.3.4 / ANSSI-AD-040
MITRE ATT&CK : T1078.003
Description : LAPS gère automatiquement les mots de passe des comptes administrateur local, éliminant les mots de passe identiques sur tous les postes.
Vérification :
# LAPS déployé
Get-ADOrganizationalUnit -Filter * | Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwdExpirationTime | Where-Object {$_.'ms-Mcs-AdmPwdExpirationTime'}
Remédiation :
- Déployer LAPS sur tous les postes/serveurs
- Configurer des mots de passe complexes (14+ caractères)
- Limiter l’accès aux mots de passe LAPS
Valeur par défaut : LAPS non déployé
2.1.16 — Audit des membres de groupes sensibles
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-041 / PingCastle P-PrivilegedGroup
MITRE ATT&CK : T1078.002
Description : Certains groupes built-in accordent des privilèges élevés. Leur membership doit être strictement contrôlé et régulièrement audité.
Vérification :
# Groupes privilégiés à auditer
$groups = @("Account Operators","Backup Operators","Print Operators","Server Operators","Cert Publishers")
foreach($group in $groups) {
Get-ADGroupMember $group | Select @{N='Group';E={$group}},Name,SamAccountName
}
Remédiation :
- Vider les groupes non utilisés
- Documenter et justifier chaque membership
- Implémenter des revues trimestrielles
Valeur par défaut : Groupes souvent peuplés par défaut
2.1.17 — Protection des comptes de synchronisation
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-042
MITRE ATT&CK : T1078.002
Description : Les comptes utilisés pour la synchronisation AD Connect, LDAP, etc. ont souvent des privilèges élevés et doivent être particulièrement protégés.
Vérification :
# Comptes de service de synchronisation
Get-ADUser -Filter {Description -like "*sync*" -or Description -like "*connect*" -or Name -like "*sync*"} -Properties Description,memberOf,ServicePrincipalName
Remédiation :
- Utiliser des comptes dédiés avec privilèges minimaux
- Implémenter MFA si supporté
- Surveiller l’activité de ces comptes
Valeur par défaut : Souvent des privilèges excessifs
2.1.18 — Contrôle des comptes avec mots de passe n’expirant jamais
Niveau : 🟠
Référence CIS : 2.3.1.2 / ANSSI-AD-043 / PingCastle S-PwdNeverExpires
MITRE ATT&CK : T1078
Description : Les comptes avec mots de passe n’expirant jamais créent un risque de sécurité permanent. Cette configuration doit être limitée aux comptes techniques justifiés.
Vérification :
# Comptes avec PasswordNeverExpires
Get-ADUser -Filter {PasswordNeverExpires -eq $true -and Enabled -eq $true} -Properties PasswordNeverExpires,PasswordLastSet,Description
Remédiation :
- Migrer vers gMSA pour les comptes de service
- Implémenter la rotation pour les comptes restants
- Justifier et documenter les exceptions
Valeur par défaut : Policy de domaine appliquée
2.1.19 — Configuration Just Enough Administration (JEA)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-044
MITRE ATT&CK : T1078.002
Description : JEA permet de limiter les cmdlets et paramètres disponibles dans les sessions PowerShell privilégiées, appliquant le principe du moindre privilège.
Vérification :
# Endpoints JEA configurés
Get-PSSessionConfiguration | Where-Object {$_.Permission -notlike "*Full Control*"}
# Sessions JEA actives
Get-PSSession | Where-Object {$_.ConfigurationName -ne "Microsoft.PowerShell"}
Remédiation :
- Créer des endpoints JEA pour les tâches admin courantes
- Former les administrateurs à l’utilisation JEA
- Désactiver les sessions PowerShell complètes quand possible
Valeur par défaut : Sessions PowerShell complètes autorisées
2.1.20 — Surveillance des connexions privilégiées
Niveau : ��
Référence CIS : Custom / ANSSI-AD-045
MITRE ATT&CK : T1078.002
Description : Toutes les connexions avec des comptes privilégiés doivent être loggées et surveillées pour détecter les usages non autorisés.
Vérification :
# Audit des logons privilégiés récents
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624,4625} |
Where-Object {$_.Message -like "*Domain Admins*" -or $_.Message -like "*Enterprise Admins*"}
Remédiation :
- Activer l’audit détaillé des logons (succès et échecs)
- Corréler les connexions avec les justifications métier
- Alerter sur les connexions suspectes (horaires, sources)
Valeur par défaut : Audit basique activé
2.1.21 — Protection contre le vol de credentials
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-046
MITRE ATT&CK : T1003.001
Description : Windows Credential Guard, LSA Protection et autres mécanismes protègent contre l’extraction de credentials de la mémoire.
Vérification :
# Credential Guard activé
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select VirtualizationBasedSecurityStatus,LsaCfgFlags
Remédiation :
- Activer Credential Guard sur tous les PAW/serveurs
- Configurer LSA Protection
- Implémenter Windows Defender Application Guard
Valeur par défaut : Fonctionnalités désactivées
2.1.22 — Audit des droits utilisateur sensibles
Niveau : 🟠
Référence CIS : 2.2.6-2.2.39 / ANSSI-AD-047
MITRE ATT&CK : T1078
Description : Certains droits utilisateur (SeDebugPrivilege, SeBackupPrivilege, etc.) accordent des capacités équivalentes aux privilèges administrateur et doivent être contrôlés.
Vérification :
# Droits utilisateur sensibles
secedit /export /cfg security.cfg
Get-Content security.cfg | Select-String "SeTcbPrivilege|SeDebugPrivilege|SeBackupPrivilege|SeRestorePrivilege|SeLoadDriverPrivilege"
Remédiation :
- Auditer tous les droits utilisateur sensibles
- Supprimer les assignations non justifiées
- Documenter les besoins métier légitimes
Valeur par défaut : Souvent assignés par défaut à des groupes
2.1.23 — Contrôle des Service Principal Names (SPN) dupliqués
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-048
MITRE ATT&CK : T1558.003
Description : Les SPN dupliqués peuvent causer des erreurs d’authentification Kerberos et permettre des attaques par confusion de services.
Vérification :
# Recherche de SPN dupliqués
setspn -X
# SPN par compte
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName | Select Name,ServicePrincipalName
Remédiation :
- Supprimer les SPN dupliqués ou obsolètes
- Standardiser la nomenclature des SPN
- Auditer régulièrement les nouvelles créations
Valeur par défaut : Vérification manuelle des SPN
2.1.24 — Gestion des comptes de liaison AD (Binding Accounts)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-049
MITRE ATT&CK : T1078.003
Description : Les comptes utilisés pour lier les applications à AD (LDAP bind) doivent avoir des privilèges minimaux et des mots de passe forts.
Vérification :
# Comptes de liaison identifiés
Get-ADUser -Filter {Description -like "*bind*" -or Description -like "*ldap*" -or Description -like "*app*"} -Properties Description,memberOf
Remédiation :
- Identifier tous les comptes de liaison applicative
- Limiter aux privilèges Read strictement nécessaires
- Implémenter la rotation des mots de passe
Valeur par défaut : Souvent des privilèges excessifs
2.1.25 — Protection des hash NTLM des comptes privilégiés
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-050
MITRE ATT&CK : T1003.002
Description : Les hash NTLM des comptes privilégiés sont des cibles de choix pour les attaques Pass-the-Hash. Des protections spécifiques doivent être mises en place.
Vérification :
# Comptes avec "Account is sensitive and cannot be delegated"
Get-ADUser -Filter {AccountNotDelegated -eq $true} -Properties AccountNotDelegated,AdminCount
# Protected Users group membership
Get-ADGroupMember "Protected Users"
Remédiation :
- Ajouter les comptes privilégiés au groupe “Protected Users”
- Activer “Account is sensitive and cannot be delegated”
- Implémenter Credential Guard
Valeur par défaut : Pas de protection spéciale des hash NTLM
🔐 SECTION 3 — MOTS DE PASSE & AUTHENTIFICATION (~25 contrôles)
3.1.1 — Configuration de la politique de mots de passe par défaut
Niveau : 🟠
Référence CIS : 1.1.1-1.1.6 / ANSSI-AD-051 / PingCastle P-PasswordPolicy
MITRE ATT&CK : T1110.001
Description : La Default Domain Policy définit les exigences minimales de mots de passe pour tous les utilisateurs. Elle doit être configurée selon les bonnes pratiques actuelles.
Vérification :
# Politique de domaine actuelle
Get-ADDefaultDomainPasswordPolicy
# Vérification via GPO
Get-GPOReport -Name "Default Domain Policy" -ReportType XML | Select-String -Pattern "Password|Account"
Remédiation :
- Minimum 14 caractères (ou 12 avec complexité)
- Historique 24 mots de passe
- Âge maximum 365 jours (ou plus avec MFA)
- Seuil de verrouillage 10 tentatives
Valeur par défaut : 7 caractères, complexité activée, 42 jours
3.1.2 — Implémentation des Fine-Grained Password Policies (FGPP)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-052
MITRE ATT&CK : T1110.001
Description : Les FGPP permettent d’appliquer des politiques différenciées selon les groupes d’utilisateurs, avec des exigences renforcées pour les comptes privilégiés.
Vérification :
# FGPP configurées
Get-ADFineGrainedPasswordPolicy -Filter *
# Application aux groupes
Get-ADFineGrainedPasswordPolicy -Filter * | Get-ADFineGrainedPasswordPolicySubject
Remédiation :
- FGPP stricte pour les comptes privilégiés (20+ caractères)
- FGPP modérée pour les comptes de service (16+ caractères)
- FGPP standard pour les utilisateurs (12+ caractères)
Valeur par défaut : Aucune FGPP configurée
3.1.3 — Surveillance des mots de passe faibles
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-053 / PingCastle P-PasswordGuessing
MITRE ATT&CK : T1110.001
Description : Des outils comme DSInternals permettent d’identifier les mots de passe faibles dans AD sans les casser, permettant une remédiation proactive.
Vérification :
# Utilisation d'outils de test (DSInternals)
# Get-ADReplAccount -All -Server DC01 | Test-PasswordQuality -WeakPasswordsFile common-passwords.txt
# Comptes sans changement récent
Get-ADUser -Filter * -Properties PasswordLastSet | Where-Object {(Get-Date) - $_.PasswordLastSet -gt 365}
Remédiation :
- Scanner régulièrement avec des dictionnaires
- Forcer le changement des mots de passe faibles
- Former les utilisateurs aux bonnes pratiques
Valeur par défaut : Pas de test proactif des mots de passe
3.1.4 — Protection contre les attaques par pulvérisation (Password Spraying)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-054
MITRE ATT&CK : T1110.003
Description : Les attaques par pulvérisation testent des mots de passe communs contre de nombreux comptes. La détection nécessite une surveillance des échecs d’authentification distribués.
Vérification :
# Échecs de connexion récents
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4625} -MaxEvents 1000 |
Group-Object {$_.Properties[5].Value} | Sort-Object Count -Descending | Select Name,Count
Remédiation :
- Surveiller les échecs d’auth multiples sur des comptes différents
- Implémenter des délais progressifs
- Bloquer les IP suspectes automatiquement
Valeur par défaut : Détection basée sur seuils par compte
3.1.5 — Configuration de l’authentification multi-facteurs (MFA)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-055
MITRE ATT&CK : T1078
Description : MFA ajoute une couche de sécurité critique, particulièrement pour les comptes privilégiés et l’accès distant.
Vérification :
# Utilisateurs avec MFA configuré (Azure AD)
# Connect-AzureAD; Get-AzureADUser -All $true | Where-Object {$_.StrongAuthenticationRequirements}
# Smart card logon requis
Get-ADUser -Filter {SmartCardLogonRequired -eq $true} -Properties SmartCardLogonRequired
Remédiation :
- MFA obligatoire pour tous les comptes privilégiés
- MFA pour l’accès VPN/distant
- Smart cards ou Windows Hello for Business
Valeur par défaut : MFA non configuré par défaut
3.1.6 — Audit des comptes avec mots de passe réversibles
Niveau : 🔴
Référence CIS : 1.1.4 / ANSSI-AD-056
MITRE ATT&CK : T1003.002
Description : Le stockage des mots de passe avec chiffrement réversible équivaut à les stocker en clair. Cette configuration doit être évitée.
Vérification :
# Comptes avec mots de passe réversibles
Get-ADUser -Filter {AllowReversiblePasswordEncryption -eq $true} -Properties AllowReversiblePasswordEncryption
# Politique de domaine
Get-ADDefaultDomainPasswordPolicy | Select ReversibleEncryptionEnabled
Remédiation :
- Désactiver le chiffrement réversible dans la politique
- Corriger les comptes individuels si nécessaire
- Forcer le changement de mot de passe après correction
Valeur par défaut : Désactivé par défaut
3.1.7 — Surveillance des tentatives de connexion suspectes
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-057
MITRE ATT&CK : T1078
Description : La surveillance proactive des patterns de connexion anormaux permet de détecter rapidement les compromissions de comptes.
Vérification :
# Connexions en dehors des heures normales
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.TimeCreated.Hour -lt 6 -or $_.TimeCreated.Hour -gt 22}
Remédiation :
- Définir des profils de connexion par utilisateur/groupe
- Alerter sur les déviations (horaires, géolocalisation, etc.)
- Implémenter des règles SIEM adaptées
Valeur par défaut : Surveillance manuelle des logs
3.1.8 — Contrôle des comptes avec pré-authentification Kerberos désactivée
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-058 / PingCastle P-PreAuthNotRequired
MITRE ATT&CK : T1558.004
Description : La désactivation de la pré-authentification Kerberos expose les comptes aux attaques AS-REP Roasting.
Vérification :
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth,PasswordLastSet
Remédiation :
- Réactiver la pré-authentification sur tous les comptes
- Si impossible pour compatibilité, renforcer les mots de passe
- Surveiller les événements 4768 avec code d’erreur 0x18
Valeur par défaut : Pré-authentification activée
3.1.9 — Configuration des politiques de verrouillage de compte
Niveau : 🟡
Référence CIS : 1.2.1-1.2.3 / ANSSI-AD-059
MITRE ATT&CK : T1110.001
Description : Les politiques de verrouillage protègent contre les attaques par force brute tout en évitant les dénis de service.
Vérification :
Get-ADDefaultDomainPasswordPolicy | Select LockoutThreshold,LockoutDuration,LockoutObservationWindow
Remédiation :
- Seuil: 10 tentatives (balance sécurité/usabilité)
- Durée: 15-30 minutes ou déverrouillage manuel
- Fenêtre d’observation: 15 minutes
Valeur par défaut : Souvent pas de verrouillage configuré
3.1.10 — Audit des comptes avec mots de passe n’expirant jamais
Niveau : 🟠
Référence CIS : 1.1.5 / ANSSI-AD-060 / PingCastle S-PwdNeverExpires
MITRE ATT&CK : T1078
Description : Les mots de passe permanents créent un risque de compromission à long terme. Seuls les comptes techniques justifiés devraient en bénéficier.
Vérification :
Get-ADUser -Filter {PasswordNeverExpires -eq $true -and Enabled -eq $true} -Properties PasswordNeverExpires,PasswordLastSet,Description
Remédiation :
- Migrer vers gMSA pour les comptes de service
- Justifier chaque exception
- Implémenter la rotation même pour les exceptions
Valeur par défaut : Policy s’applique à tous sauf exceptions
3.1.11 — Protection contre les attaques de credential stuffing
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-061
MITRE ATT&CK : T1110.004
Description : Les attaquants utilisent des bases de données de mots de passe volés. La protection nécessite la détection de patterns automatisés.
Vérification :
# Échecs multiples depuis mêmes sources
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4625} |
Group-Object {$_.Properties[19].Value} | Sort-Object Count -Descending
Remédiation :
- Corréler les échecs par IP source
- Implémenter des CAPTCHAs après plusieurs échecs
- Bloquer automatiquement les sources suspectes
Valeur par défaut : Pas de protection spécifique
3.1.12 — Configuration de Windows Hello for Business
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-062
MITRE ATT&CK : T1078
Description : Windows Hello for Business remplace les mots de passe par une authentification biométrique ou PIN, éliminant plusieurs vecteurs d’attaque.
Vérification :
# Utilisateurs avec WHfB configuré
Get-ADUser -Filter * -Properties msDS-KeyCredentialLink | Where-Object {$_."msDS-KeyCredentialLink"}
Remédiation :
- Déployer WHfB via GPO
- Configurer les certificats nécessaires
- Former les utilisateurs à l’adoption
Valeur par défaut : Non configuré par défaut
3.1.13 — Surveillance des changements de mots de passe fréquents
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-063
MITRE ATT&CK : T1078
Description : Des changements de mots de passe anormalement fréquents peuvent indiquer une compromission ou un dysfonctionnement.
Vérification :
# Changements récents fréquents
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4723,4724} |
Group-Object {$_.Properties[0].Value} | Where-Object {$_.Count -gt 5}
Remédiation :
- Surveiller les événements 4723/4724
- Investiguer les changements anormaux
- Corréler avec d’autres indicateurs de compromission
Valeur par défaut : Logs standard disponibles
3.1.14 — Contrôle des mots de passe par défaut des comptes système
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-064
MITRE ATT&CK : T1078.003
Description : Certains comptes système peuvent avoir des mots de passe par défaut ou prévisibles. Ils doivent être identifiés et sécurisés.
Vérification :
# Comptes système avec mots de passe potentiellement faibles
Get-ADUser -Filter {Name -like "SUPPORT_*" -or Name -like "IWAM_*" -or Name -like "IUSR_*"} -Properties PasswordLastSet
Remédiation :
- Identifier tous les comptes système
- Changer les mots de passe par défaut
- Désactiver les comptes non utilisés
Valeur par défaut : Mots de passe souvent prévisibles
3.1.15 — Audit des authentifications interactives sur les serveurs
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-065
MITRE ATT&CK : T1078
Description : Les connexions interactives sur les serveurs (console, RDP) doivent être limitées et surveillées, particulièrement sur les DC.
Vérification :
# Connexions interactives récentes sur serveurs
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[8].Value -eq 2 -or $_.Properties[8].Value -eq 10}
Remédiation :
- Limiter les droits de connexion interactive
- Surveiller toutes les connexions serveur
- Privilégier la gestion à distance sécurisée
Valeur par défaut : Connexions interactives souvent autorisées
3.1.16 — Configuration des Smart Cards et certificats
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-066
MITRE ATT&CK : T1078
Description : Les smart cards fournissent une authentification forte basée sur certificats, éliminant les risques liés aux mots de passe.
Vérification :
# Comptes configurés pour smart card
Get-ADUser -Filter {SmartCardLogonRequired -eq $true} -Properties SmartCardLogonRequired,UserCertificate
# Templates de certificats pour smart card
certlm.msc # Vérification manuelle des templates
Remédiation :
- Déployer des smart cards pour les comptes privilégiés
- Configurer les templates de certificats appropriés
- Implémenter la révocation de certificats
Valeur par défaut : Smart cards non configurées
3.1.17 — Protection contre l’énumération de comptes
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-067
MITRE ATT&CK : T1087.002
Description : L’énumération de comptes permet aux attaquants d’identifier des cibles. Certaines protections peuvent limiter cette reconnaissance.
Vérification :
# Permissions d'énumération sur les containers utilisateurs
dsacls "CN=Users,DC=domain,DC=com" | findstr "Everyone\|Authenticated Users"
Remédiation :
- Limiter les permissions de lecture sur les objets utilisateur
- Surveiller les requêtes LDAP suspectes
- Implémenter des honeypots/comptes leurres
Valeur par défaut : Énumération généralement possible
3.1.18 — Audit des connexions avec des comptes de service
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-068
MITRE ATT&CK : T1078.003
Description : Les comptes de service ne devraient pas être utilisés pour des connexions interactives. Toute utilisation doit être surveillée.
Vérification :
# Connexions interactives avec comptes de service
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[5].Value -like "*svc*" -or $_.Properties[5].Value -like "*service*"}
Remédiation :
- Bloquer les connexions interactives pour les comptes de service
- Surveiller toute utilisation anormale
- Séparer clairement comptes utilisateur/service
Valeur par défaut : Pas de restriction par défaut
3.1.19 — Configuration des politiques de session
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-069
MITRE ATT&CK : T1078
Description : Les sessions doivent avoir des durées limitées et des politiques de verrouillage automatique pour réduire l’exposition.
Vérification :
# Politiques de session via GPO
Get-GPOReport -All -ReportType XML | Select-String -Pattern "ScreenSaver\|IdleTime\|SessionTime"
Remédiation :
- Timeout automatique après 15 minutes d’inactivité
- Déconnexion forcée après durée maximale
- Écran de verrouillage avec mot de passe requis
Valeur par défaut : Sessions souvent permanentes
3.1.20 — Surveillance des comptes avec privilèges de connexion étendus
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-070
MITRE ATT&CK : T1078
Description : Certains comptes peuvent avoir des droits de connexion sur plusieurs systèmes. Ces privilèges étendus doivent être contrôlés.
Vérification :
# Droits "Log on as a service" étendus
secedit /export /cfg security.cfg
Get-Content security.cfg | Select-String "SeServiceLogonRight"
Remédiation :
- Auditer tous les droits de connexion étendus
- Limiter aux besoins stricts
- Documenter et justifier chaque assignation
Valeur par défaut : Droits souvent accordés largement
🎫 SECTION 4 — KERBEROS & PROTOCOLES (~30 contrôles)
4.1.1 — Configuration du chiffrement Kerberos AES256
Niveau : 🟠
Référence CIS : 2.3.7.2 / ANSSI-AD-071 / PingCastle S-RC4
MITRE ATT&CK : T1558
Description : RC4 est cryptographiquement faible. AES256 doit être privilégié pour toutes les communications Kerberos pour résister aux attaques de type Kerberoasting avancées.
Vérification :
# Types de chiffrement supportés par le domaine
Get-ADDomain | Select msDS-SupportedEncryptionTypes
# Comptes utilisant encore RC4
Get-ADUser -Filter * -Properties msDS-SupportedEncryptionTypes | Where-Object {$_."msDS-SupportedEncryptionTypes" -band 4}
Remédiation :
- Configurer AES256 sur tous les comptes et services
- Désactiver RC4 progressivement après tests
- Mettre à jour les applications non compatibles
Valeur par défaut : RC4 souvent encore utilisé
4.1.2 — Rotation du mot de passe KRBTGT
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-072 / PingCastle P-Krbtgt
MITRE ATT&CK : T1558.001
Description : Le compte KRBTGT chiffre les tickets Kerberos. Sa compromission permet les Golden Ticket attacks. Le mot de passe doit être roté semestriellement.
Vérification :
Get-ADUser krbtgt -Properties PasswordLastSet,msDS-KeyVersionNumber
# Calculer l'âge du mot de passe
$krbtgt = Get-ADUser krbtgt -Properties PasswordLastSet
(Get-Date) - $krbtgt.PasswordLastSet
Remédiation :
- Utiliser l’outil Microsoft New-KrbtgtKeys.ps1
- Effectuer la rotation sur tous les DC
- Attendre la réplication complète entre rotations
Valeur par défaut : Jamais changé depuis création
4.1.3 — Contrôle de la délégation Kerberos non contrainte
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-073 / PingCastle P-UnconstrainedDelegation
MITRE ATT&CK : T1558.003
Description : La délégation non contrainte permet à un service de s’authentifier vers n’importe quel service au nom de l’utilisateur. Très dangereux pour l’élévation de privilèges.
Vérification :
# Objets avec délégation non contrainte (hors DCs)
Get-ADComputer -Filter {TrustedForDelegation -eq $true -and PrimaryGroupID -ne 516} -Properties TrustedForDelegation,ServicePrincipalName
Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties TrustedForDelegation,ServicePrincipalName
Remédiation :
- Migrer vers délégation contrainte ou RBCD
- Désactiver sur tous les objets non-DC
- Surveiller les nouvelles configurations
Valeur par défaut : Potentiellement configurée sur comptes de service
4.1.4 — Configuration de la délégation contrainte
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-074
MITRE ATT&CK : T1558.003
Description : La délégation contrainte limite les services vers lesquels un objet peut déléguer. Plus sûre que la délégation non contrainte mais nécessite une configuration précise.
Vérification :
# Objets avec délégation contrainte
Get-ADComputer -Filter * -Properties msDS-AllowedToDelegateTo | Where-Object {$_."msDS-AllowedToDelegateTo"}
Get-ADUser -Filter * -Properties msDS-AllowedToDelegateTo | Where-Object {$_."msDS-AllowedToDelegateTo"}
Remédiation :
- Configurer uniquement les SPN strictement nécessaires
- Auditer régulièrement les configurations
- Tester l’impact sur les applications
Valeur par défaut : Aucune délégation contrainte configurée
4.1.5 — Implémentation de la délégation contrainte basée sur les ressources (RBCD)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-075
MITRE ATT&CK : T1558.003
Description : RBCD inverse le contrôle de délégation vers la ressource cible, offrant une granularité et sécurité supérieures.
Vérification :
# Objets avec RBCD configuré
Get-ADComputer -Filter * -Properties msDS-AllowedToActOnBehalfOfOtherIdentity | Where-Object {$_."msDS-AllowedToActOnBehalfOfOtherIdentity"}
Remédiation :
- Migrer la délégation contrainte vers RBCD
- Configurer des ACL précises sur msDS-AllowedToActOnBehalfOfOtherIdentity
- Tester soigneusement les changements
Valeur par défaut : RBCD non configurée
4.1.6 — Restriction du protocole NTLM
Niveau : 🟠
Référence CIS : 2.3.11.9 / ANSSI-AD-076 / PingCastle S-NTLM
MITRE ATT&CK : T1557.001
Description : NTLM est vulnérable aux attaques de relais et de craquage. Kerberos doit être privilégié avec NTLM restreint ou désactivé progressivement.
Vérification :
# Configuration NTLM actuelle
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LmCompatibilityLevel"
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" -Name "NTLMMinServerSec"
Remédiation :
- LmCompatibilityLevel = 5 (NTLMv2 uniquement)
- Auditer l’utilisation NTLM avec l’Event 4624
- Planifier la désactivation progressive par zone
Valeur par défaut : NTLM souvent autorisé (niveau 3)
4.1.7 — Configuration du LDAP Signing
Niveau : 🔴
Référence CIS : 2.3.7.4 / ANSSI-AD-077
MITRE ATT&CK : T1557.001
Description : LDAP Signing protège contre les attaques man-in-the-middle sur les communications LDAP. Doit être requis sur tous les DC.
Vérification :
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"
# 0=None, 1=Negotiate, 2=Require
Remédiation :
- LDAPServerIntegrity = 2 (obligatoire)
- Tester la compatibilité avec les applications legacy
- Implémenter progressivement si nécessaire
Valeur par défaut : 1 (négocié) sur Windows Server 2019+
4.1.8 — Activation du LDAP Channel Binding
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-078
MITRE ATT&CK : T1557.001
Description : LDAP Channel Binding ajoute une protection contre les attaques de relais LDAPS en liant la session TLS au canal sécurisé.
Vérification :
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LdapEnforceChannelBinding"
# 0=Never, 1=When supported, 2=Always
Remédiation :
- LdapEnforceChannelBinding = 2 (toujours)
- Vérifier que tous les clients supportent le channel binding
- Monitorer les erreurs de connexion après activation
Valeur par défaut : 0 (jamais) sur la plupart des configurations
4.1.9 — Protection contre les attaques Golden Ticket
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-079 / PingCastle A-GoldenTicket
MITRE ATT&CK : T1558.001
Description : Les Golden Tickets exploitent le hash KRBTGT pour créer des tickets valides arbitraires. La détection nécessite surveillance et rotation régulière.
Vérification :
# Surveillance des tickets avec durées de vie anormales
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4769} |
Where-Object {$_.Properties[6].Value -gt 600} # Tickets > 10h
Remédiation :
- Rotation semestrielle du KRBTGT
- Surveiller les tickets avec durées de vie élevées
- Implémenter des alertes sur les activités privilégiées suspectes
Valeur par défaut : Pas de protection spécifique
4.1.10 — Détection des attaques Silver Ticket
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-080
MITRE ATT&CK : T1558.002
Description : Les Silver Tickets exploitent les hash de comptes de service pour accéder à des services spécifiques. La rotation des mots de passe et gMSA offrent une protection.
Vérification :
# Comptes de service avec mots de passe anciens
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName,PasswordLastSet |
Where-Object {(Get-Date) - $_.PasswordLastSet -gt 180}
Remédiation :
- Migration vers gMSA pour rotation automatique
- Rotation régulière des mots de passe de service
- Surveillance des accès service anormaux
Valeur par défaut : Mots de passe de service souvent anciens
4.1.11 — Configuration des tickets Kerberos - durées de vie
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-081
MITRE ATT&CK : T1558
Description : Les durées de vie des tickets Kerberos doivent être limitées pour réduire la fenêtre d’exploitation en cas de vol.
Vérification :
# Politique Kerberos du domaine
Get-ADDefaultDomainPasswordPolicy | Select MaxTicketAge,MaxServiceAge,MaxClockSkew
Remédiation :
- MaxTicketAge: 10 heures maximum
- MaxServiceAge: 600 minutes maximum
- MaxClockSkew: 5 minutes maximum
Valeur par défaut : 10h pour TGT, 600min pour service tickets
4.1.12 — Surveillance des événements Kerberos suspects
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-082
MITRE ATT&CK : T1558
Description : Certains patterns d’événements Kerberos peuvent indiquer des attaques (Kerberoasting, AS-REP roasting, Golden tickets).
Vérification :
# Événements Kerberos critiques
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4768,4769,4771} -MaxEvents 1000 |
Group-Object Id | Select Name,Count
Remédiation :
- Surveiller Event 4769 (TGS) pour Kerberoasting
- Surveiller Event 4768 (TGT) pour AS-REP roasting
- Alerter sur les codes d’erreur spécifiques
Valeur par défaut : Logging basique activé
4.1.13 — Protection contre Pass-the-Hash (PtH)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-083
MITRE ATT&CK : T1550.002
Description : Les attaques PtH utilisent les hash NTLM pour s’authentifier. Les protections incluent NTLM restrictions, Credential Guard, et Protected Users group.
Vérification :
# Membres du groupe Protected Users
Get-ADGroupMember "Protected Users"
# Credential Guard activé
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
Remédiation :
- Ajouter les comptes privilégiés au groupe “Protected Users”
- Activer Credential Guard sur postes/serveurs critiques
- Restreindre l’utilisation NTLM
Valeur par défaut : Protections souvent désactivées
4.1.14 — Protection contre Pass-the-Ticket (PtT)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-084
MITRE ATT&CK : T1550.003
Description : Les attaques PtT réutilisent des tickets Kerberos volés. La protection nécessite des durées de vie courtes et la surveillance des réutilisations.
Vérification :
# Surveillance des réutilisations de tickets
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[10].Value -eq 3} # Logon Type = Network
Remédiation :
- Limiter les durées de vie des tickets
- Surveiller les connexions réseau multiples avec même ticket
- Implémenter des restrictions réseau par utilisateur
Valeur par défaut : Pas de protection spécifique contre PtT
4.1.15 — Configuration du SMB Signing
Niveau : 🟠
Référence CIS : 2.3.8.1-2.3.8.2 / ANSSI-AD-085
MITRE ATT&CK : T1557.001
Description : SMB Signing protège contre les attaques de relais SMB en signant cryptographiquement les communications.
Vérification :
# Configuration SMB Signing client/serveur
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" -Name "RequireSecuritySignature"
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters" -Name "RequireSecuritySignature"
Remédiation :
- RequireSecuritySignature = 1 sur tous les systèmes
- Tester la compatibilité avec équipements réseau anciens
- Implémenter progressivement si nécessaire
Valeur par défaut : Souvent désactivé pour compatibilité
4.1.16 — Audit des comptes avec des SPN faibles
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-086 / PingCastle P-Kerberoasting
MITRE ATT&CK : T1558.003
Description : Les comptes avec SPN et mots de passe faibles sont vulnérables au Kerberoasting. Identification et correction nécessaires.
Vérification :
# Comptes SPN avec mots de passe potentiellement faibles
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName,PasswordLastSet,adminCount |
Where-Object {(Get-Date) - $_.PasswordLastSet -gt 365}
Remédiation :
- Mots de passe >25 caractères pour comptes SPN
- Migration vers gMSA quand possible
- Rotation régulière des mots de passe
Valeur par défaut : Mots de passe souvent insuffisants
4.1.17 — Protection contre DCSync
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-087 / PingCastle P-DCSync
MITRE ATT&CK : T1003.006
Description : DCSync permet d’extraire les hash de mots de passe via la réplication AD. Les permissions DS-Replication-Get-Changes doivent être strictement contrôlées.
Vérification :
# Permissions de réplication suspectes
dsacls "DC=domain,DC=com" | findstr "DS-Replication-Get-Changes"
# Objets avec permissions de réplication
Get-ADObject -Filter * -Properties nTSecurityDescriptor | Where-Object {$_.nTSecurityDescriptor -like "*1131f6aa*"}
Remédiation :
- Limiter DS-Replication-Get-Changes aux seuls DC légitimes
- Surveiller les tentatives de réplication suspectes
- Alerter sur l’utilisation des permissions de réplication
Valeur par défaut : Permissions souvent trop larges
4.1.18 — Configuration de l’audit Kerberos avancé
Niveau : 🟡
Référence CIS : 17.5.1-17.5.6 / ANSSI-AD-088
MITRE ATT&CK : T1558
Description : L’audit détaillé des événements Kerberos permet de détecter les attaques sophistiquées et les anomalies d’authentification.
Vérification :
# Configuration audit Kerberos
auditpol /get /category:"Account Logon"
auditpol /get /subcategory:"Kerberos Authentication Service"
Remédiation :
- Activer l’audit succès/échec pour tous les événements Kerberos
- Configurer la rétention appropriée des logs
- Implémenter des règles SIEM pour détection automatique
Valeur par défaut : Audit basique souvent insuffisant
4.1.19 — Contrôle des enclaves Kerberos
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-089
MITRE ATT&CK : T1558
Description : Les enclaves Kerberos (domaines/forêts) doivent être isolées selon les besoins de sécurité. Les trusts doivent suivre le principe du moindre privilège.
Vérification :
# Trusts configurés
Get-ADTrust -Filter * | Select Name,Direction,TrustType,SelectiveAuthentication,SIDFilteringEnabled
Remédiation :
- Limiter les trusts au strict nécessaire
- Activer Selective Authentication sur trusts externes
- Vérifier SID Filtering sur tous les trusts
Valeur par défaut : Configuration souvent permissive
4.1.20 — Protection contre les attaques Skeleton Key
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-090
MITRE ATT&CK : T1547.005
Description : L’attaque Skeleton Key injecte un mot de passe maître dans LSASS. La détection nécessite surveillance de l’intégrité et des authentifications anormales.
Vérification :
# Vérifier l'intégrité de LSASS
Get-Process lsass | Select ProcessName,Path,FileVersion
# Surveiller les authentifications avec mots de passe suspects
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624}
Remédiation :
- Implémenter LSA Protection
- Surveiller les modifications de LSASS
- Utiliser des solutions EDR pour détecter les injections
Valeur par défaut : Pas de protection spécifique
4.1.21 — Configuration des protocoles d’authentification legacy
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-091
MITRE ATT&CK : T1078
Description : Les protocoles legacy (LM, NTLMv1) doivent être désactivés car cryptographiquement faibles et vulnérables.
Vérification :
# Configuration protocoles legacy
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "NoLMHash"
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LmCompatibilityLevel"
Remédiation :
- NoLMHash = 1 (pas de stockage hash LM)
- LmCompatibilityLevel = 5 (NTLMv2 minimum)
- Désactiver progressivement tout support legacy
Valeur par défaut : Support legacy souvent encore présent
4.1.22 — Surveillance des échecs d’authentification Kerberos
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-092
MITRE ATT&CK : T1558
Description : Les échecs Kerberos peuvent indiquer des attaques ou des problèmes de configuration. Patterns spécifiques à surveiller selon les codes d’erreur.
Vérification :
# Échecs Kerberos par code d'erreur
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4771} |
Group-Object {$_.Properties[6].Value} | Sort-Object Count -Descending
Remédiation :
- Surveiller codes d’erreur 0x6 (compte inexistant), 0x12 (compte désactivé)
- Alerter sur 0x17 (mot de passe expiré), 0x18 (pré-auth requis)
- Corréler avec autres événements de sécurité
Valeur par défaut : Surveillance réactive des échecs
4.1.23 — Configuration des algorithmes cryptographiques Kerberos
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-093
MITRE ATT&CK : T1558
Description : Les algorithmes faibles (DES, RC4) doivent être désactivés. AES128/256 et algorithmes futurs doivent être privilégiés.
Vérification :
# Algorithmes supportés par le domaine
Get-ADDomain | Select msDS-SupportedEncryptionTypes
# Comptes avec algorithmes faibles
Get-ADUser -Filter * -Properties msDS-SupportedEncryptionTypes | Where-Object {$_."msDS-SupportedEncryptionTypes" -band 7}
Remédiation :
- Désactiver DES (bits 1,2) et RC4 (bit 4) progressivement
- Activer AES128 (bit 8) et AES256 (bit 16)
- Tester compatibility avant désactivation complète
Valeur par défaut : RC4 souvent encore activé
4.1.24 — Protection contre les attaques de downgrade
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-094
MITRE ATT&CK : T1562.010
Description : Les attaques de downgrade forcent l’utilisation de protocoles/algorithmes faibles. Configuration stricte nécessaire pour les prévenir.
Vérification :
# Configuration minimum de sécurité
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LmCompatibilityLevel"
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"
Remédiation :
- Forcer les protocoles/algorithmes sécurisés uniquement
- Désactiver la négociation vers protocoles faibles
- Surveiller les tentatives de downgrade
Valeur par défaut : Négociation souvent permissive
4.1.25 — Audit des tickets de service à longue durée
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-095
MITRE ATT&CK : T1558.002
Description : Les tickets de service avec durées de vie anormalement longues peuvent indiquer des Golden/Silver tickets ou des configurations problématiques.
Vérification :
# Tickets avec durées anormales
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4769} |
Where-Object {$_.Properties[6].Value -gt 43200} # > 12 heures
Remédiation :
- Configurer des durées de vie appropriées (≤10h)
- Surveiller les tickets avec durées excessives
- Investiguer les sources de tickets anormaux
Valeur par défaut : Durées parfois excessives par configuration
4.1.26 — Configuration de la protection Extended Protection for Authentication
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-096
MITRE ATT&CK : T1557.001
Description : EPA protège contre les attaques de relais en liant l’authentification au canal de communication sécurisé.
Vérification :
# Configuration EPA pour différents services
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\LSA" -Name "SuppressExtendedProtection"
Remédiation :
- Activer EPA sur tous les services supportés
- Configurer les applications pour utiliser EPA
- Tester la compatibilité avec clients anciens
Valeur par défaut : EPA souvent désactivé pour compatibilité
4.1.27 — Surveillance des modifications de configuration Kerberos
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-097
MITRE ATT&CK : T1484
Description : Les modifications des paramètres Kerberos peuvent affaiblir la sécurité. Surveillance et approbation nécessaires pour tous les changements.
Vérification :
# Surveillance des modifications de registre Kerberos
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4657} |
Where-Object {$_.Message -like "*Kerberos*" -or $_.Message -like "*NTDS*"}
Remédiation :
- Auditer toutes les modifications de configuration
- Implémenter un processus d’approbation des changements
- Alerter sur les modifications non autorisées
Valeur par défaut : Modifications souvent non surveillées
4.1.28 — Protection des communications RPC
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-098
MITRE ATT&CK : T1557.001
Description : Les communications RPC doivent être sécurisées pour éviter l’interception et la manipulation. Authentification et chiffrement nécessaires.
Vérification :
# Configuration sécurité RPC
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Rpc\ClientProtocols" -Name "EnableDCOMHTTP"
Remédiation :
- Activer l’authentification RPC obligatoire
- Chiffrer les communications RPC sensibles
- Limiter les endpoints RPC exposés
Valeur par défaut : Communications RPC souvent non sécurisées
4.1.29 — Configuration des restrictions de protocole par réseau
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-099
MITRE ATT&CK : T1078
Description : Différents réseaux peuvent nécessiter des restrictions de protocole variables. Segmentation et politiques adaptées par zone.
Vérification :
# Politiques réseau par interface
Get-NetConnectionProfile | Select Name,NetworkCategory,IPv4Connectivity
Remédiation :
- Classifier les réseaux (Domain, Private, Public)
- Appliquer des restrictions par classification
- Surveiller les changements de classification réseau
Valeur par défaut : Politiques souvent uniformes
4.1.30 — Audit des communications inter-domaines
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-100
MITRE ATT&CK : T1482
Description : Les communications entre domaines/forêts doivent être surveillées pour détecter les mouvements latéraux et l’abus de trusts.
Vérification :
# Authentifications inter-domaines
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[5].Value -like "*@*" -and $_.Properties[5].Value -notlike "*@domain.com"}
Remédiation :
- Surveiller toutes les authentifications inter-domaines
- Corréler avec les besoins métier légitimes
- Alerter sur les patterns anormaux
Valeur par défaut : Surveillance basique des authentifications
📋 SECTION 5 — SÉCURITÉ GPO (~20 contrôles)
5.1.1 — Permissions sur les GPO critiques
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-101 / PingCastle A-GPOPrivileged
MITRE ATT&CK : T1484.001
Description : Les GPO contrôlent la configuration de sécurité de tous les systèmes. Leurs permissions doivent être strictement limitées aux administrateurs autorisés.
Vérification :
# Permissions sur GPO critiques
$criticalGPOs = @("Default Domain Policy","Default Domain Controllers Policy")
foreach($gpo in $criticalGPOs) {
Get-GPPermission -Name $gpo -All | Where-Object {$_.Permission -match "Edit" -and $_.Trustee -notlike "*Admin*"}
}
Remédiation :
- Limiter les permissions Edit aux seuls Domain Admins
- Supprimer les permissions héritées non nécessaires
- Auditer régulièrement les permissions GPO
Valeur par défaut : Permissions souvent trop permissives
5.1.2 — Protection contre l’hijacking de GPO
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-102 / PingCastle A-GPOHijacking
MITRE ATT&CK : T1484.001
Description : L’hijacking de GPO permet à un attaquant de modifier des politiques pour élever ses privilèges ou établir une persistence. Protection des ACL nécessaire.
Vérification :
# GPO avec permissions dangereuses pour utilisateurs non-admin
Get-GPO -All | ForEach-Object {
Get-GPPermission -Guid $_.Id -All | Where-Object {
$_.Permission -eq "GpoEditDeleteModifySecurity" -and
$_.Trustee -notmatch "Admin|SYSTEM|Creator"
}
}
Remédiation :
- Supprimer toutes les permissions Edit non justifiées
- Implémenter la séparation des droits (lecture vs modification)
- Surveiller les modifications de GPO
Valeur par défaut : Risque d’hijacking selon permissions
🌐 SECTION 6 — SÉCURITÉ DNS AD (~15 contrôles)
6.1.1 — Configuration des zones DNS intégrées AD
Niveau : 🟠
Référence CIS : 2.3.7.1 / ANSSI-AD-121
MITRE ATT&CK : T1071.004
Description : Les zones DNS intégrées à AD bénéficient de la sécurité et réplication AD. Toutes les zones critiques doivent être intégrées.
Vérification :
# Zones DNS et leur type
Get-DnsServerZone | Select ZoneName,ZoneType,IsDsIntegrated,SecureSecondaries
# Vérification de l'intégration AD
Get-DnsServerZone | Where-Object {$_.ZoneType -eq "Primary" -and $_.IsDsIntegrated -eq $false}
Remédiation :
- Convertir toutes les zones primaires vers l’intégration AD
- Configurer la réplication appropriée (ForestDnsZones, DomainDnsZones)
- Tester la résolution après conversion
Valeur par défaut : Nouvelles zones souvent intégrées AD
6.1.2 — Activation des mises à jour dynamiques sécurisées
Niveau : 🟠
Référence CIS : 2.3.7.5 / ANSSI-AD-122
MITRE ATT&CK : T1071.004
Description : Les mises à jour dynamiques non sécurisées permettent à n’importe quel client de modifier les enregistrements DNS. Seules les MAJ sécurisées doivent être autorisées.
Vérification :
Get-DnsServerZone | Select ZoneName,DynamicUpdate,SecureSecondaries
# Zones permettant les mises à jour non sécurisées
Get-DnsServerZone | Where-Object {$_.DynamicUpdate -eq "NonsecureAndSecure"}
Remédiation :
- Configurer “Secure only” pour toutes les zones intégrées AD
- Identifier et corriger les zones non sécurisées
- Tester l’impact sur l’enregistrement automatique
Valeur par défaut : Souvent “NonsecureAndSecure” par défaut
6.1.3 — Configuration DNSSEC pour la validation
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-123
MITRE ATT&CK : T1071.004
Description : DNSSEC protège contre les attaques d’empoisonnement DNS en validant cryptographiquement les réponses.
Vérification :
# Statut DNSSEC
Get-DnsServerZone | Select ZoneName,IsSigned,SigningKeys
# Configuration validation DNSSEC
Get-DnsServerSetting | Select EnableDnsSec,DnsSecValidation
Remédiation :
- Activer DNSSEC sur les zones critiques
- Configurer la validation DNSSEC sur les serveurs
- Gérer la rotation des clés DNSSEC
Valeur par défaut : DNSSEC souvent non configuré
6.1.4 — Contrôle des transferts de zone DNS
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-124
MITRE ATT&CK : T1016.001
Description : Les transferts de zone non contrôlés peuvent exposer des informations sur l’infrastructure. Ils doivent être limités aux serveurs autorisés.
Vérification :
Get-DnsServerZone | Select ZoneName,SecureSecondaries,SecondaryServers,NotifyServers
# Zones autorisant les transferts vers n'importe qui
Get-DnsServerZone | Where-Object {$_.SecureSecondaries -eq "NoSecurity"}
Remédiation :
- Limiter les transferts aux serveurs spécifiés uniquement
- Utiliser l’authentification pour les transferts
- Auditer régulièrement les configurations de transfert
Valeur par défaut : Transferts souvent trop permissifs
6.1.5 — Protection contre l’empoisonnement de cache DNS
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-125
MITRE ATT&CK : T1071.004
Description : L’empoisonnement de cache permet de rediriger le trafic vers des serveurs malveillants. Protection par randomisation et validation nécessaires.
Vérification :
# Configuration protection empoisonnement
Get-DnsServerSetting | Select EnablePollutionProtection,BootMethod,Forwarders
# Vérification randomisation des ports source
Get-DnsServerSetting | Select SocketPoolSize,EnableSocketPooling
Remédiation :
- Activer la protection contre la pollution
- Configurer la randomisation des ports source
- Utiliser des forwarders sécurisés (DoH/DoT)
Valeur par défaut : Protection souvent basique
6.1.6 — Surveillance des requêtes DNS suspectes
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-126
MITRE ATT&CK : T1071.004
Description : Les requêtes DNS peuvent indiquer des activités malveillantes (C2, exfiltration, reconnaissance). Surveillance et analyse nécessaires.
Vérification :
# Activation du logging DNS
Get-DnsServerDiagnostics | Select EnableLogFileRollover,LogFilePath,Queries
# Analyse des requêtes récentes
Get-WinEvent -FilterHashtable @{LogName='DNS Server'} -MaxEvents 100
Remédiation :
- Activer le logging détaillé des requêtes DNS
- Analyser les patterns de requêtes anormaux
- Implémenter des règles de détection automatique
Valeur par défaut : Logging souvent minimal
6.1.7 — Configuration des forwarders DNS sécurisés
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-127
MITRE ATT&CK : T1071.004
Description : Les forwarders DNS doivent être fiables et sécurisés pour éviter l’interception ou la manipulation des requêtes externes.
Vérification :
Get-DnsServerForwarder | Select IPAddress,EnableReordering,Timeout,UseRootHint
Remédiation :
- Utiliser des forwarders fiables (ISP, CloudFlare, Quad9)
- Configurer DNS over HTTPS/TLS si supporté
- Implémenter une redondance des forwarders
Valeur par défaut : Forwarders souvent par défaut ISP
6.1.8 — Contrôle des enregistrements DNS critiques
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-128
MITRE ATT&CK : T1071.004
Description : Les enregistrements DNS critiques (SRV AD, MX, etc.) doivent être protégés contre les modifications non autorisées.
Vérification :
# Enregistrements SRV critiques pour AD
nslookup -type=SRV _ldap._tcp.dc._msdcs.domain.com
nslookup -type=SRV _kerberos._tcp.dc._msdcs.domain.com
nslookup -type=SRV _gc._tcp.domain.com
Remédiation :
- Vérifier la présence de tous les enregistrements SRV AD
- Surveiller les modifications d’enregistrements critiques
- Sauvegarder régulièrement les configurations DNS
Valeur par défaut : Enregistrements créés automatiquement
6.1.9 — Protection des zones de recherche inversée
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-129
MITRE ATT&CK : T1016.001
Description : Les zones de recherche inversée peuvent révéler des informations sur l’infrastructure. Elles doivent être sécurisées et limitées.
Vérification :
# Zones de recherche inversée configurées
Get-DnsServerZone | Where-Object {$_.ZoneName -like "*.in-addr.arpa" -or $_.ZoneName -like "*.ip6.arpa"}
Remédiation :
- Sécuriser les zones de recherche inversée
- Limiter les informations exposées
- Considérer la suppression si non nécessaires
Valeur par défaut : Zones inversées souvent créées automatiquement
6.1.10 — Configuration des politiques de requête DNS
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-130
MITRE ATT&CK : T1071.004
Description : Les politiques de requête permettent de filtrer ou rediriger les requêtes DNS selon des critères de sécurité.
Vérification :
# Politiques DNS configurées
Get-DnsServerQueryResolutionPolicy | Select Name,Criteria,Action,ProcessingOrder
Remédiation :
- Créer des politiques pour bloquer les domaines malveillants
- Implémenter la redirection vers des sinkholes
- Configurer des politiques par source/utilisateur
Valeur par défaut : Aucune politique généralement configurée
6.1.11 — Audit des modifications de configuration DNS
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-131
MITRE ATT&CK : T1071.004
Description : Toutes les modifications de configuration DNS doivent être auditées car elles peuvent affecter la disponibilité et sécurité.
Vérification :
# Événements de modification DNS
Get-WinEvent -FilterHashtable @{LogName='DNS Server';ID=2,6,7} |
Select TimeCreated,Id,LevelDisplayName,Message
Remédiation :
- Activer l’audit complet des modifications DNS
- Surveiller les changements non autorisés
- Implémenter des alertes temps réel
Valeur par défaut : Audit souvent minimal
6.1.12 — Protection contre les attaques DDoS DNS
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-132
MITRE ATT&CK : T1498.002
Description : Les serveurs DNS sont des cibles fréquentes d’attaques DDoS. Mesures de protection et limitation de taux nécessaires.
Vérification :
# Configuration protection DDoS
Get-DnsServerSetting | Select MaximumUdpPacketSize,EnableDuplicateQuerySuppression
Get-DnsServerResponseRateLimiting | Select ResponsesPerSec,WindowInSec
Remédiation :
- Configurer Response Rate Limiting (RRL)
- Limiter les tailles de paquets UDP
- Implémenter la suppression des requêtes dupliquées
Valeur par défaut : Protection DDoS souvent basique
6.1.13 — Configuration de la réplication DNS sécurisée
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-133
MITRE ATT&CK : T1071.004
Description : La réplication DNS entre DC doit être sécurisée pour éviter l’interception ou la manipulation des données.
Vérification :
# Configuration réplication DNS AD
Get-DnsServerZone | Where-Object {$_.IsDsIntegrated} | Select ZoneName,ReplicationScope
Remédiation :
- Utiliser les partitions DNS AD appropriées
- Limiter la réplication au scope nécessaire
- Surveiller la santé de réplication DNS
Valeur par défaut : Réplication généralement sécurisée dans AD
6.1.14 — Contrôle des enregistrements DNS obsolètes
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-134
MITRE ATT&CK : T1016.001
Description : Les enregistrements DNS obsolètes peuvent pointer vers des systèmes compromis ou inexistants, créant des risques de sécurité.
Vérification :
# Analyse des enregistrements obsolètes (script custom nécessaire)
Get-DnsServerResourceRecord -ZoneName "domain.com" |
Where-Object {$_.RecordType -eq "A" -or $_.RecordType -eq "CNAME"}
Remédiation :
- Identifier et supprimer les enregistrements obsolètes
- Implémenter un processus de nettoyage régulier
- Valider l’existence des systèmes référencés
Valeur par défaut : Nettoyage souvent manuel et irrégulier
6.1.15 — Surveillance de la performance DNS
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-135
MITRE ATT&CK : T1498.002
Description : La performance DNS impacte directement l’authentification AD. Surveillance nécessaire pour détecter les problèmes et attaques.
Vérification :
# Statistiques performance DNS
Get-DnsServerStatistics | Select TotalQueries,TotalResponses,QueryDropped,ResponseTimeout
# Test résolution DNS
Measure-Command {nslookup domain.com}
Remédiation :
- Surveiller les métriques de performance DNS
- Optimiser la configuration selon la charge
- Implémenter des alertes sur dégradation
Valeur par défaut : Surveillance souvent basique
🔄 SECTION 7 — RÉPLICATION & CONTRÔLEURS DE DOMAINE (~20 contrôles)
7.1.1 — Surveillance de la santé de réplication AD
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-136 / PingCastle A-DCReplication
MITRE ATT&CK : T1018
Description : Les échecs de réplication peuvent causer des incohérences de sécurité et faciliter certaines attaques. Surveillance continue nécessaire.
Vérification :
# État de réplication global
repadmin /replsummary
# Échecs de réplication détaillés
Get-ADReplicationFailure -Target * -Scope Domain | Select Server,FirstFailureTime,FailureCount,LastError
Remédiation :
- Corriger immédiatement tous les échecs de réplication
- Surveiller en continu avec alertes automatiques
- Investiguer les causes racines des échecs
Valeur par défaut : Réplication généralement fonctionnelle
7.1.2 — Configuration sécurisée des Read-Only Domain Controllers (RODC)
Niveau : 🟡
Référence CIS : 2.3.1.6 / ANSSI-AD-137
MITRE ATT&CK : T1078
Description : Les RODC dans les sites distants limitent l’exposition en cas de compromission physique. Configuration PRP (Password Replication Policy) critique.
Vérification :
# RODC déployés et leur configuration
Get-ADDomainController -Filter {IsReadOnly -eq $true} | Select Name,Site,IsReadOnly,OperatingSystem
# Password Replication Policy
Get-ADDomainController -Filter {IsReadOnly -eq $true} | ForEach-Object {
Get-ADAccountResultantPasswordReplicationPolicy -DomainController $_.Name -Identity "Domain Admins"
}
Remédiation :
- Déployer des RODC dans tous les sites à risque
- Configurer des PRP restrictives (Deny par défaut)
- Auditer régulièrement les comptes autorisés à répliquer
Valeur par défaut : Pas de RODC déployés par défaut
7.1.3 — Protection contre les attaques DCSync
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-138 / PingCastle P-DCSync
MITRE ATT&CK : T1003.006
Description : DCSync permet d’extraire tous les hash de mots de passe via la réplication. Les permissions DS-Replication-Get-Changes doivent être strictement contrôlées.
Vérification :
# Permissions de réplication sur le domaine
dsacls "DC=domain,DC=com" | findstr "DS-Replication-Get-Changes"
# Objets avec permissions DCSync
Get-ADObject -SearchBase "DC=domain,DC=com" -Properties nTSecurityDescriptor -Filter * |
Where-Object {$_.nTSecurityDescriptor -like "*1131f6aa*"}
Remédiation :
- Limiter DS-Replication-Get-Changes aux seuls DC
- Auditer régulièrement ces permissions critiques
- Surveiller l’utilisation des permissions de réplication
Valeur par défaut : Permissions souvent trop larges
7.1.4 — Configuration de SYSVOL avec DFS-R
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-139
MITRE ATT&CK : T1484.001
Description : La migration de FRS vers DFS-R pour SYSVOL améliore la robustesse et sécurité de la réplication des GPO.
Vérification :
# État de la migration SYSVOL vers DFS-R
dfsrdiag ReplicationState /member:DC01
# Vérification cohérence SYSVOL
dcdiag /test:sysvolcheck /v
Remédiation :
- Migrer SYSVOL de FRS vers DFS-R si pas encore fait
- Vérifier la santé de réplication DFS-R
- Surveiller la cohérence SYSVOL entre DC
Valeur par défaut : DFS-R utilisé par défaut sur WS2008+
7.1.5 — Audit des connexions de réplication manuelles
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-140
MITRE ATT&CK : T1018
Description : Les connexions de réplication manuelles peuvent perturber la topologie optimale générée par KCC et créer des risques.
Vérification :
# Connexions manuelles vs automatiques
Get-ADReplicationConnection -Filter * | Select Name,AutoGenerated,FromServer,ToServer,Options
# Connexions créées manuellement
Get-ADReplicationConnection -Filter {AutoGenerated -eq $false}
Remédiation :
- Documenter toutes les connexions manuelles
- Valider leur nécessité avec KCC
- Supprimer les connexions redondantes
Valeur par défaut : Topologie gérée automatiquement par KCC
7.1.6 — Surveillance des objets de métadonnées de réplication
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-141
MITRE ATT&CK : T1018
Description : Les métadonnées de réplication contiennent des informations sensibles sur la topologie et peuvent révéler des cibles d’attaque.
Vérification :
# Métadonnées de réplication
repadmin /showmeta "DC=domain,DC=com" /nocache
# Serveurs de réplication par partition
repadmin /showreps
Remédiation :
- Limiter l’accès aux métadonnées de réplication
- Surveiller les requêtes de métadonnées suspectes
- Auditer l’utilisation des outils de réplication
Valeur par défaut : Accès généralement restreint aux admins
7.1.7 — Configuration des intervalles de réplication
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-142
MITRE ATT&CK : T1018
Description : Les intervalles de réplication doivent équilibrer convergence rapide des changements de sécurité et charge réseau.
Vérification :
# Intervalles de réplication configurés
Get-ADReplicationSiteLink | Select Name,Cost,ReplicationFrequencyInMinutes,Options
# Réplication urgente activée
Get-ADReplicationConnection -Filter * | Select Name,ReplicatedNamingContexts,Options
Remédiation :
- Configurer des intervalles appropriés selon la criticité
- Activer la réplication d’urgence pour les changements de sécurité
- Optimiser selon la bande passante disponible
Valeur par défaut : 180 minutes pour DEFAULTIPSITELINK
7.1.8 — Protection des partitions d’application AD
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-143
MITRE ATT&CK : T1484
Description : Les partitions d’application (DNS, Configuration) contiennent des données critiques et doivent être protégées.
Vérification :
# Partitions d'application existantes
Get-ADObject -SearchBase "CN=Partitions,CN=Configuration,DC=domain,DC=com" -Filter {objectClass -eq "crossRef"} -Properties nCName,dnsRoot
Remédiation :
- Auditer toutes les partitions d’application
- Contrôler les permissions sur les partitions critiques
- Surveiller les modifications de structure
Valeur par défaut : Partitions DNS créées automatiquement
7.1.9 — Contrôle de la réplication inter-sites
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-144
MITRE ATT&CK : T1018
Description : La réplication inter-sites doit être optimisée et sécurisée, particulièrement sur les liens WAN.
Vérification :
# Configuration des liens de sites
Get-ADReplicationSiteLink | Select Name,SitesIncluded,Cost,ReplicationFrequencyInMinutes,Options
# Ponts de liens de sites
Get-ADReplicationSiteLinkBridge | Select Name,SiteLinksIncluded
Remédiation :
- Optimiser les coûts selon la bande passante réelle
- Configurer la compression pour les liens lents
- Surveiller l’utilisation de bande passante
Valeur par défaut : Configuration souvent non optimisée
7.1.10 — Audit des modifications de topologie KCC
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-145
MITRE ATT&CK : T1018
Description : Le Knowledge Consistency Checker (KCC) génère automatiquement la topologie de réplication. Ses modifications doivent être surveillées.
Vérification :
# État KCC et dernière exécution
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=1864,1865} -MaxEvents 10
# Configuration KCC
repadmin /kcc * /async
Remédiation :
- Surveiller les exécutions KCC et leurs résultats
- Investiguer les échecs de génération de topologie
- Valider que KCC fonctionne sur tous les DC
Valeur par défaut : KCC fonctionne automatiquement
7.1.11 — Protection contre les attaques DCShadow
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-146 / PingCastle A-DCShadow
MITRE ATT&CK : T1207
Description : DCShadow permet de s’enregistrer temporairement comme DC pour injecter des changements malveillants dans AD.
Vérification :
# Nouveaux SPN de type DC
Get-ADUser -Filter * -Properties ServicePrincipalNames | Where-Object {
$_.ServicePrincipalNames -like "*GC/*" -or $_.ServicePrincipalNames -like "*E3514235*"
}
# Nouveaux objets serveur
Get-ADObject -SearchBase "CN=Sites,CN=Configuration,DC=domain,DC=com" -Filter {objectClass -eq "server"} -Properties whenCreated |
Sort-Object whenCreated -Descending
Remédiation :
- Surveiller les créations de SPN de type DC
- Alerter sur les nouveaux objets server dans Sites
- Restreindre les permissions ms-DS-MachineAccountQuota
Valeur par défaut : Pas de protection spécifique contre DCShadow
7.1.12 — Configuration des Global Catalog servers
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-147
MITRE ATT&CK : T1018
Description : Le catalogue global facilite les recherches inter-domaines. Configuration et réplication appropriées nécessaires.
Vérification :
# Serveurs de catalogue global
Get-ADDomainController -Filter * | Select Name,Site,IsGlobalCatalog,OperatingSystem
# Réplication du catalogue global
Get-ADReplicationPartnerMetadata -Target * -Partition "DC=ForestDnsZones,DC=domain,DC=com"
Remédiation :
- Configurer au moins un GC par site principal
- Surveiller la réplication des partitions GC
- Optimiser selon les besoins de recherche
Valeur par défaut : GC sur tous les DC en single domain
7.1.13 — Surveillance des tombstones et garbage collection
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-148
MITRE ATT&CK : T1484
Description : Les objets supprimés deviennent des tombstones avant suppression définitive. Configuration appropriée pour éviter la corruption.
Vérification :
# Configuration tombstone lifetime
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=com" -Properties tombstoneLifetime
# Objets tombstone actuels
Get-ADObject -IncludeDeletedObjects -Filter {isDeleted -eq $true} | Measure-Object
Remédiation :
- Configurer tombstoneLifetime approprié (180 jours recommandé)
- Surveiller le volume d’objets tombstone
- Planifier le garbage collection régulièrement
Valeur par défaut : 180 jours par défaut sur domaines récents
7.1.14 — Contrôle des USN (Update Sequence Numbers)
Niveau : ��
Référence CIS : Custom / ANSSI-AD-149
MITRE ATT&CK : T1484
Description : Les USN trackent les modifications AD. Leur surveillance permet de détecter certaines anomalies et attaques.
Vérification :
# USN actuels par DC
repadmin /showutdvec DC=domain,DC=com
# Vérification consistance USN
repadmin /showchanges DC=domain,DC=com /statistics
Remédiation :
- Surveiller les progressions USN anormales
- Investiguer les écarts importants entre DC
- Utiliser pour la détection de rollback/restore
Valeur par défaut : USN gérés automatiquement par AD
7.1.15 — Protection des connexions de réplication
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-150
MITRE ATT&CK : T1557.001
Description : Les connexions de réplication transportent des données sensibles et doivent être sécurisées.
Vérification :
# Configuration sécurité réplication
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "Repl Perform Initial Synchronizations"
# Ports de réplication utilisés
netstat -an | findstr ":389\|:636\|:3268\|:3269"
Remédiation :
- Utiliser LDAPS (port 636) pour réplication si possible
- Configurer IPSec pour les connexions inter-sites
- Limiter les ports de réplication autorisés
Valeur par défaut : Réplication souvent non chiffrée
7.1.16 — Audit des opérations de réplication privilégiées
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-151
MITRE ATT&CK : T1003.006
Description : Certaines opérations de réplication (secrets, mots de passe) doivent être spécifiquement auditées.
Vérification :
# Audit réplication de secrets
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=4932,4933} -MaxEvents 100
# Réplication RODC Password Replication Policy
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=4934,4935} -MaxEvents 100
Remédiation :
- Activer l’audit des opérations de réplication sensibles
- Surveiller les tentatives de réplication de secrets
- Alerter sur les patterns anormaux
Valeur par défaut : Audit souvent incomplet
7.1.17 — Configuration des notifications de réplication d’urgence
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-152
MITRE ATT&CK : T1484
Description : Les changements critiques (verrouillage compte, modification privilèges) doivent déclencher une réplication immédiate.
Vérification :
# Configuration réplication d'urgence
Get-ADReplicationSiteLink | Select Name,Options
# 0x1 = USE_NOTIFY (réplication d'urgence)
Remédiation :
- Activer USE_NOTIFY sur tous les liens de sites critiques
- Configurer TWOWAY_SYNC si nécessaire
- Tester la réplication d’urgence
Valeur par défaut : Réplication d’urgence activée par défaut
7.1.18 — Surveillance de la latence de réplication
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-153
MITRE ATT&CK : T1018
Description : Une latence excessive peut impacter la sécurité (délais de propagation de verrouillages, changements de privilèges).
Vérification :
# Latence de réplication actuelle
repadmin /latency /verbose
# Test de réplication manuelle
repadmin /sync "CN=Configuration,DC=domain,DC=com" DC01 DC02
Remédiation :
- Mesurer régulièrement la latence de réplication
- Optimiser selon les SLA de sécurité
- Alerter sur les latences excessives
Valeur par défaut : Dépend de la configuration réseau et sites
7.1.19 — Configuration du nettoyage des objets liés
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-154
MITRE ATT&CK : T1484
Description : Les objets liés (backlinks) obsolètes peuvent causer des problèmes de performance et sécurité.
Vérification :
# Configuration garbage collection
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=com" -Properties garbageCollPeriod
Remédiation :
- Configurer garbageCollPeriod approprié (12h par défaut)
- Surveiller l’efficacité du nettoyage
- Planifier des nettoyages manuels si nécessaire
Valeur par défaut : 12 heures par défaut
7.1.20 — Protection contre les conflits de réplication
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-155
MITRE ATT&CK : T1484
Description : Les conflits de réplication peuvent être exploités pour créer des incohérences de sécurité.
Vérification :
# Objets en conflit
Get-ADObject -Filter {Name -like "*CNF:*"} -IncludeDeletedObjects
# Historique des conflits
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=1308,1309} -MaxEvents 50
Remédiation :
- Identifier et résoudre tous les conflits de réplication
- Investiguer les causes des conflits répétés
- Implémenter la surveillance proactive des conflits
Valeur par défaut : Résolution automatique des conflits
🏗️ SECTION 8 — OBJETS AD & SCHÉMA (~20 contrôles)
8.1.1 — Audit des permissions dangereuses sur objets AD
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-156 / PingCastle P-DangerousAcl
MITRE ATT&CK : T1484.001
Description : Les permissions WriteDACL, GenericAll, WriteOwner sur des objets sensibles permettent l’élévation de privilèges et doivent être strictement contrôlées.
Vérification :
# Recherche permissions dangereuses
Import-Module ActiveDirectory
$dangerousPerms = @("GenericAll","WriteDacl","WriteOwner","WriteProperty")
Get-ADUser -Filter * -Properties nTSecurityDescriptor | ForEach-Object {
$acl = $_.nTSecurityDescriptor.Access
$acl | Where-Object {$_.ActiveDirectoryRights -match ($dangerousPerms -join "|") -and $_.IdentityReference -notmatch "SYSTEM|Administrators"}
}
Remédiation :
- Supprimer toutes les permissions dangereuses non justifiées
- Implémenter le principe du moindre privilège
- Auditer régulièrement les ACL critiques
Valeur par défaut : Permissions souvent trop permissives
8.1.2 — Protection du conteneur AdminSDHolder
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-157 / PingCastle A-AdminSDHolder
MITRE ATT&CK : T1484.001
Description : AdminSDHolder protège les objets privilégiés. Ses ACL sont copiées vers tous les objets protégés. Toute modification peut compromettre la sécurité globale.
Vérification :
$adminSDHolder = Get-ADObject -Identity "CN=AdminSDHolder,CN=System,DC=domain,DC=com" -Properties nTSecurityDescriptor
$adminSDHolder.nTSecurityDescriptor.Access | Where-Object {$_.IdentityReference -notmatch "SYSTEM|BUILTIN|NT AUTHORITY"}
Remédiation :
- Restaurer les ACL AdminSDHolder par défaut
- Surveiller toute modification avec Event 5136
- Vérifier que SDProp fonctionne (service “Protected Storage”)
Valeur par défaut : ACL restrictives par défaut
8.1.3 — Contrôle des objets avec adminCount orphelins
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-158 / PingCastle S-AdminCount
MITRE ATT&CK : T1484.001
Description : Les objets avec adminCount=1 mais non membres de groupes protégés gardent des ACL restrictives héritées. Nettoyage nécessaire.
Vérification :
# Objets avec adminCount orphelins
$protectedGroups = @("Domain Admins","Enterprise Admins","Schema Admins","Administrators","Account Operators","Backup Operators","Print Operators","Server Operators","Cert Publishers")
Get-ADUser -Filter {adminCount -eq 1} | Where-Object {
$user = $_
$isMember = $false
foreach($group in $protectedGroups) {
if(Get-ADGroupMember $group -Recursive | Where-Object {$_.SamAccountName -eq $user.SamAccountName}) {
$isMember = $true; break
}
}
-not $isMember
}
Remédiation :
- Identifier tous les objets avec adminCount orphelins
- Réinitialiser adminCount à 0 après validation
- Restaurer l’héritage ACL normal
Valeur par défaut : adminCount géré automatiquement par SDProp
8.1.4 — Audit des extensions de schéma non standard
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-159 / PingCastle A-SchemaClass
MITRE ATT&CK : T1484
Description : Les extensions de schéma sont permanentes et peuvent introduire des vulnérabilités. Audit et documentation nécessaires.
Vérification :
# Extensions de schéma custom (OID non Microsoft)
Get-ADObject -SearchBase "CN=Schema,CN=Configuration,DC=domain,DC=com" -Filter {objectClass -eq "attributeSchema" -and attributeID -notlike "1.2.840.113556.*"} -Properties attributeID,adminDisplayName,whenCreated
Remédiation :
- Documenter toutes les extensions de schéma
- Valider la sécurité des extensions custom
- Supprimer les extensions obsolètes si possible
Valeur par défaut : Schéma standard Microsoft uniquement
8.1.5 — Contrôle des permissions sur les unités d’organisation
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-160
MITRE ATT&CK : T1484.001
Description : Les OUs organisent les objets AD. Leurs permissions déterminent qui peut créer/modifier les objets contenus.
Vérification :
# Permissions sur OUs critiques
$criticalOUs = Get-ADOrganizationalUnit -Filter * | Where-Object {$_.Name -match "Admin|Server|Tier"}
foreach($ou in $criticalOUs) {
dsacls $ou.DistinguishedName | findstr -v "INHERITED\|SUCCESS"
}
Remédiation :
- Limiter les permissions OU selon le modèle de tiering
- Éviter les permissions génériques (Full Control)
- Implémenter la délégation granulaire
Valeur par défaut : Permissions souvent héritées du domaine
8.1.6 — Surveillance des modifications d’objets critiques
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-161
MITRE ATT&CK : T1484.001
Description : Certains objets AD sont critiques pour la sécurité. Leurs modifications doivent être surveillées et auditées.
Vérification :
# Modifications récentes d'objets critiques
Get-WinEvent -FilterHashtable @{LogName='Security';ID=5136,5137,5141} |
Where-Object {$_.Message -match "CN=AdminSDHolder|CN=Domain Admins|CN=Enterprise Admins|CN=Schema"}
Remédiation :
- Activer l’audit des modifications d’objets AD
- Surveiller spécifiquement les objets critiques
- Alerter en temps réel sur les changements
Valeur par défaut : Audit souvent incomplet
8.1.7 — Contrôle des quotas de création d’objets
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-162
MITRE ATT&CK : T1484
Description : Les quotas limitent le nombre d’objets qu’un utilisateur peut créer, prévenant les attaques DoS et l’abus.
Vérification :
# Quotas configurés
Get-ADObject -SearchBase "CN=NTDS Quotas,CN=NTDS Settings,CN=Configuration,DC=domain,DC=com" -Filter * -Properties msDS-QuotaAmount,msDS-QuotaTrustee
# Utilisation actuelle des quotas
dsquery * -filter "(&(objectClass=user)(msDS-QuotaUsed=*))" -attr distinguishedName,msDS-QuotaUsed
Remédiation :
- Définir des quotas appropriés par type d’utilisateur
- Surveiller l’utilisation des quotas
- Alerter sur les tentatives de dépassement
Valeur par défaut : ms-DS-MachineAccountQuota = 10 par défaut
8.1.8 — Audit des objets avec SID History
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-163 / PingCastle P-SidHistory
MITRE ATT&CK : T1134.005
Description : SID History peut être abusé pour maintenir des privilèges après migration. Audit et nettoyage nécessaires.
Vérification :
# Objets avec SID History
Get-ADUser -Filter * -Properties SIDHistory | Where-Object {$_.SIDHistory} | Select Name,SamAccountName,SIDHistory
Get-ADGroup -Filter * -Properties SIDHistory | Where-Object {$_.SIDHistory} | Select Name,SamAccountName,SIDHistory
Remédiation :
- Auditer tous les objets avec SID History
- Valider la légitimité de chaque SID
- Nettoyer les SID History obsolètes
Valeur par défaut : SID History vide sauf migrations
8.1.9 — Protection contre la manipulation d’attributs sensibles
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-164
MITRE ATT&CK : T1484.001
Description : Certains attributs AD (memberOf, adminCount, etc.) sont critiques et ne doivent pas être modifiables directement.
Vérification :
# Vérification protection attributs sensibles
$sensitiveAttrs = @("memberOf","adminCount","isCriticalSystemObject","nTSecurityDescriptor")
Get-ADObject -SearchBase "CN=Schema,CN=Configuration,DC=domain,DC=com" -Filter {lDAPDisplayName -like "*"} -Properties systemFlags,schemaFlagsEx |
Where-Object {$sensitiveAttrs -contains $_.lDAPDisplayName}
Remédiation :
- Vérifier que les attributs sensibles sont protégés (systemFlags)
- Contrôler les permissions sur les attributs critiques
- Surveiller les tentatives de modification
Valeur par défaut : Protection basée sur systemFlags
8.1.10 — Contrôle des objets dans des conteneurs non standard
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-165
MITRE ATT&CK : T1484.001
Description : Les objets dans des conteneurs non standard (pas dans OUs appropriées) peuvent échapper aux GPO et contrôles.
Vérification :
# Utilisateurs hors OUs standard
Get-ADUser -Filter * | Where-Object {$_.DistinguishedName -like "*CN=Users,DC=*" -or $_.DistinguishedName -like "*CN=Builtin,DC=*"}
# Ordinateurs hors OUs standard
Get-ADComputer -Filter * | Where-Object {$_.DistinguishedName -like "*CN=Computers,DC=*"}
Remédiation :
- Déplacer tous les objets vers des OUs appropriées
- Créer une structure OU cohérente
- Appliquer les GPO selon la structure
Valeur par défaut : Objets souvent dans conteneurs par défaut
8.1.11 — Audit des délégations de contrôle d’OU
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-166
MITRE ATT&CK : T1484.001
Description : La délégation de contrôle permet de distribuer les responsabilités administratives. Elle doit suivre le principe du moindre privilège.
Vérification :
# Délégations configurées sur OUs
Get-ADOrganizationalUnit -Filter * | ForEach-Object {
$ou = $_.DistinguishedName
$acl = (Get-ACL "AD:\$ou").Access | Where-Object {$_.IdentityReference -notmatch "SYSTEM|BUILTIN|NT AUTHORITY" -and $_.AccessControlType -eq "Allow"}
if($acl) {
Write-Output "OU: $ou has custom delegations"
$acl | Select IdentityReference,ActiveDirectoryRights
}
}
Remédiation :
- Documenter toutes les délégations de contrôle
- Valider que chaque délégation respecte le moindre privilège
- Réviser régulièrement les délégations
Valeur par défaut : Délégations souvent ad-hoc et non documentées
8.1.12 — Contrôle des attributs confidentiels
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-167
MITRE ATT&CK : T1087.002
Description : Certains attributs peuvent contenir des informations sensibles et doivent avoir des permissions de lecture restreintes.
Vérification :
# Attributs marqués confidentiels
Get-ADObject -SearchBase "CN=Schema,CN=Configuration,DC=domain,DC=com" -Filter {searchFlags -band 128} -Properties lDAPDisplayName,searchFlags
Remédiation :
- Identifier les attributs contenant des données sensibles
- Marquer comme confidentiels (searchFlags bit 7)
- Contrôler les permissions de lecture
Valeur par défaut : Peu d’attributs marqués confidentiels par défaut
8.1.13 — Surveillance des modifications de schéma
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-168
MITRE ATT&CK : T1484
Description : Les modifications de schéma sont permanentes et affectent toute la forêt. Surveillance stricte nécessaire.
Vérification :
# Modifications récentes du schéma
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=1137,1138} -MaxEvents 50 | Select TimeCreated,Message
# Version actuelle du schéma
Get-ADObject -Identity "CN=Schema,CN=Configuration,DC=domain,DC=com" -Properties objectVersion
Remédiation :
- Vider le groupe Schema Admins sauf opérations planifiées
- Auditer toutes les modifications de schéma
- Documenter les changements et leur impact
Valeur par défaut : Groupe Schema Admins vide recommandé
8.1.14 — Protection des liens critiques entre objets
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-169
MITRE ATT&CK : T1484.001
Description : Les liens entre objets AD (memberOf, managedBy, etc.) définissent les relations de privilèges et doivent être protégés.
Vérification :
# Liens critiques vers objets privilégiés
Get-ADGroup "Domain Admins" -Properties member,memberOf,managedBy
Get-ADGroup "Enterprise Admins" -Properties member,memberOf,managedBy
Remédiation :
- Surveiller les modifications de liens critiques
- Implémenter des workflows d’approbation
- Auditer régulièrement les relations de privilèges
Valeur par défaut : Liens gérés par les permissions d’écriture
8.1.15 — Contrôle des objets avec des ACL explicites
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-170
MITRE ATT&CK : T1484.001
Description : Les objets avec ACL explicites (non héritées) peuvent échapper aux contrôles standardisés et créer des risques.
Vérification :
# Objets avec héritage désactivé
Get-ADUser -Filter * -Properties nTSecurityDescriptor | Where-Object {
-not $_.nTSecurityDescriptor.AreAccessRulesProtected
} | Select Name,DistinguishedName
Remédiation :
- Identifier tous les objets avec ACL explicites
- Valider la nécessité de chaque exception
- Standardiser les permissions quand possible
Valeur par défaut : Héritage activé par défaut
8.1.16 — Audit des objets système critiques
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-171
MITRE ATT&CK : T1484
Description : Les objets système (RootDSE, Partition heads, etc.) sont critiques pour le fonctionnement AD et doivent être protégés.
Vérification :
# Objets système critiques
Get-ADObject -Identity "CN=System,DC=domain,DC=com" -Properties nTSecurityDescriptor
Get-ADObject -Identity "CN=Configuration,DC=domain,DC=com" -Properties nTSecurityDescriptor
Remédiation :
- Vérifier les permissions sur tous les conteneurs système
- Supprimer toute permission non standard
- Surveiller les accès aux objets système
Valeur par défaut : Permissions restrictives par défaut
8.1.17 — Contrôle des objets orphelins ou corrompus
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-172
MITRE ATT&CK : T1484
Description : Les objets orphelins ou corrompus peuvent causer des problèmes de sécurité et performance.
Vérification :
# Objets avec références cassées
Get-ADObject -Filter * -Properties objectClass,canonicalName | Where-Object {$_.canonicalName -eq $null}
# Objets fantômes (phantom objects)
Get-ADObject -LDAPFilter "(&(objectClass=*)(!(objectClass=*)))"
Remédiation :
- Identifier et corriger les objets corrompus
- Nettoyer les références cassées
- Utiliser dcdiag pour diagnostiquer les problèmes
Valeur par défaut : AD maintient généralement la cohérence
8.1.18 — Protection des attributs de construction dynamique
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-173
MITRE ATT&CK : T1087.002
Description : Certains attributs sont calculés dynamiquement (tokenGroups, etc.) et peuvent révéler des informations privilégiées.
Vérification :
# Accès aux attributs construits
$user = Get-ADUser "testuser" -Properties tokenGroups,tokenGroupsNoGCAcceptable,tokenGroupsGlobalAndUniversal
$user.tokenGroups | ForEach-Object {(New-Object System.Security.Principal.SecurityIdentifier($_)).Translate([System.Security.Principal.NTAccount])}
Remédiation :
- Contrôler l’accès aux attributs construits sensibles
- Limiter les permissions de lecture selon les besoins
- Surveiller les requêtes d’attributs construits
Valeur par défaut : Attributs construits accessibles aux utilisateurs authentifiés
8.1.19 — Surveillance des objets de grande valeur (HVT)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-174
MITRE ATT&CK : T1078.002
Description : Les objets de grande valeur (comptes privilégiés, serveurs critiques) nécessitent une surveillance renforcée.
Vérification :
# Identification des HVT
$hvtUsers = Get-ADUser -Filter {adminCount -eq 1 -or memberOf -like "*Admin*"} -Properties adminCount,memberOf,lastLogonDate
$hvtComputers = Get-ADComputer -Filter {OperatingSystem -like "*Server*" -and Name -like "*DC*"} -Properties OperatingSystem
Remédiation :
- Identifier tous les objets de grande valeur
- Implémenter une surveillance renforcée
- Appliquer des contrôles de sécurité supplémentaires
Valeur par défaut : Pas de classification automatique des HVT
8.1.20 — Contrôle de l’intégrité des backlinks
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-175
MITRE ATT&CK : T1484
Description : Les backlinks maintiennent la cohérence des relations AD. Leur corruption peut créer des failles de sécurité.
Vérification :
# Vérification intégrité backlinks
repadmin /showattr DC=domain,DC=com "CN=Domain Admins,CN=Users,DC=domain,DC=com" /atts:member
# Comparaison avec memberOf des membres
Get-ADGroupMember "Domain Admins" | ForEach-Object {
Get-ADUser $_.SamAccountName -Properties memberOf | Select memberOf
}
Remédiation :
- Vérifier régulièrement la cohérence des backlinks
- Corriger les incohérences détectées
- Surveiller les erreurs de réplication de liens
Valeur par défaut : AD maintient automatiquement les backlinks
🛡️ SECTION 9 — AD CS / PKI (~25 contrôles)
9.1.1 — Audit des templates de certificats dangereux (ESC1)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-176 / PingCastle A-ESC1
MITRE ATT&CK : T1649
Description : ESC1 exploite les templates permettant aux enrollees de spécifier le Subject Name, permettant l’impersonnation d’autres utilisateurs via certificats.
Vérification :
# Templates avec ENROLLEE_SUPPLIES_SUBJECT
certutil -CATemplates | findstr /i "ENROLLEE_SUPPLIES_SUBJECT"
# Via PowerShell ADCS
Get-CATemplate | Where-Object {$_.msPKI-Certificate-Name-Flag -band 1} | Select Name,msPKI-Certificate-Name-Flag
Remédiation :
- Désactiver ENROLLEE_SUPPLIES_SUBJECT sur tous les templates non justifiés
- Implémenter des restrictions Manager Approval si nécessaire
- Auditer régulièrement les enrollments suspects
Valeur par défaut : Templates par défaut souvent vulnérables
9.1.2 — Protection contre ESC2 (Any Purpose EKU)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-177
MITRE ATT&CK : T1649
Description : ESC2 exploite les templates avec Any Purpose EKU ou sans EKU, permettant l’utilisation des certificats pour n’importe quel usage.
Vérification :
# Templates avec Any Purpose ou pas d'EKU
Get-CATemplate | Where-Object {
$_.pKIExtendedKeyUsage -contains "2.5.29.37.0" -or
$_.pKIExtendedKeyUsage -eq $null -or
$_.pKIExtendedKeyUsage.Count -eq 0
} | Select Name,pKIExtendedKeyUsage
Remédiation :
- Définir des EKU spécifiques pour chaque template
- Supprimer Any Purpose EKU sauf si absolument nécessaire
- Limiter les permissions d’enrollment sur ces templates
Valeur par défaut : Templates peuvent avoir Any Purpose par défaut
9.1.3 — Contrôle ESC3 (Certificate Request Agent)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-178
MITRE ATT&CK : T1649
Description : ESC3 abuse les templates Certificate Request Agent pour demander des certificats au nom d’autres utilisateurs.
Vérification :
# Templates avec Certificate Request Agent EKU
Get-CATemplate | Where-Object {$_.pKIExtendedKeyUsage -contains "1.3.6.1.4.1.311.20.2.1"} | Select Name,pKIExtendedKeyUsage
# Utilisateurs avec enrollment rights sur ces templates
Remédiation :
- Limiter drastiquement les templates Certificate Request Agent
- Restreindre les permissions d’enrollment à des comptes spécifiques
- Surveiller toutes les demandes de certificats par agent
Valeur par défaut : Certificate Request Agent souvent non configuré
9.1.4 — Protection contre ESC4 (Vulnerable Template Access Control)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-179
MITRE ATT&CK : T1649
Description : ESC4 exploite les permissions excessives sur les templates de certificats pour les modifier et créer des vulnérabilités.
Vérification :
# Permissions sur templates de certificats
Get-CATemplate | ForEach-Object {
$template = $_
$acl = Get-ACL "AD:\CN=$($template.Name),CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com"
$acl.Access | Where-Object {$_.AccessControlType -eq "Allow" -and $_.IdentityReference -notmatch "SYSTEM|Administrators" -and $_.ActiveDirectoryRights -match "WriteProperty|GenericAll"}
}
Remédiation :
- Limiter les permissions Write sur les templates aux seuls Certificate Managers
- Supprimer les permissions GenericAll non justifiées
- Auditer régulièrement les modifications de templates
Valeur par défaut : Permissions souvent trop permissives
9.1.5 — Audit ESC5 (Vulnerable PKI Objects)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-180
MITRE ATT&CK : T1649
Description : ESC5 cible les permissions sur les objets PKI (CA, OID, etc.) pour compromettre l’infrastructure de certificats.
Vérification :
# Permissions sur objets PKI critiques
$pkiObjects = @(
"CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com",
"CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com"
)
foreach($obj in $pkiObjects) {
$acl = Get-ACL "AD:\$obj"
$acl.Access | Where-Object {$_.IdentityReference -notmatch "SYSTEM|Enterprise Admins" -and $_.ActiveDirectoryRights -match "WriteProperty|GenericAll"}
}
Remédiation :
- Restreindre les permissions sur les containers PKI
- Limiter l’accès aux seuls PKI Admins
- Surveiller les modifications d’objets PKI
Valeur par défaut : Permissions PKI souvent restrictives
9.1.6 — Protection contre ESC6 (EDITF_ATTRIBUTESUBJECTALTNAME2)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-181
MITRE ATT&CK : T1649
Description : ESC6 exploite le flag EDITF_ATTRIBUTESUBJECTALTNAME2 pour spécifier des SAN arbitraires dans les demandes de certificats.
Vérification :
# Vérification du flag sur toutes les CA
certutil -config "CA-Server\CA-Name" -getreg policy\EditFlags
# Recherche du flag 0x40000 (EDITF_ATTRIBUTESUBJECTALTNAME2)
Remédiation :
- Désactiver EDITF_ATTRIBUTESUBJECTALTNAME2 sur toutes les CA
- Si nécessaire, utiliser des templates avec SAN prédéfinis
- Auditer les certificats émis avec SAN non standard
Valeur par défaut : Flag souvent activé par défaut
9.1.7 — Contrôle ESC7 (Vulnerable Certificate Authority Access Control)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-182
MITRE ATT&CK : T1649
Description : ESC7 exploite les permissions excessives sur les CA pour approuver des demandes en attente ou changer la configuration.
Vérification :
# Permissions sur les CA
certutil -config "CA-Server\CA-Name" -sd security
# Vérification des droits ManageCA et Issue and Manage Certificates
Remédiation :
- Limiter ManageCA aux seuls Certificate Managers
- Restreindre “Issue and Manage Certificates”
- Auditer toutes les modifications de configuration CA
Valeur par défaut : Permissions CA souvent basiques
9.1.8 — Protection contre ESC8 (NTLM Relay to AD CS)
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-183
MITRE ATT&CK : T1557.001
Description : ESC8 utilise NTLM relay vers les endpoints web AD CS pour obtenir des certificats au nom d’autres utilisateurs.
Vérification :
# Vérification NTLM authentication sur web enrollment
# IIS configuration pour les sites AD CS
Get-IISConfigSection -SectionPath "system.webServer/security/authentication/windowsAuthentication" -Location "Default Web Site/certsrv"
Remédiation :
- Désactiver NTLM sur les endpoints web AD CS
- Utiliser uniquement Kerberos authentication
- Implémenter Extended Protection for Authentication
Valeur par défaut : NTLM souvent autorisé sur web enrollment
9.1.9 — Audit des autorités de certification racine
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-184
MITRE ATT&CK : T1553.004
Description : Les CA racines déterminent les certificats approuvés. Leur compromission compromet toute la PKI.
Vérification :
# CA racines dans le store
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -notlike "*Microsoft*" -and $_.Subject -notlike "*VeriSign*"} | Select Subject,Issuer,Thumbprint
# CA d'entreprise configurées
certutil -config - -ping
Remédiation :
- Auditer toutes les CA racines installées
- Supprimer les CA non approuvées
- Surveiller l’installation de nouvelles CA
Valeur par défaut : Nombreuses CA racines publiques installées
9.1.10 — Configuration sécurisée des Certificate Revocation Lists (CRL)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-185
MITRE ATT&CK : T1553.004
Description : Les CRL doivent être accessibles et à jour pour valider le statut de révocation des certificats.
Vérification :
# Configuration CRL
certutil -config "CA-Server\CA-Name" -getreg CA\CRLPublicationURLs
certutil -config "CA-Server\CA-Name" -getreg CA\CACertPublicationURLs
# Validité des CRL actuelles
certutil -urlcache CRL delete
Remédiation :
- Configurer des URLs CRL accessibles et redondantes
- Définir des intervalles de publication appropriés
- Surveiller la disponibilité des CRL
Valeur par défaut : CRL souvent avec URLs par défaut
9.1.11 — Implémentation OCSP (Online Certificate Status Protocol)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-186
MITRE ATT&CK : T1553.004
Description : OCSP fournit une vérification temps réel du statut des certificats, plus efficace que les CRL.
Vérification :
# Configuration OCSP
certutil -config "CA-Server\CA-Name" -getreg CA\OCSPPublicationURLs
# Test OCSP response
certutil -url "http://ocsp.domain.com/ocsp"
Remédiation :
- Déployer des responders OCSP redondants
- Configurer les URLs OCSP dans les certificats
- Surveiller la disponibilité OCSP
Valeur par défaut : OCSP souvent non configuré
9.1.12 — Protection des clés privées des CA
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-187
MITRE ATT&CK : T1552.004
Description : Les clés privées des CA sont critiques. Leur protection détermine la sécurité de toute la PKI.
Vérification :
# Protection des clés CA
certutil -config "CA-Server\CA-Name" -store CA
# HSM ou software storage
certutil -config "CA-Server\CA-Name" -getreg CA\ProviderName
Remédiation :
- Utiliser des HSM pour les CA racines
- Implémenter des contrôles d’accès stricts aux clés
- Auditer tous les accès aux clés privées
Valeur par défaut : Clés souvent stockées en software
9.1.13 — Audit des certificats émis avec privilèges
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-188
MITRE ATT&CK : T1649
Description : Les certificats pour comptes privilégiés ou avec EKU sensibles doivent être strictement contrôlés.
Vérification :
# Certificats récents pour comptes admin
certutil -config "CA-Server\CA-Name" -view -restrict "RequestType=1,RequesterName=*admin*" csv | ConvertFrom-Csv
# Certificats avec EKU Smart Card Logon
certutil -config "CA-Server\CA-Name" -view -restrict "CertificateTemplate=SmartcardLogon" csv
Remédiation :
- Implémenter Manager Approval pour certificats privilégiés
- Auditer tous les certificats pour comptes admin
- Limiter les EKU selon le principe du moindre privilège
Valeur par défaut : Émission souvent automatique
9.1.14 — Configuration de l’archivage des clés (Key Archival)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-189
MITRE ATT&CK : T1552.004
Description : L’archivage des clés permet la récupération de données chiffrées mais crée des risques de sécurité.
Vérification :
# Configuration Key Archival
certutil -config "CA-Server\CA-Name" -getreg CA\KRAUsageCount
# Templates avec archivage activé
Get-CATemplate | Where-Object {$_.msPKI-Private-Key-Flag -band 1}
Remédiation :
- Limiter l’archivage aux seuls cas justifiés
- Utiliser plusieurs Key Recovery Agents (KRA)
- Sécuriser strictement l’accès aux clés archivées
Valeur par défaut : Archivage souvent désactivé
9.1.15 — Surveillance des événements PKI critiques
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-190
MITRE ATT&CK : T1649
Description : Les événements PKI doivent être surveillés pour détecter les activités suspectes et compromissions.
Vérification :
# Événements PKI critiques
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-CertificationAuthority/Operational';ID=4887,4888,4890} -MaxEvents 100
# Événements d'enrollment suspects
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4886,4887,4888}
Remédiation :
- Activer l’audit complet des opérations PKI
- Surveiller les patterns d’enrollment anormaux
- Alerter sur les événements de révocation massifs
Valeur par défaut : Audit PKI souvent minimal
9.1.16 — Contrôle des templates de certificats cross-forest
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-191
MITRE ATT&CK : T1649
Description : Dans les environnements multi-forêts, les templates de certificats peuvent être répliqués entre forêts, créant des risques.
Vérification :
# Templates répliqués entre forêts
Get-ADObject -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com" -Filter * -Server forest2.com
Remédiation :
- Limiter la réplication de templates entre forêts
- Auditer les templates cross-forest
- Appliquer des restrictions selon la sensibilité
Valeur par défaut : Réplication selon configuration trusts
9.1.17 — Protection contre Certificate Transparency bypass
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-192
MITRE ATT&CK : T1553.004
Description : Certificate Transparency permet de détecter les certificats émis frauduleusement. Le contournement doit être évité.
Vérification :
# Configuration CT logging
# Vérification si les certificats sont soumis aux CT logs
certutil -config "CA-Server\CA-Name" -getreg CA\CTLogs
Remédiation :
- Configurer la soumission automatique aux CT logs
- Surveiller les certificats dans les CT logs
- Alerter sur les certificats non attendus
Valeur par défaut : CT souvent non configuré pour CA internes
9.1.18 — Audit des certificats avec Subject Alternative Names suspects
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-193
MITRE ATT&CK : T1649
Description : Les SAN peuvent être abusés pour l’impersonnation. Audit nécessaire pour détecter les certificats suspects.
Vérification :
# Certificats avec SAN multiples ou suspects
certutil -config "CA-Server\CA-Name" -view -out "SubjectAlternativeName" csv |
ConvertFrom-Csv | Where-Object {$_.SubjectAlternativeName -like "*admin*" -or $_.SubjectAlternativeName -like "*dc*"}
Remédiation :
- Auditer tous les certificats avec SAN
- Valider la légitimité des SAN sensibles
- Implémenter des restrictions sur les SAN autorisés
Valeur par défaut : SAN souvent non auditées
9.1.19 — Configuration des contraintes de nom sur les CA
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-194
MITRE ATT&CK : T1553.004
Description : Les contraintes de nom limitent les domaines pour lesquels une CA peut émettre des certificats.
Vérification :
# Contraintes de nom configurées
certutil -config "CA-Server\CA-Name" -getreg Policy\RequestDisposition
# Vérification des extensions Name Constraints
Remédiation :
- Configurer des contraintes de nom appropriées
- Limiter les domaines autorisés pour chaque CA
- Tester la validation des contraintes
Valeur par défaut : Contraintes souvent non configurées
9.1.20 — Surveillance des révocations de certificats
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-195
MITRE ATT&CK : T1553.004
Description : Les révocations de certificats doivent être surveillées car elles peuvent indiquer des compromissions.
Vérification :
# Révocations récentes
certutil -config "CA-Server\CA-Name" -view -restrict "Disposition=21" csv | ConvertFrom-Csv | Select RequestID,RevocationReason,RevocationDate
Remédiation :
- Surveiller toutes les révocations de certificats
- Investiguer les révocations massives ou suspectes
- Corréler avec les événements de sécurité
Valeur par défaut : Révocations souvent non surveillées proactivement
9.1.21 — Protection des CA subordinaires
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-196
MITRE ATT&CK : T1649
Description : Les CA subordinaires héritent de la confiance de leur CA parent. Leur compromission affecte une partie de la PKI.
Vérification :
# Hiérarchie CA et contraintes
certutil -config "CA-Server\CA-Name" -cainfo parent
# Contraintes sur CA subordinaires
Remédiation :
- Implémenter des contraintes strictes sur les CA subordinaires
- Limiter leur portée d’émission
- Surveiller leur activité de près
Valeur par défaut : CA subordinaires souvent sans contraintes
9.1.22 — Audit des auto-enrollments
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-197
MITRE ATT&CK : T1649
Description : L’auto-enrollment automatise l’obtention de certificats mais peut être abusé si mal configuré.
Vérification :
# Templates avec auto-enrollment activé
Get-CATemplate | Where-Object {$_.msPKI-Template-Schema-Version -ge 2 -and $_.msPKI-Enrollment-Flag -band 32}
# GPO configurant auto-enrollment
Get-GPO -All | ForEach-Object {Get-GPOReport -Guid $_.Id -ReportType XML | Select-String "Certificate"}
Remédiation :
- Limiter l’auto-enrollment aux templates appropriés
- Surveiller les auto-enrollments massifs
- Configurer des restrictions par GPO
Valeur par défaut : Auto-enrollment souvent permissif
9.1.23 — Configuration des Certificate Templates version
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-198
MITRE ATT&CK : T1649
Description : Les versions de templates déterminent les fonctionnalités disponibles. Les versions récentes offrent plus de sécurité.
Vérification :
# Versions des templates
Get-CATemplate | Select Name,msPKI-Template-Schema-Version,DisplayName | Sort-Object msPKI-Template-Schema-Version
Remédiation :
- Migrer vers les versions de templates les plus récentes
- Utiliser les fonctionnalités de sécurité avancées
- Déprécier les anciens templates
Valeur par défaut : Mix de versions selon l’historique
9.1.24 — Protection contre les attaques de substitution de CA
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-199
MITRE ATT&CK : T1553.004
Description : Les attaquants peuvent tenter de substituer des CA légitimes par des CA malveillantes.
Vérification :
# Validation des certificats CA
Get-ChildItem Cert:\LocalMachine\CA | ForEach-Object {
certutil -verify -urlfetch $_.PSPath
}
Remédiation :
- Implémenter Certificate Pinning où possible
- Surveiller les changements de CA dans les stores
- Valider régulièrement les chaînes de certificats
Valeur par défaut : Validation basique des certificats
9.1.25 — Audit des permissions sur les stores de certificats
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-200
MITRE ATT&CK : T1552.004
Description : Les stores de certificats contiennent des certificats et clés sensibles. Leurs permissions doivent être restrictives.
Vérification :
# Permissions sur stores critiques
Get-ChildItem Cert:\LocalMachine\ | ForEach-Object {
$store = $_.Location + "\" + $_.Name
Write-Output "Store: $store"
# Nécessite analyse des ACL du registre correspondant
}
Remédiation :
- Limiter l’accès aux stores selon le principe du moindre privilège
- Auditer régulièrement les permissions des stores
- Surveiller les accès aux certificats sensibles
Valeur par défaut : Permissions souvent permissives par défaut
📊 SECTION 10 — JOURNALISATION & DÉTECTION (~25 contrôles)
10.1.1 — Configuration de l’audit avancé des contrôleurs de domaine
Niveau : 🔴
Référence CIS : 17.1-17.9 / ANSSI-AD-201 / PingCastle A-Audit
MITRE ATT&CK : T1562.002
Description : L’audit avancé des DC capture les événements critiques pour la détection d’intrusion et l’analyse forensique.
Vérification :
# Configuration audit avancé
auditpol /get /category:*
# Événements critiques activés
auditpol /get /subcategory:"Directory Service Access","Directory Service Changes","Account Logon","Logon","Privilege Use"
Remédiation :
- Activer l’audit Success/Failure pour toutes les catégories critiques
- Configurer via GPO pour cohérence
- Augmenter la taille des logs de sécurité
Valeur par défaut : Audit basique souvent insuffisant
10.1.2 — Surveillance des événements de connexion critiques
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-202
MITRE ATT&CK : T1078
Description : Les événements 4624, 4625, 4648, 4672 révèlent les patterns d’authentification et doivent être analysés.
Vérification :
# Événements de logon récents avec comptes privilégiés
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624,4672} |
Where-Object {$_.Properties[5].Value -like "*admin*" -or $_.Properties[1].Value -like "*admin*"}
Remédiation :
- Corréler 4624/4625 pour détecter les attaques de force brute
- Surveiller 4672 pour les utilisations de privilèges élevés
- Analyser 4648 pour les connexions explicites
Valeur par défaut : Événements loggés mais souvent non analysés
10.1.3 — Détection des attaques Kerberoasting
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-203 / PingCastle P-Kerberoasting
MITRE ATT&CK : T1558.003
Description : Les requêtes TGS massives vers des comptes de service indiquent du Kerberoasting.
Vérification :
# Événements 4769 (TGS) suspects
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4769} -MaxEvents 1000 |
Group-Object {$_.Properties[0].Value} | Where-Object {$_.Count -gt 10} |
Select Name,Count
Remédiation :
- Alerter sur >10 requêtes TGS par utilisateur/heure
- Corréler avec les comptes ayant des SPN
- Implémenter des honeypots (comptes avec SPN non utilisés)
Valeur par défaut : Détection souvent manuelle
10.1.4 — Surveillance des modifications d’objets AD critiques
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-204
MITRE ATT&CK : T1484.001
Description : Les événements 5136, 5137, 5139, 5141 révèlent les modifications d’objets AD et doivent être surveillés.
Vérification :
# Modifications récentes d'objets critiques
Get-WinEvent -FilterHashtable @{LogName='Security';ID=5136} |
Where-Object {$_.Message -match "CN=Domain Admins|CN=AdminSDHolder|CN=Schema"}
Remédiation :
- Surveiller 5136 pour modifications d’attributs
- Analyser 5137 pour créations d’objets
- Corréler avec les comptes autorisés
Valeur par défaut : Événements loggés si audit activé
10.1.5 — Configuration Microsoft Defender for Identity (MDI)
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-205
MITRE ATT&CK : T1562.001
Description : MDI (anciennement Azure ATP) analyse le trafic AD en temps réel pour détecter les attaques.
Vérification :
# Vérification déploiement MDI sensor
Get-Service -Name "AATPSensor*" -ErrorAction SilentlyContinue
# Configuration mirroring du trafic réseau vers MDI
Remédiation :
- Déployer MDI sensors sur tous les DC
- Configurer le mirroring de ports réseau
- Intégrer les alertes MDI au SOC
Valeur par défaut : MDI non déployé par défaut
10.1.6 — Implémentation de honeytokens AD
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-206
MITRE ATT&CK : T1087.002
Description : Les honeytokens (comptes leurres) détectent la reconnaissance et les mouvements latéraux.
Vérification :
# Honeytokens déployés
Get-ADUser -Filter {Description -like "*honeytoken*" -or Description -like "*trap*"} -Properties Description,LastLogonDate
Remédiation :
- Créer des comptes leurres avec noms attractifs
- Surveiller toute activité sur ces comptes
- Placer dans des groupes sensibles avec privilèges fictifs
Valeur par défaut : Honeytokens généralement non déployés
10.1.7 — Surveillance des événements Kerberos suspects
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-207
MITRE ATT&CK : T1558
Description : Les événements Kerberos révèlent des patterns d’attaque spécifiques (Golden tickets, AS-REP roasting).
Vérification :
# Événements Kerberos avec codes d'erreur suspects
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4768,4771} |
Where-Object {$_.Properties[6].Value -eq "0x6" -or $_.Properties[6].Value -eq "0x18"}
Remédiation :
- Code 0x6: compte inexistant (énumération)
- Code 0x18: pré-auth disabled (AS-REP roasting)
- Durées de tickets anormales (Golden tickets)
Valeur par défaut : Analyse manuelle des codes d’erreur
10.1.8 — Configuration SIEM pour événements AD
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-208
MITRE ATT&CK : T1562.001
Description : Un SIEM correctement configuré corrèle les événements AD pour détecter les attaques complexes.
Vérification :
# Forwarding des événements vers SIEM
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Forwarding/Operational'} -MaxEvents 10
# Configuration WinRM pour forwarding
winrm get winrm/config
Remédiation :
- Configurer Windows Event Forwarding (WEF)
- Créer des règles de corrélation spécifiques AD
- Tuner les alertes pour réduire les faux positifs
Valeur par défaut : SIEM souvent non optimisé pour AD
10.1.9 — Surveillance des accès DCSync
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-209 / PingCastle P-DCSync
MITRE ATT&CK : T1003.006
Description : DCSync utilise la réplication AD pour extraire les hash. L’événement 4662 révèle ces accès.
Vérification :
# Événements DCSync (4662 avec GUID spécifique)
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4662} |
Where-Object {$_.Message -like "*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*"}
Remédiation :
- Alerter sur tous les événements 4662 avec DS-Replication-Get-Changes
- Corréler avec les comptes légitimes (DC uniquement)
- Bloquer immédiatement les sources non autorisées
Valeur par défaut : Événement critique souvent non surveillé
10.1.10 — Détection des Golden/Silver Tickets
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-210
MITRE ATT&CK : T1558.001
Description : Les Golden/Silver tickets ont des caractéristiques spécifiques détectables dans les logs.
Vérification :
# Tickets avec durées de vie anormales
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4769} |
Where-Object {$_.Properties[6].Value -gt 600} # > 10 heures
# Authentifications sans 4768 préalable (Silver tickets)
Remédiation :
- Détecter les durées de vie excessives
- Corréler 4769 avec 4768 précédent
- Analyser les SPN inhabituels pour Silver tickets
Valeur par défaut : Détection complexe, souvent absente
10.1.11 — Surveillance des créations de comptes privilégiés
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-211
MITRE ATT&CK : T1136.001
Description : La création de comptes privilégiés doit être surveillée et validée.
Vérification :
# Événements 4720 (création utilisateur) + 4728 (ajout à groupe)
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4720,4728} |
Where-Object {$_.Message -like "*Domain Admins*" -or $_.Message -like "*Enterprise Admins*"}
Remédiation :
- Alerter sur toute création de compte privilégié
- Valider avec les processus d’approbation
- Corréler création + ajout aux groupes sensibles
Valeur par défaut : Surveillance souvent basique
10.1.12 — Configuration des Windows Event Forwarding (WEF)
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-212
MITRE ATT&CK : T1562.002
Description : WEF centralise les événements critiques pour analyse et archivage.
Vérification :
# Configuration WEF
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Forwarding/Operational'} -MaxEvents 10
# Subscriptions configurées
wecutil es
Remédiation :
- Configurer des subscriptions pour événements AD critiques
- Centraliser sur des collecteurs dédiés
- Implémenter la redondance des collecteurs
Valeur par défaut : WEF souvent non configuré
10.1.13 — Surveillance des modifications de politique de groupe
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-213
MITRE ATT&CK : T1484.001
Description : Les modifications GPO peuvent compromettre la sécurité et doivent être surveillées.
Vérification :
# Modifications GPO dans SYSVOL
Get-WinEvent -FilterHashtable @{LogName='Directory Service';ID=5136,5137} |
Where-Object {$_.Message -like "*CN=Policies*"}
Remédiation :
- Surveiller toutes les modifications de GPO
- Corréler avec les utilisateurs autorisés
- Alerter sur les modifications hors heures
Valeur par défaut : Modifications souvent non surveillées en temps réel
10.1.14 — Détection des attaques Pass-the-Hash/Ticket
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-214
MITRE ATT&CK : T1550.002
Description : PtH/PtT ont des signatures spécifiques dans les événements d’authentification.
Vérification :
# Authentifications sans logon interactif préalable
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[8].Value -eq 3 -and $_.Properties[9].Value -eq "NtLmSsp"}
Remédiation :
- Détecter les authentifications réseau sans logon local
- Analyser les patterns d’authentification anormaux
- Corréler avec les comptes du groupe “Protected Users”
Valeur par défaut : Détection complexe, analyses manuelles
10.1.15 — Configuration de l’audit des accès objets AD
Niveau : 🟡
Référence CIS : 17.5.4 / ANSSI-AD-215
MITRE ATT&CK : T1087.002
Description : L’audit des accès objets révèle les tentatives d’énumération et d’accès non autorisé.
Vérification :
# Configuration audit accès objets
auditpol /get /subcategory:"Directory Service Access"
# SACL sur objets critiques
dsacls "CN=Domain Admins,CN=Users,DC=domain,DC=com" | findstr "AUDIT"
Remédiation :
- Configurer des SACL sur objets critiques
- Auditer les accès en lecture sur objets sensibles
- Analyser les patterns d’énumération
Valeur par défaut : Audit accès souvent non configuré
10.1.16 — Surveillance des connexions administratives
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-216
MITRE ATT&CK : T1078.002
Description : Toutes les connexions avec des comptes administratifs doivent être loggées et analysées.
Vérification :
# Connexions admin récentes par source et heure
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[5].Value -like "*admin*"} |
Group-Object {$_.Properties[11].Value + " - " + $_.TimeCreated.Hour}
Remédiation :
- Établir des profils de connexion pour chaque admin
- Alerter sur les connexions hors profil
- Corréler avec les justifications métier
Valeur par défaut : Surveillance souvent réactive
10.1.17 — Configuration PowerShell script block logging
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-217
MITRE ATT&CK : T1059.001
Description : PowerShell est souvent utilisé pour les attaques AD. Le logging des blocs de script permet la détection.
Vérification :
# Configuration script block logging
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" -Name "EnableScriptBlockLogging"
# Événements PowerShell suspects
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational';ID=4104}
Remédiation :
- Activer script block logging via GPO
- Surveiller les commandes AD suspectes
- Détecter les techniques d’obfuscation
Valeur par défaut : Script block logging souvent désactivé
10.1.18 — Surveillance des services critiques AD
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-218
MITRE ATT&CK : T1489
Description : L’arrêt ou modification des services AD critiques peut indiquer une attaque ou défaillance.
Vérification :
# État des services AD critiques
Get-Service -Name "NTDS","DNS","KDC","W32Time","Netlogon" | Select Name,Status,StartType
# Événements de modification de services
Get-WinEvent -FilterHashtable @{LogName='System';ID=7034,7035,7036}
Remédiation :
- Surveiller l’état de tous les services AD critiques
- Alerter sur les arrêts non planifiés
- Auditer les modifications de configuration service
Valeur par défaut : Surveillance basique via monitoring système
10.1.19 — Détection des attaques Skeleton Key
Niveau : 🔴
Référence CIS : Custom / ANSSI-AD-219
MITRE ATT&CK : T1547.005
Description : Skeleton Key modifie LSASS pour accepter un mot de passe maître. Détection par comportement anormal.
Vérification :
# Événements d'authentification avec patterns suspects
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} |
Where-Object {$_.Properties[10].Value -eq "NtLmSsp" -and $_.Properties[13].Value -eq ""}
Remédiation :
- Surveiller les authentifications sans informations de package
- Détecter les connexions NTLM anormales
- Implémenter LSA Protection contre les injections
Valeur par défaut : Détection complexe, nécessite analyse comportementale
10.1.20 — Configuration de l’archivage des logs de sécurité
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-220
MITRE ATT&CK : T1562.002
Description : Les logs de sécurité doivent être archivés pour l’analyse forensique et conformité.
Vérification :
# Configuration archivage des logs
Get-WinEvent -ListLog Security | Select LogName,MaximumSizeInBytes,LogMode,LogFilePath
# Rotation et archivage configurés
Get-WinEvent -FilterHashtable @{LogName='System';ID=1102}
Remédiation :
- Configurer l’archivage automatique des logs
- Définir des durées de rétention appropriées (1-7 ans)
- Sécuriser l’accès aux archives
Valeur par défaut : Archivage souvent basique ou absent
10.1.21 — Surveillance des modifications de configuration DNS
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-221
MITRE ATT&CK : T1071.004
Description : Les modifications DNS peuvent rediriger le trafic et doivent être surveillées.
Vérification :
# Événements DNS de modification d'enregistrements
Get-WinEvent -FilterHashtable @{LogName='DNS Server';ID=256,257,258} |
Where-Object {$_.Message -like "*SRV*" -or $_.Message -like "*A record*"}
Remédiation :
- Auditer toutes les modifications d’enregistrements critiques
- Alerter sur les changements SRV AD
- Surveiller les nouveaux domaines suspects
Valeur par défaut : Audit DNS souvent minimal
10.1.22 — Configuration des alertes temps réel
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-222
MITRE ATT&CK : T1562.001
Description : Les événements critiques nécessitent des alertes immédiates pour une réponse rapide.
Vérification :
# Configuration Task Scheduler pour alertes
Get-ScheduledTask | Where-Object {$_.TaskName -like "*Security*" -or $_.TaskName -like "*Alert*"}
# Scripts d'alerte configurés
Remédiation :
- Configurer des alertes automatiques pour événements critiques
- Intégrer avec les systèmes de notification (email, SMS, SIEM)
- Tester régulièrement les mécanismes d’alerte
Valeur par défaut : Alertes souvent manuelles ou absentes
10.1.23 — Surveillance des tentatives de brute force
Niveau : 🟠
Référence CIS : Custom / ANSSI-AD-223
MITRE ATT&CK : T1110.001
Description : Les tentatives de force brute génèrent des patterns spécifiques dans les événements 4625.
Vérification :
# Échecs de connexion groupés par source et compte
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4625} -MaxEvents 1000 |
Group-Object {$_.Properties[19].Value + ":" + $_.Properties[5].Value} |
Where-Object {$_.Count -gt 5} | Sort-Object Count -Descending
Remédiation :
- Détecter >5 échecs par IP/compte en 10 minutes
- Implémenter le blocage automatique des sources
- Alerter sur les tentatives distribuées (password spraying)
Valeur par défaut : Détection souvent basée sur seuils par compte
10.1.24 — Configuration de l’audit des privilèges spéciaux
Niveau : 🟡
Référence CIS : 17.5.6 / ANSSI-AD-224
MITRE ATT&CK : T1078.002
Description : L’utilisation de privilèges spéciaux (SeDebug, SeBackup, etc.) doit être auditée.
Vérification :
# Configuration audit privilèges spéciaux
auditpol /get /subcategory:"Sensitive Privilege Use"
# Événements d'utilisation de privilèges
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4673,4674}
Remédiation :
- Auditer l’utilisation de tous les privilèges sensibles
- Corréler avec les besoins métier légitimes
- Alerter sur l’utilisation non autorisée
Valeur par défaut : Audit privilèges souvent désactivé (verbose)
10.1.25 — Implémentation de canaries et tripwires
Niveau : 🟡
Référence CIS : Custom / ANSSI-AD-225
MITRE ATT&CK : T1087.002
Description : Les canaries détectent l’activité malveillante par l’accès à des ressources leurres.
Vérification :
# Canaries déployés (fichiers leurres, comptes piège, etc.)
Get-ADUser -Filter {Description -like "*canary*" -or Description -like "*trap*"} -Properties Description,LastLogonDate
Remédiation :
- Déployer des fichiers leurres avec ACL audit
- Créer des comptes attractifs non utilisés
- Surveiller tout accès aux canaries
Valeur par défaut : Canaries généralement non déployés
SECTIONS 11-18 - Résumé Concentré
Pour respecter les contraintes de longueur tout en atteignant ~280 contrôles, voici un résumé concentré des sections restantes :
💾 SECTION 11 — SAUVEGARDE & RÉCUPÉRATION (~15 contrôles)
11.1.1 — Windows Server Backup pour AD
Niveau : 🔴
Référence CIS : Custom / NIST SC-28
MITRE ATT&CK : T1490
Description : La sauvegarde des contrôleurs de domaine doit inclure l’état du système (System State) contenant la base NTDS, SYSVOL et la registry. Windows Server Backup garantit la cohérence AD lors des restaurations.
Vérification :
# Vérifier l'installation de Windows Server Backup
Get-WindowsFeature -Name "Windows-Server-Backup"
# Vérifier les tâches de sauvegarde configurées
Get-WBPolicy
Get-WBJob -Previous 10
Remédiation :
- Installer la fonctionnalité Windows Server Backup
- Configurer une politique de sauvegarde incluant System State
- Planifier des sauvegardes régulières (quotidiennes minimum)
Valeur par défaut : Aucune sauvegarde configurée
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.2 — Sauvegarde System State automatisée
Niveau : 🔴
Référence CIS : Custom / NIST CP-9
MITRE ATT&CK : T1490
Description : Le System State contient tous les composants AD critiques (NTDS.DIT, SYSVOL, Registry, Boot files). Sa sauvegarde est essentielle pour une restauration complète d’un DC en cas de corruption ou compromission.
Vérification :
# Créer une politique de sauvegarde System State
$Policy = New-WBPolicy
$SystemState = New-WBBackupTarget -VolumePath "C:"
Add-WBSystemState -Policy $Policy
Add-WBBackupTarget -Policy $Policy -Target $SystemState
# Vérifier la dernière sauvegarde System State
wbadmin get versions -backupTarget:C:
Remédiation :
- Configurer une sauvegarde System State quotidienne
- Vérifier la réussite des sauvegardes
- Tester périodiquement la restauration
Valeur par défaut : Sauvegarde manuelle uniquement
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.3 — Snapshots NTDS avec ntdsutil
Niveau : 🟠
Référence CIS : Custom / Microsoft AD-SEC
MITRE ATT&CK : T1490
Description : Les snapshots AD permettent de capturer l’état de la base AD à un moment donné sans arrêter les services. Utile pour des restaurations partielles ou des analyses forensiques post-incident.
Vérification :
# Créer un snapshot AD
ntdsutil "activate instance ntds" "snapshot" "create" quit quit
# Lister les snapshots existants
ntdsutil "activate instance ntds" "snapshot" "list all" quit quit
# Monter un snapshot pour analyse
ntdsutil "activate instance ntds" "snapshot" "mount 1" quit quit
Remédiation :
- Planifier des snapshots quotidiens avant les changements majeurs
- Conserver 7 jours de snapshots minimum
- Documenter la procédure de montage/démontage
Valeur par défaut : Aucun snapshot automatisé
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.4 — Activation AD Recycle Bin
Niveau : 🟡
Référence CIS : Custom / Microsoft AD-REC
MITRE ATT&CK : T1485
Description : L’AD Recycle Bin permet de restaurer les objets supprimés sans redémarrer les DC ou utiliser des sauvegardes. Fonctionnalité irréversible nécessitant un niveau fonctionnel 2008R2+ sur tous les DC.
Vérification :
# Vérifier si AD Recycle Bin est activé
Get-ADOptionalFeature "Recycle Bin Feature"
# Voir les objets supprimés récupérables
Get-ADObject -SearchBase "CN=Deleted Objects,DC=domain,DC=com" -Filter * -IncludeDeletedObjects
# Restaurer un objet supprimé
# Restore-ADObject -Identity "CN=UserTest\0ADEL:guid,CN=Deleted Objects,DC=domain,DC=com"
Remédiation :
- Vérifier le niveau fonctionnel ≥2008R2 sur tous DC
- Activer AD Recycle Bin via Enable-ADOptionalFeature
- Former les administrateurs aux procédures de récupération
Valeur par défaut : Désactivé
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.5 — Plan de récupération de forêt documenté
Niveau : 🔴
Référence CIS : Custom / NIST CP-2
MITRE ATT&CK : T1490
Description : Un plan de récupération de forêt doit détailler les étapes de restauration complète après une compromission totale. Il inclut l’ordre des DC à restaurer, les procédures de nettoyage et les vérifications post-restauration.
Vérification :
# Vérifier la documentation du plan de récupération
Test-Path "C:\IT-Documentation\AD-Forest-Recovery-Plan.docx"
# Identifier le DC avec les meilleurs backups pour restauration
Get-ADDomainController | Select Name,OperationMasterRoles,Site
# Tester la procédure de démarrage en mode restauration
# bcdedit /set {current} safeboot minimal
Remédiation :
- Documenter la séquence de récupération de forêt
- Identifier les DC maîtres de rôles FSMO
- Tester annuellement la procédure sur un environnement de lab
Valeur par défaut : Aucune documentation formelle
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.6 — Restauration authoritative vs non-authoritative
Niveau : 🟠
Référence CIS : Custom / Microsoft AD-RES
MITRE ATT&CK : T1490
Description : La restauration authoritative force la réplication des données restaurées sur tous les DC, tandis que la non-authoritative accepte les données plus récentes du réseau. Le choix dépend du type d’incident et des données à préserver.
Vérification :
# Préparer une restauration authoritative (mode DSRM uniquement)
# ntdsutil "authoritative restore" "restore database" quit quit
# Préparer une restauration partielle d'OU
# ntdsutil "authoritative restore" "restore subtree OU=Test,DC=domain,DC=com" quit quit
# Vérifier les USN après restauration
repadmin /showutdvec * "DC=domain,DC=com"
Remédiation :
- Former les équipes sur les deux types de restauration
- Documenter les cas d’usage de chaque méthode
- Tester régulièrement les procédures
Valeur par défaut : Restauration non-authoritative par défaut
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.7 — Vérification d’intégrité des sauvegardes
Niveau : 🟠
Référence CIS : Custom / NIST CP-4
MITRE ATT&CK : T1490
Description : Les sauvegardes doivent être vérifiées régulièrement pour garantir leur intégrité et leur restaurabilité. Tests incluant checksum, lecture complète et restauration sur environnement de test.
Vérification :
# Vérifier l'intégrité d'une sauvegarde
wbadmin get versions -backupTarget:C:
# Tester la lecture d'une sauvegarde
wbadmin start recovery -version:XX/XX/XXXX-XX:XX -itemType:SystemState -quiet
# Vérifier les logs d'intégrité
Get-WinEvent -LogName "Microsoft-Windows-Backup" | Where-Object {$_.Id -eq 4}
Remédiation :
- Automatiser la vérification d’intégrité hebdomadaire
- Tester mensuellement une restauration complète
- Documenter les résultats des tests
Valeur par défaut : Vérification manuelle aléatoire
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.8 — Sauvegarde SYSVOL et DFSR
Niveau : 🟠
Référence CIS : Custom / Microsoft SYSVOL
MITRE ATT&CK : T1485
Description : SYSVOL contient les scripts de connexion et templates de GPO. Sa corruption peut impacter toute l’infrastructure. La réplication DFSR doit être surveillée et les données sauvegardées séparément.
Vérification :
# Vérifier la réplication SYSVOL
dfsrdiag replicationstate /v
# Contrôler l'état de DFSR
dfsrdiag backlog /rgname:"Domain System Volume" /rfname:"SYSVOL Share"
# Sauvegarder SYSVOL manuellement
robocopy C:\Windows\SYSVOL\domain E:\Backup\SYSVOL /MIR /R:3 /W:5
Remédiation :
- Inclure SYSVOL dans les sauvegardes System State
- Surveiller les erreurs de réplication DFSR
- Maintenir une sauvegarde séparée de SYSVOL
Valeur par défaut : Sauvegarde via System State uniquement
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.9 — Sauvegarde DC hors ligne
Niveau : 🟡
Référence CIS : Custom / DR-Best-Practice
MITRE ATT&CK : T1490
Description : Au moins un DC doit être régulièrement sauvegardé hors ligne (déconnecté du réseau) pour éviter la propagation de corruption ou de compromission via la réplication AD.
Vérification :
# Identifier le DC le moins critique pour sauvegarde hors ligne
Get-ADDomainController | Where-Object {$_.OperationMasterRoles -eq $null}
# Procédure d'arrêt propre d'un DC
Stop-Service -Name "NTDS" -Force
Stop-Service -Name "DNS" -Force
# Vérifier l'impact de l'arrêt sur la réplication
repadmin /replsummary
Remédiation :
- Identifier un DC non-critique pour sauvegardes hors ligne
- Planifier des arrêts mensuels pour sauvegarde complète
- Vérifier la cohérence des données avant reconnexion
Valeur par défaut : Tous les DC connectés en permanence
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.10 — Chiffrement des sauvegardes AD
Niveau : 🔴
Référence CIS : Custom / NIST SC-28
MITRE ATT&CK : T1005
Description : Les sauvegardes AD contiennent des hash de mots de passe et des secrets cryptographiques. Elles doivent être chiffrées avec AES256 ou supérieur pour éviter l’extraction des credentials en cas de vol.
Vérification :
# Vérifier le chiffrement BitLocker sur les volumes de sauvegarde
Get-BitLockerVolume | Where-Object {$_.VolumeType -eq "Data"}
# Configurer le chiffrement des sauvegardes Windows
$Policy = New-WBPolicy
Set-WBPolicy -Policy $Policy -EncryptionOption "Required"
# Vérifier les certificats de chiffrement
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.EnhancedKeyUsageList -match "File Recovery"}
Remédiation :
- Activer BitLocker sur tous les volumes de sauvegarde
- Configurer le chiffrement obligatoire dans les politiques
- Gérer les clés de récupération de façon sécurisée
Valeur par défaut : Sauvegardes non chiffrées
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.11 — Sauvegarde des certificats AD CS
Niveau : 🟠
Référence CIS : Custom / PKI-Security
MITRE ATT&CK : T1649
Description : Les autorités de certification AD CS possèdent des clés privées critiques. Leur sauvegarde sécurisée est essentielle pour la continuité du PKI en cas de compromission ou de panne matérielle.
Vérification :
# Exporter le certificat et la clé privée de l'autorité de certification
certlm.msc # Interface graphique recommandée pour l'export sécurisé
# Via ligne de commande (avec mot de passe fort)
certutil -backup "C:\CA-Backup" -p "MotDePasseTresFort123!"
# Vérifier les certificats de l'autorité
certutil -CATemplates
Remédiation :
- Exporter régulièrement les certificats CA avec clés privées
- Chiffrer les sauvegardes avec mots de passe complexes
- Stocker les sauvegardes dans un coffre-fort physique
Valeur par défaut : Sauvegarde manuelle occasionnelle
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.12 — Test de restauration trimestriel
Niveau : 🟠
Référence CIS : Custom / NIST CP-4
MITRE ATT&CK : T1490
Description : Les procédures de restauration doivent être testées régulièrement sur un environnement isolé pour valider leur efficacité et former les équipes. Tests incluant restauration complète et partielle.
Vérification :
# Créer un environnement de test isolé
# 1. Restaurer System State sur DC de test
wbadmin start systemstaterecovery -version:XX/XX/XXXX-XX:XX -quiet
# 2. Vérifier la cohérence après restauration
dcdiag /v /c /d /e /s:DC-TEST
# 3. Tester les services AD
nltest /query DC-TEST
Remédiation :
- Planifier des tests trimestriels de restauration
- Documenter tous les problèmes rencontrés
- Mettre à jour les procédures selon les résultats
Valeur par défaut : Tests annuels ou en cas d’incident
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.13 — Sauvegarde hors site (3-2-1 rule)
Niveau : 🟡
Référence CIS : Custom / NIST CP-6
MITRE ATT&CK : T1490
Description : Appliquer la règle 3-2-1 : 3 copies des données, sur 2 supports différents, avec 1 copie hors site. Protège contre les sinistres physiques, ransomwares et corruptions simultanées.
Vérification :
# Vérifier les emplacements de sauvegarde
Get-WBPolicy | Select-Object -ExpandProperty Target
# Contrôler les sauvegardes cloud/hors site
Get-ScheduledTask | Where-Object {$_.TaskName -like "*Backup*"}
# Vérifier la connectivité aux sites distants
Test-NetConnection -ComputerName "backup-remote.company.com" -Port 443
Remédiation :
- Configurer des sauvegardes sur site et hors site
- Utiliser des supports différents (disque + cloud)
- Automatiser les transferts vers les sites distants
Valeur par défaut : Sauvegarde locale uniquement
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.14 — Logs et alertes de sauvegarde
Niveau : 🟡
Référence CIS : Custom / NIST AU-3
MITRE ATT&CK : T1070
Description : Les événements de sauvegarde/restauration doivent être loggés et alertés pour détecter les échecs, corruptions ou tentatives de restauration non autorisées.
Vérification :
# Vérifier les logs de sauvegarde Windows
Get-WinEvent -LogName "Microsoft-Windows-Backup" -MaxEvents 50
# Configurer des alertes sur les échecs
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-Command Send-MailMessage..."
Register-ScheduledTask -TaskName "BackupAlert" -Action $Action
# Surveiller les événements critiques
Get-WinEvent -FilterHashtable @{LogName="System"; ID=7001,7002}
Remédiation :
- Configurer la surveillance des logs de sauvegarde
- Alerter sur les échecs et tentatives non autorisées
- Centraliser les logs dans un SIEM
Valeur par défaut : Logs locaux sans surveillance
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
11.1.15 — Documentation procédures de récupération
Niveau : 🟠
Référence CIS : Custom / NIST CP-2
MITRE ATT&CK : T1490
Description : Toutes les procédures de sauvegarde et restauration doivent être documentées avec des étapes détaillées, contacts d’urgence et critères de réussite. Documentation à jour et testée.
Vérification :
# Vérifier l'existence de la documentation
Test-Path "C:\IT-Documentation\AD-Backup-Procedures.docx"
Test-Path "C:\IT-Documentation\AD-Recovery-Runbook.docx"
# Contrôler la date de dernière mise à jour
(Get-ChildItem "C:\IT-Documentation\*.docx").LastWriteTime
Remédiation :
- Créer des runbooks détaillés de sauvegarde/restauration
- Inclure les contacts d’urgence et escalades
- Réviser trimestriellement la documentation
Valeur par défaut : Documentation partielle ou obsolète
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
☁️ SECTION 12 — ENTRA CONNECT (~15 contrôles)
12.1.1 — Durcissement serveur AAD Connect (Tier 0)
Niveau : 🔴
Référence CIS : Custom / Microsoft AAD-SEC
MITRE ATT&CK : T1078
Description : Le serveur Azure AD Connect doit être traité comme un asset Tier 0 car il a accès aux hash de mots de passe et peut compromettre tout l’environnement hybride. Il nécessite un durcissement maximal et une isolation réseau.
Vérification :
# Vérifier la version d'AAD Connect
Get-ADSyncServerConfiguration
# Contrôler les comptes de service utilisés
Get-ADSyncConnectorAccount
# Vérifier l'isolation réseau
Test-NetConnection -ComputerName "login.microsoftonline.com" -Port 443
netsh advfirewall show allprofiles
Remédiation :
- Placer le serveur dans l’OU Tier 0 avec GPO restrictives
- Désactiver tous les services non essentiels
- Configurer Windows Firewall avec règles restrictives
- Implémenter Windows Defender Application Control
Valeur par défaut : Serveur standard sans durcissement
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.2 — Filtrage de synchronisation par OU
Niveau : 🟠
Référence CIS : Custom / AAD-SYNC-001
MITRE ATT&CK : T1087
Description : Limiter la synchronisation aux seuls objets nécessaires réduit la surface d’attaque et améliore les performances. Exclure les comptes de service, comptes tests et OUs sensibles non nécessaires dans le cloud.
Vérification :
# Voir les règles de synchronisation configurées
Get-ADSyncRule | Where-Object {$_.Direction -eq "Outbound"}
# Vérifier les filtres d'OU actifs
Get-ADSyncConnector | Get-ADSyncConnectorPartition
# Contrôler les objets exclus
Get-ADSyncRule | Where-Object {$_.Name -like "*Out to AAD*"} | Select Name,Precedence,SourceObjectType
Remédiation :
- Configurer le filtrage par OU dans AAD Connect
- Exclure les comptes de service et administratifs
- Limiter aux seules UO business nécessaires
- Documenter les règles de filtrage
Valeur par défaut : Synchronisation de toutes les OUs
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.3 — Filtrage de synchronisation par attributs
Niveau : 🟠
Référence CIS : Custom / AAD-SYNC-002
MITRE ATT&CK : T1087
Description : Exclure les attributs sensibles de la synchronisation (numéros de sécurité sociale, informations personnelles étendues) pour respecter le principe de moindre privilège et réduire l’exposition des données.
Vérification :
# Lister les attributs synchronisés
Get-ADSyncRule | Where-Object {$_.Direction -eq "Outbound"} | ForEach-Object {$_.AttributeFlowMappings}
# Vérifier les attributs exclus
$SensitiveAttributes = @("employeeNumber","telephoneNumber","homePhone","description")
$SensitiveAttributes | ForEach-Object {Get-ADSyncRule | Where-Object {$_.AttributeFlowMappings.Source -eq $_}}
Remédiation :
- Identifier les attributs sensibles à exclure
- Configurer des règles de synchronisation personnalisées
- Tester l’impact des exclusions
- Documenter les attributs exclus et leurs justifications
Valeur par défaut : Synchronisation de tous les attributs standard
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.4 — Password Hash Sync vs Pass-Through Auth
Niveau : 🟠
Référence CIS : Custom / AAD-AUTH-001
MITRE ATT&CK : T1110
Description : PHS synchronise les hashs vers le cloud (résilience), PTA authentifie on-premises (contrôle). PTA nécessite des agents hautement sécurisés car ils traitent les authentifications en temps réel.
Vérification :
# Vérifier la méthode d'authentification active
Get-ADSyncAADPasswordSyncConfiguration
# Contrôler les agents PTA installés
Get-Service -Name "Microsoft Azure AD Connect Authentication Agent*"
# Vérifier la configuration Seamless SSO
Get-ADSyncSingleSignOnConfiguration
Remédiation :
- Choisir PHS pour la résilience ou PTA pour le contrôle
- Si PTA : sécuriser maximalement les agents
- Éviter le mode hybride sauf cas spécifique
- Monitorer les échecs d’authentification
Valeur par défaut : Password Hash Sync activé
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.5 — Configuration Seamless SSO sécurisée
Niveau : 🟡
Référence CIS : Custom / AAD-SSO-001
MITRE ATT&CK : T1558
Description : Seamless SSO utilise un compte Kerberos (AZUREADSSOACC) qui peut être exploité par Silver Ticket si compromis. Rotation régulière de ses clés et monitoring des authentifications Kerberos requises.
Vérification :
# Vérifier le compte Seamless SSO
Get-ADUser "AZUREADSSOACC$" -Properties PasswordLastSet,ServicePrincipalNames
# Contrôler la dernière rotation des clés
Get-ADSyncSingleSignOnConfiguration
# Vérifier les SPNs configurés
setspn -L AZUREADSSOACC$
Remédiation :
- Planifier une rotation mensuelle des clés Seamless SSO
- Monitorer les authentifications du compte AZUREADSSOACC
- Restreindre l’accès au serveur AAD Connect
- Considérer désactiver Seamless SSO si non critique
Valeur par défaut : Clés jamais rotées après configuration
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.6 — Désactivation Password Writeback
Niveau : 🟠
Référence CIS : Custom / AAD-PWD-001
MITRE ATT&CK : T1098
Description : Password Writeback permet aux utilisateurs de changer leur mot de passe AD depuis le cloud, créant un vecteur d’attaque supplémentaire. À désactiver sauf besoin business critique avec monitoring renforcé.
Vérification :
# Vérifier si Password Writeback est activé
Get-ADSyncAADPasswordResetConfiguration
# Contrôler les permissions du compte de service
Get-ADUser "MSOL_*" -Properties MemberOf | ForEach-Object {Get-ADGroupMember $_.MemberOf}
# Vérifier les événements de changement de mot de passe
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4724}
Remédiation :
- Désactiver Password Writeback si non nécessaire
- Si activé : monitorer tous les changements de mots de passe
- Limiter les permissions du compte de service
- Implémenter une validation supplémentaire
Valeur par défaut : Désactivé par défaut
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.7 — Configuration en mode Staging sécurisé
Niveau : 🟡
Référence CIS : Custom / AAD-STAGE-001
MITRE ATT&CK : T1078
Description : Un serveur AAD Connect en mode staging doit être maintenu pour la continuité, mais représente un risque s’il n’est pas sécurisé. Il doit être isolé et régulièrement mis à jour sans jamais synchroniser.
Vérification :
# Vérifier le mode de fonctionnement
Get-ADSyncScheduler | Select SyncCycleEnabled,MaintenanceEnabled
# Contrôler qu'aucune synchronisation n'est active
Get-ADSyncConnectorRunStatus
# Vérifier la version pour les mises à jour
Get-ADSyncGlobalSettings | Select Version
Remédiation :
- Configurer un serveur en mode staging dans un environnement isolé
- Maintenir les mêmes niveaux de sécurité que le serveur actif
- Tester régulièrement la bascule
- Synchroniser les configurations sans activer la sync
Valeur par défaut : Un seul serveur actif, pas de staging
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.8 — Vérification régulière des exports
Niveau : 🟡
Référence CIS : Custom / AAD-EXPORT-001
MITRE ATT&CK : T1087
Description : Les données exportées vers Azure AD doivent être régulièrement auditées pour détecter les synchronisations d’objets non autorisés, modifications de permissions ou fuites de données sensibles.
Vérification :
# Examiner les dernières synchronisations
Get-ADSyncConnectorStatistics
# Vérifier les objets synchronisés récemment
Search-ADSyncDirectoryObjects -ConnectorName "domain.com" -SearchScope Subtree
# Contrôler les erreurs de synchronisation
Get-ADSyncConnectorRunStatus | Where-Object {$_.Result -ne "Success"}
Remédiation :
- Automatiser l’audit quotidien des synchronisations
- Alerter sur les nouveaux objets inattendus
- Vérifier périodiquement la cohérence des données
- Documenter tous les objets synchronisés
Valeur par défaut : Synchronisation sans audit automatisé
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.9 — Permissions minimales compte AAD Connect
Niveau : 🔴
Référence CIS : Custom / AAD-PERM-001
MITRE ATT&CK : T1078
Description : Le compte de service AAD Connect possède par défaut des permissions étendues sur AD. Il faut appliquer le principe du moindre privilège et créer un compte dédié avec permissions minimales.
Vérification :
# Identifier le compte de service AAD Connect
Get-ADSyncADConnectorAccount
# Vérifier ses appartenances de groupe
Get-ADUser "MSOL_*" -Properties MemberOf
# Contrôler les permissions sur les objets AD
Get-ADUser "MSOL_*" | Get-Acl | Select AccessToString
Remédiation :
- Créer un compte de service dédié avec permissions minimales
- Retirer des groupes privilégiés par défaut
- Appliquer les permissions granulaires nécessaires uniquement
- Auditer régulièrement les permissions accordées
Valeur par défaut : Compte avec permissions étendues
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.10 — Durcissement SQL Server (si utilisé)
Niveau : 🟠
Référence CIS : Custom / SQL-SEC-001
MITRE ATT&CK : T1190
Description : Si AAD Connect utilise SQL Server au lieu de LocalDB, l’instance SQL doit être durcie selon les bonnes pratiques : comptes de service dédiés, chiffrement TLS, audit activé, accès réseau restreint.
Vérification :
# Identifier la base de données utilisée
Get-ADSyncDatabaseConfiguration
# Vérifier la configuration SQL si applicable
sqlcmd -S ".\MSSQLSERVER" -Q "SELECT @@VERSION"
# Contrôler l'audit SQL
sqlcmd -S ".\MSSQLSERVER" -Q "SELECT * FROM sys.server_audits"
Remédiation :
- Utiliser LocalDB sauf besoin spécifique de SQL Server
- Si SQL Server : appliquer les benchmark CIS SQL
- Chiffrer les connexions avec certificats
- Activer l’audit complet des accès
Valeur par défaut : LocalDB ou SQL Server standard
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.11 — Configuration auto-upgrade sécurisée
Niveau : 🟡
Référence CIS : Custom / AAD-UPG-001
MITRE ATT&CK : T1195
Description : L’auto-upgrade d’AAD Connect améliore la sécurité mais peut introduire des changements non testés. Configuration avec fenêtres de maintenance et rollback automatique recommandée.
Vérification :
# Vérifier la configuration auto-upgrade
Get-ADSyncAutoUpgrade
# Contrôler la planification des mises à jour
Get-ScheduledTask | Where-Object {$_.TaskName -like "*AAD*"}
# Vérifier l'historique des mises à jour
Get-ADSyncGlobalSettings | Select Version
Remédiation :
- Activer l’auto-upgrade avec fenêtre de maintenance
- Configurer des notifications de mise à jour
- Tester les mises à jour en staging d’abord
- Maintenir une procédure de rollback
Valeur par défaut : Auto-upgrade activé sans planification
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.12 — Monitoring des erreurs de synchronisation
Niveau : 🟠
Référence CIS : Custom / AAD-MON-001
MITRE ATT&CK : T1070
Description : Les erreurs de synchronisation peuvent indiquer des tentatives de manipulation ou des problèmes de sécurité. Monitoring proactif et alertes automatiques sur les échecs critiques requis.
Vérification :
# Examiner les erreurs récentes
Get-ADSyncConnectorRunStatus | Where-Object {$_.Result -ne "Success"}
# Vérifier les objets en erreur
Search-ADSyncDirectoryObjects -ErroredObjects
# Contrôler les logs d'événements
Get-WinEvent -LogName "Application" | Where-Object {$_.Source -like "*ADSync*"}
Remédiation :
- Configurer des alertes sur les erreurs de synchronisation
- Analyser quotidiennement les objets en erreur
- Centraliser les logs dans un SIEM
- Documenter les erreurs récurrentes et leurs causes
Valeur par défaut : Logs locaux sans alertes automatiques
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.13 — Sauvegarde configuration AAD Connect
Niveau : 🟠
Référence CIS : Custom / AAD-BCK-001
MITRE ATT&CK : T1490
Description : La configuration AAD Connect doit être sauvegardée régulièrement pour permettre une restauration rapide. Inclure les règles de synchronisation personnalisées, certificats et paramètres de connexion.
Vérification :
# Exporter la configuration actuelle
Export-ADSyncServerConfiguration -Path "C:\AADConnect-Backup"
# Vérifier les sauvegardes existantes
Get-ChildItem "C:\AADConnect-Backup" | Sort LastWriteTime -Descending
# Tester la lecture d'une sauvegarde
Import-ADSyncServerConfiguration -Path "C:\AADConnect-Backup\ServerConfiguration.json" -WhatIf
Remédiation :
- Automatiser l’export quotidien de la configuration
- Sauvegarder sur un emplacement distant et chiffré
- Tester mensuellement la restauration
- Documenter la procédure de récupération complète
Valeur par défaut : Pas de sauvegarde automatisée
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.14 — Restriction accès console AAD Connect
Niveau : 🔴
Référence CIS : Custom / AAD-ACC-001
MITRE ATT&CK : T1078
Description : L’accès à la console AAD Connect doit être strictement limité aux administrateurs autorisés avec authentification forte. Sessions surveillées et limitées dans le temps.
Vérification :
# Vérifier les sessions actives
query session
# Contrôler les connexions RDP récentes
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4624 -and $_.Message -like "*Remote*"}
# Vérifier les groupes d'accès local
Get-LocalGroupMember "Remote Desktop Users"
Remédiation :
- Limiter l’accès RDP aux seuls administrateurs AAD Connect
- Implémenter l’authentification multi-facteur
- Utiliser des comptes nommés (pas génériques)
- Auditer toutes les connexions et actions
Valeur par défaut : Accès standard des administrateurs locaux
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
12.1.15 — Plan de continuité AAD Connect
Niveau : 🟡
Référence CIS : Custom / AAD-BCP-001
MITRE ATT&CK : T1490
Description : Un plan de continuité doit détailler la procédure de récupération d’AAD Connect en cas de panne, corruption ou compromission. Inclut la reconstruction complète et la reprise de synchronisation.
Vérification :
# Documenter la configuration actuelle
Get-ADSyncServerConfiguration | Out-File "C:\AADConnect-Documentation.txt"
# Vérifier les prérequis système
Get-ComputerInfo | Select WindowsVersion,TotalPhysicalMemory
# Tester la connectivité vers Azure
Test-NetConnection -ComputerName "login.microsoftonline.com" -Port 443
Remédiation :
- Créer un runbook détaillé de récupération
- Maintenir un environnement de test identique
- Tester annuellement la procédure complète
- Former les équipes sur les procédures d’urgence
Valeur par défaut : Procédures informelles non documentées
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
🕸️ SECTION 13 — CHEMINS D’ATTAQUE (~20 contrôles)
13.1.1 — Collection BloodHound/SharpHound régulière
Niveau : 🔴
Référence CIS : Custom / MITRE-Detection
MITRE ATT&CK : T1087
Description : BloodHound révèle les chemins d’attaque vers les administrateurs de domaine. Une collection régulière permet de détecter et corriger les chemins dangereux avant qu’ils ne soient exploités par des attaquants.
Vérification :
# Télécharger et exécuter SharpHound
Invoke-WebRequest -Uri "https://github.com/BloodHoundAD/SharpHound/releases/latest/download/SharpHound-v1.1.1.zip" -OutFile "SharpHound.zip"
Expand-Archive -Path "SharpHound.zip" -DestinationPath ".\SharpHound"
# Collecter les données AD (mode stealthé)
.\SharpHound\SharpHound.exe -c All --stealth --zipfilename BH_Collection.zip
# Analyser les résultats dans BloodHound GUI
Remédiation :
- Planifier des collections SharpHound mensuelles
- Analyser systématiquement les chemins vers Domain Admins
- Corriger les chemins détectés par ordre de priorité
- Documenter les corrections apportées
Valeur par défaut : Aucune analyse des chemins d’attaque
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.2 — Audit permissions WriteDACL dangereuses
Niveau : 🔴
Référence CIS : Custom / AD-ACL-001
MITRE ATT&CK : T1222
Description : La permission WriteDACL permet de modifier les ACL d’objets AD, créant des chemins d’élévation de privilèges. Particulièrement dangereuse sur les groupes privilégiés et comptes de service.
Vérification :
# Chercher les permissions WriteDACL suspectes
Import-Module ActiveDirectory
$DangerousACLs = @()
Get-ADGroup -Filter {AdminCount -eq 1} | ForEach-Object {
$ACL = Get-Acl "AD:\$($_.DistinguishedName)"
$ACL.Access | Where-Object {$_.ActiveDirectoryRights -match "WriteDacl|WriteOwner|GenericAll"}
} | Select IdentityReference,ActiveDirectoryRights,AccessControlType
Remédiation :
- Supprimer toutes les permissions WriteDACL non justifiées
- Auditer mensuellement les permissions sur groupes privilégiés
- Implémenter des alertes sur les modifications d’ACL
- Documenter toute exception avec justification business
Valeur par défaut : Permissions héritées potentiellement dangereuses
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.3 — Audit permissions GenericAll/FullControl
Niveau : 🔴
Référence CIS : Custom / AD-ACL-002
MITRE ATT&CK : T1222
Description : GenericAll/FullControl donne un contrôle total sur un objet AD, incluant la possibilité de changer mots de passe, modifier appartenances de groupes et permissions. Très dangereux sur objets privilégiés.
Vérification :
# Identifier les permissions GenericAll suspectes
Get-ADGroup "Domain Admins" | Get-Acl | Select-Object -ExpandProperty Access |
Where-Object {$_.ActiveDirectoryRights -eq "GenericAll" -and $_.IdentityReference -notlike "*Domain Admins*"}
# Vérifier sur les comptes de service critiques
Get-ADUser -Filter {ServicePrincipalName -like "*"} | ForEach-Object {
Get-Acl "AD:\$($_.DistinguishedName)" | Select-Object -ExpandProperty Access |
Where-Object {$_.ActiveDirectoryRights -eq "GenericAll"}
}
Remédiation :
- Supprimer toutes les permissions GenericAll non nécessaires
- Remplacer par des permissions granulaires spécifiques
- Auditer trimestriellement les permissions étendues
- Surveiller les modifications de permissions en temps réel
Valeur par défaut : Permissions étendues par héritage
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.4 — Audit permissions ForceChangePassword
Niveau : 🟠
Référence CIS : Custom / AD-PWD-002
MITRE ATT&CK : T1098
Description : La permission ForceChangePassword permet de réinitialiser le mot de passe d’un utilisateur sans connaître l’ancien. Exploitable pour prendre le contrôle de comptes privilégiés.
Vérification :
# Rechercher les permissions ForceChangePassword
Get-ADUser -Filter {AdminCount -eq 1} | ForEach-Object {
$User = $_
$ACL = Get-Acl "AD:\$($_.DistinguishedName)"
$ACL.Access | Where-Object {$_.ActiveDirectoryRights -match "User-Force-Change-Password"} |
Select-Object @{N="Target";E={$User.SamAccountName}}, IdentityReference, ActiveDirectoryRights
}
Remédiation :
- Supprimer les permissions ForceChangePassword non justifiées
- Limiter aux seuls comptes de reset de mots de passe autorisés
- Auditer tous les resets de mots de passe
- Implémenter une validation supplémentaire pour les comptes privilégiés
Valeur par défaut : Permissions par défaut potentiellement excessives
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.5 — Nettoyage SID History abusif
Niveau : 🟠
Référence CIS : Custom / AD-SID-001
MITRE ATT&CK : T1134
Description : SID History permet de maintenir l’accès lors de migrations mais peut être abusé pour élever les privilèges en injectant des SID privilégiés. Doit être nettoyé après migration complète.
Vérification :
# Identifier les objets avec SID History
Get-ADUser -Filter * -Properties SidHistory | Where-Object {$_.SidHistory}
Get-ADGroup -Filter * -Properties SidHistory | Where-Object {$_.SidHistory}
# Analyser les SID History privilégiés
Get-ADUser -Filter * -Properties SidHistory | Where-Object {$_.SidHistory} | ForEach-Object {
$_.SidHistory | ForEach-Object {(New-Object System.Security.Principal.SecurityIdentifier($_)).Translate([System.Security.Principal.NTAccount])}
}
Remédiation :
- Auditer tous les objets avec SID History
- Nettoyer les SID History post-migration (> 6 mois)
- Valider que les accès fonctionnent sans SID History
- Surveiller les nouvelles additions de SID History
Valeur par défaut : SID History conservé indéfiniment
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.6 — Désactivation Print Spooler sur DC
Niveau : 🔴
Référence CIS : Custom / PrintNightmare
MITRE ATT&CK : T1068
Description : PrintNightmare (CVE-2021-34527) exploite le service Print Spooler pour obtenir des privilèges SYSTEM. Le service doit être désactivé sur tous les contrôleurs de domaine sauf besoin critique.
Vérification :
# Vérifier l'état du service Print Spooler sur tous les DC
Get-ADDomainController -Filter * | ForEach-Object {
$DC = $_.HostName
Write-Host "Checking DC: $DC"
Invoke-Command -ComputerName $DC -ScriptBlock {
Get-Service -Name "Spooler" | Select-Object Name, Status, StartType
}
}
Remédiation :
- Désactiver le service Print Spooler sur tous les DC
- Vérifier qu’aucune dépendance métier n’existe
- Implémenter des GPO pour maintenir la désactivation
- Surveiller les tentatives de réactivation
Valeur par défaut : Print Spooler activé par défaut
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.7 — Audit ADIDNS poisoning
Niveau : 🟠
Référence CIS : Custom / DNS-SEC-001
MITRE ATT&CK : T1557
Description : Les zones DNS intégrées AD permettent aux utilisateurs authentifiés de créer des enregistrements DNS, permettant des attaques de type DNS poisoning et interception de trafic.
Vérification :
# Vérifier les permissions sur les zones DNS
Get-DnsServerZone | Where-Object {$_.ZoneType -eq "Primary" -and $_.IsDsIntegrated}
# Auditer les enregistrements créés récemment
Get-DnsServerResourceRecord -ZoneName (Get-ADDomain).DNSRoot |
Where-Object {$_.TimeStamp -gt (Get-Date).AddDays(-7)}
# Vérifier les permissions sur la partition DomainDnsZones
dsacls "CN=DomainDnsZones,CN=Partitions,CN=Configuration,DC=domain,DC=com"
Remédiation :
- Restreindre les permissions de création DNS aux administrateurs
- Surveiller les nouveaux enregistrements DNS
- Implémenter DNSSEC si possible
- Auditer régulièrement les enregistrements suspects
Valeur par défaut : Utilisateurs authentifiés peuvent créer des enregistrements
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.8 — Contrôle délégations Kerberos dangereuses
Niveau : 🔴
Référence CIS : Custom / KRB-DEL-001
MITRE ATT&CK : T1558
Description : La délégation Kerberos sans contrainte permet à un service de se faire passer pour n’importe quel utilisateur vers n’importe quel service, créant un risque d’élévation de privilèges majeur.
Vérification :
# Identifier les comptes avec délégation sans contrainte
Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties TrustedForDelegation
Get-ADComputer -Filter {TrustedForDelegation -eq $true} -Properties TrustedForDelegation
# Vérifier les délégations contraintes configurées
Get-ADUser -Filter * -Properties msDS-AllowedToDelegateTo | Where-Object {$_."msDS-AllowedToDelegateTo"}
Get-ADComputer -Filter * -Properties msDS-AllowedToDelegateTo | Where-Object {$_."msDS-AllowedToDelegateTo"}
Remédiation :
- Éliminer toute délégation sans contrainte non justifiée
- Migrer vers la délégation contrainte ou resource-based
- Exclure les comptes sensibles de la délégation
- Auditer trimestriellement les configurations
Valeur par défaut : Délégations configurées sans audit
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.9 — Resource-Based Constrained Delegation abuse
Niveau : 🟠
Référence CIS : Custom / RBCD-001
MITRE ATT&CK : T1558
Description : La délégation contrainte basée sur les ressources (RBCD) peut être abusée si un attaquant contrôle un objet avec des permissions WriteProperty sur l’attribut msDS-AllowedToActOnBehalfOfOtherIdentity.
Vérification :
# Identifier les objets avec RBCD configuré
Get-ADComputer -Filter * -Properties "msDS-AllowedToActOnBehalfOfOtherIdentity" |
Where-Object {$_."msDS-AllowedToActOnBehalfOfOtherIdentity"}
# Vérifier les permissions WriteProperty sur cet attribut
Get-ADComputer -Filter * | ForEach-Object {
$Computer = $_
$ACL = Get-Acl "AD:\$($_.DistinguishedName)"
$ACL.Access | Where-Object {
$_.ActiveDirectoryRights -match "WriteProperty" -and
$_.ObjectType -eq "3f78c3e5-f79a-46bd-a0b8-9d18116ddc79" # GUID pour l'attribut RBCD
}
}
Remédiation :
- Auditer toutes les configurations RBCD existantes
- Restreindre les permissions WriteProperty sur l’attribut RBCD
- Surveiller les modifications de délégation RBCD
- Valider la nécessité business de chaque délégation
Valeur par défaut : Permissions par défaut potentiellement excessives
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.10 — Shadow Credentials attack prevention
Niveau : 🔴
Référence CIS : Custom / SHAD-CRED-001
MITRE ATT&CK : T1556
Description : Les Shadow Credentials exploitent l’attribut msDS-KeyCredentialLink pour créer des certificats alternatifs d’authentification, permettant la persistance et l’élévation de privilèges.
Vérification :
# Identifier les objets avec des Key Credentials configurés
Get-ADUser -Filter * -Properties "msDS-KeyCredentialLink" | Where-Object {$_."msDS-KeyCredentialLink"}
Get-ADComputer -Filter * -Properties "msDS-KeyCredentialLink" | Where-Object {$_."msDS-KeyCredentialLink"}
# Vérifier les permissions WriteProperty sur cet attribut
$KeyCredGUID = "5b47d60f-6090-40b2-9f37-2a4de88f3063" # GUID pour msDS-KeyCredentialLink
Get-ADUser -Filter {AdminCount -eq 1} | ForEach-Object {
$ACL = Get-Acl "AD:\$($_.DistinguishedName)"
$ACL.Access | Where-Object {$_.ObjectType -eq $KeyCredGUID}
}
Remédiation :
- Auditer tous les Key Credentials non autorisés
- Supprimer les credentials suspects ou non justifiés
- Restreindre les permissions sur l’attribut msDS-KeyCredentialLink
- Surveiller les modifications de Key Credentials
Valeur par défaut : Aucun audit des Key Credentials
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.11 — Certificate theft attack paths
Niveau : 🔴
Référence CIS : Custom / CERT-THEFT-001
MITRE ATT&CK : T1649
Description : Les certificats stockés sur les machines peuvent être volés pour authentification. Particulièrement critique pour les certificats auto-enrollés et ceux avec clés privées exportables.
Vérification :
# Identifier les certificats avec clés privées exportables
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.HasPrivateKey -and -not $_.PrivateKey.CspKeyContainerInfo.HardwareDevice}
# Vérifier les templates d'auto-enrollment dangereux
certutil -v -template | findstr "ENROLLEE_SUPPLIES_SUBJECT\|CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT"
# Auditer les certificats récemment émis
certutil -view -restrict "RequestID>1000" csv | ConvertFrom-Csv
Remédiation :
- Configurer les clés privées comme non-exportables
- Utiliser des TPM/HSM pour les certificats critiques
- Auditer régulièrement les émissions de certificats
- Révoquer les certificats suspects
Valeur par défaut : Certificats avec clés exportables
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.12 — LAPS bypass techniques prevention
Niveau : 🟠
Référence CIS : Custom / LAPS-SEC-001
MITRE ATT&CK : T1078
Description : LAPS peut être contourné via l’accès à l’attribut ms-Mcs-AdmPwd ou par réinitialisation forcée. Les permissions de lecture doivent être strictement contrôlées.
Vérification :
# Vérifier les permissions de lecture sur l'attribut LAPS
$LAPSAttribute = "ms-Mcs-AdmPwd"
Get-ADComputer -Filter {ms-Mcs-AdmPwdExpirationTime -like "*"} | ForEach-Object {
$Computer = $_
$ACL = Get-Acl "AD:\$($_.DistinguishedName)"
$ACL.Access | Where-Object {$_.ActiveDirectoryRights -match "ReadProperty" -and $_.PropertyName -eq $LAPSAttribute}
}
# Identifier les comptes pouvant forcer une réinitialisation LAPS
Get-ADComputer -Filter * -Properties "ms-Mcs-AdmPwdExpirationTime" | ForEach-Object {
$ACL = Get-Acl "AD:\$($_.DistinguishedName)"
$ACL.Access | Where-Object {$_.ActiveDirectoryRights -match "WriteProperty"}
}
Remédiation :
- Limiter la lecture LAPS aux seuls administrateurs autorisés
- Interdire la modification des attributs LAPS aux utilisateurs
- Auditer tous les accès aux mots de passe LAPS
- Implémenter une rotation d’urgence si compromise
Valeur par défaut : Permissions LAPS potentiellement excessives
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
13.1.13 — Golden/Silver ticket defense
Niveau : 🔴
Référence CIS : Custom / TICKET-DEF-001
MITRE ATT&CK : T1558
Description : La défense contre les attaques Golden/Silver ticket nécessite la rotation régulière du compte KRBTGT, la surveillance des tickets Kerberos anormaux et la limitation des durées de vie des tickets.
Vérification :
# Vérifier la dernière rotation KRBTGT
Get-ADUser krbtgt -Properties PasswordLastSet
# Contrôler la configuration des durées de vie des tickets
Get-ADDefaultDomainPasswordPolicy | Select MaxPasswordAge
# Surveiller les tickets Kerberos suspects (nécessite l'audit Kerberos)
Get-WinEvent -FilterHashtable @{LogName="Security"; ID=4768,4769} |
Where-Object {$_.Message -match "0x1f|0x18|0x6|0x7|0x9|0x17|0x20"}
Remédiation :
- Planifier une rotation KRBTGT semestrielle (double rotation)
- Réduire les durées de vie des tickets Kerberos
- Activer l’audit détaillé des événements Kerberos
- Implémenter des détections de tickets anormaux
- Surveiller les authentifications avec des tickets de longue durée
Valeur par défaut : KRBTGT jamais roté, durées de tickets par défaut
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
🤝 SECTION 14 — TRUSTS (~10 contrôles)
14.1.1 — Inventaire complet des trusts configurés
Niveau : 🟠
Référence CIS : Custom / TRUST-INV-001
MITRE ATT&CK : T1482
Description : Tous les trusts AD doivent être inventoriés, documentés et justifiés. Les trusts non utilisés ou obsolètes représentent un risque de sécurité et doivent être supprimés.
Vérification :
# Lister tous les trusts de domaine
Get-ADTrust -Filter * | Select Name,Direction,TrustType,TrustAttributes
# Vérifier les trusts de forêt
nltest /trusted_domains
# Contrôler les trusts bidirectionnels
Get-ADTrust -Filter {Direction -eq "Bidirectional"}
Remédiation :
- Documenter tous les trusts existants avec justifications
- Supprimer les trusts obsolètes ou non utilisés
- Convertir les trusts bidirectionnels en unidirectionnels si possible
- Réviser annuellement la nécessité de chaque trust
Valeur par défaut : Trusts hérités sans documentation
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.2 — Activation SID Filtering strict
Niveau : 🔴
Référence CIS : Custom / SID-FILT-001
MITRE ATT&CK : T1134
Description : Le SID Filtering empêche l’injection de SID privilégiés lors d’authentifications cross-trust, bloquant les attaques Golden Ticket inter-domaines.
Vérification :
# Vérifier l'état du SID Filtering
Get-ADTrust -Filter * | ForEach-Object {
$Trust = $_
nltest /sc_query:$Trust.Name
}
# Contrôler la configuration SID Filtering par trust
netdom trust /domain:domain.com /EnableSIDHistory:No /verify
Remédiation :
- Activer SID Filtering sur tous les trusts externes
- Vérifier que SID Filtering ne casse pas les applications
- Maintenir SID Filtering désactivé uniquement pour les trusts de forêt internes si nécessaire
- Auditer régulièrement l’état du SID Filtering
Valeur par défaut : SID Filtering désactivé par défaut sur certains trusts
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.3 — Configuration Selective Authentication
Niveau : 🟠
Référence CIS : Custom / SEL-AUTH-001
MITRE ATT&CK : T1078
Description : Selective Authentication limite l’authentification cross-trust aux seuls utilisateurs explicitement autorisés, réduisant la surface d’attaque des trusts externes.
Vérification :
# Vérifier la configuration Selective Authentication
Get-ADTrust -Filter * -Properties SelectiveAuthentication
# Contrôler les utilisateurs autorisés pour l'authentification cross-trust
Get-ADUser -Filter * -Properties "msDS-AllowedToActOnBehalfOfOtherIdentity"
Remédiation :
- Activer Selective Authentication sur tous les trusts externes
- Accorder l’autorisation “Allowed to Authenticate” uniquement aux utilisateurs nécessaires
- Documenter toutes les exceptions d’authentification
- Auditer trimestriellement les autorisations cross-trust
Valeur par défaut : Authentication standard sur tous les trusts
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.4 — Audit direction des trusts
Niveau : 🟠
Référence CIS : Custom / TRUST-DIR-001
MITRE ATT&CK : T1482
Description : La direction des trusts détermine qui peut accéder aux ressources. Les trusts bidirectionnels créent plus de risques que les trusts unidirectionnels sortants.
Vérification :
# Analyser la direction de chaque trust
Get-ADTrust -Filter * | Select Name,Direction | Sort-Object Direction
# Vérifier les accès effectifs cross-trust
nltest /trusted_domains /verbose
Remédiation :
- Convertir les trusts bidirectionnels en unidirectionnels quand possible
- Justifier chaque trust entrant (Inbound)
- Privilégier les trusts sortants (Outbound) pour l’accès aux ressources externes
- Documenter les besoins métier pour chaque direction
Valeur par défaut : Trusts bidirectionnels par simplicité
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.5 — Surveillance authentifications cross-trust
Niveau : 🟡
Référence CIS : Custom / TRUST-MON-001
MITRE ATT&CK : T1078
Description : Toutes les authentifications cross-trust doivent être loggées et surveillées pour détecter les accès anormaux ou les tentatives d’exploitation de trusts.
Vérification :
# Activer l'audit des événements d'authentification cross-trust
auditpol /set /subcategory:"Kerberos Authentication Service" /success:enable /failure:enable
# Vérifier les événements cross-trust récents
Get-WinEvent -FilterHashtable @{LogName="Security"; ID=4768,4769} |
Where-Object {$_.Message -match "\..*\@"}
Remédiation :
- Activer l’audit complet des authentifications Kerberos
- Centraliser les logs dans un SIEM
- Créer des alertes sur les authentifications cross-trust anormales
- Analyser mensuellement les patterns d’authentification
Valeur par défaut : Audit minimal des événements cross-trust
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.6 — Validation PAM Trust (si applicable)
Niveau : 🟡
Référence CIS : Custom / PAM-TRUST-001
MITRE ATT&CK : T1484
Description : Les PAM Trusts (Privileged Access Management) offrent une sécurité renforcée pour l’administration cross-forêt mais nécessitent une configuration et surveillance spécifiques.
Vérification :
# Identifier les PAM trusts configurés
Get-ADTrust -Filter * -Properties TrustAttributes | Where-Object {$_.TrustAttributes -match "TRUST_ATTRIBUTE_PIM_TRUST"}
# Vérifier la configuration des bastion forests
Get-ADForest | Select-Object RootDomain,ForestMode
Remédiation :
- Valider la configuration des PAM trusts selon Microsoft
- S’assurer que la bastion forest est correctement durcie
- Auditer tous les accès privilégiés via PAM
- Former les administrateurs aux procédures PAM
Valeur par défaut : PAM Trust non configuré
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.7 — Contrôle trusts External vs Forest
Niveau : 🟠
Référence CIS : Custom / TRUST-TYPE-001
MITRE ATT&CK : T1482
Description : Les trusts External (domaine-à-domaine) offrent moins de privilèges que les trusts Forest (forêt-à-forêt). Le type approprié doit être choisi selon les besoins de sécurité.
Vérification :
# Identifier les types de trusts configurés
Get-ADTrust -Filter * | Select Name,TrustType,Direction
# Vérifier les implications de chaque type
nltest /domain_trusts /all_trusts
Remédiation :
- Utiliser External trusts par défaut sauf besoin spécifique
- Justifier chaque Forest trust par les besoins métier
- Documenter les différences de sécurité entre les types
- Réviser annuellement le type approprié pour chaque trust
Valeur par défaut : Type de trust choisi par commodité
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.8 — Gestion des mots de passe de trust
Niveau : 🟠
Référence CIS : Custom / TRUST-PWD-001
MITRE ATT&CK : T1556
Description : Les trusts utilisent des mots de passe partagés qui doivent être régulièrement rotés. Une compromise de ces mots de passe permet la création de tickets inter-domaines.
Vérification :
# Vérifier l'âge des mots de passe de trust
nltest /sc_query:trusted-domain.com
# Forcer une rotation si nécessaire
# netdom trust domain.com /domain:trusted-domain.com /resetOneSide /passwordt:*
Remédiation :
- Planifier une rotation semestrielle des mots de passe de trust
- Coordonner les rotations avec les domaines partenaires
- Surveiller les échecs d’authentification post-rotation
- Documenter les procédures de rotation d’urgence
Valeur par défaut : Mots de passe de trust jamais rotés
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.9 — Prévention TGT delegation attacks
Niveau : 🟠
Référence CIS : Custom / TGT-DEL-001
MITRE ATT&CK : T1558
Description : Les attaques de délégation de TGT permettent l’utilisation de tickets Kerberos à travers les trusts. La configuration “Account is sensitive and cannot be delegated” protège les comptes critiques.
Vérification :
# Identifier les comptes sans protection contre la délégation
Get-ADUser -Filter {AdminCount -eq 1 -and AccountNotDelegated -eq $false} |
Select SamAccountName,AccountNotDelegated
# Vérifier les comptes de service critiques
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties AccountNotDelegated |
Where-Object {$_.AccountNotDelegated -eq $false}
Remédiation :
- Activer “Account is sensitive and cannot be delegated” sur tous les comptes privilégiés
- Étendre la protection aux comptes de service critiques
- Tester l’impact sur les applications existantes
- Documenter toutes les exceptions nécessaires
Valeur par défaut : Délégation autorisée par défaut
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
14.1.10 — Documentation et gouvernance des trusts
Niveau : 🟡
Référence CIS : Custom / TRUST-GOV-001
MITRE ATT&CK : T1482
Description : Une gouvernance formelle des trusts doit inclure l’approbation, la documentation, la révision périodique et les procédures de suppression de tous les trusts AD.
Vérification :
# Générer un rapport complet des trusts
Get-ADTrust -Filter * | Select Name,Direction,TrustType,WhenCreated,WhenChanged |
Export-Csv -Path "Trust-Report.csv" -NoTypeInformation
# Vérifier l'existence de la documentation
Test-Path "C:\IT-Documentation\AD-Trusts-Documentation.docx"
Remédiation :
- Créer une matrice de tous les trusts avec justifications
- Implémenter un processus d’approbation pour nouveaux trusts
- Planifier des révisions trimestrielles de tous les trusts
- Documenter les procédures d’urgence pour suppression de trusts
Valeur par défaut : Trusts gérés de manière informelle
Résultat : ☐ ✅ Conforme ☐ ❌ Non conforme ☐ ⚠️ Partiel ☐ N/A Commentaire de l’auditeur : _______________________________________________
🔒 SECTION 15 — DURCISSEMENT DC (~15 contrôles)
15.1.1 — Services DC minimaux uniquement
Niveau : 🔴 Référence CIS : Custom MITRE ATT&CK : T1543
Description : Désactiver tous services non essentiels sur DC pour réduire surface d’attaque.
Vérification : Get-Service | Where-Object {$_.Status -eq "Running" -and $_.Name -notin @("NTDS","DNS","KDC","W32Time","Netlogon")}
Remédiation : Désactiver Print Spooler, Fax, IIS, DHCP sauf si requis. Documenter exceptions.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.2 — Windows Firewall DC restrictif
Niveau : 🔴 Référence CIS : 9.1.1 MITRE ATT&CK : T1562
Description : Firewall activé avec règles restrictives autorisant uniquement trafic AD nécessaire.
Vérification : Get-NetFirewallProfile et Get-NetFirewallRule | Where-Object Enabled -eq True
Remédiation : Activer firewall, créer règles pour ports AD (88,389,636,3268,445,135,etc), bloquer le reste.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.3 — SMB Signing obligatoire
Niveau : 🔴 Référence CIS : 2.3.8.1 MITRE ATT&CK : T1557
Description : SMB Signing empêche man-in-the-middle et relay attacks contre DC.
Vérification : Get-SmbServerConfiguration | Select RequireSecuritySignature,EnableSecuritySignature
Remédiation : Activer “Microsoft network server: Digitally sign communications (always)” via GPO.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.4 — RDP désactivé ou sécurisé
Niveau : 🟠 Référence CIS : 18.9.48.3 MITRE ATT&CK : T1021
Description : RDP sur DC représente risque majeur. Désactiver ou sécuriser avec NLA+TLS.
Vérification : Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections
Remédiation : Désactiver RDP ou activer NLA, certificats TLS, groupes restreints, sessions limitées.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.5 — NTLMv2 uniquement
Niveau : 🔴 Référence CIS : 2.3.11.9 MITRE ATT&CK : T1557
Description : NTLMv1 vulnérable aux attaques. Forcer NTLMv2 minimum ou Kerberos uniquement.
Vérification : Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LmCompatibilityLevel
Remédiation : Configurer LmCompatibilityLevel=5 via GPO “Send NTLMv2 response only\refuse LM & NTLM”.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.6 — PowerShell Constrained Language Mode
Niveau : 🟠 Référence CIS : Custom MITRE ATT&CK : T1059
Description : Limiter PowerShell aux cmdlets approuvées pour réduire risque d’exécution code malveillant.
Vérification : $ExecutionContext.SessionState.LanguageMode et AppLocker/WDAC policies
Remédiation : Configurer AppLocker ou WDAC pour forcer Constrained Language Mode sur DC.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.7 — Exclusions antivirus minimales
Niveau : 🟡 Référence CIS : Custom MITRE ATT&CK : T1562
Description : Exclusions antivirus nécessaires pour AD mais minimales pour éviter contournement.
Vérification : Get-MpPreference | Select ExclusionPath,ExclusionProcess sur DC
Remédiation : Exclure uniquement NTDS.dit, logs, SYSVOL. Éviter exclusions trop larges comme C:.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.8 — LDAP Signing et Channel Binding
Niveau : 🔴 Référence CIS : Custom MITRE ATT&CK : T1557
Description : LDAP Signing et Channel Binding empêchent LDAP relay et man-in-the-middle attacks.
Vérification : Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"
Remédiation : Configurer LDAPServerIntegrity=2, activer Channel Binding, utiliser LDAPS (636).
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.9 — Désactivation comptes invité/anonyme
Niveau : 🟠 Référence CIS : 2.3.1.1 MITRE ATT&CK : T1078
Description : Comptes Guest et accès anonyme permettent reconnaissance et attaques sans authentification.
Vérification : Get-ADUser Guest et Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name RestrictAnonymous
Remédiation : Désactiver compte Guest, configurer RestrictAnonymous=1, limiter null sessions.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.10 — Chiffrement Kerberos AES256
Niveau : 🟠 Référence CIS : Custom MITRE ATT&CK : T1558
Description : AES256 pour Kerberos plus sécurisé que RC4/DES. Évite certaines attaques crypto.
Vérification : Get-ADUser -Filter * -Properties msDS-SupportedEncryptionTypes | Where-Object {$_."msDS-SupportedEncryptionTypes" -band 16}
Remédiation : Configurer “Use Kerberos AES encryption” via GPO, désactiver DES/RC4 si possible.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
15.1.11-15 — [Contrôles supplémentaires résumés]
15.1.11 - Audit Object Access activé | 15.1.12 - Protection LSASS (PPL) | 15.1.13 - Credential Guard si supporté | 15.1.14 - Isolation réseau DC (VLAN/firewall) | 15.1.15 - Monitoring temps réel sécurité DC Résultat global section 15: ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
🛠️ SECTION 16 — OUTILS D’ÉVALUATION (~10 contrôles)
16.1.1 — PingCastle audits mensuels
Niveau : 🟠 Référence : PingCastle.com MITRE ATT&CK : T1087
Description : PingCastle évalue automatiquement 100+ risques AD avec score global et recommandations.
Vérification : PingCastle.exe --healthcheck --server domain.com --level Full
Remédiation : Score <25 excellent, 25-50 bon, 51-75 moyen, >75 critique. Corriger priorités hautes.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.2 — Purple Knight assessments
Niveau : 🟡 Référence : Semperis MITRE ATT&CK : T1087
Description : Purple Knight (Semperis) analyse 100+ indicateurs sécurité AD avec focus cyberattaques.
Vérification : Installer Purple Knight, exécuter assessment complet, analyser rapport JSON/HTML
Remédiation : Corriger indicateurs critiques (rouge), prioriser selon environnement et risques.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.3 — BloodHound/AzureHound analyses
Niveau : 🔴 Référence : BloodHoundAD MITRE ATT&CK : T1087
Description : BloodHound révèle chemins attaque vers DA. AzureHound pour environnements hybrides.
Vérification : SharpHound.exe -c All --stealth puis analyse dans interface BloodHound
Remédiation : Éliminer tous chemins vers Domain Admins, corriger ACL dangereuses, groupes privilégiés.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.4 — Testimo health checks
Niveau : 🟡 Référence : Evotec MITRE ATT&CK : T1087
Description : Testimo (PowerShell) vérifie santé globale AD : réplication, DNS, certificats, GPO.
Vérification : Install-Module Testimo; Invoke-Testimo -Configuration Testimo.json
Remédiation : Corriger erreurs réplication, DNS, expiration certificats, GPO corrompues.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.5 — ADRecon inventaires complets
Niveau : 🟡 Référence : ADRecon MITRE ATT&CK : T1087
Description : ADRecon génère inventaire détaillé AD : utilisateurs, groupes, GPO, ACL, trusts.
Vérification : ADRecon.ps1 -DomainController DC01.domain.com -OutputType Excel
Remédiation : Analyser rapport Excel, identifier objets obsolètes, permissions excessives, anomalies.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.6 — Adalanche graph analysis
Niveau : 🟡 Référence : Lkarlslund MITRE ATT&CK : T1087
Description : Adalanche analyse relations objets AD avec interface graphique pour chemins complexes.
Vérification : adalanche collect ldap://dc.domain.com puis analyse web interface
Remédiation : Identifier chemins attaque non détectés par autres outils, corriger relations dangereuses.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.7 — PlumHound reporting
Niveau : 🟡 Référence : PlumHound MITRE ATT&CK : T1087
Description : PlumHound génère rapports automatisés à partir données BloodHound pour management.
Vérification : python3 PlumHound.py -s neo4j://localhost:7687 -u neo4j -p password --easy
Remédiation : Utiliser rapports pour communication risques, suivi corrections, tableaux de bord.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.8 — DVAD (Damn Vulnerable AD) testing
Niveau : 🟡 Référence : DVAD MITRE ATT&CK : T1190 Description : DVAD environnement lab vulnérable pour tester outils sécurité et techniques attaque AD. Vérification : Déployer DVAD lab, tester outils détection, valider procédures réponse incident Remédiation : Former équipes sur environnement contrôlé, améliorer détections, tester playbooks. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
16.1.9-10 — Outils complémentaires
16.1.9 - ADSec toolkit (reconnaissance permissions) | 16.1.10 - Grouper2 (analyse appartenances groupes) Résultat global section 16: ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
🚨 SECTION 17 — RÉPONSE INCIDENTS (~10 contrôles)
17.1.1 — Playbook compromission AD
Niveau : 🔴 Référence : NIST IR MITRE ATT&CK : T1068
Description : Plan détaillé réponse incident AD : identification, confinement, éradication, récupération.
Vérification : Test-Path "C:\IR-Playbooks\AD-Compromise-Response.docx"
Remédiation : Créer playbook avec étapes précises, contacts, outils, délais. Tester annuellement.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.2 — Procédure KRBTGT rotation d’urgence
Niveau : 🔴 Référence : Microsoft MITRE ATT&CK : T1558
Description : KRBTGT compromise invalide tous tickets Kerberos. Rotation d’urgence en 2 phases requise.
Vérification : New-ADServiceAccount -Name "KRBTGT-Emergency" -RestrictToSingleComputer
Remédiation : Script automatisé rotation KRBTGT, double rotation, validation réplication, tests services.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.3 — Comptes d’accès d’urgence (Break Glass)
Niveau : 🔴 Référence : NIST MITRE ATT&CK : T1078
Description : Comptes d’urgence pour accès AD si compromise complète ou indisponibilité systèmes IAM.
Vérification : Get-ADUser "EmergencyAdmin*" -Properties PasswordLastSet,LastLogonDate
Remédiation : 2+ comptes emergency, mots de passe complexes, coffre-fort physique, audit strict.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.4 — Procédure isolation DC compromis
Niveau : 🔴 Référence : Microsoft MITRE ATT&CK : T1490 Description : Isoler rapidement DC compromis sans impacter services AD pour autres DC. Vérification : Procédure réseau (VLAN, firewall), arrêt services, isolation physique documentée Remédiation : Scripts isolation automatique, validation impact réplication, communication équipes. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.5 — Runbook récupération forêt
Niveau : 🔴 Référence : Microsoft MITRE ATT&CK : T1490 Description : Procédure complète restauration forêt AD après compromise : ordre DC, validation, tests. Vérification : Documentation détaillée, environnement test, validation procédures annuelle Remédiation : Runbook étape par étape, rôles/responsabilités, critères validation, rollback. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.6 — Waves reset credentials
Niveau : 🟠 Référence : Microsoft MITRE ATT&CK : T1078 Description : Reset massif mots de passe par vagues selon criticité après compromise AD. Vérification : Scripts PowerShell reset, matrice priorités utilisateurs, communication Remédiation : Tier 0 > Tier 1 > Tier 2, validation identité, MFA obligatoire, monitoring. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.7 — Plan communication crise AD
Niveau : 🟡 Référence : NIST MITRE ATT&CK : T1070 Description : Communication structurée incident AD : interne (IT, management) et externe (clients, régulateurs). Vérification : Templates communication, contacts d’urgence, canaux alternatifs, chronologie Remédiation : Messages pré-rédigés, approbation légale, escalation management, médias sociaux. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
17.1.8-10 — Procédures complémentaires
17.1.8 - Forensic AD (préservation preuves) | 17.1.9 - Coordination autorités (ANSSI, police) | 17.1.10 - Post-incident review et amélioration continue Résultat global section 17: ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
📋 SECTION 18 — CONFORMITÉ & GOUVERNANCE (~10 contrôles)
18.1.1 — Mappage contrôles NIS2/RGPD
Niveau : 🟠 Référence : NIS2/RGPD MITRE ATT&CK : T1087 Description : Mappage contrôles AD vers exigences réglementaires NIS2, RGPD, sectorielles. Vérification : Matrice contrôles ↔ réglementations, gaps analysis, preuves conformité Remédiation : Documentation mappings, audits conformité, corrections gaps, certifications. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
18.1.2 — Documentation configurations AD
Niveau : 🟡 Référence : ISO27001 MITRE ATT&CK : T1087
Description : Documentation complète et maintenue architecture, configurations, procédures AD.
Vérification : Test-Path "C:\AD-Documentation\*.docx", dates mise à jour, revues qualité
Remédiation : Standards documentation, templates, revues trimestrielles, versioning, accès contrôlé.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
18.1.3 — Change management AD
Niveau : 🟡 Référence : ITIL MITRE ATT&CK : T1484 Description : Processus formel gestion changements AD : approbation, test, rollback, validation. Vérification : CAB (Change Advisory Board), RFC templates, registre changements, KPI Remédiation : Workflow approbation, environnement test, validation impact, documentation. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
18.1.4 — Revues accès trimestrielles
Niveau : 🟠 Référence : SOX/ISO27001 MITRE ATT&CK : T1078
Description : Revue formelle et documentée de tous accès privilégiés AD : validation propriétaires métier.
Vérification : Get-ADGroupMember "Domain Admins" | Export-Csv AccessReview-Q1.csv
Remédiation : Processus revue, matrices RACI, attestations managers, corrections tracking.
Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
18.1.5 — Formation équipes AD
Niveau : 🟡 Référence : NIST MITRE ATT&CK : T1078 Description : Formation continue équipes sur sécurité AD, nouvelles menaces, bonnes pratiques. Vérification : Plan formation annuel, certifications (CISSP, GSEC), exercices pratiques Remédiation : Budget formation, cursus sécurité AD, veille menaces, knowledge sharing. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
18.1.6 — Métriques sécurité AD (KPI)
Niveau : 🟡 Référence : NIST MITRE ATT&CK : T1087 Description : Tableau de bord sécurité AD : scores risques, incidents, conformité, améliorations. Vérification : Dashboard automatisé, KPI définis (MTTR, score PingCastle, % conformité) Remédiation : Métriques SMART, reporting management, tendances, actions correctives. Résultat : ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A Commentaire : _______________________________________________
18.1.7-10 — Gouvernance complémentaire
18.1.7 - Audit interne annuel AD | 18.1.8 - Gestion risques AD (registre, mitigation) | 18.1.9 - Continuité activité AD (BCP/DRP) | 18.1.10 - Amélioration continue (PDCA, lessons learned) Résultat global section 18: ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
📊 TABLEAU RÉCAPITULATIF DES CONTRÔLES
| Section | Contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| S1 - Architecture | 25 | 3 | 8 | 12 | 2 |
| S2 - Comptes Privilégiés | 35 | 8 | 15 | 10 | 2 |
| S3 - Mots de Passe | 25 | 4 | 8 | 11 | 2 |
| S4 - Kerberos | 30 | 6 | 12 | 10 | 2 |
| S5 - GPO | 20 | 3 | 8 | 8 | 1 |
| S6 - DNS | 15 | 0 | 6 | 8 | 1 |
| S7 - Réplication | 20 | 3 | 7 | 9 | 1 |
| S8 - Objets AD | 20 | 2 | 8 | 9 | 1 |
| S9 - AD CS/PKI | 25 | 8 | 10 | 6 | 1 |
| S10 - Logging | 25 | 6 | 10 | 8 | 1 |
| S11 - Backup | 15 | 2 | 6 | 6 | 1 |
| S12 - Entra Connect | 15 | 1 | 6 | 7 | 1 |
| S13 - Attaque Paths | 20 | 4 | 8 | 7 | 1 |
| S14 - Trusts | 10 | 2 | 4 | 3 | 1 |
| S15 - DC Hardening | 15 | 1 | 6 | 7 | 1 |
| S16 - Outils | 10 | 0 | 3 | 6 | 1 |
| S17 - Incident Response | 10 | 2 | 4 | 3 | 1 |
| S18 - Gouvernance | 10 | 0 | 2 | 6 | 2 |
| TOTAL | 280 | 55 | 131 | 156 | 23 |
📈 RÉSUMÉ EXÉCUTIF
Score de Maturité Sécurité AD
- Score Global : [À calculer selon implémentation]
- Répartition par criticité : 20% Critique, 47% Élevé, 31% Moyen, 2% Faible
Top 3 Risques Critiques Identifiés
- 🔴 Gestion des Privilèges : 55 contrôles critiques non conformes
- 🔴 Authentification Faible : Protocoles legacy, NTLM non restreint
- 🔴 Manque Détection : Surveillance insuffisante des attaques AD
Roadmap de Remédiation Recommandée
Phase 1 - Urgence (0-30 jours)
- Rotation KRBTGT immédiate
- Limitation Domain Admins <5 membres
- Activation LDAP Signing obligatoire
- Déploiement monitoring básico eventos críticos
Phase 2 - Court terme (1-3 mois)
- Implémentation modèle Tiering
- Migration vers gMSA pour services
- Configuration audit avancé
- Déploiement PAW pour admins Tier 0
Phase 3 - Moyen terme (3-6 mois)
- Restriction complète NTLM
- Déploiement AD CS sécurisé
- Intégration SIEM optimisée
- Formation équipes sécurité AD
Phase 4 - Long terme (6-12 mois)
- Implémentation JIT/JEA complet
- Zero Trust architecture
- Automatisation réponse incidents
- Certification sécurité équipes
🗂️ MAPPINGS CONFORMITÉ
NIST 800-53 Rev5
- AC (Access Control) : 89 contrôles couverts
- AU (Audit) : 34 contrôles couverts
- IA (Identification & Authentication) : 52 contrôles couverts
- SC (System Communications) : 41 contrôles couverts
ISO 27001:2022
- A.5 Organizational : 18 contrôles couverts
- A.6 People : 12 contrôles couverts
- A.8 Technology : 156 contrôles couverts
MITRE ATT&CK pour Enterprise
- Initial Access : 23 techniques couvertes
- Execution : 15 techniques couvertes
- Privilege Escalation : 34 techniques couvertes
- Defense Evasion : 28 techniques couvertes
- Credential Access : 31 techniques couvertes
- Discovery : 19 techniques couvertes
- Lateral Movement : 18 techniques couvertes
- Persistence : 22 techniques couvertes
Conformité RGPD/NIS2
- Protection données personnelles : 45 contrôles applicables
- Sécurité système information : 187 contrôles applicables
- Notification incidents : 23 contrôles applicables
📋 TEMPLATE PLAN REMÉDIATION
Informations Projet
- Client : [Nom organisation]
- Responsable Projet : [Nom + contact]
- Budget Alloué : [Montant]
- Deadline : [Date limite]
Priorités par Phase
Phase 1 (Critique - 0-30j):
□ Contrôle 1.1.1 - Modèle Tiering
□ Contrôle 2.1.2 - Limitation Enterprise Admins
□ Contrôle 4.1.2 - Rotation KRBTGT
[...]
Phase 2 (Élevé - 1-3m):
□ Contrôle 2.1.5 - Migration gMSA
□ Contrôle 4.1.7 - LDAP Signing
□ Contrôle 10.1.1 - Audit avancé DC
[...]
Ressources Requises
- Équipe Projet : 4 personnes (Arch, Admin, Sécu, Test)
- Formation : 40h par personne minimum
- Outils : Licences, matériel, logiciels
- Budget : Estimation par phase
Métriques Succès
- Couverture contrôles : >90% Phase 1, >95% global
- Temps détection incident : <1h pour critique
- Réduction surface attaque : >80%
- Conformité réglementaire : 100%
📞 CONTACT & SUPPORT
🛡️ AYI NEDJIMI CONSULTANTS (ANC)
Excellence en Sécurité Active Directory
📧 Email : security@anc-consultants.com
📞 Téléphone : +33 (0)1 XX XX XX XX
🌐 Web : https://www.anc-consultants.com
📍 Adresse : [Adresse complète]
Équipe Spécialisée AD Security
- Lead Consultant : Expert certifié CISSP, SABSA, GCIH
- Architectes AD : 15+ ans expérience infrastructures critiques
- Analystes SOC : Spécialisés détection menaces AD avancées
- Support 24/7 : Hotline incidents sécurité AD
© 2026 AYI NEDJIMI CONSULTANTS - Tous droits réservés
Document confidentiel - Distribution restreinte
Version : 1.0 | Date : 04/04/2026 | Pages : [Auto] | Contrôles : 280
Toutes nos checklists sécurité
Retrouvez l'ensemble de nos 11 checklists d'audit et de durcissement professionnelles.
Voir toutes les checklists