Rechercher et filtrer des éléments dans l’observateur d’événement
Il est possible de filtrer sur les différents champs présents dans la console. Faites un clic droit sur le journal correspondant puis sélectionner « Filtrer le journal actuel ». Vous pouvez filtrer sur la source, sur le niveau, sur l’identifiant et bien d’autres paramètres :
Utiliser PowerShell pour rechercher dans les journaux
Rechercher quand le poste a démarré
Dans ce premier exemple nous recherchons “EventID” correspondant à 4608 ce qui représente le démarrage de Windows.
Get-EventLog -Logname security | Where-Object {$_.EventID -eq 4608 }
Retrouver quand un utilisateur a été créer
Avec cette commande PowerShell nous pouvons voir que le compte a été créé par l’utilisateur administrateur.
Get-EventLog -Logname security | Where-Object {$_.EventID -eq 4720 -and $_.message.contains('phil@lab.lan') } |fl
Il est possible d’interroger plusieurs serveurs dans la même ligne de commande avec « -computername serveur1,serveur2 »:
Get-EventLog -Logname security -computername labdc1,labclient | Where-Object {$_.EventID -eq 4720 ) } | Format-Table TimeWritten,MachineName, Source, EventID,message –auto
Note : le service de registre à distance doit être démarré ce qui n’est pas forcément le cas sur un poste client). Le pare-feu doit autorise les connexions à distance pour la gestion des événements.
Recherché si des comptes ont été activés ces derniers 24h
Dans cet exemple nous allons voir comment délimiter les recherches dans une période de temps. Dans le premier exemple nous limitons la recherche aux24 dernières heures.
Get-EventLog -Logname security -After $(Get-Date).AddHours(-24) | Where-Object {$_.EventID -eq 4722 } |Format-Table TimeWritten,MachineName, Source, EventID,message –auto
Voir les mises à l’heure de la machine
La commande suivante permet de retrouver les événements liés à la synchronisation des horloges (événement système) :
Get-EventLog -Logname security | Where-Object {$_.EventID -eq 4616 } | ft –autosize
Exemple : surveiller les échecs de connexion avec le compte administrateur
Pour cet exemple nous modifions la GPO de configuration des audits sur les contrôleurs de domaines et nous rajoutons les échecs pour « Service d'authentification Kerberos ».
Nous allons sur le poste client et à 3 reprises nous essayons d’ouvrir la session « lab\administrateur » avec un mauvais mot de passe.
Nous retrouvons donc sur le contrôleur de domaine l’événement « 4771 » indique un échec d’authentification Kerberos :
La commande suivante nous permet de rechercher les événements « 4771 » contenants le mot « administrateur » dans le corps du message. Le résultat est stocké dans la variable « $a »
$a=Get-EventLog -Logname security -computername labdc1 | Where-Object {$_.EventID -eq 4771 -and $_.message.contains('Administrateur')
La valeur « $a » permet de retrouver les événements correspondants, « $a.count » permet de voir le nombre d’échec.
Pour connaître le nombre d’échecs dans les 24 dernières heures il est possible d’utiliser la commande
$a=Get-EventLog -Logname security -computername labdc1 -After $(Get-Date).AddHours(-24) | Where-Object {$_.EventID -eq 4771 -and $_.message.contains('Administrateur') }
Autre commande
La commande « Get-WinEvent » permet aussi d’interroger les journaux Windows, mais elle permet également d’accéder à un fichier export des événements ou à une archive contrairement à « get-eventlog » qui ne peut lire ni les archives ni les abonnements.
Exemple sur un fichier archive :
Get-WinEvent -Path "C:\Windows\System32\winevt\Logs\Archive-Security-2015-03-22-10-37-45-408.evtx" | Where-Object { $_.ID -eq 4624 } | Format-Table –AutoSize