2.1 Structure YAML complète

Une règle Sigma est un document YAML structuré en sections clairement définies. Chaque section a un rôle précis dans le processus de détection et de compilation. Voici la structure complète avec toutes les sections disponibles : Guide complet Sigma Rules : syntaxe YAML, logsources, modifiers, conditions, corrélation temporelle, pySigma backends, conversion multi-SIEM. La détection des menaces repose sur la capacité à identifier les comportements malveillants parmi le bruit. Sigma Rules : Guide Complet d'Écriture et Déploiement de fournit des méthodologies éprouvées pour les analystes SOC. Nous abordons notamment : 8. intégration dans un pipeline ci/cd, questions frequentes et 9. conclusion et ressources. Les professionnels y trouveront des recommandations actionnables, des commandes prêtes à l'emploi et des stratégies de mise en œuvre adaptées aux environnements d'entreprise.

  • Architecture SOC et flux de détection
  • Règles de corrélation SIEM et cas d'usage
  • Threat hunting proactif et investigation
  • Métriques SOC : MTTD, MTTR et efficacité opérationnelle
# Règle Sigma complète - Structure de référence
title: Mimikatz Credential Dumping via LSASS Access
id: 0d894093-71bc-43c3-a4b0-2a0e3e8f0425    # UUID unique
related:
  - id: 27a72a60-7e5e-47b1-9d17-909c9abafdcd
    type: derived                              # derived | obsoletes | merged | renamed | similar
status: stable                                # test | stable | experimental | deprecated | unsupported
description: |
  Détecte l'accès mémoire au processus LSASS avec des droits
  caractéristiques de Mimikatz (sekurlsa::logonpasswords).
  Couverture : T1003.001 - OS Credential Dumping: LSASS Memory.
references:
  - https://attack.mitre.org/techniques/T1003/001/
  - https://github.com/gentilkiwi/mimikatz
  - https://posts.specterops.io/operational-guidance-for-offensive-user-dpapi-abuse-1fb7fac8b107
author: Ayi NEDJIMI, Florian Roth (original)
date: 2026-02-15
modified: 2026-02-28
tags:
  - attack.credential_access
  - attack.t1003.001
  - attack.s0002                              # Mimikatz software
  - detection.dfir
level: high                                   # informational | low | medium | high | critical
falsepositives:
  - Legitimate security tools scanning LSASS
  - Windows Defender real-time protection
  - Crash dump utilities (procdump for debugging)

logsource:
  category: process_access
  product: windows

detection:
  selection_target:
    TargetImage|endswith: '\lsass.exe'
  selection_access:
    GrantedAccess|contains:
      - '0x1010'
      - '0x1410'
      - '0x1438'
      - '0x143a'
      - '0x1fffff'
  filter_main_legitimate:
    SourceImage|endswith:
      - '\wmiprvse.exe'
      - '\taskmgr.exe'
      - '\procexp64.exe'
      - '\procexp.exe'
  filter_defender:
    SourceImage|contains: '\Microsoft\Windows Defender\'
    SourceImage|endswith: '\MsMpEng.exe'
  filter_crowdstrike:
    SourceImage|startswith: 'C:\Program Files\CrowdStrike\'
  condition: selection_target and selection_access and not 1 of filter_*

fields:
  - SourceImage
  - TargetImage
  - GrantedAccess
  - SourceProcessGUID
  - CallTrace

Analysons chaque section en détail pour comprendre les bonnes pratiques de rédaction.

2.2 Les métadonnées : identité et contexte

Les métadonnées constituent la carte d'identité de la règle. Le champ id est un UUID v4 unique qui identifie la règle de manière universelle -- il ne doit jamais être réutilisé, même si la règle est complètement réécrite. Le champ related permet de tracer les filiations entre règles (dérivée d'une autre, fusion de plusieurs règles, remplacement d'une règle obsolète).

Le champ status contrôle le cycle de vie. Les règles experimental sont en phase de test et peuvent générer des faux positifs. Les règles stable ont été validées en production. Les règles test sont en cours de développement. Le champ level indique la sévérité de l'alerte : critical pour les détections à très haute confiance nécessitant une réponse immédiate, high pour les détections fiables nécessitant une investigation, medium et low pour les indicateurs de compromission plus bruités.

Les tags suivent la convention ATT&CK : attack.tactic_name pour les tactiques, attack.tXXXX pour les techniques, et attack.sXXXX pour les logiciels. Ces tags sont exploités par les outils de couverture MITRE ATT&CK pour générer les matrices de détection, un élément central de l'approche Detection-as-Code.

2.3 La logsource : abstraction des sources de données

La section logsource est le mécanisme d'abstraction qui rend Sigma portable. Au lieu de spécifier un index Splunk ou un data stream Elastic, la règle déclare une catégorie logique de données. Le backend de compilation traduit ensuite cette catégorie en identifiant concret pour chaque SIEM.

Les trois champs de la logsource sont :

  • category : le type d'événement -- process_creation, process_access, file_event, network_connection, registry_event, dns_query, image_load, etc. Les catégories sont standardisées dans la spécification Sigma.
  • product : le système d'exploitation ou le produit source -- windows, linux, macos, azure, aws, gcp.
  • service : le journal d'événements spécifique -- sysmon, security, system, powershell, dns-server, firewall.
Anatomie d'une Règle Sigma Métadonnées title: Mimikatz LSASS Access id: 0d894093-71bc-43c3-... status: stable level: high tags: - attack.credential_access - attack.t1003.001 Identité, auteur, date, références, faux positifs Logsource logsource: category: process_access product: windows Abstraction portable des sources de logs Detection (coeur de la règle) detection: selection_target: TargetImage|endswith: '\lsass.exe' selection_access: GrantedAccess|contains: - '0x1010' - '0x1410' filter_legitimate: SourceImage|endswith: '\wmiprvse.exe' condition: selection_* and not filter_* Splunk SPL index=sysmon EventCode=10 Elastic ES|QL event.code == "10" Sentinel KQL SecurityEvent | EventID==10 QRadar AQL SELECT * FROM events pySigma

Figure 1 -- Anatomie d'une règle Sigma : métadonnées, logsource, détection et compilation multi-SIEM

La taxonomie des logsources est cruciale pour la portabilité. Les catégories les plus couramment utilisées sont :

Catégorie Description Source typique Event IDs
process_creation Création de processus Sysmon EID 1, Security 4688 1, 4688
process_access Accès mémoire inter-processus Sysmon EID 10 10
file_event Création/modification de fichiers Sysmon EID 11 11
registry_event Modification du registre Sysmon EID 12/13/14 12, 13, 14
network_connection Connexions réseau sortantes Sysmon EID 3 3
dns_query Requêtes DNS Sysmon EID 22 22
image_load Chargement de DLL Sysmon EID 7 7
pipe_created Création de named pipes Sysmon EID 17/18 17, 18

Notre avis d'expert

Le threat hunting proactif est ce qui distingue un SOC réactif d'un SOC mature. Attendre les alertes ne suffit plus — il faut activement chercher les indicateurs de compromission dans les données historiques et les comportements anormaux.

La condition combine les detection items nommés avec des opérateurs logiques :

# Exemples de conditions
condition: selection                           # Simplement le selection
condition: selection and not filter            # Selection moins le filtre
condition: selection1 or selection2            # L'un ou l'autre
condition: selection and not 1 of filter_*     # Wildcard sur les filtres
condition: all of selection_*                  # Tous les selections doivent matcher
condition: 1 of selection_*                    # Au moins un selection matche
condition: selection | count() > 5             # Aggregation : plus de 5 occurrences
condition: selection | count(SourceIP) > 10    # Plus de 10 IPs source distinctes

Piège : l'ordre des opérateurs logiques

La condition Sigma utilise la priorité logique standard : not > and > or. Mais pour les cas complexes, utilisez des parenthèses explicites pour éviter toute ambiguïté. La condition selection1 or selection2 and not filter est interprétée comme selection1 or (selection2 and not filter), ce qui n'est probablement pas l'intention. Écrivez plutôt (selection1 or selection2) and not filter.

3.3 Le pattern de naming : selections et filters

La convention de nommage SigmaHQ recommande un pattern clair pour distinguer les types de detection items :

  • selection_* : les critères positifs qui identifient le comportement suspect. Exemples : selection_target, selection_access, selection_cmdline.
  • filter_main_* : les exclusions principales pour les faux positifs bien connus. Exemples : filter_main_defender, filter_main_svchost.
  • filter_optional_* : les exclusions secondaires que l'utilisateur peut choisir d'activer ou non selon son environnement. Exemples : filter_optional_admin_tools.

Ce pattern permet d'utiliser la condition selection and not 1 of filter_main_* and not 1 of filter_optional_* pour combiner élégamment tous les filtres. Il facilite aussi la maintenance : ajouter un nouveau faux positif revient à ajouter un nouveau filter_main_xxx sans toucher à la condition.

Cas concret

L'opération de threat hunting menée par CrowdStrike lors de l'investigation de l'intrusion au Comité National Démocrate (DNC) en 2016 a illustré la valeur du hunting proactif. L'identification des groupes APT28 et APT29 n'a été possible que par une analyse manuelle approfondie dépassant les capacités des outils automatisés.

La corrélation near n'est pas supportée par tous les backends pySigma. Splunk la traduit en transaction ou en join, Elastic peut utiliser les EQL sequences, et Sentinel les fonctions KQL arg_min/arg_max avec des join. Si votre backend ne supporte pas near, vous devrez écrire la corrélation manuellement dans le langage natif du SIEM, ou utiliser deux règles distinctes combinées par un système d'enrichissement au niveau du SOAR.