Stratégie d'audit de sécurité Windows et investigation des journaux d'événements — devenir une équipe IT capable de lire un 4625

· · Windows, Sécurité, Journal des événements, Politique d'audit, Conception des journaux, PowerShell, Systèmes d'information

Historique des révisions (première version, publiée le 1 Aug 2026)
Première publication
Citer cet article(DOI (archive enregistrée): 10.5281/zenodo.22175679)

Les DOI ci-dessous renvoient à des versions déjà archivées et peuvent différer du texte actuel. Pour citer le texte actuel, utilisez l’URL de cette page.

Go Komura (2026). Stratégie d'audit de sécurité Windows et investigation des journaux d'événements — devenir une équipe IT capable de lire un 4625. KomuraSoft LLC. https://comcomponent.com/fr/blog/windows-security-audit-policy-guide/

DOI (archive enregistrée)
10.5281/zenodo.22175679
DOI (dernière version enregistrée)
10.5281/zenodo.22175680

« Un compte se verrouille sans arrêt depuis hier soir. Trouvez la cause. » « Vérifiez si quelqu’un tente de se connecter avec le compte d’un ancien employé. » « Pouvez-vous dire quand et qui a exécuté quoi sur ce serveur ? » — ce sont les demandes qui atterrissent sans prévenir chez les responsables informatiques d’une PME, ou chez un développeur qui livre des systèmes chez un client. Et ce sur quoi l’on finit par s’appuyer, c’est le journal d’événements Security de Windows.

Ouvrez l’Observateur d’événements, toutefois, et deux réalités vous attendent. Soit l’événement que vous voulez n’a jamais été enregistré (la stratégie d’audit n’était pas activée), soit il est enseveli sous un déluge d’événements et illisible (le journal est plein de bruit et a gonflé). L’audit de sécurité est quelque chose que l’on « obtient si on l’active », mais tant que vous n’avez pas conçu ce qu’il faut enregistrer et jusqu’où, il ne vous aidera pas le jour où cela compte.

Les deux réalités qui attendent dans l'Observateur d'événementsOuvrez l'Observateur d'événements et il y a deux réalités, soit la stratégie d'audit n'était pas activée donc l'événement voulu n'a jamais été enregistré, soit le journal est plein de bruit et a gonflé donc l'événement est enseveli sous un déluge d'entrées, ce qui signifie qu'il faut concevoir ce qu'il faut enregistrer et jusqu'oùNon enregistréEnseveliOuvrir l'Observateur d'événementsQuelle réalité attend ?L'événement voulu n'a jamais été enregistréIllisible sous un déluge d'événementsStratégie d'audit désactivéePlein de bruit et devenu énormeConcevoir ce qu'il faut enregistrer et jusqu'où

Figure 1 : Soit « non enregistré », soit « enseveli et illisible ». Les deux viennent de n’avoir jamais conçu la portée de ce qu’il faut enregistrer.

Cet article sépare deux choses : les paramètres qui gardent les journaux dont une investigation a besoin, et la procédure pour trouver la cause dans les journaux que vous avez. Il couvre le fonctionnement de la stratégie d’audit (les deux systèmes, de base et avancé), les sous-catégories qu’un environnement de petite ou moyenne taille devrait activer au minimum, la lecture de 4624/4625/4740/4688, la conception de la capacité du journal Security, et l’investigation avec PowerShell. Les explications techniques s’appuient sur des sources primaires à la date d’août 2026.

Si les articles déjà traités sur ce site — l’audit NTLM, la signature SMB, BitLocker et le pare-feu — portent sur le durcissement des défenses, celui-ci porte sur rendre possible de confirmer après coup ce qui s’est passé, et c’est la suite qui les relie.

1. D’abord la conclusion

Pour rendre vos journaux utilisables pour une investigation, alignez trois choses : enregistrer ce dont vous avez besoin, lire le bon élément sur la bonne machine, et le préserver avant qu’il ne disparaisse. L’important est de ne pas s’arrêter à l’activation de l’audit.

Si vous allez configurer l’audit : uniformisez côté avancé et n’enregistrez que le nécessaire

  • La stratégie d’audit existe en deux systèmes, « de base » et « avancé » (Advanced Audit Policy), et il ne faut pas les mélanger. Microsoft indique explicitement qu’utiliser les deux laisse les résultats d’audit dans un état inattendu. Uniformisez-vous côté avancé (plus de 40 sous-catégories).1
  • Pour vérifier l’état actuel, exécutez auditpol /get /category:*. Cela liste les paramètres d’audit actuellement en vigueur, qu’ils viennent d’une GPO ou d’une configuration locale.2
  • N’activez pas « tout ». Activer des sous-catégories qui génèrent d’énormes volumes d’événements enterre les événements qui comptent dans le bruit, et affecte aussi les performances. Partez des recommandations de référence de Microsoft et n’ajoutez que ce dont vous avez besoin.34

Si vous enquêtez maintenant : vérifiez la machine d’enregistrement et les champs, pas seulement l’ID d’événement

  • Une ouverture de session réussie est 4624 et un échec est 4625. Pour 4624, vous lisez « de quel type d’ouverture de session il s’agit » d’après le type d’ouverture de session (2 = interactive, 3 = réseau, 10 = Bureau à distance, etc.).5
  • Pour 4625, les codes Status/Sub Status indiquent la raison de l’échec. L’ensemble standard est 0xC0000064 = le nom d’utilisateur n’existe pas, 0xC000006A = mot de passe erroné, 0xC0000072 = compte désactivé, 0xC0000234 = compte verrouillé.6
  • La machine sur laquelle un événement est enregistré est fixe. 4624/4625 vont à la machine à laquelle on a accédé, la validation des informations d’identification (4776) va à la machine qui a autorité sur ces informations (un contrôleur de domaine pour un compte de domaine), et l’échec de préauthentification Kerberos (4771) va à un contrôleur de domaine. Consulter la mauvaise machine vous fera diagnostiquer à tort « il n’y a pas de journal ».678

Nécessaire dans les deux cas : concevoir la conservation des journaux et le traitement des informations sensibles

  • Pour le journal Security, la conception du contenant (taille maximale et conservation) est la moitié du travail. Si la conservation est réglée sur l’écrasement, les événements les plus anciens disparaissent un par un. Vérifiez la taille maximale et le nombre d’enregistrements avec Get-WinEvent -ListLog Security, et étendez-la en partant du nombre de jours que vous devez conserver.910
  • L’enregistrement de la ligne de commande pour la création de processus (4688) est puissant, mais la contrepartie est le risque de voir des secrets atterrir en clair dans le journal. Passez vos scripts en revue avant de l’activer.1112

Choisissez où lire selon votre objectif ou votre symptôme

Ce que vous voulez savoir maintenant Ce qu’il faut d’abord clarifier Où lire
Je veux remettre de l’ordre dans les paramètres d’audit Vérifier les paramètres réellement en vigueur et la capacité du journal, puis choisir les sous-catégories nécessaires Section 2 : vérification des paramètres, Section 5 : capacité et conservation, Section 3 : le tableau de décision
Je veux lire les succès et les échecs de connexion Pour un succès, regarder le type d’ouverture de session ; pour un échec, regarder Status/Sub Status 4.1 : 4624, 4.2 : 4625
Je veux savoir pourquoi un compte se verrouille sans cesse Trouver l’origine avec 4740, et vérifier aussi la destination et le DC pour la trace des échecs 4.3 : 4740
Je veux savoir qui a exécuté quoi Lire le processus parent dans 4688 et la définition de tâche dans 4698. Ajouter l’enregistrement de la ligne de commande exige d’abord une revue 4.5 : 4688, 4.6 : 4698, Section 7 : pièges
Le journal que je veux manque, ou disparaît vite Vérifier où il est enregistré, les paramètres d’audit, et la période réellement conservée Section 2, Section 5, Section 7
Je veux examiner les journaux en masse Les préserver d’abord en evtx, puis extraire par ID et plage horaire 6.3 : préservation, 6.2 : PowerShell

Si une demande d’investigation vous a déjà été remise, préservez le journal avec la méthode de 6.3, vérifiez les notes sur les machines d’enregistrement et la synchronisation des horloges à la section 7, puis lisez l’événement concerné à la section 4. Si vous remettez de l’ordre dans les paramètres, vérifiez l’état actuel aux sections 2 et 5, puis passez à la section 3.

Dans le diagramme, un trait continu marque une relation qui vaut toujours et un trait pointillé une relation conditionnelle (les conditions figurent dans l’explication de chaque relation sur la page de détail). La liste complète des relations (34 au total, avec preuve et niveau de certitude) et les définitions des concepts principaux sont rassemblées sur la page de détail de la carte des connaissances (en japonais). Données : JSON-LD / Turtle

2. Fondamentaux de la stratégie d’audit — ne pas mélanger « de base » et « avancé »

2.1. Comprendre la différence d’emplacement et de granularité

La stratégie d’audit Windows existe en deux systèmes.1

  • Stratégie d’audit de base : les neuf paramètres de catégorie sous « Stratégies locales > Stratégie d’audit ». C’est l’ancien système, antérieur à Windows Vista.
  • Stratégie d’audit avancée (Advanced Audit Policy Configuration) : les plus de 40 paramètres de sous-catégorie sous « Paramètres de sécurité > Configuration avancée de la stratégie d’audit ». Chaque catégorie de base est décomposée en plusieurs sous-catégories ; la seule catégorie de base « Auditer les événements d’ouverture de session de compte », par exemple, correspond à quatre sous-catégories côté avancé. Activer une catégorie côté de base équivaut à activer toutes les sous-catégories correspondantes, ce qui enregistre d’énormes volumes d’événements qui ne vous intéressent pas.1

2.2. Uniformisez côté avancé et empêchez le côté de base de l’écraser

Le point important est que les deux systèmes ne sont pas compatibles. Microsoft indique explicitement de ne pas utiliser à la fois la stratégie d’audit de base et la stratégie d’audit avancée, parce que les résultats d’audit se retrouvent dans un état inattendu.

Lorsque vous appliquez la stratégie d’audit avancée par Stratégie de groupe, les paramètres d’audit existants de l’ordinateur sont d’abord effacés, puis les paramètres avancés sont appliqués, et à partir de là seul le côté avancé vous donne un contrôle fiable.

Dans un environnement qui utilise le côté avancé, activez l’option de sécurité « Audit : forcer les paramètres de sous-catégorie de la stratégie d’audit (Windows Vista ou version ultérieure) à remplacer les paramètres de catégorie de la stratégie d’audit » afin que le côté de base n’écrase pas vos paramètres (elle est activée par défaut sur les machines autonomes).14

La relation entre la stratégie d'audit de base et avancéeLa stratégie d'audit de base et la stratégie d'audit avancée ne sont pas compatibles et les utiliser toutes les deux laisse les résultats d'audit dans un état inattendu, donc uniformisez côté avancé et activez le forçage des paramètres de sous-catégorie pour empêcher le côté de base de les écraserOuiNonStratégie d'audit de base (9 catégories)Utiliser les deux ?Stratégie d'audit avancée (plus de 40 sous-catégories)Résultats d'audit dans un état inattenduUniformiser côté avancéActiver le forçage des paramètres de sous-catégorieEmpêche les paramètres de base d'écraser

Figure 2 : Les deux systèmes ne sont pas compatibles. Uniformisez côté avancé et utilisez le paramètre « forcer » pour empêcher le côté de base de l’écraser.

2.3. Utilisez auditpol pour vérifier la stratégie réellement en vigueur

Vérifier l’état actuel tient en une seule commande. Exécutez-la depuis une invite de commandes administrateur.2

L’exemple suivant montre trois opérations distinctes : afficher l’état actuel, en faire une sauvegarde avant une modification, et restaurer. Vérifiez d’abord l’affichage, et prenez une sauvegarde avant de modifier. La ligne /restore est ce que vous exécutez lorsque vous devez restaurer, pas une étape à enchaîner juste après l’affichage pour vérifier l’état actuel.

rem Liste les paramètres d'audit actuellement en vigueur, par sous-catégorie
auditpol /get /category:*

rem Sauvegarde (CSV) avant une modification, et restauration
auditpol /backup /file:C:\logs\auditpol-backup.csv
auditpol /restore /file:C:\logs\auditpol-backup.csv

La sortie d’auditpol est « la stratégie en vigueur comme résultat », qu’elle vienne d’une GPO ou d’une configuration locale. Cela la rend aussi utile pour recouper lorsque des paramètres que vous croyez distribuer par GPO n’ont pas pris effet.

Notez que modifier les paramètres d’audit eux-mêmes enregistre l’événement 4719, donc « l’audit avait été discrètement désactivé » est aussi traçable après coup.12

Ce qu'auditpol montre est la stratégie résultanteLa sortie d'auditpol est la stratégie d'audit en vigueur comme résultat qu'elle vienne d'une GPO ou de paramètres locaux, donc elle peut servir à recouper lorsque des paramètres GPO n'ont pas pris effet, et les modifications des paramètres d'audit eux-mêmes restent traçables après coup via l'événement 4719Paramètres distribués par GPOLa stratégie en vigueur comme résultatParamètres locauxLister avec auditpol /getUtilisable pour recouper quand la GPO n'a pas été appliquéeModification des paramètres d'audit eux-mêmes4719 est enregistré et traçable après coup

Figure 3 : auditpol renvoie « les paramètres en vigueur » quel que soit leur origine. Les modifications des paramètres d’audit eux-mêmes restent dans 4719.

3. Un tableau de décision des sous-catégories à activer au minimum

3.1. Pourquoi « tout activer » est une erreur

La raison pour laquelle « activez simplement tout » est une mauvaise idée est claire. Microsoft avertit, par exemple, que l’audit des sous-catégories d’utilisation des privilèges jusqu’au succès produit de tels volumes d’événements que trouver les autres entrées devient difficile, et qu’il y a aussi un impact sur les performances.4 Le contenant du journal (section 5) est fini, donc plus vous enregistrez de bruit, moins il reste de jours de conservation pour les événements dont vous avez réellement besoin. La conception de l’audit, c’est décider ce qu’il ne faut pas enregistrer.

Pourquoi tout activer est une mauvaise idéeActiver chaque sous-catégorie génère d'énormes volumes d'événements qui enterrent les événements qui comptent dans le bruit et affectent les performances, et dans un contenant de journal fini cela entame aussi la durée de conservation des événements dont vous avez besoinActiver chaque sous-catégorieÉnormes volumes d'événementsLes événements qui comptent sont ensevelisImpact sur les performancesLa durée de conservation est entaméeLa conception de l'audit, c'est décider ce qu'il ne faut pas enregistrer

Figure 4 : « Tout activer » enterre les événements qui comptent. La conception de l’audit, c’est décider ce qu’il ne faut pas enregistrer.

3.2. Partez de la référence et choisissez les traces dont vous avez besoin

Microsoft publie des recommandations de référence et des recommandations renforcées séparément pour les postes de travail et les serveurs, et c’est le point de départ.3 Par-dessus, le tableau ci-dessous organise les choses du point de vue « au minimum, voilà ce que je veux pouvoir lire pendant un incident » d’un environnement de petite ou moyenne taille. C’est le tableau de décision de cet article, construit à partir des recommandations de Microsoft comme point de départ, pas une liste de paramètres à appliquer uniformément à tous les environnements.

Sous-catégorie (catégorie) Principaux ID d’événement Ce qu’elle vous dit Recommandation pour les environnements de petite ou moyenne taille
Audit Logon (Logon/Logoff) 4624 / 4625 Succès et échecs de connexion, type d’ouverture de session, source Succès + échec. Le succès et l’échec sont activés par défaut sur Windows 10 1809 et versions ultérieures3
Audit Special Logon (idem) 4672 / 4964 Occurrence d’une ouverture de session portant un privilège d’administration Succès
Audit Account Lockout (idem) 4625 Échec d’ouverture de session contre un compte verrouillé Échec (4625 est un événement d’échec ; il n’y a pas d’événement de succès dans cette sous-catégorie)13
Audit User Account Management (Account Management) 4720 / 4726 / 4738 / 4740 Création, suppression, modification et verrouillage de compte Succès + échec
Audit Security Group Management (idem) 4728 / 4732 / 4756 (ajout), 4729 / 4733 / 4757 (retrait) Membres ajoutés à ou retirés de groupes tels que le groupe des administrateurs (global/local/universel) Succès (il n’y a pas d’événement d’échec dans cette sous-catégorie)14
Audit Credential Validation (Account Logon) 4776 Succès ou échec de l’authentification NTLM. Pour les comptes de domaine, cela s’enregistre sur le DC7 Succès + échec
Audit Kerberos Authentication Service (idem, DC uniquement) 4768 / 4771 Émission de TGT et échecs de préauthentification tels qu’un mot de passe erroné8 Succès + échec sur les DC
Audit Process Creation (Detailed Tracking) 4688 Qui a démarré quoi, et depuis quel processus parent Succès. Lisez les mises en garde de la section 7 avant d’activer l’enregistrement de la ligne de commande
Audit Other Object Access Events (Object Access) 4698 Création de tâches planifiées (un classique de la persistance des attaquants)15 Envisager le succès
Audit Audit Policy Change (Policy Change) 4719 Modifications des paramètres d’audit eux-mêmes Succès + échec

3.3. Pour ceux qui s’enregistrent en masse, restreignez les cibles et la fenêtre temporelle

À l’inverse, il est plus sûr de ne pas toucher par défaut à l’audit d’accès aux objets pour le système de fichiers et le Registre, à l’utilisation des privilèges, ni aux sous-catégories de filtre de paquets (5152 et assimilés). Ceux-ci font leurs preuves avec une configuration SACL étroitement ciblée ou une fenêtre limitée dans le temps pendant le triage ; les ouvrir en grand en permanence dévorera votre journal.4

Comment traiter les sous-catégories à fort volumeL'audit d'accès aux objets pour le système de fichiers et le Registre, l'utilisation des privilèges et les sous-catégories de filtre de paquets dévorent le journal lorsqu'ils restent ouverts en grand en permanence, et ne font leurs preuves qu'avec une configuration SACL étroitement ciblée ou une fenêtre limitée dans le temps pendant le triageOuvertes en grand en permanenceSACL étroitement cibléeFenêtre limitée pendant le triageSous-catégories à fort volumeComment les activez-vous ?Audit d'accès aux objetsUtilisation des privilèges et sous-catégories de filtre de paquetsDévorent le journalFont leurs preuvesFont leurs preuves

Figure 5 : Ne laissez pas l’accès aux objets ou l’utilisation des privilèges ouverts en grand en permanence. Ils ne font leurs preuves qu’avec des cibles et des fenêtres temporelles restreintes.

4. Comment lire les ID d’événement standard

Vérifiez trois choses comme un ensemble : de quel événement il s’agit, sur quelle machine il reste, et quel champ regarder. Les ouvertures de session commencent en 4.1 et 4.2, les verrouillages en 4.3, les modifications de compte en 4.4, et les opérations qui ont été exécutées en 4.5 et 4.6. Dans une investigation réelle, préservez d’abord le journal avec la méthode de 6.3.

4.1. 4624 — Triez les ouvertures de session réussies par type d’ouverture de session

4624 est « Un compte s’est connecté », et il est enregistré sur la machine où la session d’ouverture de session a été créée, c’est-à-dire la machine à laquelle on a accédé.5 Comme il s’enregistre en grand nombre, commencez par le trier par type d’ouverture de session lorsque vous le lisez.5

Type d’ouverture de session Nom Ce que cela signifie en pratique
2 Interactive Connexion à la console de ce PC
3 Network Accès par le réseau (dossiers partagés, outils d’administration, etc.). Le type le plus courant, puisqu’il apparaît une fois par machine
4 Batch Exécution par lots (tâches planifiées, etc.)
5 Service Démarrage d’un service (Service Control Manager)
7 Unlock Déverrouillage d’un écran verrouillé
8 NetworkCleartext Une ouverture de session réseau où le mot de passe a été passé au package d’authentification en clair
9 NewCredentials Duplication avec des informations d’identification différentes (équivalent de runas /netonly)
10 RemoteInteractive Bureau à distance
11 CachedInteractive Connexion avec des informations d’identification en cache (lorsque le DC est injoignable)

Après le tri par type, regardez le compte, la source et le privilège

Les autres champs à regarder sont le nom de compte sous « New Logon », l’adresse source sous « Network Information », le « Authentication Package » (NTLM ou Kerberos), et l’« Elevated Token » (s’il s’agit d’une session d’administration). Si vous voulez suivre uniquement les ouvertures de session administratives, vous pouvez aussi utiliser 4672 (privilèges spéciaux attribués à une nouvelle ouverture de session), qui s’enregistre avec le même ID d’ouverture de session.5

La procédure pour trier les 4624Parce que 4624 s'enregistre en grand nombre, triez-le d'abord par type d'ouverture de session, puis vérifiez le nom de compte et la source, le package d'authentification et le jeton élevé, et recoupez les ouvertures de session administratives avec le 4672 portant le même ID d'ouverture de session4624 ouverture de session réussieTrier par type d'ouverture de sessionVérifier les champs principauxNom de compte et sourcePackage d'authentificationJeton élevéSuivre le privilège d'administrationLe 4672 avec le même ID d'ouverture de session

Figure 6 : Triez 4624 par type d’ouverture de session avant de lire les champs. Corrélez les ouvertures de session privilégiées avec 4672.

4.2. 4625 — Fixez la raison de l’échec avec les codes Status/Sub Status

4625 est « Un compte n’a pas pu se connecter », et il est enregistré sur la machine où l’ouverture de session a été tentée.6 Plutôt que le libellé du champ « Failure Reason », lire les codes hexadécimaux Status/Sub Status est l’approche fiable. L’ensemble standard est le suivant.6

D’abord, lisez la raison de l’échec d’après Status/Sub Status

  • 0xC0000064 : le nom d’utilisateur n’existe pas. Une série de ceux-ci dans une courte fenêtre est un signe d’attaque par énumération de comptes
  • 0xC000006A : mot de passe erroné. Une série de ceux-ci contre un compte précis est un signe d’attaque par essai de mots de passe
  • 0xC000006D : nom d’utilisateur ou informations d’authentification incorrects
  • 0xC000006F : en dehors des heures autorisées
  • 0xC0000070 : depuis un poste de travail non autorisé
  • 0xC0000072 : compte désactivé par un administrateur (les tentatives contre le compte d’un ancien employé apparaissent ici)
  • 0xC000015B : le type d’ouverture de session demandé n’est pas accordé sur cette machine
  • 0xC0000193 : compte expiré
  • 0xC0000234 : compte verrouillé

Combinez le compte cible, la source et la raison de l’échec

« Qui, d’où, et pourquoi cela a échoué » se fixe par l’ensemble de trois : le compte cible, la source (nom de poste / adresse IP), et ce code. La section 6.2 a du PowerShell qui extrait les trois en une passe.

Le flux pour fixer la raison d'un échec 4625Fixez la raison d'un échec 4625 avec le code hexadécimal Status/Sub Status, lisez les signes d'une attaque d'après le motif des codes, puis identifiez-la avec l'ensemble de trois qui ajoute le compte cible et la sourceUne série de 0xC0000064Une série de 0xC000006A0xC00000724625 échec de connexionVérifier le code Sub StatusQuel est le motif des codes ?Signe d'énumération de comptesSigne d'essai de mots de passeTentative contre le compte d'un ancien employéLe fixer avec l'ensemble de troisCompte cible + source + code

Figure 7 : Fixez la raison avec le code, et lisez-la avec le compte cible et la source comme un ensemble de trois.

4.3. 4740 — L’origine d’un verrouillage est le « Caller Computer Name »

Trouver l’origine : le nom de l’ordinateur appelant dans 4740

4740 est « Un compte d’utilisateur a été verrouillé » (la sous-catégorie est Audit User Account Management). Le champ qui pilote cet événement est « Caller Computer Name », qui enregistre de quel ordinateur provenait la tentative d’ouverture de session qui a déclenché le verrouillage.16 Le geste standard est d’identifier ici le poste d’origine, puis de passer ce poste au crible pour les anciennes informations d’identification qui y restent.

Dans la plupart des cas, la cause est quelque chose qui continue d’utiliser d’anciennes informations d’identification après un changement de mot de passe : informations d’identification enregistrées, une session RDP restée déconnectée, ou un service ou une tâche configuré avec l’ancien mot de passe.

Le geste standard pour enquêter sur un verrouillage de compteIdentifiez le poste d'origine d'après le nom de l'ordinateur appelant dans 4740, et passez ce poste au crible pour les informations d'identification enregistrées, les sessions Bureau à distance restées déconnectées, et les services ou tâches configurés avec l'ancien mot de passe4740 verrouillage survenuVérifier le nom de l'ordinateur appelantIdentifier le poste d'originePasser au crible les anciennes informations d'identificationInformations d'identification enregistréesSessions RDP restées déconnectéesServices et tâches avec l'ancien mot de passe

Figure 8 : Identifiez l’origine d’après le « Caller Computer Name » de 4740, puis passez ce poste au crible pour les anciennes informations d’identification.

Trouver la trace de l’échec : regardez le côté qui l’a accepté, pas l’origine

Il y a une mise en garde. 4625 s’enregistre sur l’ordinateur qui a accepté la tentative d’ouverture de session. Si la cause est une ouverture de session réseau depuis le poste d’origine vers un serveur de fichiers ou similaire, aucun 4625 ne reste dans le journal Security du poste d’origine lui-même ; la trace reste dans le 4625 du serveur de destination, ou, pour un compte de domaine, dans 4776 (NTLM) / 4771 (échec de préauthentification Kerberos) sur le DC.78 Lorsque « il n’y a rien dans le journal du poste d’origine », allez regarder le côté qui a accepté.

Le flux de l’investigation peut s’organiser ainsi : trouver l’origine d’après l’appelant dans 4740, recouper chronologiquement le 4625 de la destination et le 4776/4771 du DC, puis vérifier les informations d’identification enregistrées, les services, les tâches, etc. sur le poste d’origine. Trouver l’origine et trouver où les événements d’échec sont enregistrés sont deux choses différentes.

Les machines où la trace d'un échec resteUn échec d'ouverture de session réseau ne reste pas sur le poste d'origine lui-même mais s'enregistre dans le 4625 du serveur de destination qui a accepté la tentative, et pour un compte de domaine la trace reste aussi dans 4776 ou 4771 sur le DCOuverture de session réseauAuthentification de compte de domainePoste d'origine (pas de 4625 propre)Serveur de destination4625 est enregistréContrôleur de domaine4776 (NTLM) / 4771 (Kerberos)

Figure 9 : 4625 reste du côté qui a accepté la tentative. S’il n’y a rien sur le poste d’origine, regardez le serveur de destination et le DC.

4.4. La famille 4720 — Création, modification de compte et ajouts à un groupe

Séparez les modifications de compte des modifications d’appartenance à un groupe

Les événements de gestion des comptes s’enchaînent : 4720 (un compte d’utilisateur a été créé)17, 4726 (supprimé), 4738 (modifié), puis les ajouts et retraits de membres côté groupe.

Notez que les modifications d’appartenance à un groupe se répartissent entre ID d’événement selon le type de groupe. Les groupes locaux sont 4732/4733, les groupes globaux 4728/4729, et les groupes universels 4756/4757.14 Domain Admins est un groupe global, donc un ajout s’y enregistre dans 4728 — faites de 4732 seul votre condition d’alerte et vous manquerez précisément ce que vous voulez le plus voir.

Un ajout inattendu à un groupe d’administrateurs mérite une investigation même isolé

Au quotidien, ce sont des traces du travail du support, mais « un utilisateur standard a soudain été ajouté à un groupe d’administrateurs » ou « un compte que personne ne connaît a été créé » est un sujet d’investigation immédiat même en occurrence unique. Microsoft liste aussi un ajout inattendu de membre à un groupe privilégié comme exemple d’événement sur lequel alerter individuellement.3

Types de groupes et événements d'ajout de membreUn ajout de membre à un groupe se répartit entre ID d'événement selon le type de groupe, enregistré en 4732 pour un groupe local, 4728 pour un groupe global et 4756 pour un groupe universel, donc un ajout au groupe global Domain Admins apparaît en 4728LocalGlobalUniverselMembre ajouté à un groupeQuel type de groupe ?Enregistré en 4732Enregistré en 4728Enregistré en 4756Les ajouts à Domain Admins atterrissent iciSurveiller seulement 4732 les rate

Figure 10 : L’ID d’événement d’un ajout de membre se sépare selon le type de groupe. Un ajout à Domain Admins est 4728.

4.5. 4688 — Création de processus. L’enregistrement de la ligne de commande est un interrupteur séparé

Ce que l’audit de création de processus vous dit

4688 est « Un nouveau processus a été créé », et à chaque création de processus il enregistre le compte qui l’a créé, le chemin de l’exécutable du nouveau processus, le processus parent, et le type d’élévation de jeton.11 C’est un événement d’investigation de grande valeur, qui peut répondre à « qui a exécuté quoi sur ce serveur ».

Conserver la ligne de commande exige un paramètre séparé et d’abord une revue

Par défaut, toutefois, les arguments de ligne de commande ne sont pas enregistrés. Ce n’est que lorsque vous activez séparément le paramètre de Stratégie de groupe « Inclure la ligne de commande dans les événements de création de processus » (Modèles d’administration > Système > Audit de la création de processus) que les arguments apparaissent dans le champ « Process Command Line » de 4688.1112 C’est en pratique obligatoire pour suivre des lancements suspects tels que powershell -EncodedCommand ..., mais ne l’activez qu’après avoir compris le risque de fuite de secrets dans le journal décrit à la section 7. Lisez d’abord la section 7, corrigez les endroits qui passent des secrets en arguments, puis configurez-le.

La relation entre 4688 et l'enregistrement de la ligne de commandeActiver l'audit de création de processus enregistre le compte, le chemin de l'exécutable et le processus parent dans 4688, mais les arguments de ligne de commande ne sont enregistrés qu'une fois un paramètre de Stratégie de groupe séparé activé, ce qui comporte le risque de voir des secrets apparaître en clairLaissé au défautActiver la GPO supplémentaireActiver l'audit de création de processus4688 est enregistréCompte, chemin, processus parentVoulez-vous aussi les arguments ?La ligne de commande est videLes arguments sont enregistrésRisque de secrets en clair

Figure 11 : L’enregistrement de la ligne de commande de 4688 est un interrupteur séparé. L’activer exige d’abord de passer en revue le risque de fuite de secrets.

4.6. 4698 — Une tâche planifiée a été créée

4698 est « Une tâche planifiée a été créée », et il enregistre le nom de la tâche et le XML complet de la définition de tâche (y compris la commande à exécuter). Parce qu’enregistrer une tâche est la technique standard qu’utilise un logiciel malveillant pour survivre à un redémarrage, Microsoft recommande de surveiller les événements de création de tâche.15 Même dans les environnements qui utilisent beaucoup de tâches à des fins métier, une création n’est pas un événement quotidien, donc le bruit reste limité.

Persistance par enregistrement de tâche et 4698Les logiciels malveillants enregistrent couramment des tâches planifiées pour survivre à un redémarrage, donc surveiller le 4698 enregistré à la création d'une tâche permet de suivre la définition de tâche jusqu'à la commande qu'elle exécutePersistance d'un logiciel malveillantEnregistrer une tâche pour survivre4698 est enregistréXML complet y compris la commande à exécuterLe détecter en surveillant la création de tâcheLa création n'est pas un événement quotidien, donc peu de bruit

Figure 12 : L’enregistrement de tâche, technique classique de persistance, reste dans 4698. Le XML complet de la définition permet de la suivre jusqu’à la commande.

Pour savoir si le journal lui-même a été effacé, vérifiez aussi 1102

Un autre à garder en tête est 1102, « Le journal d’audit a été effacé ». Effacer le journal Security laisse toujours cet événement, donc lorsque « le journal est vide » vous pouvez dire s’il s’agissait d’une opération délibérée ou de quelque chose qui a mal tourné.18

Utiliser 1102 pour trier un journal effacéEffacer le journal Security laisse toujours un 1102, donc lorsque le journal est vide, vérifier la présence d'un 1102 indique si l'effacement était une opération effectuée par quelqu'un ou quelque chose qui a mal tournéOuiNonLe journal est videL'effacement laisse toujours un 1102Y a-t-il un 1102 ?Quelqu'un a effectué un effacementSuspecter que quelque chose a mal tourné

Figure 13 : Effacer le journal Security laisse toujours un 1102. Pour un journal vide, la présence de 1102 sépare une opération délibérée de quelque chose qui a mal tourné.

5. Concevoir le contenant du journal — taille maximale et conservation

5.1. Quand il est plein, qu’est-ce qui est perdu, les anciennes traces ou les nouvelles ?

Avant d’ajouter des stratégies d’audit, vérifiez le récipient qui doit les accueillir. Le journal Security a une taille maximale et un mode de conservation, et en mode écrasement (la configuration de facto standard), une fois la taille maximale atteinte les nouveaux événements écrasent les plus anciens. En mode conservation (ne pas écraser), à l’inverse, ce sont les nouveaux événements qui sont rejetés une fois le journal plein.10 Les deux comportements sont une cause de « le journal avait disparu avant que je m’en aperçoive », donc comprendre l’état actuel vient d’abord.

5.2. Déduisez la capacité dont vous avez besoin d’après les jours réellement conservés

# Vérifier le contenant du journal Security : mode de conservation, taille maximale, nombre actuel d'enregistrements
Get-WinEvent -ListLog Security |
    Select-Object LogName, LogMode, MaximumSizeInBytes, RecordCount

# Combien de jours sont réellement conservés en ce moment (horodatage de l'événement le plus ancien)
Get-WinEvent -LogName Security -Oldest -MaxEvents 1 |
    Select-Object TimeCreated

Get-WinEvent -ListLog renvoie ensemble la configuration du journal et le nombre d’enregistrements.9 L’écart entre « l’horodatage de l’événement le plus ancien » et le présent est la durée de conservation dont vous disposez réellement, et si elle n’atteint pas votre propre exigence (le nombre de jours auxquels vous voulez pouvoir remonter pendant une investigation d’incident), vous élargissez la taille maximale. Le paramètre peut se distribuer avec wevtutil sl Security /ms:<bytes> ou par Stratégie de groupe.10

Pensez la capacité en termes de « combien de jours voulons-nous garder ». Ajouter des sous-catégories d’audit augmente le volume d’événements, donc revérifiez les jours réellement conservés après avoir changé les paramètres. Il vous faut aussi une pratique opérationnelle d’export selon un calendrier avant que les événements ne soient écrasés, ou de les centraliser sur une autre machine.

Conception de la capacité en partant de la durée de conservationVérifiez la configuration et le nombre d'enregistrements avec le paramètre ListLog de Get-WinEvent, déduisez la durée de conservation réellement disponible d'après l'horodatage de l'événement le plus ancien, et élargissez la taille maximale si elle n'atteint pas le nombre de jours auxquels vous voulez remonter pendant une investigation d'incidentOuiNonVérifier la configuration et le nombre d'enregistrements avec ListLogVérifier l'horodatage de l'événement le plus ancienCalculer la durée de conservation réellement disponibleSatisfait-elle l'exigence ?Garder la taille actuelleÉlargir la taille maximaleConfigurer avec wevtutil sl ou GPO

Figure 14 : Confirmez les jours réellement conservés, et réglez la taille maximale en partant du nombre de jours auxquels vous voulez remonter.

5.3. CrashOnAuditFail n’est pas un paramètre qui résout un manque de capacité

Notez que les options de sécurité incluent « Audit : arrêter le système immédiatement s’il est impossible de consigner les audits de sécurité » (ce que l’on appelle couramment CrashOnAuditFail). Lorsqu’il est activé et que les audits de sécurité ne peuvent plus être enregistrés, le système s’arrête avec l’erreur STOP C0000244. C’est un paramètre pour des exigences de certification où la piste d’audit ne doit absolument pas être perdue, et il est désactivé par défaut.

Microsoft lui-même met en garde qu’il peut être transformé en DoS dans lequel un attaquant arrête délibérément un serveur en générant d’énormes volumes d’événements, donc ce n’est pas quelque chose à activer à la légère dans un environnement ordinaire de petite ou moyenne taille.19

Comportement lorsque le journal est pleinLa configuration de conservation existe sous deux formes, mode écrasement et mode ne pas écraser, et lorsque les audits ne peuvent plus être enregistrés en mode ne pas écraser, le paramètre séparé CrashOnAuditFail arrête le système avec l'erreur STOP C0000244 s'il est activéMode écrasementNe pas écraserOuiLe journal Security atteint la taille maximaleQuelle est la configuration de conservation ?Les événements les plus anciens sont écrasésLes nouveaux événements sont rejetésLes deux font disparaître le journal avant que vous ne vous en aperceviezCrashOnAuditFail est-il aussi activé ?Le système s'arrête avec l'erreur STOP C0000244

Figure 15 : La configuration de conservation est soit l’écrasement, soit le rejet. CrashOnAuditFail est un paramètre séparé qui arrête le système lorsque l’audit ne peut pas être enregistré.

6. L’investigation en pratique — filtres, Get-WinEvent et export

L’ordre dans lequel vous travaillez réellement est « préserver en 6.3, puis analyser en 6.1 ou 6.2 ». Cette section passe en revue chaque outil d’investigation. Pour un cas isolé, utilisez l’Observateur d’événements ; lorsque le volume est important ou que l’investigation se répète, utilisez PowerShell.

6.1. Filtrer dans l’Observateur d’événements

Pour une investigation isolée, l’Observateur d’événements suffit. Ouvrez le journal Security et spécifiez l’ID d’événement (4625, par exemple) et la plage horaire sous « Filtrer le journal actuel ». Enregistrez les conditions que vous consultez régulièrement avec « Créer un affichage personnalisé », et elles sont à un clic la fois suivante. Si vous voulez restreindre par autre chose que l’ID d’événement, par exemple un compte précis, vous pouvez modifier directement la requête XPath dans l’onglet XML de la boîte de dialogue de filtre.

6.2. Extraction avec Get-WinEvent

Pour les investigations à grand volume, à conditions multiples, ou selon un calendrier récurrent, passez au Get-WinEvent de PowerShell. L’essentiel est d’utiliser -FilterHashtable, qui fait prendre effet le filtre côté serveur.9

Choisir entre les outils d'investigationUne investigation isolée se traite avec le filtre de l'Observateur d'événements, les conditions que vous consultez régulièrement se sauvegardent comme affichage personnalisé, et les investigations à grand volume, à conditions multiples ou selon un calendrier récurrent passent à Get-WinEventIsoléeConditions que vous revoyezGrande, multi-conditions, planifiéeQuel type d'investigation ?Filtrer dans l'Observateur d'événementsEnregistrer comme affichage personnaliséPasser à Get-WinEventFiltrer avec FilterHashtable

Figure 16 : Observateur d’événements pour les cas isolés, affichages personnalisés pour les répétitions, Get-WinEvent lorsque le volume est important.

Restreignez par ID et plage horaire, puis extraire le compte cible, la source et la raison de l’échec

La première moitié ci-dessous récupère les événements 4625 des dernières 24 heures. La seconde extrait les champs individuels du XML et est un exemple qui compte les occurrences par combinaison de compte, Status, SubStatus et source. Le tableau final n’est pas une liste chronologique d’événements individuels ; il montre combien de fois chaque combinaison s’est produite, par ordre décroissant.

# Récupérer les échecs de connexion (4625) des dernières 24 heures
Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
    StartTime = (Get-Date).AddDays(-1)
}

# Mettre en forme « qui, d'où, et pourquoi » en tableau
Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
    StartTime = (Get-Date).AddDays(-1)
} | ForEach-Object {
    $x = [xml]$_.ToXml()
    $d = @{}
    $x.Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
    [pscustomobject]@{
        Time      = $_.TimeCreated
        Account   = "$($d.TargetDomainName)\$($d.TargetUserName)"
        LogonType = $d.LogonType
        Source    = "$($d.WorkstationName) $($d.IpAddress)"
        Status    = $d.Status
        SubStatus = $d.SubStatus
    }
} | Group-Object Account, Status, SubStatus, Source |
    Sort-Object Count -Descending |
    Format-Table Count, Name -AutoSize

Réutilisez le motif pour lire les champs dont vous avez besoin dans le XML sur d’autres événements

Une fois que vous avez ce motif pour extraire EventData de la représentation XML d’un événement, vous pouvez le réutiliser de la même façon pour 4624 ou 4688. La conception du filtrage de Get-WinEvent (quand utiliser FilterHashtable plutôt que XPath, et comment corriger une requête lente) est traitée en détail dans « Examiner les journaux d’événements en pratique avec Get-WinEvent — La rapidité du filtrage détermine le temps d’investigation ».

Le motif de mise en forme pour extraire EventDataConvertissez un événement récupéré avec Get-WinEvent en sa représentation XML, extraire chaque champ EventData et le mettre en forme en tableau, et réutilisez ce motif de la même façon pour 4624 et 4688 autant que pour 4625Récupérer avec Get-WinEventConvertir l'événement en sa représentation XMLExtraire EventDataMettre en forme en tableau et agrégerDe la même façon pour 4624 et 4688

Figure 17 : Le motif consistant à extraire EventData de la représentation XML vers un tableau est réutilisable lorsque l’ID d’événement change.

6.3. Exporter avec wevtutil

En règle générale, les journaux de la machine sous investigation doivent être exportés et sécurisés d’abord, avant que l’écrasement ne les enlève.10

rem Préserver tout le journal Security en evtx
wevtutil epl Security C:\logs\security-20260801.evtx

rem Exporter seulement 4625, restreint avec XPath
wevtutil epl Security C:\logs\security-4625.evtx /q:"*[System[(EventID=4625)]]"

Analysez l’evtx sauvegardé sur une autre machine

Le .evtx exporté peut s’analyser sur une autre machine exactement de la même façon, avec Get-WinEvent -Path C:\logs\security-20260801.evtx.9 L’habitude de préserver avant d’analyser est le même raisonnement que « sécurisez d’abord le dump » dans une investigation de plantage (voir « Introduction à la collecte des dumps de crash Windows - WER/ProcDump/WinDbg »).

Le flux de préserver avant d'analyserExportez et sécurisez le journal Security de la machine sous investigation dans un fichier evtx avec wevtutil epl, puis analysez-le de la même façon sur une autre machine en pointant Get-WinEvent vers le cheminMachine sous investigationPréserver en evtx avec wevtutil eplL'emporter sur une autre machineAnalyser avec Get-WinEvent -PathLe sécuriser avant que l'écrasement ne l'enlève

Figure 18 : Préserver d’abord, analyser ensuite. Une fois sécurisé en evtx, vous pouvez l’examiner de la même façon sur une autre machine.

7. Pièges — quatre dans lesquels il est facile de tomber sur le terrain

7.1. Des secrets qui voyagent sur la ligne de commande de 4688

Activez l’enregistrement de la ligne de commande et les arguments de tous les processus vont dans le journal Security en clair. Microsoft indique explicitement que « tous les utilisateurs ayant un accès en lecture aux événements de sécurité peuvent lire les arguments de ligne de commande de tout processus créé avec succès, et ces arguments peuvent contenir des données sensibles telles que des mots de passe ».12 S’il existe ne serait-ce qu’une application métier ou un script qui lance quelque chose comme myapp.exe /user:admin /password:P@ssw0rd, c’est une divulgation du secret à quiconque peut lire le journal.

Avant de l’activer, trouvez et corrigez les endroits qui passent des secrets en arguments. Le même niveau de traitement est alors exigé partout où les journaux sont préservés et transférés.

L'ordre pour activer l'enregistrement de la ligne de commandeAvant d'activer l'enregistrement de la ligne de commande pour 4688, trouvez les applications métier et les scripts qui passent des secrets en arguments, gardez l'ordre de les corriger avant d'activer le paramètre, et exigez le même niveau de traitement pour les destinations de préservation et de transfert des journauxOuiNonTrouver les secrets passés en argumentsY en a-t-il ?Corriger les endroits qui les passentActiver l'enregistrement de la ligne de commandeMême niveau de traitement pour la préservation et le transfert

Figure 19 : L’enregistrement de la ligne de commande, c’est « les trouver, les corriger, puis activer ». Inversez l’ordre et vous divulguez les secrets.

7.2. Fonctionner sans connaître le comportement lorsque le journal est plein

En mode écrasement les anciennes traces disparaissent silencieusement, avec l’écrasement désactivé les nouveaux événements sont rejetés, et avec CrashOnAuditFail activé le système lui-même s’arrête (section 5).1019 La bonne approche est de savoir quel comportement vous avez choisi et de mettre en place un mécanisme qui « les collecte avant qu’ils ne disparaissent » (exports planifiés ou plateforme de collecte de journaux).

7.3. Contrôleurs de domaine et postes de travail exigent des journaux différents

4624/4625 s’enregistrent sur la machine à laquelle on a accédé.56 La validation des informations d’identification d’un compte de domaine (le 4776 de NTLM), en revanche, s’enregistre sur la machine qui a autorité sur ces informations, ce qui pour un compte de domaine est un DC7, et l’échec de préauthentification Kerberos (4771) s’enregistre uniquement sur un DC.8 « Il n’y a pas de 4625 sur le serveur de fichiers » ne signifie pas « il n’y a pas eu d’attaque » ; vous n’avez le tableau complet qu’une fois que vous recoupez aussi 4776/4771 sur le DC. Pour le déroulement réel de chaque protocole d’authentification, voir « NTLM et Kerberos expliqués en images — Pourquoi l’authentification « retombe »-t-elle sur NTLM ? ».

7.4. Si les horloges ne sont pas synchronisées, vous ne pouvez pas recouper

Aligner les journaux de plusieurs machines pour suivre « quel poste a produit un 4625 juste avant ce 4740 » suppose que les horloges de ces machines concordent. Dans un environnement de domaine, Kerberos lui-même fixe une limite supérieure au décalage d’horloge (5 minutes par défaut), et au-delà l’authentification elle-même commence à échouer.20 Du point de vue de l’investigation, un décalage de quelques secondes — sans parler de cinq minutes — suffit à vous faire mal lire l’ordre des événements, donc placez une vérification de l’état de synchronisation de w32time tout au début de votre procédure d’investigation.

De plus, les horodatages d’événements sont stockés en UTC et affichés selon le fuseau horaire de la machine qui les consulte, donc lorsque vous lisez un evtx apporté d’un site à l’étranger ou d’un serveur réglé sur UTC, n’oubliez pas de convertir le fuseau horaire.

La synchronisation des horloges comme prérequis du recoupementUne investigation qui aligne les journaux de plusieurs machines par ordre chronologique suppose que les horloges de ces machines concordent, car un décalage de quelques secondes suffit à mal lire l'ordre des événements et un décalage au-delà des cinq minutes par défaut fait échouer l'authentification Kerberos elle-même, donc placez une vérification w32time au début de la procédureEn accordQuelques secondes de décalageAu-delà des 5 minutes par défautRecouper les journaux de plusieurs machinesSuppose que les horloges concordentDe combien les horloges sont-elles décalées ?Vous pouvez les suivre chronologiquementMal lire l'ordre des événementsL'authentification Kerberos échouePlacer la vérification w32time au début de la procédure

Figure 20 : Recouper plusieurs machines suppose que les horloges sont alignées. Même quelques secondes de décalage mènent à mal lire l’ordre des événements.

8. Synthèse

Pour utiliser le journal Security de Windows pour une investigation, concevez ensemble trois choses : la portée de ce que vous enregistrez, l’endroit et les champs que vous lisez, et le mécanisme qui le préserve.

Lorsque vous remettez de l’ordre dans les paramètres

Ne mélangez pas la stratégie d’audit « de base » et « avancée » ; uniformisez côté avancé. Vérifiez l’état actuel avec auditpol /get /category:*, et partez du tableau de décision de la section 3, construit autour de l’ouverture de session, de la gestion des comptes et de la création de processus, avec les recommandations de référence de Microsoft comme point de départ. « Tout activer » rend l’investigation plus difficile par le bruit et le gonflement.

Le contenant du journal (taille maximale et mode de conservation) est la moitié de la conception de l’audit. Vérifiez les jours réellement conservés, décidez de la taille en partant de votre exigence, et exportez ou centralisez avant que les événements ne disparaissent. N’activez l’enregistrement de la ligne de commande de 4688 qu’après avoir passé en revue le risque de fuite de secrets.

Lorsque vous enquêtez

Préserver d’abord, analyser ensuite. Sécurisez le journal avec wevtutil epl, vérifiez la machine d’enregistrement de chaque événement et la synchronisation des horloges, et seulement alors commencez à lire. Utilisez le filtre de l’Observateur d’événements pour les cas isolés, et Get-WinEvent -FilterHashtable pour les investigations qui se répètent.

Les points clés à la lecture sont le type d’ouverture de session pour 4624, Status/Sub Status pour 4625, le nom de l’ordinateur appelant pour 4740, et le processus parent et la ligne de commande pour 4688. Ne jugez pas d’après l’ID d’événement seul : confirmez quelle information a été enregistrée où, et recoupez les journaux dont vous avez besoin.

Articles connexes

Domaines de conseil associés

Chez Komura Soft LLC, nous assurons le conseil sur la stratégie d’audit et la conception des journaux dans un environnement Windows, l’investigation de « quand, qui, et quoi » à partir des journaux d’événements, et l’analyse des causes des incidents que les applications métier provoquent autour de l’authentification et de l’audit. Commencer par « on m’a demandé de regarder les journaux, mais par où commencer ? » convient parfaitement.

Références

  1. Microsoft Learn, Advanced security auditing FAQ. Sur la différence entre la stratégie d’audit de base (les neuf paramètres sous les stratégies locales) et la stratégie d’audit avancée, sur le fait qu’activer une catégorie de base équivaut à activer toutes les sous-catégories correspondantes, sur le fait que les deux sont incompatibles donc que les utiliser ensemble laisse les résultats d’audit dans un état inattendu et qu’il ne faut pas les mélanger, sur le fait que les paramètres d’audit existants sont effacés lorsque la stratégie avancée est appliquée par Stratégie de groupe, sur la nécessité d’activer « Audit : forcer les paramètres de sous-catégorie de la stratégie d’audit », et sur le fait de minimiser le volume d’événements en identifiant et en restreignant aux ressources, activités et utilisateurs importants. ↩ ↩2 ↩3 ↩4

  2. Microsoft Learn, auditpol. Sur le fait que la commande auditpol peut afficher (/get), définir (/set), sauvegarder en CSV (/backup), restaurer (/restore) et effacer (/clear) la stratégie d’audit système. ↩ ↩2

  3. Microsoft Learn, System Audit Policy recommendations. Sur les tableaux des valeurs par défaut de Windows, des recommandations de référence et des recommandations renforcées, séparément pour les postes de travail et les serveurs, sur le fait que les recommandations ne sont qu’un point de départ que chaque organisation doit évaluer et tester selon ses menaces et sa tolérance au risque, sur le fait que la sous-catégorie Logon a le succès et l’échec activés par défaut à partir de Windows 10 1809, sur l’importance de surveiller aussi les postes de travail et pas seulement les serveurs, sur des exemples d’événements sur lesquels alerter individuellement tels qu’un ajout inattendu de membre à un groupe privilégié, et sur l’idée de détecter une hausse soudaine des échecs d’ouverture de session par comparaison à une référence. ↩ ↩2 ↩3 ↩4

  4. Microsoft Learn, Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings. Sur le fait de pouvoir gérer l’audit avec précision via plus de 40 sous-catégories d’audit, sur le fait que laisser ce paramètre activé est la bonne pratique avec une valeur effective par défaut Enabled sur les clients, les serveurs membres et les DC, et sur l’avertissement selon lequel les paramètres qui génèrent d’énormes volumes d’événements, comme activer toutes les sous-catégories d’utilisation des privilèges, rendent les autres entrées plus difficiles à trouver dans le journal de sécurité et peuvent avoir un impact important sur les performances. ↩ ↩2 ↩3 ↩4

  5. Microsoft Learn, 4624(S): An account was successfully logged on. Sur le fait que 4624 s’enregistre sur l’ordinateur auquel on a accédé lorsqu’une session d’ouverture de session est créée, sur la liste des types d’ouverture de session (2 = Interactive, 3 = Network, 4 = Batch, 5 = Service, 7 = Unlock, 8 = NetworkCleartext, 9 = NewCredentials, 10 = RemoteInteractive, 11 = CachedInteractive), sur l’indicateur Elevated Token, sur le package d’authentification (NTLM/Kerberos/Negotiate) et le NTLM Package Name (NTLM V1/V2/LM), et sur la corrélation avec 4672 et d’autres via l’ID d’ouverture de session. ↩ ↩2 ↩3 ↩4 ↩5

  6. Microsoft Learn, 4625(F): An account failed to log on. Sur le fait que 4625 s’enregistre sur l’ordinateur où l’ouverture de session a été tentée (le poste, si la tentative a été faite sur le poste d’un utilisateur), sur le fait que les sous-catégories sont Account Lockout et Logon, sur la signification des codes Status/Sub Status (0xC0000064 = nom d’utilisateur incorrect, 0xC000006A = mot de passe erroné, 0xC000006D = nom d’utilisateur ou informations d’authentification incorrects, 0xC000006F = en dehors des heures autorisées, 0xC0000070 = poste de travail non autorisé, 0xC0000072 = compte désactivé, 0xC000015B = type d’ouverture de session non accordé, 0xC0000193 = compte expiré, 0xC0000234 = verrouillé), et sur le fait qu’une série de 0xC0000064 peut être un signe d’attaque par énumération de comptes. ↩ ↩2 ↩3 ↩4 ↩5

  7. Microsoft Learn, 4776(S, F): The computer attempted to validate the credentials for an account. Sur le fait que 4776 s’enregistre à chaque validation d’informations d’identification par authentification NTLM, sur le fait qu’il ne s’enregistre que sur l’ordinateur qui a autorité sur ces informations, c’est-à-dire un contrôleur de domaine pour un compte de domaine et l’ordinateur local pour un compte local, et sur le fait que le succès et l’échec sont tous deux enregistrés. ↩ ↩2 ↩3 ↩4

  8. Microsoft Learn, 4771(F): Kerberos pre-authentication failed. Sur le fait que 4771 s’enregistre à chaque fois que le KDC échoue à émettre un TGT Kerberos (à cause d’un mot de passe erroné, d’un compte expiré, etc.), et sur le fait que cet événement n’est généré que sur les contrôleurs de domaine. ↩ ↩2 ↩3 ↩4

  9. Microsoft Learn, Get-WinEvent (Microsoft.PowerShell.Diagnostics). Sur la récupération de la configuration du journal (LogMode, MaximumSizeInBytes, RecordCount) avec -ListLog, sur le filtrage efficace en spécifiant LogName, Id, StartTime, etc. dans une table de hachage avec -FilterHashtable, sur la lecture d’un fichier .evtx enregistré avec -Path, et sur la récupération du plus ancien d’abord avec un nombre d’enregistrements via -Oldest et -MaxEvents. ↩ ↩2 ↩3 ↩4

  10. Microsoft Learn, wevtutil. Sur le réglage de la taille maximale (/ms) et du mode de conservation (/rt) avec set-log (sl), sur le fait qu’un mode de conservation à true préserve les événements existants et rejette les nouveaux lorsque le journal est plein tandis que false fait écraser les plus anciens par les nouveaux, sur l’export d’un journal d’événements vers un fichier avec export-log (epl) et le filtrage par une requête XPath via l’option /q, et sur l’exécution de requêtes avec query-events (qe). ↩ ↩2 ↩3 ↩4 ↩5

  11. Microsoft Learn, 4688(S): A new process has been created. Sur le fait que 4688 s’enregistre à chaque démarrage d’un nouveau processus, sur le fait qu’il inclut le compte créateur, le chemin de l’exécutable du nouveau processus, le nom du processus créateur (parent) et le type d’élévation de jeton, et sur le fait que le champ Process Command Line est vide par défaut et n’est enregistré qu’une fois le paramètre de Stratégie de groupe « Inclure la ligne de commande dans les événements de création de processus » activé. ↩ ↩2 ↩3

  12. Microsoft Learn, Command line process auditing. Sur le fait que l’enregistrement de la ligne de commande exige à la fois Audit Process Creation de la stratégie d’audit avancée et « Inclure la ligne de commande dans les événements de création de processus » (Modèles d’administration > Système > Audit de la création de processus, Non configuré par défaut), sur la mise en garde qu’une fois activé les informations de ligne de commande de tous les processus s’enregistrent en clair dans le journal d’événements de sécurité donc que tous les utilisateurs ayant un accès en lecture peuvent lire des arguments pouvant contenir des secrets tels que des mots de passe, et sur le fait que l’événement 4719 s’enregistre lorsque la stratégie d’audit avancée est écrasée par les paramètres de base et que le paramètre « forcer » l’empêche. ↩ ↩2 ↩3 ↩4

  13. Microsoft Learn, Audit Account Lockout. Sur le fait que la sous-catégorie Account Lockout audite les échecs d’ouverture de session contre des comptes verrouillés, sur le fait que l’événement qu’elle génère est 4625(F), sur le fait qu’il n’y a pas d’événement de succès dans cette sous-catégorie donc qu’activer l’audit de succès ne sert à rien, et sur le fait que l’audit des échecs est recommandé pour tous les types d’ordinateur. ↩

  14. Microsoft Learn, Audit Security Group Management. Sur le fait que cette sous-catégorie audite la création, la modification et la suppression de groupes de sécurité ainsi que les ajouts et retraits de membres, sur le fait que les ID d’événement des ajouts et retraits de membres se séparent selon le type de groupe en 4732/4733 pour les groupes locaux, 4728/4729 pour les groupes globaux et 4756/4757 pour les groupes universels, sur l’existence d’événements propres aux groupes de domaine tels que 4728, et sur le fait qu’il n’y a pas d’événement d’échec dans cette sous-catégorie donc que l’audit de succès est recommandé pour tous les types d’ordinateur. ↩ ↩2

  15. Microsoft Learn, 4698(S): A scheduled task was created. Sur le fait que 4698 s’enregistre à chaque création d’une tâche planifiée, sur le fait que la sous-catégorie est Other Object Access Events, sur le fait que le nom de la tâche et le XML complet de la définition de tâche y compris la commande à exécuter sont enregistrés, et sur le fait que surveiller les événements de création de tâche est recommandé surtout sur les machines importantes parce que les logiciels malveillants utilisent couramment les tâches pour persister après un redémarrage. ↩ ↩2

  16. Microsoft Learn, 4740(S): A user account was locked out. Sur le fait que 4740 s’enregistre à chaque verrouillage d’un compte d’utilisateur, sur le fait que la sous-catégorie est User Account Management, et sur le fait que le champ Caller Computer Name enregistre le nom de l’ordinateur depuis lequel la tentative d’ouverture de session ayant causé le verrouillage a été reçue. ↩

  17. Microsoft Learn, 4720(S): A user account was created. Sur le fait que 4720 s’enregistre sur les contrôleurs de domaine, les serveurs membres et les postes de travail à chaque création d’un nouvel objet utilisateur, et sur le fait que la sous-catégorie est User Account Management. ↩

  18. Microsoft Learn, 1102(S): The audit log was cleared. Sur le fait que l’événement 1102 s’enregistre à chaque effacement du journal d’audit de sécurité Windows. ↩

  19. Microsoft Learn, Audit: Shut down system immediately if unable to log security audits. Sur le fait que le système s’arrête avec le message STOP C0000244 {Audit Failed} lorsque les audits de sécurité ne peuvent pas être consignés alors que ce paramètre est activé, sur le fait que la valeur par défaut est Disabled, sur le fait qu’il peut se transformer en DoS qui force délibérément un arrêt en générant d’énormes volumes d’événements de sécurité, et sur le risque que des données d’application deviennent inutilisables à cause de l’arrêt brutal. ↩ ↩2

  20. Microsoft Learn, Maximum tolerance for computer clock synchronization. Sur le fait que Kerberos v5 utilise des horodatages comme contre-mesure contre les attaques par rejeu, donc qu’une tolérance maximale (5 minutes par défaut et par recommandation) est fixée pour le décalage d’horloge entre le client et le contrôleur de domaine, au-delà de laquelle l’horodatage n’est plus considéré comme authentique. ↩

Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

Questions fréquentes

Questions souvent posées lors d’une consultation sur le sujet de cet article.

Nous n'avons configuré aucune stratégie d'audit, pourquoi 4624 et 4625 sont-ils déjà enregistrés dans le journal Security ?
Parce que Windows a des sous-catégories d'audit activées par défaut. La sous-catégorie « Audit Logon », par exemple, a le succès et l'échec activés par défaut à partir de Windows 10 version 1809, donc 4624 (succès) et 4625 (échec) sont enregistrés même sans aucune configuration. En restant sur les paramètres par défaut, toutefois, de nombreux événements utiles à l'investigation ne sont pas enregistrés, comme la validation des informations d'identification (4776) et la création de processus (4688). Vous pouvez vérifier ce qui est activé dans votre environnement avec auditpol /get /category:*. À partir de là, la pratique standard consiste à activer explicitement, côté stratégie d'audit avancée, les sous-catégories manquantes.
Je veux enquêter sur un échec de connexion, mais je ne trouve pas de 4625 dans le journal Security du serveur visé. Où dois-je regarder ?
Confirmez d'abord le principe : 4625 est enregistré sur « l'ordinateur où l'ouverture de session a été tentée ». Pour un échec de connexion sur le poste d'un utilisateur, c'est le poste ; pour un échec d'accès à un serveur de fichiers, c'est le serveur de fichiers. Ensuite, vérifiez avec auditpol /get /category:* si l'audit des échecs est activé pour la sous-catégorie « Audit Logon ». Pour un compte de domaine, la trace se trouve souvent plutôt dans la validation des informations d'identification (4776) ou l'échec de préauthentification Kerberos (4771) sur le contrôleur de domaine ; quand vous ne pouvez pas identifier le poste, il est souvent plus rapide de commencer côté DC. Si vous ne trouvez toujours rien, vérifiez si les anciennes entrées n'ont pas déjà disparu par écrasement (comparez la taille maximale du journal et l'horodatage de l'événement le plus ancien).
Faut-il activer l'enregistrement de la ligne de commande pour la création de processus (4688) ?
Sa valeur d'investigation est très élevée, mais c'est un paramètre à n'activer qu'après en avoir compris le risque. Une fois activé, les arguments de ligne de commande de tous les processus sont enregistrés en clair dans le journal Security. S'il existe ne serait-ce qu'un seul script ou une seule application métier qui passe un mot de passe ou une clé API en argument de ligne de commande, ce secret devient visible pour toute personne pouvant lire le journal Security. Microsoft précise lui-même cette mise en garde. Nous recommandons cet ordre : d'abord vérifier si vos propres scripts passent des secrets en argument de ligne de commande, corriger les cas trouvés, puis seulement activer le paramètre.
Quelle devrait être la taille maximale du journal Security ?
La bonne approche consiste à partir de « combien de jours voulons-nous garder sous la main » ; il n'existe pas de chiffre universel. Le paramétrage actuel et son comportement réel se vérifient avec Get-WinEvent -ListLog Security ; l'écart entre l'horodatage de l'événement le plus ancien et l'heure actuelle donne « le nombre de jours réellement conservés en ce moment ». Ajouter des sous-catégories d'audit augmente le volume d'événements, donc revérifiez toujours cette durée de conservation réelle après un changement de configuration. Une réponse à incident a souvent besoin de journaux vieux de plusieurs semaines ou plusieurs mois : il est donc rassurant d'exporter le journal régulièrement avant qu'il ne disparaisse par écrasement, ou de le centraliser sur une autre machine via un mécanisme de collecte.
Comment enquêter sur la cause d'un verrouillage de compte (4740) ?
Le champ « Caller Computer Name » de l'événement 4740 est le premier indice. Il enregistre l'ordinateur d'origine de l'échec d'ouverture de session qui a déclenché le verrouillage. Attention toutefois : la trace de l'échec lui-même (4625) reste du côté qui a accepté la tentative d'ouverture de session, pas du côté de son origine. Si la cause est une ouverture de session réseau, suivez chronologiquement le 4625 du serveur de destination, ou, pour un compte de domaine, le 4776/4771 du contrôleur de domaine. Sur le poste identifié comme origine, recherchez ensuite ce qui continue de détenir d'anciennes informations d'identification après un changement de mot de passe : informations d'identification enregistrées, session Bureau à distance restée déconnectée, et services ou tâches planifiées configurés avec l'ancien mot de passe. Si les verrouillages se répètent, vérifiez aussi que la synchronisation des horloges n'a pas dérivé.

Profil de l’auteur

Page de présentation de l’auteur de l’article.

Go Komura

Représentant de KomuraSoft LLC

Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.

Retour au blog