Sysmon v14.12

Par Mark Russinovich et Thomas Garnier

Publication : 10 novembre 2022

TéléchargerTélécharger Sysmon(4,6 Mo)

Télécharger Sysmon pour Linux (GitHub)

Introduction

System Monitor (Sysmon) est un service système Windows et un pilote de périphérique qui, une fois installé sur un système, reste résident entre les redémarrages du système pour surveiller et consigner l’activité 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’elle génère à l’aide de la collection d’événements Windows ou des 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 et ne tente pas de se protéger ou de se cacher contre les attaquants.

Vue d’ensemble des fonctionnalités Sysmon

Sysmon inclut les fonctionnalités suivantes :

  • Création de processus de journaux 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 (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 permettre la corrélation des événements sur la même session d’ouverture de session.
  • Journalise le chargement de pilotes ou de DLL avec leurs signatures et hachages.
  • Les journaux s’ouvrent pour l’accès en lecture brute aux disques et aux volumes.
  • Journalise éventuellement les connexions réseau, y compris 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 du fichier pour comprendre quand un fichier a vraiment été créé. La modification des horodatages de création de fichiers est une technique couramment utilisée par les programmes malveillants pour couvrir ses traces.
  • Rechargez automatiquement la configuration en cas de modification dans le Registre.
  • Filtrage de règle pour inclure ou exclure certains événements dynamiquement.
  • Génère des événements à partir du début du processus de démarrage pour capturer l’activité effectuée par des programmes malveillants en mode noyau même sophistiqués.

Captures d’écran.

EventViewer

Utilisation

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>]
Mettre à jour la configuration : sysmon64 -c [<configfile>]
Installez 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 le manifeste d’événement (effectué implicitement lors de l’installation du service).
-s Définition de schéma de configuration d’impression.
-u Désinstallez le service et le pilote. L’utilisation -u force entraîne la désinstallation même lorsque certains composants ne sont pas installés.

Le service journalise immédiatement les événements et le pilote s’installe en tant que pilote de démarrage pour capturer l’activité à partir du début du démarrage que le service écrira dans le journal des événements quand il démarre.

Sur Vista et versions ultérieures, les événements sont stockés dans Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. Sur les systèmes plus anciens, les événements sont écrits dans le journal des System é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é de manière interactive à l’accepter.

Ni l’installation ni la désinstallation ne nécessitent un redémarrage.

Exemples

Installer avec les paramètres par défaut (images de processus 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

Remplacez la configuration par les paramètres par défaut

sysmon -c --

Afficher le schéma de configuration

sysmon -s

Événements

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

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 ProcessGUID champ 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 dans le HashType champ.

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

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

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

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

ID d’événement 4 : Modification de l’état du service Sysmon

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

ID d’événement 5 : Processus terminé

L’événement d’arrêt de processus signale l’arrêt d’un processus. Il fournit le UtcTimeet ProcessGuidProcessId du processus.

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

Les événements chargés du pilote fournissent des informations sur un pilote en cours de chargement 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’événement chargé d’image journalise 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é, les hachages et 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. Cet événement doit être configuré avec soin, car la surveillance de tous les événements de chargement d’images génère une quantité importante de journalisation.

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 les programmes malveillants pour injecter du code et se 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 StartModuleStartFunction les champs 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 quand 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 de données de 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 consulté signale les é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 de processus tels que l’autorité de sécurité locale (Lsass.exe) afin de voler des informations d’identification à utiliser dans les attaques pass-the-hash. Son activation peut générer des quantités importantes de journalisation s’il existe des utilitaires de diagnostic actifs qui ouvrent à plusieurs reprises des processus pour interroger leur état, de sorte qu’elle ne doit généralement être effectuée qu’avec des filtres qui suppriment les accès attendus.

ID d’événement 11 : FileCreate

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

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

Les opérations de création et de suppression de clé de Registre et de valeur sont 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 racine 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 Registry 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 (renommage de clé et de valeur)

Les opérations de renommage de clé de Registre et de valeur sont mappées à ce type d’événement, en 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 consignent le hachage du contenu du fichier auquel le flux est affecté (le flux sans nom), 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 les téléchargements de navigateur, et cet événement vise à capturer cela en fonction du navigateur qui joint une Zone.Identifier « marque du web » flux.

ID d’événement 16 : ServiceConfigurationChange

Cet événement journalise 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 est généré 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é 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 un programme malveillant pour s’exécuter, cet événement journalise l’espace de noms WMI, le nom du filtre et l’expression de filtre.

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

Cet événement journalise l’inscription des consommateurs WMI, en enregistrant le nom du consommateur, le journal et la destination.

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

Lorsqu’un consommateur se lie à un filtre, cet événement journalise 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. La télémétrie de cet événement a été ajoutée pour Windows 8.1 et n’est donc pas disponible sur Windows 7 et les versions antérieures.

ID d’événement 23 : FileDelete (suppression de fichier archivé)

Un fichier a été supprimé. En plus de la journalisation de l’événement, le fichier supprimé est également enregistré dans ( ArchiveDirectory ce qui est C:\Sysmon par défaut). Dans des conditions de fonctionnement normales, ce répertoire peut atteindre une taille déraisonnable. Consultez 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 « creuse » ou « herpaderp » sont détectées.

ID d’événement 26 : FileDeleteDetected (Suppression de fichier journalisée)

Un fichier a été supprimé.

ID d’événement 27 : FileBlockExecutable

Cet événement est généré lorsque Sysmon détecte et bloque la création de fichiers exécutables.

ID d’événement 28 : FileBlockShredding

Cet événement est généré lorsque Sysmon détecte et bloque le déchiquetage de fichiers à partir d’outils tels que SDelete.

ID d’événement 255 : Erreur

Cet événement est généré lorsqu’une erreur s’est produite dans Sysmon. Elles peuvent se produire si le système est soumis à une charge élevée et que certaines tâches ne peuvent pas être effectuées ou qu’un bogue existe dans le service Sysmon, ou même si certaines conditions de sécurité et d’intégrité ne sont pas remplies. Vous pouvez signaler des 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 :

<Sysmon schemaversion="4.82">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <DriverLoad onmatch="exclude">
      <Signature condition="contains">microsoft</Signature>
      <Signature condition="contains">windows</Signature>
    </DriverLoad>
    <!-- Do not log process termination -->
    <ProcessTerminate onmatch="include" />
    <!-- Log network connection if the destination port equal 443 -->
    <!-- or 80, and process isn't InternetExplorer -->
    <NetworkConnect onmatch="include">
      <DestinationPort>443</DestinationPort>
      <DestinationPort>80</DestinationPort>
    </NetworkConnect>
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">iexplore.exe</Image>
    </NetworkConnect>
  </EventFiltering>
</Sysmon>

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 de la ligne de commande «-? config ». Les entrées de configuration se trouvent directement sous la Sysmon balise et les filtres se trouvent sous la EventFiltering balise.

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 sont les suivantes :

Entrée Valeur Description
ArchiveDirectory String Nom des répertoires aux racines du volume dans lesquels les fichiers de copie-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 psexec -sid cmdde ). 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 image 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 qui sont conservés lors de la suppression.
CopyOnDeleteProcesses Chaînes Nom(s) de processus pour lesquels les suppressions de fichier 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.
HachageAlgorithms Chaînes Algorithme(s) 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 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é via sa balise de filtre. Vous pouvez spécifier le -s commutateur pour que Sysmon imprime le schéma de configuration complet, y compris les étiquettes d’événement, ainsi que les noms de champs et les types pour chaque événement. Par exemple, voici le schéma pour le type d’événement RawAccessRead :

<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 d’événements vous permet de filtrer les événements générés. Dans de nombreux cas, les événements peuvent être bruyants et tout rassembler n’est pas possible. Par exemple, vous pouvez être intéressé par les connexions réseau uniquement pour un certain processus, mais pas toutes. Vous pouvez filtrer la sortie sur l’hôte en 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 Processus de création
2 FileCreateTime Heure de création du fichier
3 NetworkConnect Connexion réseau détectée
4 n/a Changement d’état du service Sysmon (ne peut pas être filtré)
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 accessible
11 FichierCréer Fichier créé
12 RegistryEvent Objet de Registre ajouté ou supprimé
13 RegistryEvent Jeu de valeurs de Registre
14 RegistryEvent Objet du Registre renommé
15 FileCreateStreamHash Flux de fichiers créé
16 n/a Changement de configuration Sysmon (ne peut pas être filtré)
17 PipeEvent Canal nommé créé
18 PipeEvent Canal nommé connecté
19 WmiEvent Filtre WMI
20 WmiEvent Consommateur WMI
21 WmiEvent Filtre de 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
27 FileBlockExecutable Fichier exécutable de bloc de fichiers
28 FileBlockShredding Déchiquetage de blocs de fichiers

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 a la valeur "exclude", l’événement sera inclus, sauf si une règle correspond. Vous pouvez spécifier 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 faire 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 tous les Le champ ne contient pas une ou plusieurs des ; valeurs délimitées
exclut tout Le champ ne contient aucune des ; valeurs délimitées
commencer par Le champ commence par cette valeur
terminer par Le champ se termine par cette valeur
ne commence pas 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 Correspondance d’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 en tant qu’attribut. Cela exclut l’activité réseau des processus avec iexplore.exe dans leur chemin d’accès :

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

Pour que Sysmon indique quelle correspondance de règle a entraîné la journalisation d’un événement, ajoutez des noms aux 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ù les règles d’exclusion remplacent les règles include. Dans une règle, les conditions de filtre ont le comportement OR.

Dans l’exemple de configuration présenté précédemment, le filtre réseau utilise à la fois une règle d’inclusion et une règle d’exclusion pour capturer l’activité vers le port 80 et 443 par tous les processus, à l’exception de ceux qui ont iexplore.exe dans 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 au type de combinaison de règle pour un ou plusieurs événements d’être défini 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 de 100, mais un événement d’arrêt de processus est généré pour l’arrêt de ping.exe et timeout.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>

TéléchargerTélécharger Sysmon(4,6 Mo)

S’exécute sur :

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