# Exemple de détection par anomalie dans Splunk SPL
# Détection de connexions RDP inhabituelles (baseline sur 30 jours)
index=windows sourcetype=WinEventLog:Security EventCode=4624 Logon_Type=10
| stats count as daily_rdp_count by src_ip, dest, _time
| eventstats avg(daily_rdp_count) as avg_count, stdev(daily_rdp_count) as stdev_count by dest
| where daily_rdp_count > (avg_count + 3 * stdev_count)
| table _time, src_ip, dest, daily_rdp_count, avg_count

5.3 Détection comportementale (Behavioral)

La détection comportementale est le sweet spot du detection engineering. Elle se situe au sommet de la pyramide de la douleur en détectant les TTPs plutôt que les indicateurs éphémères. Elle modélise le comportement de l'attaquant : "un processus non système accède à la mémoire de LSASS", "un script PowerShell télécharge et exécute du code en mémoire", "un compte de service se connecte depuis un poste utilisateur". Guide complet Detection Engineering : pyramide de la douleur, MITRE ATT&CK mapping, lifecycle des règles SIEM, types de détection, testing, métriques. Ce guide couvre les aspects essentiels de detection engineering regles efficaces : méthodologie structurée, outils recommandés et retours d'expérience opérationnels. Les professionnels y trouveront des recommandations directement applicables.

  • 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

Avantages : résistante au changement d'outils de l'attaquant, se concentre sur l'intention, longue durée de vie.

Limites : plus complexe à écrire, nécessite une bonne compréhension du contexte normal, peut nécessiter une corrélation de plusieurs événements. La corrélation de logs est un sujet que nous approfondissons dans notre article sur l'audit avancé Microsoft 365.

# Exemple de détection comportementale dans Elastic KQL
# Détection : processus non standard accédant à LSASS memory
# MITRE ATT&CK: T1003.001 - OS Credential Dumping: LSASS Memory

process where event.action == "access" and
  process.Ext.target.name == "lsass.exe" and
  not process.executable : (
    "C:\\Windows\\System32\\*.exe",
    "C:\\Windows\\SysWOW64\\*.exe",
    "C:\\Program Files\\*\\*.exe",
    "C:\\Program Files (x86)\\*\\*.exe"
  ) and
  process.Ext.call_trace_summary : "*UNKNOWN*"
Critère Signature Anomalie Comportementale
Menaces zero-day Non Oui Oui
Faux positifs Très bas Élevé Moyen
Complexité Faible Élevée Élevée
Durée de vie Courte Variable Longue
Pyramide de la douleur Base (Hash/IP) Milieu Sommet (TTPs)
Recommandation Complémentaire UBA/UEBA Prioritaire
# Détection avancée : Lateral Movement via PsExec/Remote Service
# Corrélation entre la création de service (Event 7045) et l'exécution (Event 4688)
# MITRE ATT&CK: T1021.002 (SMB/Windows Admin Shares) + T1569.002 (Service Execution)

index=windows sourcetype=WinEventLog:System EventCode=7045
  Service_File_Name="*PSEXESVC*" OR Service_File_Name="*\\cmd.exe*" OR Service_File_Name="*\\powershell*"
| rename Computer as dest_host
| join type=inner dest_host 
  [search index=windows sourcetype=WinEventLog:Security EventCode=4624 Logon_Type=3
   | rename Computer as dest_host
   | where src_ip != "127.0.0.1" AND src_ip != "::1"
   | stats earliest(_time) as logon_time, values(src_ip) as src_ip by dest_host, Account_Name]
| eval time_diff = _time - logon_time
| where time_diff > 0 AND time_diff < 300
| table _time, dest_host, Account_Name, src_ip, Service_File_Name, Service_Name, time_diff
| sort -_time

6.4 Règle Elastic KQL : détection de Living-off-the-Land

Les attaques Living-off-the-Land (LOLBins) utilisent des binaires légitimes du système pour exécuter des actions malveillantes. Ces techniques sont particulièrement difficiles à détecter car les outils utilisés sont légitimes. Voici une détection de l'utilisation suspecte de certutil.exe pour télécharger des fichiers :

# Elastic Security Rule (KQL)
# Détection : certutil.exe utilisé pour télécharger un fichier
# MITRE ATT&CK: T1105 (Ingress Tool Transfer) + T1140 (Deobfuscate/Decode Files)

process where event.type == "start" and
  process.name : "certutil.exe" and
  process.args : ("-urlcache", "-split", "-decode", "-encode", "-decodehex") and
  not process.parent.executable : (
    "C:\\Windows\\System32\\svchost.exe",
    "C:\\Windows\\System32\\mmc.exe"
  )

# Version ESQL (Elasticsearch Query Language)
FROM logs-endpoint.events.process-*
| WHERE process.name == "certutil.exe"
  AND (process.args LIKE "*-urlcache*" OR process.args LIKE "*-decode*")
| STATS count = COUNT(*) BY host.name, user.name, process.command_line
| WHERE count > 0
| SORT count DESC

6.5 Bonnes pratiques d'écriture de règles

L'écriture de règles de détection de qualité repose sur plusieurs principes fondamentaux :

  • Documenter l'intention : chaque règle doit expliquer pourquoi elle existe, pas seulement ce qu'elle fait. Le titre et la description doivent permettre à un analyste SOC de comprendre l'alerte en 5 secondes
  • Minimiser les faux positifs dès la conception : inclure des filtres d'exclusion pour les processus légitimes connus. Documenter les faux positifs attendus
  • Mapper sur ATT&CK : chaque règle doit référencer au moins une technique ATT&CK. C'est non négociable
  • Fournir un runbook : chaque règle doit être accompagnée d'un runbook qui guide l'analyste SOC dans l'investigation. Questions à poser, logs complémentaires à consulter, actions de remédiation
  • Tester avant le déploiement : jamais de règle en production sans test. Utiliser Atomic Red Team ou un dataset de logs pour valider
  • Limiter la complexité : une règle trop complexe est difficile à maintenir et à débugger. Préférer plusieurs règles simples corrélées par le SOAR

Template de règle standardisé

Adoptez un template standardisé pour toutes vos règles. Chaque règle doit contenir : ID unique, nom descriptif, description, auteur, date de création/modification, sévérité, mapping ATT&CK, sources de données requises, logique de détection, faux positifs connus, runbook SOC, et statut (draft/review/testing/production/deprecated). Ce template garantit la cohérence et facilite l'onboarding de nouveaux detection engineers.

Pour des scénarios de test plus complexes impliquant des chaînes d'attaque multi-étapes, MITRE Caldera est un framework de simulation d'adversaire qui exécute automatiquement des séquences de techniques ATT&CK. Il permet de tester la capacité du SOC à détecter non pas une technique isolée, mais un parcours d'attaque complet.

D'autres outils de validation sont également précieux :

  • Sigma Test Utility (sigma-test) : teste les règles Sigma contre des jeux de données JSON, vérifie que la logique de détection est correcte sans nécessiter un SIEM
  • DetectionLab : un environnement de lab automatisé avec Windows AD, Sysmon, Splunk pré-configuré pour le testing des détections
  • Vectr : plateforme de Purple Team qui suit les résultats de test et le coverage ATT&CK au fil du temps
  • Log replay : rejouer des logs d'incidents passés (anonymisés) pour vérifier que les nouvelles règles auraient détecté l'attaque

Testing en production vs environnement de test

Les tests de True Positive (simulation d'attaque) ne doivent jamais être exécutés directement en production sans coordination avec les équipes SOC et IT. Utilisez un environnement de test dédié (lab) pour les simulations d'attaque, ou coordonnez un exercice Purple Team avec notification préalable. Un test non coordonné peut déclencher une réponse à incident réelle et gaspiller des heures de travail des analystes. C'est également une source potentielle de perturbation si le test atomique modifie des configurations système.

Figure 3 -- Pipeline Detection Engineering avec métriques et boucle de feedback