Les ID d'événements de sécurité Windows qui comptent
Référence pratique des ID d'événements Windows à collecter et surveiller : ouvertures de session, codes d'échec, Kerberos, comptes, persistance et altérations.
Windows journalise des centaines d'ID d'événements. Quelques dizaines répondent à presque toutes les questions d'investigation. Cette référence les recense, avec leur signification, les champs qui comptent et les pièges dans lesquels tombent les analystes. Elle complète le socle stratégie d'audit et Sysmon, qui indique quelles sous-catégories d'audit activer. Ici, l'accent est mis sur la lecture et l'exploitation de ce qu'elles produisent.
Sauf mention contraire, les événements se trouvent dans le journal Security. Les événements propres aux contrôleurs de domaine sont marqués DC.
Types d'ouverture de session
Les événements 4624 (et 4625) portent un Logon Type qui indique comment quelqu'un s'est connecté. Apprenez-les avant tout le reste :
| Type | Nom | Cause typique |
|---|---|---|
| 2 | Interactive | Ouverture de session en console, y compris RunAs |
| 3 | Network | Partage SMB, WinRM, exécution distante de type PsExec, la plupart des tâches d'administration à distance |
| 4 | Batch | Tâche planifiée |
| 5 | Service | Service démarré sous un compte |
| 7 | Unlock | Déverrouillage de la station |
| 8 | NetworkCleartext | Identifiants envoyés en clair au serveur, par exemple l'authentification Basic d'IIS |
| 9 | NewCredentials | runas /netonly ; identité locale inchangée, nouveaux identifiants utilisés sur le réseau |
| 10 | RemoteInteractive | RDP |
| 11 | CachedInteractive | Ouverture de session de domaine avec des identifiants mis en cache, aucun DC joignable |
Les ouvertures de session de type 3 par des comptes d'administration sur des postes de travail, de type 10 vers des serveurs depuis des hôtes qui ne sont pas des postes d'administration, et de type 9 n'importe où en dehors des postes d'administration méritent toutes un second regard.
Authentification et sessions
| ID | Signification | Champs à lire |
|---|---|---|
| 4624 | Ouverture de session réussie | Logon Type, Account, Source Network Address, Workstation, Authentication Package, Elevated Token, Logon ID |
| 4625 | Échec d'ouverture de session | Status et Sub Status, Logon Type, adresse source |
| 4634 / 4647 | Fermeture de session / fermeture initiée par l'utilisateur | Logon ID pour rapprocher du 4624 |
| 4648 | Ouverture de session avec identifiants explicites | Processus, serveur cible, compte utilisé |
| 4672 | Privilèges spéciaux attribués à la nouvelle session | Session équivalente administrateur ; Logon ID |
| 4740 | Compte verrouillé (DC) | Caller Computer Name : d'où venaient les tentatives erronées |
| 4767 | Compte déverrouillé | Qui l'a déverrouillé |
| 4778 / 4779 | Session reconnectée / déconnectée | RDP ou changement rapide d'utilisateur, nom et adresse du client |
Corrélez 4624 et 4672 par Logon ID : vous voyez ainsi quelles ouvertures de session étaient privilégiées. Un Authentication Package NTLM avec Package Name NTLM V1 ne devrait pas exister dans un réseau moderne. Auditez-le et éliminez-le dans le cadre de votre travail de restriction de NTLM.
Pour le 4625, le Sub Status indique la raison :
| Sub Status | Signification |
|---|---|
| 0xC0000064 | Le compte n'existe pas |
| 0xC000006A | Mauvais mot de passe |
| 0xC0000234 | Compte verrouillé |
| 0xC0000072 | Compte désactivé |
| 0xC0000193 | Compte expiré |
| 0xC0000071 | Mot de passe expiré |
| 0xC0000224 | Le mot de passe doit être changé à la prochaine ouverture de session |
| 0xC000006F / 0xC0000070 | En dehors des heures d'ouverture de session / restriction de poste de travail |
| 0xC000015B | Type d'ouverture de session non accordé (attribution des droits utilisateur) |
De nombreux échecs 0xC0000064 depuis une même source signifient que quelqu'un devine des noms de comptes. De nombreux échecs 0xC000006A sur des comptes différents depuis une même source signifient une pulvérisation de mots de passe (password spraying). Des 0xC000015B répétés pour des comptes d'administration sur des postes de travail sont souvent le signe que vos restrictions de tiering fonctionnent comme prévu.
Contrôleurs de domaine : Kerberos et NTLM
| ID | Signification | Ce qu'il faut chercher |
|---|---|---|
| 4768 | TGT Kerberos demandé | Pre-Authentication Type 0 : le compte n'exige pas de pré-authentification (vulnérable à l'AS-REP roasting) |
| 4769 | Ticket de service Kerberos demandé | Ticket Encryption Type 0x17 (RC4) pour des comptes de service qui prennent en charge AES : schéma typique de Kerberoasting |
| 4771 | Échec de pré-authentification Kerberos | Code d'échec 0x18 mauvais mot de passe, 0x12 compte désactivé/verrouillé/expiré, 0x17 mot de passe expiré, 0x25 décalage d'horloge |
| 4776 | Validation d'identifiants NTLM | Erreur 0xC000006A / 0xC0000064 ; sur un serveur membre, cela signifie qu'un compte local a été utilisé |
Types de chiffrement dans les 4768/4769 : 0x11 correspond à AES128, 0x12 à AES256, 0x17 à RC4. À mesure que les domaines abandonnent RC4, tout ticket 0x17 restant désigne des comptes ou des services à corriger. Sur Windows Server 2019 et versions ultérieures, et sur Server 2016 depuis la mise à jour cumulative de janvier 2025, les 4768 et 4769 contiennent aussi MSDS-SupportedEncryptionTypes, Available Keys, Advertized Etypes (ce que le client a proposé) et Session Encryption Type. Ces champs montrent si un compte ou un client sait faire de l'AES avant que vous ne désactiviez RC4.
Modifications de l'annuaire et des comptes
| ID | Signification |
|---|---|
| 4720 / 4726 | Compte utilisateur créé / supprimé |
| 4722 / 4725 | Compte utilisateur activé / désactivé |
| 4723 / 4724 | Tentative de changement de mot de passe par l'utilisateur / réinitialisation par un tiers |
| 4738 | Compte utilisateur modifié (indicateurs UAC, modifications liées aux SPN, mot de passe qui n'expire jamais) |
| 4728 / 4729 | Membre ajouté à / retiré d'un groupe de sécurité global |
| 4732 / 4733 | Membre ajouté à / retiré d'un groupe de sécurité local ou local au domaine |
| 4756 / 4757 | Membre ajouté à / retiré d'un groupe de sécurité universel |
| 4741 / 4742 | Compte d'ordinateur créé / modifié (DC) |
| 4794 | Tentative de définition du mot de passe administrateur DSRM (DC) |
| 5136 | Objet de l'annuaire modifié (DC, nécessite Directory Service Changes et des SACL) |
| 4662 | Opération effectuée sur un objet de l'annuaire (DC, nécessite Directory Service Access et des SACL) |
| 4798 / 4799 | Énumération de l'appartenance à un groupe local (reconnaissance, bruyant) |
Alertez sur les 4728, 4732 et 4756 lorsque le groupe est privilégié : Domain Admins, Enterprise Admins, Administrators, Account Operators, Backup Operators, DnsAdmins, Group Policy Creator Owners et vos propres groupes Tier 0.
Un DCSync apparaît sous forme de 4662 sur un DC dont les propriétés incluent les GUID des droits de réplication 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 (Get-Changes) et 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 (Get-Changes-All), demandés par un compte qui n'est pas un contrôleur de domaine.
Exécution et persistance
| ID | Journal | Signification |
|---|---|---|
| 4688 | Security | Processus créé (activez la capture de la ligne de commande) |
| 4697 | Security | Service installé (sous-catégorie Security System Extension) |
| 7045 | System | Service installé (Service Control Manager, toujours journalisé) |
| 7040 | System | Type de démarrage d'un service modifié |
| 4698 / 4702 | Security | Tâche planifiée créée / mise à jour |
| 4699 / 4700 / 4701 | Security | Tâche planifiée supprimée / activée / désactivée |
| 106 / 140 / 141 | Microsoft-Windows-TaskScheduler/Operational | Tâche enregistrée / mise à jour / supprimée (journal souvent désactivé par défaut ; activez-le) |
| 4657 | Security | Valeur de registre modifiée (uniquement avec une SACL sur la clé) |
| 5140 | Security | Accès à un partage réseau (sous-catégorie File Share) |
Le XML de la tâche dans le 4698 contient la commande exécutée par la tâche : lisez-le, ne vous contentez pas de compter les événements. Pour un niveau de détail sur les processus au-delà du 4688, voir déploiement et ajustement de Sysmon.
Altérations et modifications de stratégie
| ID | Journal | Signification |
|---|---|---|
| 1102 | Security | Journal Sécurité effacé |
| 104 | System | Autre journal d'événements effacé |
| 4719 | Security | Stratégie d'audit système modifiée |
| 4616 | Security | Heure système modifiée |
| 4907 | Security | Paramètres d'audit (SACL) d'un objet modifiés |
| 5001 | Microsoft-Windows-Windows Defender/Operational | Protection en temps réel désactivée |
| 5007 | Microsoft-Windows-Windows Defender/Operational | Configuration de Defender modifiée (y compris les exclusions) |
| 5013 | Microsoft-Windows-Windows Defender/Operational | La protection contre les falsifications a bloqué une modification |
| 1116 / 1117 | Microsoft-Windows-Windows Defender/Operational | Logiciel malveillant détecté / action effectuée |
Chacun de ces événements devrait être rare. Les 1102, 104 et 4719 en dehors d'une fenêtre de changement sont à eux seuls des indicateurs forts. Les événements Defender sont traités plus en détail dans durcissement de Microsoft Defender Antivirus.
Accès à distance et PowerShell
| ID | Journal | Signification |
|---|---|---|
| 1149 | Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational | Authentification réseau RDP réussie, avec adresse source |
| 21 / 24 / 25 | Microsoft-Windows-TerminalServices-LocalSessionManager/Operational | Ouverture / déconnexion / reconnexion de session RDP |
| 4104 | Microsoft-Windows-PowerShell/Operational | Bloc de script journalisé |
| 400 | Windows PowerShell | Moteur démarré, avec version de l'hôte et du moteur |
RDP laisse des traces à trois endroits (Security 4624 type 10, 1149 et 21). Si l'une manque, vous avez encore les autres. Durcissez le service lui-même avec le guide de durcissement RDP. Pour les schémas de chasse PowerShell, voir détecter le PowerShell malveillant.
Interroger les événements
Get-WinEvent avec une table de hachage de filtre est rapide, car le filtrage a lieu dans le service de journal des événements :
# Échecs d'ouverture de session des dernières 24 heures, groupés par compte, source et raison
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4625; StartTime = (Get-Date).AddDays(-1) } |
ForEach-Object {
$d = @{}; ([xml]$_.ToXml()).Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
[pscustomobject]@{ Account = $d.TargetUserName; Source = $d.IpAddress; SubStatus = $d.SubStatus }
} | Group-Object Account, Source, SubStatus | Sort-Object Count -Descending | Select-Object -First 20 Count, NamePour filtrer sur les champs de données de l'événement, utilisez XPath :
# Ouvertures de session RDP
Get-WinEvent -LogName Security -MaxEvents 50 `
-FilterXPath "*[System[EventID=4624] and EventData[Data[@Name='LogonType']='10']]"
# Tickets de service RC4 sur un DC
Get-WinEvent -LogName Security -MaxEvents 100 `
-FilterXPath "*[System[EventID=4769] and EventData[Data[@Name='TicketEncryptionType']='0x17']]"Les requêtes locales servent à l'investigation et aux tests. Pour la détection, envoyez ces événements vers un stockage central avec Windows Event Forwarding ou un agent.
Ce qui casse
- Des événements manquants signifient généralement que la sous-catégorie est désactivée, que le journal a bouclé ou qu'une SACL manque.
auditpol /get /category:*affiche la stratégie effective. - Le volume : les 4624, 4634, 4688, 4769 et 5140 sont très volumineux sur les serveurs et les DC. Collectez-les, mais alertez sur des agrégats et des anomalies plutôt que sur des événements isolés.
- Des champs mal interprétés : un 4624 sur un serveur reflète le point de vue du serveur ; l'adresse source peut être un NAT, un proxy, ou vide pour les ouvertures de session locales. Le 4740 apparaît sur les contrôleurs de domaine, pas sur le client.
- Les messages localisés : analysez les champs à partir du XML de l'événement, pas du texte du message rendu, qui change selon la langue de l'OS.
Vérifier
Sur une machine de test et un DC de test, générez quelques événements et confirmez qu'ils sont journalisés et transférés : un échec d'ouverture de session avec un mauvais mot de passe (4625, 0xC000006A), un utilisateur de test ajouté à un groupe de test (4732 ou 4728), une tâche planifiée créée avec Register-ScheduledTask (4698) et un service créé avec New-Service (7045, 4697). Supprimez ensuite les objets de test. Si un événement n'apparaît pas, corrigez la stratégie d'audit avant de bâtir des détections dessus. Pour aller plus loin sur la chaîne de journalisation, voir la page thématique audit et journalisation.
Liste de contrôle
- Types d'ouverture de session et codes de sous-statut du 4625 connus de chaque analyste
- Sous-catégories d'audit et SACL en place pour que chaque événement listé puisse réellement se déclencher
- Alertes sur 1102, 104, 4719, 7045/4697, les modifications de groupes privilégiés et Defender 5001/5013
- Surveillance Kerberos sur les DC : tickets RC4, pré-authentification désactivée, pics de 4771
- Détection du DCSync via les GUID de réplication dans les 4662 émis par des comptes qui ne sont pas des DC
- Journal Task Scheduler Operational activé ; journaux RDP collectés
- Requêtes analysant les champs XML des événements, pas les messages rendus
- Événements de test générés et confirmés de bout en bout après chaque modification de stratégie
Questions fréquentes
Pourquoi certains de ces événements n'apparaissent-ils pas sur mes machines ?
La plupart des événements du journal Sécurité n'apparaissent que lorsque la sous-catégorie de stratégie d'audit avancée correspondante est activée, et certains exigent en plus une entrée d'audit (SACL) sur l'objet, comme une clé de registre ou la racine du domaine. Vérifiez la stratégie effective avec auditpol /get /category:* et comparez-la au référentiel avant de conclure qu'il ne s'est rien passé.
Sur quels événements alerter en premier ?
Commencez par les événements rares à fort signal : journal Sécurité effacé (1102), autres journaux effacés (104), nouveaux services (7045 et 4697), ajouts à des groupes privilégiés (4728, 4732, 4756 pour les groupes d'administration), protection Defender désactivée (5001) et droits de réplication utilisés par des comptes qui ne sont pas des DC (4662). Ils se déclenchent rarement et méritent presque toujours un examen.
L'événement 4625 suffit-il à lui seul pour détecter la pulvérisation de mots de passe ?
C'est le signal central, mais il faut l'agréger. La pulvérisation se manifeste par de nombreux comptes différents en échec depuis une même source avec le sous-statut « mauvais mot de passe », étalés dans le temps pour éviter les verrouillages. Sur les contrôleurs de domaine, surveillez aussi le 4771 avec le code d'échec 0x18 et le 4776 avec 0xC000006A, car la tentative peut passer par Kerberos ou NTLM plutôt que par une ouverture de session interactive.
Les ID d'événements de sécurité Windows qui comptent