Sysmon v13.34

Par Mark Russinovich et Thomas Garnier

Publié : 11 mai 2022

DownloadTélécharger Sysmon(3,1 Mo)

Télécharger Sysmon pour Linux (GitHub)

Introduction

System Monitor (Sysmon) est un Windows service système et pilote d’appareil qui, une fois installé sur un système, reste résident dans les redémarrages du système pour surveiller et journaliser l’activité du système dans le journal des événements Windows. Il fournit des informations détaillées sur les créations de processus, les connexions réseau et les modifications apportées à l’heure de création de fichier. En collectant les événements qu’il génère à l’aide d’Windows collection d’événements ou d’agents SIEM, puis en les analysant, vous pouvez identifier les activités malveillantes ou anormales et comprendre comment les intrus et les programmes malveillants fonctionnent sur votre réseau.

Notez que Sysmon ne fournit pas d’analyse des événements qu’il génère, ni qu’il tente de protéger ou de se cacher des attaquants.

Vue d’ensemble des fonctionnalités Sysmon

Sysmon inclut les fonctionnalités suivantes :

  • Journalise la création du processus avec une ligne de commande complète pour les processus actuels et parents.
  • Enregistre le hachage des fichiers image de processus à l’aide de SHA1 (valeur par défaut), MD5, SHA256 ou IMPHASH.
  • Plusieurs hachages peuvent être utilisés en même temps.
  • Inclut un GUID de processus dans les événements de création de processus pour permettre la corrélation des événements même lorsque Windows réutilise les ID de processus.
  • Inclut un GUID de session dans chaque événement pour autoriser la corrélation d’événements sur la même session d’ouverture de session.
  • Enregistre le chargement des pilotes ou des DLL avec leurs signatures et hachages.
  • Les journaux s’ouvrent pour l’accès en lecture brut des disques et des volumes.
  • Si vous le souhaitez, les connexions réseau, notamment le processus source de chaque connexion, les adresses IP, les numéros de port, les noms d’hôte et les noms de port.
  • Détecte les modifications apportées au temps de création de fichier pour comprendre quand un fichier a été réellement créé. La modification des horodatages de création de fichiers est une technique couramment utilisée par les programmes malveillants pour couvrir ses pistes.
  • Rechargez automatiquement la configuration si vous avez changé dans le Registre.
  • Filtrage des règles pour inclure ou exclure certains événements dynamiquement.
  • Génère des événements dès le début du processus de démarrage pour capturer l’activité effectuée par des programmes malveillants en mode noyau sophistiqué.

Captures d’écran.

EventViewer

Usage

Utilisation courante avec des options de ligne de commande simples pour installer et désinstaller Sysmon, ainsi que pour vérifier et modifier sa configuration :

Installer: sysmon64 -i [<configfile>]
Configuration de mise à jour : sysmon64 -c [<configfile>]
Installer le manifeste d’événement : sysmon64 -m
Schéma d’impression : sysmon64 -s
Désinstaller: sysmon64 -u [force]

Paramètre Description
-i Installez le service et le pilote. Si vous le souhaitez, prenez un fichier de configuration.
-c Mettez à jour la configuration d’un pilote Sysmon installé ou videz la configuration actuelle si aucun autre argument n’est fourni. Prend éventuellement un fichier de configuration.
-m Installez également le manifeste d’événement (effectué implicitement sur l’installation du service).
-s Imprimer la définition du schéma de configuration.
-u Désinstallez le service et le pilote. L’utilisation de -u force causes de désinstallation se poursuit même si certains composants ne sont pas installés.

Le service enregistre immédiatement les événements et le pilote s’installe en tant que pilote de démarrage pour capturer l’activité dès le début du démarrage que le service écrit dans le journal des événements au démarrage.

Sur Vista et versions ultérieures, les événements sont stockés dans Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. Sur les anciens systèmes, les événements sont écrits dans le System journal des événements.

Si vous avez besoin d’informations supplémentaires sur les fichiers de configuration, utilisez la -? config commande.

Spécifiez -accepteula d’accepter automatiquement le CLUF lors de l’installation, sinon, vous serez invité à l’accepter de manière interactive.

Aucune installation ni désinstallation ne nécessite un redémarrage.

Exemples

Installer avec les paramètres par défaut (traiter les images hachées avec SHA1 et aucune surveillance réseau)

sysmon -accepteula -i

Installer Sysmon avec un fichier de configuration (comme décrit ci-dessous)

sysmon -accepteula -i c:\windows\config.xml

Désinstaller l’interface

sysmon -u

Vider la configuration actuelle

sysmon -c

Reconfigurer un sysmon actif avec un fichier de configuration (comme décrit ci-dessous)

sysmon -c c:\windows\config.xml

Modifier la configuration en paramètres par défaut

sysmon -c --

Afficher le schéma de configuration

sysmon -s

Événements

Sur Vista et versions ultérieures, les événements sont stockés dans Applications and Services Logs/Microsoft/Windows/Sysmon/Operational, et sur les événements de systèmes plus anciens sont écrits dans le journal des événements système. Les horodatages d’événements sont en heure standard UTC.

Voici des exemples de chaque type d’événement généré par Sysmon.

ID d’événement 1 : Création du processus

L’événement de création de processus fournit des informations étendues sur un processus nouvellement créé. La ligne de commande complète fournit un contexte sur l’exécution du processus. Le champ ProcessGUID est une valeur unique pour ce processus dans un domaine afin de faciliter la corrélation des événements. Le hachage est un hachage complet du fichier avec les algorithmes du champ HashType.

ID d’événement 2 : un processus a modifié une heure de création de fichier

L’événement d’heure de création de fichier de modification est inscrit lorsqu’une heure de création de fichier est explicitement modifiée par un processus. Cet événement permet de suivre le temps de création réel d’un fichier. Les attaquants peuvent modifier le temps de création de fichier d’une porte dérobée pour qu’il ressemble à celui qu’il a été installé avec le système d’exploitation. Notez que de nombreux processus modifient légitimement l’heure de création d’un fichier ; elle n’indique pas nécessairement une activité malveillante.

ID d’événement 3 : Connexion réseau

L’événement de connexion réseau enregistre les connexions TCP/UDP sur l’ordinateur. Il est désactivé par défaut. Chaque connexion est liée à un processus via les champs ProcessId et ProcessGUID. L’événement contient également les adresses IP des noms d’hôtes source et de destination, les numéros de port et l’état IPv6.

ID d’événement 4 : État du service Sysmon modifié

L’événement de modification de l’état du service signale l’état du service Sysmon (démarré ou arrêté).

ID d’événement 5 : Arrêt du processus

Le processus met fin aux rapports d’événements lorsqu’un processus se termine. Il fournit utcTime, ProcessGuid et ProcessId du processus.

ID d’événement 6 : Pilote chargé

Les événements chargés par le pilote fournissent des informations sur un pilote chargé sur le système. Les hachages configurés sont fournis ainsi que les informations de signature. La signature est créée de manière asynchrone pour des raisons de performances et indique si le fichier a été supprimé après le chargement.

ID d’événement 7 : Image chargée

L’image chargée journaux d’événements lorsqu’un module est chargé dans un processus spécifique. Cet événement est désactivé par défaut et doit être configuré avec l’option –l. Il indique le processus dans lequel le module est chargé, hachages et informations de signature. La signature est créée de manière asynchrone pour des raisons de performances et indique si le fichier a été supprimé après le chargement. Cet événement doit être configuré avec soin, car la surveillance de tous les événements de chargement d’images génère un grand nombre d’événements.

ID d’événement 8 : CreateRemoteThread

L’événement CreateRemoteThread détecte lorsqu’un processus crée un thread dans un autre processus. Cette technique est utilisée par des programmes malveillants pour injecter du code et masquer dans d’autres processus. L’événement indique le processus source et cible. Il fournit des informations sur le code qui sera exécuté dans le nouveau thread : StartAddress, StartModule et StartFunction. Notez que les champs StartModule et StartFunction sont déduits, ils peuvent être vides si l’adresse de départ est en dehors des modules chargés ou des fonctions exportées connues.

ID d’événement 9 : RawAccessRead

L’événement RawAccessRead détecte lorsqu’un processus effectue des opérations de lecture à partir du lecteur à l’aide de la \\.\ dénotation. Cette technique est souvent utilisée par des programmes malveillants pour l’exfiltration des données des fichiers verrouillés pour la lecture, ainsi que pour éviter les outils d’audit d’accès aux fichiers. L’événement indique le processus source et l’appareil cible.

ID d’événement 10 : ProcessAccess

Le processus a accédé aux rapports d’événements lorsqu’un processus ouvre un autre processus, une opération souvent suivie de requêtes d’informations ou de lecture et d’écriture de l’espace d’adressage du processus cible. Cela permet de détecter les outils de piratage qui lisent le contenu de la mémoire des processus tels que l’Autorité de sécurité locale (Lsass.exe) afin de voler les informations d’identification à utiliser dans les attaques pass-the-hash. L’activation peut générer des quantités significatives de journalisation s’il existe des utilitaires de diagnostic actifs qui ouvrent à plusieurs reprises les processus pour interroger leur état. Il doit donc généralement être effectué uniquement avec des filtres qui suppriment les accès attendus.

ID d’événement 11 : FileCreate

Les opérations de création de fichiers sont enregistrées lorsqu’un fichier est créé ou remplacé. Cet événement est utile pour surveiller les emplacements de démarrage automatique, tels que le dossier de démarrage, ainsi que les répertoires temporaires et de téléchargement, qui sont des emplacements courants de suppressions de programmes malveillants lors de l’infection initiale.

ID d’événement 12 : RegistryEvent (création et suppression d’objets)

La clé de Registre et la valeur créent et suppriment des opérations mappées à ce type d’événement, ce qui peut être utile pour surveiller les modifications apportées aux emplacements de démarrage automatique du Registre ou à des modifications spécifiques du registre des programmes malveillants.

Sysmon utilise des versions abrégées des noms de clés racines du Registre, avec les mappages suivants :

Nom de clé Abréviation
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_LOCAL_MACHINE\System\ControlSet00x HKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\Classes HKCR

ID d’événement 13 : RegistryEvent (jeu de valeurs)

Ce type d’événement De Registre identifie les modifications de valeur du Registre. L’événement enregistre la valeur écrite pour les valeurs de Registre de type DWORD et QWORD.

ID d’événement 14 : RegistryEvent (nom de clé et valeur)

Les opérations de renommage de clé et de valeur de Registre sont mappées à ce type d’événement, enregistrant le nouveau nom de la clé ou de la valeur qui a été renommée.

ID d’événement 15 : FileCreateStreamHash

Cet événement journalise lorsqu’un flux de fichiers nommé est créé et génère des événements qui journalisent le hachage du contenu du fichier auquel le flux est affecté (le flux non nommé), ainsi que le contenu du flux nommé. Il existe des variantes de programmes malveillants qui suppriment leurs exécutables ou paramètres de configuration via des téléchargements de navigateur, et cet événement vise à capturer cela en fonction du navigateur qui attache une Zone.Identifier « marque du web ».

ID d’événement 16 : ServiceConfigurationChange

Cet événement enregistre les modifications apportées à la configuration Sysmon , par exemple lorsque les règles de filtrage sont mises à jour.

ID d’événement 17 : PipeEvent (canal créé)

Cet événement génère lorsqu’un canal nommé est créé. Les programmes malveillants utilisent souvent des canaux nommés pour la communication entre processus.

ID d’événement 18 : PipeEvent (canal connecté)

Cet événement journalise lorsqu’une connexion de canal nommée est établie entre un client et un serveur.

ID d’événement 19 : WmiEvent (activité WmiEventFilter détectée)

Lorsqu’un filtre d’événements WMI est inscrit, qui est une méthode utilisée par les programmes malveillants à exécuter, cet événement enregistre l’espace de noms WMI, le nom de filtre et l’expression de filtre.

ID d’événement 20 : WmiEvent (activité WmiEventConsumer détectée)

Cet événement enregistre l’inscription des consommateurs WMI, l’enregistrement du nom, du journal et de la destination du consommateur.

ID d’événement 21 : WmiEvent (activité WmiEventConsumerToFilter détectée)

Lorsqu’un consommateur se lie à un filtre, cet événement enregistre le nom du consommateur et le chemin du filtre.

ID d’événement 22 : DNSEvent (requête DNS)

Cet événement est généré lorsqu’un processus exécute une requête DNS, que le résultat réussisse ou échoue, mis en cache ou non. Les données de télémétrie de cet événement ont été ajoutées pour Windows 8.1 afin qu’elles ne soient pas disponibles sur Windows 7 et versions antérieures.

ID d’événement 23 : FileDelete (Suppression de fichiers archivée)

Un fichier a été supprimé. En outre, pour journaliser l’événement, le fichier supprimé est également enregistré dans le ArchiveDirectory (qui est C:\Sysmon par défaut). Dans des conditions d’exploitation normales, ce répertoire peut atteindre une taille déraisonnable : voir l’ID d’événement 26 : FileDeleteDetected pour un comportement similaire, mais sans enregistrer les fichiers supprimés.

ID d’événement 24 : Presse-papiersChange (nouveau contenu dans le Presse-papiers)

Cet événement est généré lorsque le contenu du Presse-papiers système change.

ID d’événement 25 : ProcessTampering (modification de l’image de processus)

Cet événement est généré lorsque des techniques de masquage de processus telles que « creux » ou « herpaderp » sont détectées.

ID d’événement 26 : FileDeleteDetected (Journal de suppression de fichiers)

Un fichier a été supprimé.

ID d’événement 255 : Erreur

Cet événement est généré lorsqu’une erreur s’est produite dans Sysmon. Ils peuvent se produire si le système est en charge lourde et que certaines tâches n’ont pas pu être effectuées ou qu’un bogue existe dans le service Sysmon. Vous pouvez signaler tous les bogues sur le forum Sysinternals ou sur Twitter (@markrussinovich).

Fichiers de configuration

Les fichiers de configuration peuvent être spécifiés après les commutateurs de configuration -i (installation) ou -c (installation). Ils facilitent le déploiement d’une configuration prédéfinie et le filtrage des événements capturés.

Un fichier xml de configuration simple ressemble à ceci :

Configuration file

Le fichier de configuration contient un attribut schemaversion sur la balise Sysmon. Cette version est indépendante de la version binaire Sysmon et permet l’analyse des fichiers de configuration plus anciens. Vous pouvez obtenir la version actuelle du schéma à l’aide du « - ? » configuration » ligne de commande. Les entrées de configuration sont directement sous la balise Sysmon et les filtres sont sous la balise EventFiltering.

Entrées de configuration

Les entrées de configuration sont similaires aux commutateurs de ligne de commande et incluent les éléments suivants

Les entrées de configuration incluent les éléments suivants :

Entrée Valeur Description
ArchiveDirectory String Nom des répertoires aux racines de volume dans lesquelles les fichiers de copie sur suppression sont déplacés. Le répertoire est protégé par une liste de contrôle d’accès système (vous pouvez utiliser PsExec à partir de Sysinternals pour accéder au répertoire à l’aide de psexec -sid cmd). Valeur par défaut : Sysmon
CheckRevocation Boolean Contrôle les vérifications de révocation de signature. Valeur par défaut : True
CopyOnDeletePE Boolean Conserve les fichiers d’images exécutables supprimés. Valeur par défaut : False
CopyOnDeleteSIDs Chaînes Liste séparée par des virgules des SID de compte pour lesquels les suppressions de fichiers seront conservées.
CopyOnDeleteExtensions Chaînes Extensions pour les fichiers conservés lors de la suppression.
CopyOnDeleteProcesses Chaînes Nom de processus pour lequel les suppressions de fichiers seront conservées.
DnsLookup Boolean Contrôle la recherche DNS inversée. Valeur par défaut : True
DriverName String Utilise un nom spécifié pour les images de pilote et de service.
HashAlgorithms Chaînes Algorithme de hachage à appliquer pour le hachage. Les algorithmes pris en charge incluent MD5, SHA1, SHA256, IMPHASH et * (tous). Valeur par défaut : None

Les commutateurs de ligne de commande ont leur entrée de configuration décrite dans la sortie d’utilisation de Sysmon. Les paramètres sont facultatifs en fonction de la balise. Si un commutateur de ligne de commande active également un événement, il doit être configuré avec sa balise de filtre. Vous pouvez spécifier le commutateur -s pour que Sysmon imprime le schéma de configuration complet, y compris les balises d’événement, ainsi que les noms et les types de champs pour chaque événement. Par exemple, voici le schéma du RawAccessRead type d’événement :

<event name="SYSMON_RAWACCESS_READ" value="9" level="Informational "template="RawAccessRead detected" rulename="RawAccessRead" version="2">  
  <data name="UtcTime" inType="win:UnicodeString" outType="xs:string"/>  
  <data name="ProcessGuid" inType="win:GUID"/>  
  <data name="ProcessId" inType="win:UInt32" outType="win:PID"/>  
  <data name="Image" inType="win:UnicodeString" outType="xs:string"/>  
  <data name="Device" inType="win:UnicodeString" outType="xs:string"/>  
</event>  

Entrées de filtrage d’événements

Le filtrage des événements vous permet de filtrer les événements générés. Dans de nombreux cas, les événements peuvent être bruyants et rassembler tout n’est pas possible. Par exemple, vous pouvez être intéressé par les connexions réseau uniquement pour un certain processus, mais pas tous. Vous pouvez filtrer la sortie sur l’hôte réduisant les données à collecter.

Chaque événement a sa propre balise de filtre sous le nœud EventFiltering dans un fichier de configuration :

id Tag Événement
1 ProcessCreate Créer un processus
2 FileCreateTime Heure de création de fichier
3 NetworkConnect Connexion réseau détectée
4 n/a Modification de l’état du service Sysmon (ne peut pas être filtrée)
5 ProcessTerminate Processus terminé
6 DriverLoad Pilote chargé
7 ImageLoad Image chargée
8 CreateRemoteThread CreateRemoteThread détecté
9 RawAccessRead RawAccessRead détecté
10 ProcessAccess Processus consulté
11 FileCreate Fichier créé
12 RegistryEvent Objet registre ajouté ou supprimé
13 RegistryEvent Jeu de valeurs de Registre
14 RegistryEvent Objet registre renommé
15 FileCreateStreamHash Flux de fichiers créé
16 n/a Modification de configuration Sysmon (ne peut pas être filtrée)
17 PipeEvent Canal nommé créé
18 PipeEvent Canal nommé connecté
19 WmiEvent Filtre WMI
20 WmiEvent Consommateur WMI
21 WmiEvent Filtre consommateur WMI
22 DNSQuery Requête DNS
23 FileDelete Suppression de fichier archivée
24 Presse-papiersChange Nouveau contenu dans le Presse-papiers
25 ProcessTampering Traiter la modification de l’image
26 FileDeleteDetected Suppression de fichier journalisée

Vous pouvez également trouver ces balises dans l’observateur d’événements sur le nom de la tâche.

Le onmatch filtre est appliqué si les événements sont mis en correspondance. Il peut être modifié avec l’attribut onmatch de la balise de filtre. Si la valeur est "include", cela signifie que seuls les événements correspondants sont inclus. S’il est défini "exclude"sur , l’événement est inclus sauf si une règle correspond. Vous pouvez spécifier à la fois un jeu de filtres include et un jeu de filtres d’exclusion pour chaque ID d’événement, où les correspondances d’exclusion sont prioritaires.

Chaque filtre peut inclure zéro ou plusieurs règles. Chaque balise sous la balise de filtre est un nom de champ de l’événement. Les règles qui spécifient une condition pour le même nom de champ se comportent comme des conditions OR, et celles qui spécifient un nom de champ différent se comportent comme des conditions AND. Les règles de champ peuvent également utiliser des conditions pour correspondre à une valeur. Les conditions sont les suivantes (toutes ne respectent pas la casse) :

Condition Description
is Par défaut, les valeurs sont égales
est n’importe quel Le champ est l’une des ; valeurs délimitées
n’est pas Les valeurs sont différentes
contains Le champ contient cette valeur
contient n’importe quel Le champ contient l’une ; des valeurs délimitées
contient tout Le champ contient toutes les ; valeurs délimitées
Exclut Le champ ne contient pas cette valeur
exclut tout Le champ ne contient pas une ou plusieurs valeurs ; délimitées
exclut tout Le champ ne contient aucune des ; valeurs délimitées
commencer par Le champ commence par cette valeur
se terminer par Le champ se termine par cette valeur
ne pas commencer par Le champ ne commence pas par cette valeur
ne se termine pas par Le champ ne se termine pas par cette valeur
inférieur à La comparaison lexicographique est inférieure à zéro
plus que La comparaison lexicographique est supérieure à zéro
image Mettre en correspondance un chemin d’accès d’image (chemin d’accès complet ou nom d’image uniquement). Par exemple : lsass.exe correspondra à c:\windows\system32\lsass.exe

Vous pouvez utiliser une autre condition en la spécifiant comme attribut. Cela exclut l’activité réseau des processus avec des iexplore.exe dans leur chemin d’accès :

<NetworkConnect onmatch="exclude">
  <Image condition="contains">iexplore.exe</Image>
</NetworkConnect>

Pour que le rapport Sysmon qui corresponde à une règle entraîne la journalisation d’un événement, ajoutez des noms à des règles :

<NetworkConnect onmatch="exclude">
  <Image name="network iexplore" condition="contains">iexplore.exe</Image>
</NetworkConnect>

Vous pouvez utiliser des règles d’inclusion et d’exclusion pour la même balise, où le remplacement des règles d’exclusion inclut des règles. Dans une règle, les conditions de filtre ont un comportement OR.

Dans l’exemple de configuration présenté précédemment, le filtre de mise en réseau utilise à la fois une règle d’inclusion et d’exclusion pour capturer l’activité sur le port 80 et 443 par tous les processus, sauf ceux qui ont iexplore.exe leur nom.

Il est également possible de remplacer la façon dont les règles sont combinées à l’aide d’un groupe de règles qui permet à la règle de combiner le type pour un ou plusieurs événements d’être définis explicitement sur AND ou OR.

L'exemple suivant illustre cette utilisation. Dans le premier groupe de règles, un événement de création de processus est généré lorsqu’il timeout.exe est exécuté uniquement avec un argument de ligne de commande , mais un événement d’arrêt 100de processus est généré pour l’arrêt et ping.exetimeout.exe.

  <EventFiltering>
    <RuleGroup name="group 1" groupRelation="and">
      <ProcessCreate onmatch="include">
        <Image condition="contains">timeout.exe</Image>
        <CommandLine condition="contains">100</CommandLine>
      </ProcessCreate>
    </RuleGroup>
    <RuleGroup groupRelation="or">
      <ProcessTerminate onmatch="include">
        <Image condition="contains">timeout.exe</Image>
        <Image condition="contains">ping.exe</Image>
      </ProcessTerminate>        
    </RuleGroup>
    <ImageLoad onmatch="include"/>
  </EventFiltering>

DownloadTélécharger Sysmon(3,1 Mo)

S’exécute sur :

  • Client : Windows 8.1 et versions ultérieures.
  • Serveur : Windows Server 2012 et versions ultérieures.