« L’absence d’événement prouve que l’action n’a pas eu lieu. »
Un événement peut manquer si l’audit n’était pas activé, si le journal a été écrasé, si la recherche vise le mauvais système ou si l’action est enregistrée sous un autre identifiant.
01Vérifie la politique d’audit
auditpol /get /category:*
Commence par les sous-catégories Logon/Logoff, Account Logon, Account Management, Directory Service Access et Policy Change. Documente Success, Failure ou No Auditing.
02Connais les événements essentiels
03Filtre une fenêtre temporelle
$start = (Get-Date).AddHours(-2)
$ids = 4624,4625,4740,4768,4769,4771,4776
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
StartTime = $start
Id = $ids
} | Select-Object TimeCreated, Id, MachineName, Message
04Analyse les verrouillages
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
StartTime = (Get-Date).AddDays(-1)
Id = 4740
} | Select-Object TimeCreated, MachineName, Message
Search-ADAccount -LockedOut |
Select-Object SamAccountName, DistinguishedName
Ne déverrouille pas immédiatement sans identifier la source : service, tâche planifiée, mobile, session distante ou mot de passe mémorisé peuvent reverrouiller le compte.
05Observe les changements d’identité
$changeIds = 4720,4726,4728,4729,4732,4733
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
StartTime = (Get-Date).AddDays(-1)
Id = $changeIds
} | Select-Object TimeCreated, Id, Message
Ces événements permettent de rapprocher création/suppression de comptes et changements de groupes. Ils ne remplacent pas un processus d’approbation ou un ticket de changement.
06Construis une chronologie
$events = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
StartTime = (Get-Date).AddHours(-4)
Id = 4624,4625,4740,4768,4769,4771,4776
}
$events |
Sort-Object TimeCreated |
Select-Object TimeCreated, Id, MachineName, ProviderName, Message |
Export-Csv 'C:\SORIA-Labs\AD-Identities-GPO-Audit\authentication-timeline.csv' -NoTypeInformation -Encoding UTF8
07Corrèle avec l’état AD
Get-ADUser 'alice.martin' -Properties Enabled,LockedOut,LastBadPasswordAttempt,LastLogonDate,PasswordLastSet |
Select-Object SamAccountName, Enabled, LockedOut, LastBadPasswordAttempt, LastLogonDate, PasswordLastSet
LastLogonDate est utile pour l’exploitation mais n’est pas une horloge forensic parfaite. Distingue toujours attribut d’annuaire, événement de sécurité et conclusion.
08Documente les limites
Le rapport doit préciser machine interrogée, fuseau horaire, période, audit actif, taille/rétention du journal, filtres, événements trouvés, événements attendus mais absents et hypothèses non prouvées.
Enquête sur un verrouillage
Provoque dans le laboratoire plusieurs mots de passe erronés, observe 4625/4771/4740, identifie la source, déverrouille seulement après correction et produis une chronologie argumentée.
✓Lot 4 terminé
Tu sais organiser les identités, construire AGDLP, déléguer, appliquer une GPO, automatiser avec contrôle et analyser les preuves d’authentification.