Steven DIAS
3 Séances prévus :
Plusieurs TP :
QCM à chaque séance (sauf la première)
Format -> 20 questions 1 point par question et pas de point négatif
Restitution écrite ou orale des TP :
Exemple -> Réalisation d'un compte rendu d'investigation d'une alerte SOC
Objectifs de cette séance
Un Security Operations Center (SOC) est une unité centralisée, composée de personnes, de processus et de technologies, dont la mission est de surveiller en continu (24h/24, 7j/7) l'environnement informatique d'une organisation afin de détecter, analyser, répondre et prévenir les incidents de sécurité.
Le SOC travaille dans un écosystème de sécurité
Structure en différent niveaux, comme dans une équipe médicale
| Niveau | Rôle principal | Activités clés |
|---|---|---|
| N1 | Triage & Monitoring | Surveillance SIEM 24/7, triage des alertes, classification vrai/faux positif, escalade vers L2, documentation tickets |
| N2 | Investigation | Analyse approfondie incidents, corrélation multi-sources, réponse aux incidents, création de règles SIEM, intégration Threat Intel, mentoring L1 |
| N3 | Threat Hunting & Expertise | Chasse aux menaces proactives, forensic avancé, reverse engineering malware, architecture de détection, gestion des incidents majeurs, R&D |
| Modèle | Description | Avantages | Inconvénients |
|---|---|---|---|
| SOC Interne | Équipe dédiée en interne 24/7 | Contrôle total, connaissance du contexte métier | Coût élevé, difficulté de recrutement |
| SOC Externalisé (MSSP) | Délégation à un prestataire | Expertise immédiate, coût maîtrisé | Moins de contexte métier, dépendance |
| SOC Hybride | Mix interne + MSSP | Flexibilité, escalade possible | Coordination complexe |
| SOC-as-a-service | Consommation à la demande (cloud) | Agilité, scalabilité | Customisation limitée, données cloud |
| Virtual SOC | Équipe distribuée, pas de salle dédiée | Coût réduit, talents géographiques | Cohésion d'équipe plus difficile |
Il existe différents modèles selon les besoins et ressources
Prise de poste : Briefing par l'analyste sortant
Monitoring en continue du Dasbhoard SOC
🚨Réception d'une alerte
KPI (Key Performance Indicator) : indicateur chiffré permettant de mesurer la performance d'une équipe SOC.
| Métrique | Signification | Objectif type |
|---|---|---|
| MTTD (Mean Time To Detect) | Temps moyen entre début de l'attaque et sa détection | < 7 min (critique), < 30 min (haut) |
| MTTR (Mean Time To Respond) | Temps moyen entre détection et début de réponse | < 1h (critique), < 2h (haut) |
| MTTC (Mean Time To Contain) | Temps moyen de confinement complet | < 120 min (critique) |
| Taux de faux positifs | % alertes sans menace réelle | < 20% idéalement |
| Volume d'alertes traités | Nombre d'alertes par analyste/jour | Indicateur de surcharge |
| Taux de détection | % incidents réels détectés | Le plus haut possible |
Cas 1 - Phishing + Credential Stuffing
Email phishing reçu par 50 employés
→ Clic sur le lien par 3 personnes
→ Saisie identifiants sur faux portail
→ Connexion malveillante depuis IP roumaine
→ Alertes SIEM : connexion hors zone géographique
Quel Réaction du SOC ?
Cas 2 - Ransomware
Macro Excel malveillante ouverte par un comptable
→ PowerShell lancé en arrière-plan
→ Tentative de connexion vers C2 externe
→ EDR détecte et bloque un comportement anormal
Quel Réaction du SOC ?
Cas 3 - Insider Threat
Employé sur le départ exfiltre 2 Go de données client
→ DLP détecte upload massif vers Dropbox personnel
Quel Réaction du SOC ?
| Menace | Fréquence | Impact typique | Vecteur principal |
|---|---|---|---|
| Phishing | ~90% des intrusions | Vol identifiants, infection | |
| Ransomware | En hausse constante | Paralysie opérationnelle | Phishing, Services exposé |
| APT | Ciblé, rare | Espionnage, sabotage | Spear-phishing, 0-day |
| Malware (Trojan, stealer) | Très fréquent | Exfiltration, accès persistant | Web, email, USB |
| DDoS | Très fréquent | Indisponibilité de service | Botnet |
| Insider Threat | Sous-estimé | Exfiltration, sabotage | Accès légitime détourné |
| Supply Chain Attack | En forte hausse | Impact massif, Déploiement en masse | Dépendances logicielles |
Ce que les SOC voient arriver chaque jour :
De : support@miicrosoft.com
À : john.doe@entreprise.fr
Sujet : ⚠️ Action requise – Votre compte va expirer
Bonjour John Doe,
Votre compte Microsoft 365 sera désactivé dans 24h.
Cliquez ici pour confirmer vos identifiants :
[ https://login.micros0ft-secure.com/verify ]
Cordialement,
L'équipe Microsoft Support
Anatomie d'un email de phishing typique :
Ce qu'il faut voir côté SOC :
Variants à connaître :
Cycle de vie d'une attaque ransomware
Pourquoi le ransomware est redouté ? :
Temps de détection critique : si le chiffrement démarre, il faut stopper immédiatement
Double extorsion : les données sont exfiltrées avant chiffrement → menace de publication
RaaS (Ransomware-as-a-Service) : accessible à des attaquants peu techniques
En 2021, l'hôpital de Dax (France) a été touché par le ransomware Ryuk. Résultat : 3 semaines de retour au papier, des opérations reportées, un coût de remédiation de 2,5M€
APT (Advanced Persistent Threat) :
Définition : Acteur (souvent étatique) qui s'infiltre discrètement dans un réseau pour y rester longtemps, voler des données ou préparer un sabotage. Priorité à la furtivité, pas à la rapidité.
Malware - Taxonomie simplifiée :
| Type | Objectif | Exemple |
|---|---|---|
| Trojan | Accès furtif à distance | Emotet, Qakbot |
| Stealer | Voler mots de passe, cookies | RedLine Stealer |
| RAT | Contrôle complet du poste | AsyncRAT, Cobalt Strike |
| Rootkit | Se cacher dans l'OS | TDL4 |
| Worm | Se propager automatiquement | WannaCry |
DDoS (Distributed Denial of Service) :
Modèle développé par Lockheed Martin en 2011 décrivant les 7 étapes séquentielles qu'un attaquant doit franchir pour atteindre son objectif.
Vision défensive de la cyberkillchain
| Etape | Défense possible |
|---|---|
| Recon | Limiter l'exposition publique, OSINT défensif |
| Weaponization | Sandboxing des fichiers entrants |
| Delivery | Filtrage email (anti-spam, anti-phishing), proxy web |
| Exploitation | Patch management, EDR (détection exploit) |
| Installation | EDR, détection persistance, contrôle intégrité |
| C2 | Blocage IP/domaine, détection beaconing réseau |
| Actions | DLP, surveillance accès, isolation rapide |
Base de connaissances mondiale, maintenue par MITRE Corporation, documentant les tactiques, techniques et procédures (TTPs) utilisées par des attaquants réels, observées sur des incidents authentiques.
| Cyber Kill Chain | MITTRE ATT&CK | |
|---|---|---|
| Granularité | 7 étapes macro | 14 tactiques, 200+ techniques |
| Usage | Vision stratégique d'une attaque | Investigation précise, détection |
| Maintenance | Statique (2011) | Mise à jour régulière (v18 - Oct 2025) |
| Orientation | Processus attaquant | TTPs détaillées + détection |
Les 3 concepts clé :
TACTIQUE → "Pourquoi ?" L'objectif tactique de l'attaquant
ex: Initial Access, Persistence, Lateral Movement
TECHNIQUE → "Comment ?" La méthode utilisée
ex: T1078 - Valid Accounts
PROCÉDURE → "Dans les détails ?" L'implémentation spécifique d'un groupe
ex: APT28 utilise T1078 via RDP
Les IOCs (Indicators of Compromise) sont des artefacts techniques observables qui indiquent qu'un système a potentiellement été compromis ou est ciblé par une menace.
| Type d'IOC | Exemple | Ou le trouver |
|---|---|---|
| Hash de fichier | MD5, SHA1, SHA256 du malware | EDR, sandbox, AV logs |
| Adresse IP | 185.220.101.45 (C2 connu) | Firewall, proxy, NetFlow |
| Nom de domaine | evil-c2[.]ru | DNS logs, proxy |
| URL | https://malware[.]xyz/pay | Proxy, mail gateway |
| invoice@fake-supplier[.]com | Mail gateway logs | |
| Mutex / clé reg | HKLM\Software\evil\persist | EDR, Sysmon (Event 13) |
Où vérifier un IOC en opérationnel :
Modèle créé par David J. Bianco (2013) qui classe les IOCs selon la difficulté que leur détection impose à l'attaquant.
Implication pratique pour le SOC :
| Niveau | Stratégie défensive | Durée de vie |
|---|---|---|
| Hash | Blocage IOC (signature) | Quelques heures |
| IP | Blocage firewall, enrichissement | Jours |
| Domaine | DNS sinkhole, blocage proxy | Jours à semaines |
| Artifacts | Détection comportementale | Semaines |
| Outils | Détection signatures outils | Mois |
| TTPs | Détection comportementale via MITRE ATT&CK | Permanent |
Comment un IOC devient une alerte dans le SIEM :
Les 3 natures d'IOCs à retenir opérationnellement :
NIS2 (Network and Information Security Directive 2)
| Aspect | Détail |
|---|---|
| Périmètre | Entités essentielles et importantes (énergie, santé, finance, transports…) |
| Obligation clé SOC | Signalement d'incident significatif sous 24h (notification initiale) puis 72h (rapport détaillé) |
| Sanctions | Jusqu'à 10M€ ou 2% du CA mondial |
| Entrée en vigueur | Transposée en France par la loi en 2024 |
RGPD (Règlement Général sur la Protection des Données)
| Aspect | Détail |
|---|---|
| Périmètre | Toute organisation traitant des données personnelles de résidents UE |
| Obligation clé SOC | Notification violation de données à la CNIL sous 72 heures |
| Impacts logs SOC | Les logs peuvent contenir des données personnelles → rétention à justifier |
| Sanctions | Jusqu'à 20M€ ou 4% du CA mondial |
L'ISO/IEC 27001
| Aspect | Détail |
|---|---|
| Nature | Norme internationale (certification volontaire) |
| Lien SOC | Annexe A contrôles de sécurité : surveillance, gestion incidents |
| Usage pratique | Référentiel pour structurer les processus SOC |
| Valeur | Signal de maturité pour clients, partenaires, assureurs |
Nous avons récemment découvert qu’une partie de nos données privées a été publiée sur internet. Cette fuite a eu lieu le 14 octobre 2024 à 4h30 du matin. Nous soupçonnons que les attaquants ont utilisé notre serveur web comme point d’entrée dans leur attaque. Nous avons extrait les logs de ce serveur, couvrant une période de quelques jours avant l’attaque, afin que vous puissiez les analyser et découvrir ce qui s’est passé.
Objectif :
Un fichier auth.log de 500 000 lignes.
Trouver : toutes les IPs qui ont échoué > 100 fois.
Temps avec un éditeur texte : 45 minutes
Temps avec awk : 3 secondes
awk en une phrase : un outil de traitement de texte ligne par ligne qui découpe chaque ligne en champs ($1, $2, $3...) et permet d'y appliquer des filtres et calculs.
Les 3 outils complémentaires à connaître :
| Outil | Usage principal | Force |
|---|---|---|
| grep | Filtrer des lignes | Rapide, simple |
| cut | Extraire des colonnes par position | Simple mais rigide |
| awk | Filtrer + extraire + calculer + formater | Puissant et flexible |
| sed | Substitution / transformation de texte | Idéal pour modifier |
awk 'condition { action }' fichier
$0 → la ligne entière
$1 → le 1er champ (séparateur = espace par défaut)
$2 → le 2ème champ
$NF → le DERNIER champ (NF = Number of Fields)
$(NF-1) → l'avant-dernier champ
NR → numéro de la ligne courante (Number of Records)
NF → nombre de champs dans la ligne courante
FS → séparateur d'entrée (Field Separator)
OFS → séparateur de sortie (Output Field Separator)
Les variables automatiques essentielles :
Exemple sur une ligne de log
# Extraire juste l'IP source
# Extraire timestamp + IP
# Extraire le dernier champ (protocole ssh2)
Mar 9 03:22:10 srv-ssh-01 sshd[2200]: Failed password for invalid user root from 103.89.235.14 port 63695 ssh2
$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15
# Syntaxe : awk '/regex/ { action }' ou awk '$champ == "valeur" { action }'
# Lignes contenant "Failed"
awk '/Failed/' auth.log
# Lignes où le champ $6 vaut "Failed"
awk '$6 == "Failed"' auth.log
# Lignes où l'IP ($12) est précise
awk '$12 == "103.89.235.14"' auth.log
# Combiner plusieurs conditions (ET logique)
awk '/Failed/ && /103.89.235.14/' auth.log
# Combiner plusieurs conditions (OU logique)
awk '/Failed/ || /Accepted/' auth.log
# Lignes où NF > 14 (lignes assez longues)
awk 'NF > 14' auth.log
# Première et dernière ligne
awk 'NR == 1 || NR == NF' auth.log
# Compter les lignes qui matchent un pattern
awk '/Failed password/{count++} END{print count}' auth.log
# Compter les occurrences par IP (compteur associatif)
awk '/Failed password/{count[$12]++}
END{for (ip in count) print count[ip], ip}' auth.log
# Trier le résultat (pipe vers sort)
awk '/Failed password/{count[$12]++}
END{for (ip in count) print count[ip], ip}' auth.log \
| sort -rn
# Résultat attendu sur notre auth.log :
# 220 103.89.235.14 ← l'attaquant !
# 3 192.168.1.22
# 1 192.168.1.10
# Séparateur virgule (CSV)
awk -F',' '{print $1, $3}' proxy_logs.csv
# Séparateur tabulation
awk -F'\t' '{print $2}' fichier.tsv
# Séparateur multi-caractères (ex: " - " dans Apache logs)
awk -F'" "' '{print $1}' apache_access.log
# Combiner plusieurs séparateurs avec regex
awk -F'[,;:]' '{print $2}' fichier.txt
Par défaut, awk sépare sur les espaces. Pour les CSV :
# Lister toutes les destinations uniques
awk -F',' 'NR>1 {print $3}' proxy_logs.csv | sort -u
# Compter les connexions par destination
awk -F',' 'NR>1 {count[$3]++}
END{for (d in count) print count[d], d}' proxy_logs.csv \
| sort -rn | head 10
# Filtrer uniquement la machine suspecte (192.168.1.33)
awk -F',' 'NR>1 && $2=="192.168.1.33" {print $1, $3, $5, $6}' proxy_logs.csv
Par défaut, awk sépare sur les espaces. Pour les CSV :
# BEGIN → s'exécute UNE FOIS avant la lecture du fichier
# END → s'exécute UNE FOIS après la lecture complète
awk '
BEGIN {
print "=== Analyse du fichier auth.log ==="
print "IP\t\t\tTentatives"
print "─────────────────────────────────"
FS = " " # définir le séparateur dans BEGIN
}
/Failed password/ {
count[$12]++
total++
}
END {
for (ip in count) {
print ip "\t\t" count[ip]
}
print "─────────────────────────────────"
print "TOTAL tentatives échouées:", total
}
' auth.log
=== Analyse du fichier auth.log ===
IP Tentatives
─────────────────────────────────
103.89.235.14 220
192.168.1.22 3
192.168.1.10 1
─────────────────────────────────
TOTAL tentatives échouées: 224
# IPs avec plus de 10 tentatives = brute force probable
awk '/Failed password/ {count[$12]++}
END {
for (ip in count)
if (count[ip] > 10)
print "⚠️ BRUTE FORCE:", ip, "→", count[ip], "tentatives"
}' auth.log
# Toutes les actions de l'IP attaquante avec horodatage
awk '$0 ~ "103.89.235.14" {print $1, $2, $3, "→", $0}' auth.log \
| head -20
# Compter les codes de retour HTTP
awk '{print $9}' apache_access.log \
| sort | uniq -c | sort -rn
# Lister toutes les requêtes avec code 500 (erreurs serveur)
awk '$9 == "500" {print $1, $7, $9}' apache_access.log
# Détecter les scanners (beaucoup de 404 depuis même IP)
awk '$9 == "404" {count[$1]++}
END {for (ip in count) if (count[ip] > 20)
print "SCAN potentiel:", ip, count[ip], "erreurs 404"}' \
apache_access.log
# Isoler uniquement les connexions vers le domaine C2 et afficher les timestamps pour calculer l'intervalle
awk -F',' 'NR>1 && $3=="updates-cdn-delivery.com" {print $1}' \
proxy_logs.csv | head -10
# Compter le nombre total de beacons
awk -F',' 'NR>1 && $3=="updates-cdn-delivery.com" {count++}
END {print "Total beacons C2:", count}' proxy_logs.csv
# Dans auth.log : toutes les IPs sources des Failed password
awk '/Failed password/ {print $12}' auth.log | sort -u
# Dans apache : toutes les IPs avec des requêtes SQL injection
awk '/UNION|SELECT|DROP|INSERT/ {print $1}' apache_access.log | sort -u
# Dans proxy : toutes les IPs de destination uniques
awk -F',' 'NR>1 {print $4}' proxy_logs.csv | sort -u
# Les 10 IPs les plus actives dans n'importe quel log
awk '{print $1}' fichier.log | sort | uniq -c | sort -rn | head 10
# Filtrer une plage horaire (ex: entre 02:00 et 04:00)
awk '$3 >= "02:00:00" && $3 <= "04:00:00"' auth.log
# Extraire les URLs d'un access.log Apache
awk '{print $7}' apache_access.log | sort -u
# Compter les connexions par heure
awk '{print substr($3,1,2)}' auth.log | sort | uniq -c
# Trouver les lignes trop longues (ex: payload SQLi)
awk 'length($0) > 500' apache_access.log
# Afficher la ligne N (ex: ligne 42)
awk 'NR==42' auth.log
# Afficher les lignes entre N et M
awk 'NR>=100 && NR<=150' auth.log
# Reformater une sortie (CSV → lisible)
awk -F',' '{printf "%-20s %-30s %s\n", $2, $3, $6}' proxy_logs.csv
# Les 10 IPs les plus actives dans n'importe quel log
awk '{print $1}' fichier.log | sort | uniq -c | sort -rn | head 10
# Filtrer une plage horaire (ex: entre 02:00 et 04:00)
awk '$3 >= "02:00:00" && $3 <= "04:00:00"' auth.log
# Extraire les URLs d'un access.log Apache
awk '{print $7}' apache_access.log | sort -u
# Compter les connexions par heure
awk '{print substr($3,1,2)}' auth.log | sort | uniq -c
# Trouver les lignes trop longues (ex: payload SQLi)
awk 'length($0) > 500' apache_access.log
# Afficher la ligne N (ex: ligne 42)
awk 'NR==42' auth.log
# Afficher les lignes entre N et M
awk 'NR>=100 && NR<=150' auth.log
# Reformater une sortie (CSV → lisible)
awk -F',' '{printf "%-20s %-30s %s\n", $2, $3, $6}' proxy_logs.csv
Comprendre ce qu'est un SIEM et comment il fonctionne
Distinguer les principaux SIEM du marché (ELK, Splunk, Sentinel)
Comprendre la différence entre antivirus, EDR et XDR
Visualiser le pipeline complet de données d'un SOC
Identifier l'écosystème d'outils complémentaires (SOAR, TIP, ticketing)
La réalité du volume de données dans un SOC :
SIEM (Security Information and Event Management) : Plateforme centralisée qui collecte, normalise, corrèle et alerte sur des événements de sécurité provenant de sources hétérogènes (endpoints, réseau, applications, cloud), avec conservation des logs pour investigation et conformité.
| SIM | SIEM | |
|---|---|---|
| Focus | Stockage et gestion des logs à long terme | Corrélation et alerting en temps réel |
| Usage | Forensic, conformité, audit | Détection, réponse immédiate |
Les 4 fonctions clés d'un SIEM :
Le voyage d'un log dans un SIEM :
Les concepts clés :
Exemple concret d'une règle de détection brute-force :
# Règle SIEM - Détection brute-force sur Windows
Nom : Brute Force - Multiples échecs d'authentification
Logique :
IF Event ID = 4625 (Failed Logon)
AND même compte cible (TargetUserName)
AND même IP source (IpAddress)
AND COUNT > 10
WITHIN 5 minutes
THEN :
→ Créer alerte : SEVERITY = HIGH
→ Enrichissement automatique : réputation IP (TIP)
→ Ouvrir ticket dans TheHive
Types de règles classiques en SOC :
Les 3 SIEM les plus rencontrés en SOC :
| ELK Stack | Splunk ES | Microsoft Sentinel | |
|---|---|---|---|
| Type | Open-source (+ édition commerciale) | Commercial | Cloud-native (Azure) |
| Côut | Gratuit (infra à gérer) | Élevé (~150$/GB/jour) | ~5,22$/GB/mois |
| Points forts | Flexibilité, communauté, gratuit | Maturité, SPL puissant, 1500+ intégrations | Intégration Microsoft 365 native |
| Points faibles | Pas de corrélation native out-of-the-box | Coût très élevé à grande échelle | Limité hors écosystème Azure |
| Langage de requête | KQL / Lucene | SPL (Search Processing Language) | KQL (Kusto) |
| Usage typique | Lab, PME, SOC budget limité | Grands comptes, SOC matures | Environnements Microsoft |
| Certification associée | Elastic Certified Analyst | Splunk Core Certified | SC-200 (Microsoft) |
Les 4 composants de l'ELK Stack :
L'évolution des outils de protection endpoint :
Ce que voit un EDR vs XDR :
| Critère | EDR | XDR |
|---|---|---|
| Périmètre | Endpoint uniquement (laptop, serveur) | Endpoint + réseau + cloud + email + identité |
| Sources de données | Logs système, process, fichiers, réseau local | Multi-sources corrélées |
| Détection | Comportementale + ML sur endpoint | Analytics avancés multi-couches |
| Threat Hunting | Limité à l'endpoint | Cross-source |
| Cas d'usage idéal | Détection malware endpoint, forensic | Attaques distribuées, APT, mouvement latéral |
| Exemples outils | CrowdStrike Falcon, SentinelOne, Wazuh | Palo Alto Cortex XDR, Microsoft Defender XDR |
Ce que télémètre un EDR sur un endpoint :
Un SOC mature ne fonctionne pas avec un seul outil :
Les outils complémentaires à connaître :
| Outil | Catégorie | Rôle dans le SOC |
|---|---|---|
| SOAR | Orchestration | Automatise les réponses répétitives (bloquer une IP, envoyer un email) |
| TheHive | Case management | Gérer et documenter les incidents, assignation, timeline |
| MISP | Threat Intel Platform | Partager et consommer des IOCs entre organisations |
| Cortex | Analyseur | Enrichissement automatique des IOCs (VT, AbuseIPDB…) |
| Wazuh | EDR/SIEM léger | Open-source, idéal pour les labs |
| CyberChef | Décodage | Décoder des payloads (base64, hex, XOR…) |
Sysmon (System Monitor) : Outil gratuit de Microsoft Sysinternals qui enrichit considérablement la télémétrie Windows en loggant des événements critiques absents des logs natifs.
| Event ID Sysmon | Description | Utilité SOC |
|---|---|---|
| 1 | Process Create | Qui a lancé quoi, avec quels arguments |
| 3 | Network Connection | Connexions réseau initiées par processus |
| 7 | Image Loaded | DLL chargées (détection DLL hijacking) |
| 8 | CreateRemoteThread | Injection de thread (technique APT) |
| 10 | ProcessAccess | Accès mémoire inter-processus (credential dumping) |
| 11 | FileCreate | Création de fichiers suspects |
| 13 | RegistryEvent | Modifications registre (persistance) |
| 22 | DNSEvent | Requêtes DNS (détection C2 beaconing) |
Matrice des outils selon les cas d'usage SOC :
L'évolution majeure des SIEM en 2025 :
Maîtriser le processus de triage d'une alerte de A à Z
Distinguer vrai positif, faux positif, vrai négatif, faux négatif
Appliquer la méthode 5W1H à l'investigation SOC
Enrichir une alerte avec du contexte utilisateur, asset et threat intel
Savoir quand et comment escalader un incident
Comprendre la structure d'un playbook et d'un runbook