Aller au contenu
10 · Audit & journalisationPartie 4 sur 4Fondamental

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.

Florian Amette11 min de lecture

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 :

TypeNomCause typique
2InteractiveOuverture de session en console, y compris RunAs
3NetworkPartage SMB, WinRM, exécution distante de type PsExec, la plupart des tâches d'administration à distance
4BatchTâche planifiée
5ServiceService démarré sous un compte
7UnlockDéverrouillage de la station
8NetworkCleartextIdentifiants envoyés en clair au serveur, par exemple l'authentification Basic d'IIS
9NewCredentialsrunas /netonly ; identité locale inchangée, nouveaux identifiants utilisés sur le réseau
10RemoteInteractiveRDP
11CachedInteractiveOuverture 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

IDSignificationChamps à lire
4624Ouverture de session réussieLogon Type, Account, Source Network Address, Workstation, Authentication Package, Elevated Token, Logon ID
4625Échec d'ouverture de sessionStatus et Sub Status, Logon Type, adresse source
4634 / 4647Fermeture de session / fermeture initiée par l'utilisateurLogon ID pour rapprocher du 4624
4648Ouverture de session avec identifiants explicitesProcessus, serveur cible, compte utilisé
4672Privilèges spéciaux attribués à la nouvelle sessionSession équivalente administrateur ; Logon ID
4740Compte verrouillé (DC)Caller Computer Name : d'où venaient les tentatives erronées
4767Compte déverrouilléQui l'a déverrouillé
4778 / 4779Session reconnectée / déconnectéeRDP 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 StatusSignification
0xC0000064Le compte n'existe pas
0xC000006AMauvais mot de passe
0xC0000234Compte verrouillé
0xC0000072Compte désactivé
0xC0000193Compte expiré
0xC0000071Mot de passe expiré
0xC0000224Le mot de passe doit être changé à la prochaine ouverture de session
0xC000006F / 0xC0000070En dehors des heures d'ouverture de session / restriction de poste de travail
0xC000015BType 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

IDSignificationCe qu'il faut chercher
4768TGT Kerberos demandéPre-Authentication Type 0 : le compte n'exige pas de pré-authentification (vulnérable à l'AS-REP roasting)
4769Ticket 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 KerberosCode d'échec 0x18 mauvais mot de passe, 0x12 compte désactivé/verrouillé/expiré, 0x17 mot de passe expiré, 0x25 décalage d'horloge
4776Validation d'identifiants NTLMErreur 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

IDSignification
4720 / 4726Compte utilisateur créé / supprimé
4722 / 4725Compte utilisateur activé / désactivé
4723 / 4724Tentative de changement de mot de passe par l'utilisateur / réinitialisation par un tiers
4738Compte utilisateur modifié (indicateurs UAC, modifications liées aux SPN, mot de passe qui n'expire jamais)
4728 / 4729Membre ajouté à / retiré d'un groupe de sécurité global
4732 / 4733Membre ajouté à / retiré d'un groupe de sécurité local ou local au domaine
4756 / 4757Membre ajouté à / retiré d'un groupe de sécurité universel
4741 / 4742Compte d'ordinateur créé / modifié (DC)
4794Tentative de définition du mot de passe administrateur DSRM (DC)
5136Objet de l'annuaire modifié (DC, nécessite Directory Service Changes et des SACL)
4662Opé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

IDJournalSignification
4688SecurityProcessus créé (activez la capture de la ligne de commande)
4697SecurityService installé (sous-catégorie Security System Extension)
7045SystemService installé (Service Control Manager, toujours journalisé)
7040SystemType de démarrage d'un service modifié
4698 / 4702SecurityTâche planifiée créée / mise à jour
4699 / 4700 / 4701SecurityTâche planifiée supprimée / activée / désactivée
106 / 140 / 141Microsoft-Windows-TaskScheduler/OperationalTâche enregistrée / mise à jour / supprimée (journal souvent désactivé par défaut ; activez-le)
4657SecurityValeur de registre modifiée (uniquement avec une SACL sur la clé)
5140SecurityAccè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

IDJournalSignification
1102SecurityJournal Sécurité effacé
104SystemAutre journal d'événements effacé
4719SecurityStratégie d'audit système modifiée
4616SecurityHeure système modifiée
4907SecurityParamètres d'audit (SACL) d'un objet modifiés
5001Microsoft-Windows-Windows Defender/OperationalProtection en temps réel désactivée
5007Microsoft-Windows-Windows Defender/OperationalConfiguration de Defender modifiée (y compris les exclusions)
5013Microsoft-Windows-Windows Defender/OperationalLa protection contre les falsifications a bloqué une modification
1116 / 1117Microsoft-Windows-Windows Defender/OperationalLogiciel 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

IDJournalSignification
1149Microsoft-Windows-TerminalServices-RemoteConnectionManager/OperationalAuthentification réseau RDP réussie, avec adresse source
21 / 24 / 25Microsoft-Windows-TerminalServices-LocalSessionManager/OperationalOuverture / déconnexion / reconnexion de session RDP
4104Microsoft-Windows-PowerShell/OperationalBloc de script journalisé
400Windows PowerShellMoteur 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 :

PowerShell
# É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, Name

Pour filtrer sur les champs de données de l'événement, utilisez XPath :

PowerShell
# 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

Guides associés

Audit & journalisation

Déployer et ajuster Sysmon à grande échelle

Choisissez une configuration Sysmon, réduisez le bruit sans créer d'angles morts, déployez les mises à jour sur des milliers d'hôtes et surveillez Sysmon lui-même.

Intermédiaire