Lab · Logging · Endpoint Intermédiaire

Sysmon —
Télémétrie Système Linux

Sysmon pour Linux est présent sur la VM mais aucun événement n'est collecté. Le fichier de configuration XML est vide et le service n'est pas activé. Votre mission : créer une config XML minimale et activer la collecte d'événements.

01 //

Objectif

Sysmon est un outil Microsoft Sysinternals porté sur Linux. Il collecte des événements système détaillés (création de processus, connexions réseau, accès fichiers) et les envoie au syslog pour ingestion dans un SIEM.

À la fin de ce lab vous saurez :

02 //

État de la VM — Ce qui ne fonctionne pas

Problèmes détectés

(1) Le fichier /opt/sysmon/sysmon-config.xml existe mais est vide. (2) Le service sysmon.service n'est pas activé. (3) sysmon n'a jamais été lancé avec une configuration — aucun événement n'apparaît dans /var/log/syslog.

Diagnostiquez d'abord :

Diagnostic initial
# Vérifier que sysmon est installé
which sysmon || ls /opt/sysmon/

# Voir le contenu du fichier de config (doit être vide)
cat /opt/sysmon/sysmon-config.xml

# Vérifier l'état du service
systemctl status sysmon

# Chercher des événements sysmon dans le syslog
grep -i sysmon /var/log/syslog | tail -10
À NOTER — EventIDs Sysmon clés EventID 1 : création de processus. EventID 3 : connexion réseau. EventID 11 : création de fichier. Ces 3 EventIDs couvrent 80% des cas d'usage SOC.
03 //

Script Guidé — À Compléter

Ce script crée la configuration XML minimale et active Sysmon. Complétez les TODO.

setup_sysmon.sh
#!/bin/bash
# Lab Bit-Bang — Sysmon Linux setup

CONFIG="/opt/sysmon/sysmon-config.xml"

# --- Étape 1 : Créer la configuration XML minimale ---
# La structure XML Sysmon contient des RuleGroups par EventID
# TODO: écrire le fichier XML de configuration
# Consultez la structure ci-dessous et complétez les balises manquantes :

sudo tee $CONFIG > /dev/null << 'XML'
<Sysmon schemaversion="4.82">
  <EventFiltering>

    <!-- EventID 1 : Créations de processus -->
    <!-- TODO: ajouter un RuleGroup pour ProcessCreate (onmatch="include")
         avec une Rule incluant tous les processus (condition="is any") -->

    <!-- EventID 3 : Connexions réseau -->
    <RuleGroup name="" groupRelation="or">
      <NetworkConnect onmatch="include">
        <DestinationPort condition="is any"></DestinationPort>
      </NetworkConnect>
    </RuleGroup>

    <!-- EventID 11 : Créations de fichiers -->
    <!-- TODO: ajouter un RuleGroup pour FileCreate (onmatch="include")
         ciblant le répertoire /tmp (TargetFilename contains "/tmp") -->

  </EventFiltering>
</Sysmon>
XML

# --- Étape 2 : Charger la configuration dans sysmon ---
# TODO: lancer sysmon avec la configuration XML
# Indice : sudo sysmon -accepteula -c $CONFIG

# --- Étape 3 : Activer et démarrer le service ---
# TODO: activer le service sysmon au démarrage
# Indice : sudo systemctl enable sysmon && sudo systemctl start sysmon

sudo systemctl status sysmon --no-pager
echo "Sysmon actif. Vérifiez : journalctl -u sysmon -f"
▸ AFFICHER LA SOLUTION (essayez d'abord !)

Configuration XML complète et commandes :

<RuleGroup name="" groupRelation="or">
  <ProcessCreate onmatch="include">
    <Image condition="is any"></Image>
  </ProcessCreate>
</RuleGroup>

<RuleGroup name="" groupRelation="or">
  <FileCreate onmatch="include">
    <TargetFilename condition="contains">/tmp</TargetFilename>
  </FileCreate>
</RuleGroup>

# Charger la config et démarrer
sudo sysmon -accepteula -c /opt/sysmon/sysmon-config.xml
sudo systemctl enable sysmon && sudo systemctl start sysmon
04 //

Vérification — Lire les Événements

Générez des événements et vérifiez qu'ils sont bien capturés :

Vérification
# Générer un événement de création de processus (EventID 1)
ls /tmp

# Générer un événement de création de fichier dans /tmp (EventID 11)
touch /tmp/sysmon_test.txt

# Lire les événements en temps réel via journald
sudo journalctl -u sysmon -f

# Ou filtrer les événements de création de processus dans le syslog
grep "ProcessCreate" /var/log/syslog | tail -10

# Vérifier que le service est bien actif
systemctl is-active sysmon && echo "OK: sysmon collecte les événements"
SUCCÈS ATTENDU journalctl doit afficher des entrées avec RuleName, ProcessCreate ou FileCreate. Si vous voyez des événements avec CommandLine et Image renseignés, Sysmon collecte bien la télémétrie système.
05 //

Pour aller plus loin