Code : MO-AD-007 | Version : 1.2 | Date : 15 avril 2026 | Auteur : Cédric LEGRAND
MAJ v1.2 (15/04/2026) : ajout de la section 4.6 « Audit du compte
krbtgt» avec seuils 90/180 jours (cible Microsoft/ANSSI), capture PowerShell de référence et nouvelle ligne « Comptes critiques » dans la grille de vérification. Renvoi explicite vers MO-AD-002 pour la procédure de rotation.
MAJ v1.1 (14/04/2026) : ajout de l'étape de traitement des comptes détectés compromis (forcer changement MDP / désactiver), avertissement sur l'interaction PasswordNeverExpires/ChangePasswordAtLogon, et note historique de l'audit du 14/04 (5 comptes « toto » et 2 comptes compromis traités). La rotation des MDP critiques est documentée dans le MO-AD-008.
Procedure d'audit periodique (mensuelle) des comptes et groupes Active Directory du domaine BTS SIO. Detecte les derives de securite : comptes inactifs, fantomes, groupes privilegies, attributs de securite, adminCount orphelins.
| Element | Detail |
|---|---|
| Domaine | Active Directory (bts.sio) |
| Outil | PowerShell (module ActiveDirectory) via WinRM |
| DC cible | DC1 (10.0.112.2) |
| Frequence | Mensuelle ou avant intervention critique |
| Duree | 20-30 minutes |
Attention : Ne pas ajouter le compte WinRM au groupe Protected Users (bloque NTLM).
Etape 1 -- Domain Admins + AccountNotDelegated
Get-ADGroupMember "Admins du domaine" | ForEach-Object {
$u = Get-ADUser $_.SamAccountName -Properties AccountNotDelegated, Enabled, LastLogonDate
[PSCustomObject]@{
Compte = $_.SamAccountName; Actif = $u.Enabled
NonDelegable = $u.AccountNotDelegated; DernierLogin = $u.LastLogonDate
}
} | Format-Table -AutoSize
Resultat 13/04/2026 : 4 DA (fghoua, pribeiro, mmartinez, clegrand), tous NonDelegable=True.
Correction : Set-ADUser <compte> -AccountNotDelegated $true
Etape 2 -- Schema Admins et Enterprise Admins = vides
Get-ADGroupMember (Get-ADGroup -Filter {SID -like "*-518"}) # Schema
Get-ADGroupMember (Get-ADGroup -Filter {SID -like "*-519"}) # Enterprise
Resultat 13/04/2026 : les deux groupes sont vides (apres nettoyage).
$cutoff = (Get-Date).AddDays(-90)
Get-ADComputer -Filter {LastLogonDate -lt $cutoff -and Enabled -eq $true} `
-Properties LastLogonDate, OperatingSystem |
Select Name, LastLogonDate, OperatingSystem | Sort LastLogonDate
Correction : Set-ADComputer -Identity "<nom>" -Enabled $false -Description "Desactive <date>"
Resultat 13/04/2026 : 7 machines desactivees, 3 en surveillance, 71 actives.
# Desactives
Get-ADUser -Filter {Enabled -eq $false} -Properties LastLogonDate, Description |
Select SamAccountName, Name, LastLogonDate, Description
# Jamais connectes (actifs)
Get-ADUser -Filter {LastLogonDate -notlike "*" -and Enabled -eq $true} -Properties whenCreated |
Select SamAccountName, whenCreated
Resultat 13/04/2026 : 7 desactives (dont krbtgt, Invite = normal), 4 jamais connectes (etudiants recents).
Get-ADGroup -Filter {adminCount -eq 1} -Properties adminCount | Select Name
Get-ADUser -Filter {adminCount -eq 1} -Properties adminCount | Select SamAccountName
Les groupes systeme (Administrateurs, DA, Operateurs...) ont legitimement adminCount=1. Un groupe fonctionnel (ex. GGProfs) avec adminCount=1 est orphelin.
Correction : Set-ADGroup -Identity "GGProfs" -Clear adminCount
Get-GPO -All | Select DisplayName, GpoStatus | Sort DisplayName
GPOs de securite attendues : SEC - Disable LLMNR, SEC - Audit Avance, SEC - Event Log Size, Securite - Audit PowerShell.
Resultat 13/04/2026 : 18 GPOs, 4 GPO de securite actives.
Le compte krbtgt signe l'ensemble des tickets Kerberos émis par les KDCs du domaine. Une clé non rotatée depuis longtemps expose au risque Golden Ticket : un attaquant qui parvient à extraire le hash krbtgt peut forger des tickets arbitraires tant que la clé n'a pas été changée deux fois.
$k = Get-ADUser krbtgt -Properties PasswordLastSet, Created
$days = ((Get-Date) - $k.PasswordLastSet).Days
[PSCustomObject]@{
Compte = $k.SamAccountName
"Date derniere rotation" = $k.PasswordLastSet
"Jours depuis rotation" = $days
} | Format-Table -AutoSize
if ($days -gt 90) { Write-Warning "krbtgt non rote depuis $days jours" }
if ($days -gt 180) { Write-Error "ALERTE : krbtgt non rote depuis $days jours" }
Seuils retenus : avertissement à 90 jours, alerte à 180 jours (cible Microsoft / ANSSI). L'objectif est d'anticiper la rotation avant l'expiration de la fenêtre de sécurité, pas d'attendre le jour anniversaire.
Action corrective : si le seuil d'avertissement est franchi, planifier la rotation via MO-AD-002 — Rotation du compte krbtgt (double rotation espacée de 12 à 48 heures).

NonDelegable=True| Probleme | Solution |
|---|---|
| WinRM 401 apres Protected Users | Kerberos : kinit Administrateur@BTS.SIO puis wmiexec.py -k. |
| Get-ADGroupMember echoue (nom francais) | Utiliser le SID : Get-ADGroup -Filter {SID -like "*-518"}. |
| Machine desactivee bloque un poste | Reactiver : Set-ADComputer -Identity "<nom>" -Enabled $true. |
| adminCount revient a 1 | Le compte est encore dans un groupe protege. Verifier MemberOf. |