Les journaux d'événements Windows et où chercher une trace
Quand quelque chose d'anormal se produit sur un poste Windows (un compte qui se verrouille, une connexion étrange à trois heures du matin, un programme inconnu qui démarre), la première question de tout analyste est : « qu'est-ce que le système a enregistré ? ». Windows tient en effet un journal détaillé de ce qui se passe, à condition de savoir où regarder et de l'avoir configuré. Cette leçon vous apprend à lire ces traces.
Dans le chapitre sur Linux, vous avez appris à interroger journalctl et /var/log. Voici l'équivalent Windows : l'Observateur d'événements et les journaux d'événements. Le raisonnement est le même ; seuls les outils et les identifiants changent.
Les journaux principaux
Windows classe les événements dans plusieurs journaux. Les trois classiques sont :
| Journal | Ce qu'on y trouve |
|---|---|
| Application | Événements des applications (erreurs, avertissements) |
| Système | Événements du système : démarrage, arrêt, pilotes, services |
| Sécurité | Authentifications, accès aux objets, changements de comptes et de droits, selon la politique d'audit |
Ils sont stockés dans le répertoire C:\Windows\System32\winevt\Logs au format .evtx. À côté, de nombreux journaux spécialisés se trouvent sous « Journaux des applications et des services » (par exemple ceux de PowerShell, du pare-feu ou de l'antivirus intégré). Le journal Sécurité est le plus précieux pour une enquête, et il n'est lisible qu'avec des droits d'administrateur.
Anatomie d'un événement
Chaque entrée contient :
- un niveau (information, avertissement, erreur, audit réussi, audit échoué) ;
- la date et l'heure ;
- la source (le composant qui a écrit l'événement) ;
- un ID d'événement, un numéro qui identifie la nature de l'événement : c'est la clé de lecture principale ;
- le détail : compte concerné, machine, adresse source, programme…
Les ID à connaître pour un premier tour d'horizon :
| ID | Journal | Signification |
|---|---|---|
| 4624 | Sécurité | Ouverture de session réussie |
| 4625 | Sécurité | Échec d'ouverture de session |
| 4634 / 4647 | Sécurité | Fermeture de session |
| 4648 | Sécurité | Connexion avec des identifiants explicites |
| 4672 | Sécurité | Droits spéciaux attribués à une nouvelle session (compte privilégié) |
| 4688 | Sécurité | Création d'un processus (nécessite l'audit correspondant) |
| 4720 | Sécurité | Création d'un compte utilisateur |
| 4732 | Sécurité | Ajout d'un membre à un groupe local |
| 4740 | Sécurité | Verrouillage d'un compte |
| 1102 | Sécurité | Le journal d'audit a été effacé |
| 7045 | Système | Un nouveau service a été installé |
Ne cherchez pas à mémoriser toute la liste : les principaux sont 4624, 4625, 4672, 4720 et 1102, et les autres se retrouvent en consultant la documentation de l'éditeur.
Comprendre les types de connexion
Dans les événements 4624 et 4625, un champ précise le type d'ouverture de session, essentiel pour interpréter ce qui se passe :
- Type 2 : interactive, quelqu'un est devant le clavier ;
- Type 3 : réseau, par exemple l'accès à un partage de fichiers depuis une autre machine ;
- Type 4 et 5 : tâche planifiée et service ;
- Type 7 : déverrouillage d'une session ;
- Type 10 : interactive à distance, typiquement une session de bureau à distance.
Un exemple d'interprétation : une série d'échecs (4625) de type 3 provenant de la même adresse, suivie d'un succès (4624) pour le même compte, mérite une investigation sérieuse. Le même 4625 de type 2, isolé, est probablement une faute de frappe d'un utilisateur.
Consulter les journaux : trois méthodes
1. L'Observateur d'événements (eventvwr.msc). L'interface graphique propose des filtres : « Filtrer le journal actuel » permet de saisir un ID ou une période. C'est le plus pratique pour une première prise en main.
2. PowerShell avec Get-WinEvent, plus puissant pour automatiser et filtrer :
Get-WinEvent -LogName Security -MaxEvents 20
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 10 |
Select-Object TimeCreated, Id, Message
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624; StartTime=(Get-Date).AddHours(-24)}
Le paramètre -FilterHashtable filtre à la source et reste beaucoup plus rapide que de récupérer tout le journal puis de filtrer ensuite. La lecture du journal Sécurité exige un shell lancé en administrateur.
3. La ligne de commande classique avec wevtutil (par exemple wevtutil qe Security /c:5 /rd:true /f:text) pour afficher les dernières entrées. Ce moyen est surtout utile dans des scripts anciens.
Ce qui est journalisé dépend de la configuration
Point capital : Windows ne journalise pas tout par défaut. La stratégie d'audit (réglable par GPO, vue à la leçon 2) détermine ce qui est enregistré : connexions, accès aux objets, création de processus avec leurs arguments, journalisation détaillée de PowerShell, etc. Un poste mal configuré peut donc n'offrir presque aucune trace en cas d'incident. En entreprise, un des premiers chantiers de défense consiste à activer l'audit pertinent, à augmenter la taille des journaux pour éviter qu'ils ne soient écrasés trop vite, et à les centraliser sur un serveur dédié. Des outils complémentaires de supervision d'activité système, gratuits et reconnus, enrichissent les journaux natifs : ils sont employés par les équipes de défense, et vous les croiserez dans le cours consacré à la détection.
Que chercher en cas de doute ?
Face à une machine suspecte, un analyste débutant peut suivre un petit canevas :
- Authentifications : des échecs répétés (4625), des connexions à des horaires inhabituels, un type 10 depuis une adresse inconnue.
- Comptes et droits : création d'un compte (4720), ajout à un groupe privilégié (4732), droits spéciaux (4672).
- Persistance : installation d'un service (7045), nouvelle tâche planifiée, nouvelle entrée dans les clés Run.
- Exécution : création de processus (4688), journaux PowerShell.
- Effacement de traces : un événement 1102 est un signal fort, car il indique que quelqu'un a vidé le journal Sécurité.
Cette liste suit une logique que vous retrouverez dans les cadres de référence de la défense comme MITRE ATT&CK (attack.mitre.org), qui décrit les comportements typiques des attaquants. Une trace isolée ne prouve rien : c'est la corrélation de plusieurs indices qui raconte l'histoire.
Astuce. Quand vous lisez un journal, commencez par définir une fenêtre de temps (« à partir du moment où l'utilisateur a remarqué le problème »), puis cherchez les événements juste avant. Écrire une chronologie dans votre carnet (heure, événement, interprétation) est la meilleure méthode d'enquête, même pour un débutant.
À vous de jouer
Sur votre ordinateur Windows personnel ou sur une VM de laboratoire, avec un compte de test que vous créez vous-même :
- Verrouillez la session puis redéverrouillez-la avec le bon mot de passe.
- Verrouillez-la de nouveau et tapez volontairement un mauvais mot de passe une fois, puis le bon.
- Ouvrez un PowerShell en administrateur et affichez les dix derniers événements 4625, puis les dix derniers 4624.
- Repérez le type de connexion de chacun et l'heure de vos manipulations.
Voir une solution
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 10 |
Select-Object TimeCreated, Id
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 10 |
Select-Object TimeCreated, Id
Vous devriez voir un événement 4625 correspondant à l'échec volontaire, et plusieurs 4624 : les déverrouillages correspondent généralement au type 7, une ouverture de session interactive classique au type 2. Si aucun 4625 n'apparaît, la politique d'audit des échecs de connexion n'est pas activée sur cette machine : c'est une excellente illustration du fait que « pas de trace » ne veut pas dire « pas d'événement ». Dans l'Observateur d'événements, ouvrez l'événement pour lire le champ « Type d'ouverture de session ».
À retenir
- Windows enregistre les événements dans les journaux Application, Système et Sécurité (et de nombreux journaux spécialisés), au format
.evtx. - L'ID d'événement indique la nature de l'événement : 4624 (connexion réussie), 4625 (échec), 4672 (droits spéciaux), 4720 (compte créé), 1102 (journal effacé), 7045 (service installé).
- Le type d'ouverture de session (2 interactif, 3 réseau, 10 bureau à distance) aide à interpréter une connexion.
- On consulte les journaux avec l'Observateur d'événements ou
Get-WinEvent -FilterHashtable. - Ce qui est journalisé dépend de la stratégie d'audit : sans configuration adaptée et centralisation, les traces manqueront quand on en aura besoin.
Vous avez maintenant exploré les deux grands mondes, Linux et Windows. Un fil rassemble tout ce que vous avez vu, des certificats HTTPS aux mots de passe stockés : la cryptographie. Au chapitre suivant, vous allez comprendre ses principes sans avoir à faire de mathématiques.