System Monitor (Sysmon) est un service système Windows et le pilote de périphérique permanent entre les redémarrages du système pour surveiller et journaliser l’activité du système dans le journal des événements Windows une fois installé sur un système. 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 recueillant les événements qu’il génère à l’aide de la collecte d’événements Windows ou des agents SIEM, puis en les analysant, vous pouvez identifier une activité malveillante ou anormale et comprendre comment les intrus et les logiciels malveillants fonctionnent sur votre réseau. Le service s’exécute en tant que processus protégé, ce qui supprime un large éventail d’interactions en mode utilisateur.
Notez que Sysmon ne fournit pas d’analyse des événements qu’il génère et ne tente pas 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 de fichier pour comprendre le moment où 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.
Usage
Utilisation courante avec des options de ligne de commande simples pour installer et désinstaller Sysmon, ainsi que pour case activée 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 de -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 événements System.
Si vous avez besoin d’informations supplémentaires sur les fichiers de configuration, utilisez la commande -? config.
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 événements System.
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 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 dans le champ HashType.
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 lorsque l’heure de création d’un 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 les états 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 UtcTime, ProcessGuid et ProcessId 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 quand 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 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 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 les programmes malveillants pour 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 a accédé aux rapports d’événements lorsqu’un processus ouvre un autre processus, 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 significatives de journalisation s’il existe des utilitaires de diagnostic actifs qui ouvrent des processus à plusieurs reprises pour interroger leur état. En règle générale, cela ne doit donc être effectué 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 emplacements courants où les programmes malveillants sont abandonnés 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 la clé de Registre et de la 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 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 Registry identifie les modifications de valeur de 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 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 fichier 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 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 des téléchargements de navigateur, et cet événement est destiné à capturer cela en fonction du navigateur joignant un fluxZone.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 est généré lorsqu’un canal nommé est créé. Les programmes malveillants utilisent souvent des canaux nommés pour la communication interprocessus.
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 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, en enregistrant le nom, le journal et 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 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 elle n’est donc pas disponible sur Windows 7 et les versions antérieures.
ID d’événement 23 : FileDelete (suppression de fichier archivée)
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 l’ID d’événement 26 : FileDeleteDetected pour un comportement similaire, mais sans enregistrer les fichiers supprimés.
ID d’événement 24 : ClipboardChange (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 (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 (format PE).
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 29 : FileExecutableDetected
Cet événement est généré lorsque Sysmon détecte la création d’un fichier exécutable (format PE).
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 lourde et que certaines tâches n’ont pas pu être effectuées, si 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 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 :
<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 balise Sysmon et les filtres se trouvent 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 sont les suivantes :
Entrée
Valeur
Description
ArchiveDirectory
String
Nom des répertoires situés aux racines du volume dans lesquels les fichiers copier-supprimer 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 des signatures. 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 conservés lors de la suppression.
CopyOnDeleteProcesses
Chaînes
Nom(s) de processus pour lesquels les suppressions de fichiers seront conservées.
DnsLookup
Boolean
Contrôle la recherche DNS inversée. Valeur par défaut : True
DriverName
String
Utilise le nom spécifié pour les images de pilote et de service.
HashAlgorithms
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 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é via 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 pour le type d’événement RawAccessRead :
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 pour 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
Création de processus
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
Détection de CreateRemoteThread
9
RawAccessRead
RawAccessRead détecté
10
ProcessAccess
Processus consulté
11
FileCreate
Fichier créé
12
RegistryEvent
Objet de Registre ajouté ou supprimé
13
RegistryEvent
Jeu de valeurs de Registre
14
RegistryEvent
Objet de 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 de consommateur WMI
22
DNSQuery
Requête DNS
23
FileDelete
Suppression de fichier archivée
24
ClipboardChange
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
29
FileExecutableDetected
Fichier exécutable détecté
Vous pouvez également trouver ces balises dans l’observateur d’événements sur le nom de la tâche.
Le filtre onmatch 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 à la fois un jeu de filtres inclut 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
Le champ contient l’une des ; valeurs délimitées
contient tout
Le champ contient l’une des ; 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 pas une ou plusieurs des ; valeurs délimitées
commence par
Le champ commence par cette valeur
se termine 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
supérieur à
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 :
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 d’inclusion. 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 les ports 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ègles pour un ou plusieurs événements d’être explicitement défini 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é lorsque 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.