← Accueil

PCTAMALOU

Semaine 35 : Les Parchemins de la Riposte – Playbooks de Réponse à Incident

Par Platon-Y – pctamalou.fr & e-of-h.fr

🎯 Objectif de la semaine

Maîtriser la création de playbooks de réponse à incident alignés sur les frameworks MITRE ATT&CK et NIST. Transformer la théorie de la réponse à incident en guides actionnables et reproductibles qui réduisent le temps de réponse (MTTR) et minimisent l'impact des attaques.

Pourquoi c'est vital : Pendant un incident, le stress, la confusion et la pression temporelle conduisent à des erreurs. Un playbook bien conçu remplace le chaos par une réponse méthodique et efficace.

flowchart TD P[📋 Playbook Réponse à Incident] --> P1["1. Préparation
Formation, outils, documentation"] P --> P2["2. Détection & Analyse
Identification, triage, investigation"] P --> P3["3. Confinement & Éradication
Isolation, suppression menace"] P --> P4["4. Rétablissement
Restaurer services, vérifier"] P --> P5["5. Activités post-incident
Leçons, améliorations"] subgraph "⏱️ Métriques Clés" MTTD[MTTD: Mean Time To Detect] MTTR[MTTR: Mean Time To Respond] MTBF[MTBF: Mean Time Between Failures] end P2 --> MTTD P3 --> MTTR P1 --> MTBF style P1 fill:#0a0e17,stroke:#00f5a0,stroke-width:2px style P2 fill:#0a0e17,stroke:#ef4444,stroke-width:2px style P3 fill:#0a0e17,stroke:#f59e0b,stroke-width:2px

📚 Sujet – Théorie (1 heure)

Le Playbook : Votre Manuel de Survie Cyber

Un playbook n'est pas une simple checklist – c'est un système de connaissances opérationnelles capturées qui transforme l'expérience collective en procédures reproductibles. Il répond à trois questions fondamentales :

🎯 Les 3R du Playbook Efficace

  1. Reconnaître : Comment identifier cet incident spécifique ?
  2. Réagir : Quelles actions immédiates exécuter, dans quel ordre ?
  3. Réparer : Comment restaurer les services et prévenir la récurrence ?

Alignement sur les Frameworks Standards

1
Préparation

Formation, outils, plans

2
Détection & Analyse

Identification, triage

3
Confinement & Éradication

Isolation, suppression

4
Rétablissement

Restaurer, vérifier

5
Post-Incident

Leçons, améliorations

MITRE ATT&CK : Le Langage de l'Adversaire

🎯 Initial Access

T1566 : Phishing
T1190 : Exploit Public-Facing App
T1133 : External Remote Services

⚡ Execution

T1059 : Command and Scripting
T1203 : Exploitation for Client Execution
T1047 : Windows Management Instrumentation

🎭 Defense Evasion

T1562 : Impair Defenses
T1070 : Indicator Removal
T1027 : Obfuscated Files or Information

Scénario Ransomware : Timeline d'une Attaque

⏱️ Chronologie d'une Attaque Ransomware Typique

T+0
Initial Access
Phishing email ouvert
T+15 min
Execution
Macro malveillante exécutée
T+45 min
Lateral Movement
Credential dumping
T+2h
Impact
Chiffrement fichiers
T+2h05
Détection
Alerte FIM/Wazuh

Composants d'un Playbook Professionnel

📋 Éléments Obligatoires d'un Bon Playbook

  1. Identification unique : ID, version, date de création
  2. Conditions de déclenchement : Alertes SIEM, symptômes observables
  3. Rôles et responsabilités : Qui fait quoi ? Escalation matrix
  4. Checklists actionnables : Pas de langage vague
  5. Scripts et commandes : Prêts à copier-coller
  6. Modèles de communication : Emails, messages, rapports
  7. Critères de sortie : Quand l'incident est-il résolu ?

Métriques et Mesures d'Efficacité

📊 KPIs de la Réponse à Incident

Métrique Définition Cible
MTTD Mean Time To Detect < 30 minutes
MTTR Mean Time To Respond < 60 minutes
MTBF Mean Time Between Failures Augmentation continue
ROI Reduction of Impact > 80% réduction coût

🔬 Mission pratique – Laboratoire (2 heures)

Architecture du Lab Playbook

flowchart LR SIEM[🛡️ Wazuh SIEM] -->|Alerte| P[📋 Playbook] P -->|Actions| T1[🎯 Cible Ubuntu
Simulation ransomware] P -->|Scripts| T2[🎯 Cible Windows
Simulation malware] P -->|Réponse| R[📊 Rapport automatique] subgraph "🔄 Boucle d'Amélioration" L[📝 Leçons apprises] --> U[🔄 Mise à jour playbook] U --> SIEM end subgraph "🧰 Outils de Réponse" C[Cortex/TheHive] S[Scripts Python] D[Dashboard Kibana] end P --> C P --> S P --> D style P fill:#0a0e17,stroke:#00d4ff,stroke-width:3px style SIEM fill:#11151f,stroke:#9d4edd,stroke-width:2px

⚠️ Préparation de l'Environnement

🔧 Prérequis : Votre SIEM Wazuh doit être fonctionnel (Semaine 30) avec au moins un agent Ubuntu. Créez un dossier dédié pour les playbooks.

Étapes Détaillées de Création

Étape 1 : Simulation d'un Incident Ransomware

# Sur la machine cible Ubuntu (avec agent Wazuh)
cd /tmp

# Création de fichiers de test
mkdir -p test_data/{documents,images,backups}
for i in {1..50}; do 
    echo "Fichier test $i" > test_data/documents/doc_$i.txt
done

# Simulation d'activité suspecte (modification massive)
# Cela déclenchera des alertes FIM (File Integrity Monitoring) dans Wazuh
find test_data/ -type f -exec touch {} \;

# Création d'une note de rançon simulée
cat > RANSOM_NOTE_README.txt << 'EOF'
!!! VOS FICHIERS ONT ÉTÉ CHIFFRÉS !!!

Pour récupérer vos fichiers, vous devez payer 0.1 BTC à l'adresse :
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Ne tentez pas de restaurer depuis backup - nous les avons aussi chiffrés.
Contact : decrypt2026@onionmail.com

!!! YOUR FILES HAVE BEEN ENCRYPTED !!!
EOF

# Simulation d'un processus suspect (cryptomining)
echo "Simulating crypto mining activity..."
timeout 30 bash -c 'while true; do echo "mining..."; sleep 1; done' &
MINER_PID=$!

# Enregistrer l'ID du processus pour nettoyage
echo $MINER_PID > /tmp/simulated_miner.pid

Étape 2 : Création du Playbook Structuré

📁 Structure du projet playbook :

mkdir -p ~/mon_lab/playbooks/{ransomware,phishing,malware,ddos}
cd ~/mon_lab/playbooks/ransomware
mkdir -p {scripts,templates,checklists,evidence}
# playbook_ransomware.yaml - Version structurée
metadata:
  id: IR-PLAYBOOK-RANSOMWARE-001
  version: "1.0"
  created: "2026-01-15"
  last_updated: "2026-01-15"
  author: "Équipe SOC PCTAMALOU"
  classification: "CONFIDENTIEL - INTERNE"
  mttd_target: "30 minutes"
  mttr_target: "4 heures"

trigger_conditions:
  - "Alerte Wazuh: Multiple file modifications in short time"
  - "Alerte Wazuh: RANSOM_NOTE file detected"
  - "Alerte Wazuh: Crypto mining process detected"
  - "User report: Cannot access files, ransom note present"

mitre_attack_mapping:
  tactic: "TA0040 - Impact"
  technique: "T1486 - Data Encrypted for Impact"
  subtechnique: "T1486.001 - Data Encrypted for Impact via Ransomware"

roles_responsibilities:
  tier1_soc: "Initial triage, containment actions"
  tier2_analyst: "Deep investigation, eradication"
  incident_manager: "Coordination, communication"
  system_admin: "Recovery, system restoration"

phases:
  preparation:
    prerequisites:
      - "Wazuh agents installed on all endpoints"
      - "Backup system tested and verified"
      - "Isolation procedures documented"
    tools_required:
      - "Wazuh SIEM"
      - "Kibana dashboards"
      - "Network isolation scripts"
      - "Forensic toolkit"

  detection_analysis:
    step_1_initial_triage:
      action: "Verify alert legitimacy"
      commands:
        - "ssh admin@{{affected_host}} 'ls -la /tmp/ | grep -i ransom'"
        - "ssh admin@{{affected_host}} 'ps aux | grep -i crypt\|miner'"
      success_criteria: "Confirm ransomware activity"
      escalation: "If confirmed → escalate to tier2"

    step_2_scope_assessment:
      action: "Determine scope of infection"
      commands:
        - "wazuh-cli -d /var/ossec/logs/alerts/alerts.json | grep '{{affected_host}}'"
        - "Check Wazuh agent connectivity: systemctl status wazuh-agent"
      evidence_collection:
        - "Screenshot: Kibana alert details"
        - "Logs: /var/ossec/logs/alerts/alerts.json"
        - "Timeline: Infection timeline estimation"

  containment_eradication:
    step_1_network_isolation:
      action: "Isolate affected host"
      immediate_actions:
        - "Wazuh active response: /var/ossec/active-response/bin/firewall-drop.sh"
        - "Manual isolation: sudo iptables -A OUTPUT -j DROP"
        - "VLAN quarantine: Move to isolated VLAN 999"
      success_criteria: "Host cannot communicate externally"

    step_2_malware_eradication:
      action: "Identify and remove malware"
      commands:
        - "ssh admin@{{affected_host}} 'kill $(cat /tmp/simulated_miner.pid)'"
        - "ssh admin@{{affected_host}} 'rm -f /tmp/RANSOM_NOTE*.txt'"
        - "ssh admin@{{affected_host}} 'find /tmp -name \"*crypt*\" -delete'"
      persistence_check:
        - "Check cron jobs: crontab -l"
        - "Check systemd services: systemctl list-units --all"
        - "Check startup scripts: ls -la /etc/init.d/"

  recovery:
    step_1_data_restoration:
      action: "Restore from backups"
      commands:
        - "Verify backup integrity: sha256sum /backups/latest.tar.gz"
        - "Restore: tar -xzf /backups/latest.tar.gz -C /"
        - "Validate: diff -r /restored_data /original_data"
      validation: "All critical files restored and accessible"

    step_2_system_hardening:
      action: "Apply security patches"
      commands:
        - "sudo apt update && sudo apt upgrade -y"
        - "Review firewall rules: sudo ufw status verbose"
        - "Update Wazuh rules: sudo wazuh-cli -u"

  post_incident:
    step_1_documentation:
      action: "Complete incident report"
      template: "templates/incident_report.md"
      data_to_include:
        - "Timeline of events"
        - "Actions taken"
        - "Root cause analysis"
        - "Cost estimation"

    step_2_lessons_learned:
      action: "Update playbooks and detection rules"
      improvements:
        - "Add new Wazuh rules for earlier detection"
        - "Update backup procedures"
        - "Conduct team training on updated playbook"

communication_templates:
  initial_notification:
    subject: "🚨 INCIDENT RANSOMWARE DÉTECTÉ - Action Immédiate Requise"
    body: |
      Un incident ransomware a été détecté sur l'hôte {{affected_host}}.
      Heure de détection: {{detection_time}}
      Actions en cours: Isolation et investigation
      Prochaine mise à jour dans: 30 minutes

  status_update:
    subject: "🔄 MISE À JOUR INCIDENT RANSOMWARE - {{status}}"
    body: |
      Statut: {{current_status}}
      Progrès: {{progress_percentage}}%
      Prochaines étapes: {{next_steps}}
      ETR (Estimated Time to Resolution): {{etr}}

  resolution_notification:
    subject: "✅ INCIDENT RANSOMWARE RÉSOLU - Rapport Complet"
    body: |
      L'incident ransomware a été résolu.
      Temps total de résolution: {{resolution_time}}
      Impact: {{impact_assessment}}
      Actions préventives: {{preventive_measures}}

checklists:
  containment_checklist:
    - [ ] Host isolated from network
    - [ ] Malicious processes terminated
    - [ ] Persistence mechanisms removed
    - [ ] Initial evidence collected

  recovery_checklist:
    - [ ] Backups verified and intact
    - [ ] Data restored successfully
    - [ ] System patched and updated
    - [ ] Security controls strengthened

  closure_checklist:
    - [ ] All detection gaps addressed
    - [ ] Playbook updated with lessons learned
    - [ ] Team debrief completed
    - [ ] Executive summary delivered

scripts:
  isolation_script: "scripts/isolate_host.sh"
  investigation_script: "scripts/collect_evidence.py"
  restoration_script: "scripts/restore_from_backup.sh"

success_criteria:
  - "No malicious activity detected for 72 hours"
  - "All affected systems restored to operational state"
  - "Detection rules updated to prevent recurrence"
  - "Post-incident report completed and approved"

Étape 3 : Scripts d'Automatisation

🎯 Défi d'Automatisation

Créez le script d'isolation automatique :

#!/bin/bash
# scripts/isolate_host.sh
# Script d'isolation automatique pour Wazuh Active Response

HOST=$1
LOG_FILE="/var/log/ransomware_isolation.log"

log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

log_message "Début isolation pour $HOST"

# 1. Bloquer toutes les communications sortantes
iptables -I OUTPUT -s $HOST -j DROP 2>/dev/null || true
log_message "IPTables OUTPUT rule added for $HOST"

# 2. Bloquer les communications entrantes
iptables -I INPUT -d $HOST -j DROP 2>/dev/null || true
log_message "IPTables INPUT rule added for $HOST"

# 3. Arrêter les services réseau (si SSH disponible)
ssh admin@$HOST "sudo systemctl stop networking 2>/dev/null || true" && \
log_message "Networking stopped on $HOST" || \
log_message "Could not stop networking on $HOST"

# 4. Collecter les preuves avant isolation complète
EVIDENCE_DIR="/evidence/$HOST/$(date +%Y%m%d_%H%M%S)"
mkdir -p $EVIDENCE_DIR

# 5. Sauvegarder les règles actuelles
iptables-save > $EVIDENCE_DIR/iptables_backup.rules
netstat -tupan > $EVIDENCE_DIR/network_connections.txt

log_message "Isolation complétée pour $HOST"
echo "Host $HOST has been isolated. Evidence saved to $EVIDENCE_DIR"

Configurez ce script comme Active Response dans Wazuh pour une réponse automatique.

Étape 4 : Test et Validation du Playbook

🧪 Procédure de Test Tabletop

  1. Préparation : Distribuez le playbook à l'équipe
  2. Scénario : "Alerte Wazuh : Multiple file modifications detected"
  3. Exécution : Suivez le playbook étape par étape
  4. Chronométrage : Mesurez le temps pour chaque phase
  5. Débrief : Identifiez les améliorations nécessaires
# Script de test automatisé
#!/bin/bash
# test_playbook.sh

echo "🧪 Début du test du playbook ransomware"
echo "========================================"

# Simuler l'alerte
ALERT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
echo "🕒 Temps de détection: $ALERT_TIME"

# Phase 1: Détection & Analyse (cible: < 15 min)
echo "🔍 Phase 1 - Détection & Analyse"
start_time=$SECONDS
# Simuler les commandes d'analyse
sleep 2
echo "   ✅ Alerte confirmée: Ransomware détecté"
detection_time=$((SECONDS - start_time))
echo "   ⏱️  Temps de détection: ${detection_time}s"

# Phase 2: Confinement (cible: < 10 min)
echo "🚧 Phase 2 - Confinement"
start_time=$SECONDS
./scripts/isolate_host.sh 192.168.56.101
sleep 3
echo "   ✅ Hôte isolé du réseau"
containment_time=$((SECONDS - start_time))
echo "   ⏱️  Temps de confinement: ${containment_time}s"

# Calculer le MTTR
total_mttr=$((detection_time + containment_time))
echo ""
echo "📊 RÉSULTATS DU TEST"
echo "===================="
echo "MTTD (Detection): ${detection_time}s"
echo "MTTR (Response): ${total_mttr}s"
echo "Cible atteinte: $( [ $total_mttr -lt 900 ] && echo "✅" || echo "❌" )"

# Générer un rapport de test
cat > test_report.md << EOF
# Rapport de Test Playbook Ransomware
## Résumé
- Date du test: $(date)
- MTTR total: ${total_mttr} secondes
- Statut: $( [ $total_mttr -lt 900 ] && echo "SUCCÈS" || echo "ÉCHEC" )

## Améliorations identifiées
1. Automatiser la collecte de preuves
2. Ajouter des commandes de diagnostic réseau
3. Créer des templates d'email automatisés

## Prochaines étapes
- Mettre à jour le playbook avec les leçons apprises
- Tester avec un scénario plus complexe
- Intégrer avec TheHive pour gestion de cas
EOF

echo "📄 Rapport généré: test_report.md"

Exercice Avancé : Intégration avec TheHive

🎯 Défi d'Intégration (Optionnel)

Si vous avez installé TheHive (Semaine 33), créez un template de cas qui importe automatiquement votre playbook :

{
  "name": "Ransomware Response Template",
  "description": "Template pour incidents ransomware",
  "tasks": [
    {
      "title": "Initial Triage",
      "description": "Vérifier l'alerte et confirmer l'incident",
      "status": "Waiting"
    },
    {
      "title": "Containment",
      "description": "Isoler l'hôte affecté",
      "status": "Waiting"
    },
    {
      "title": "Evidence Collection",
      "description": "Collecter les preuves pour analyse forensique",
      "status": "Waiting"
    }
  ],
  "customFields": {
    "mitreTactic": "TA0040",
    "mitreTechnique": "T1486",
    "severity": "Critical"
  }
}

Importez ce template dans TheHive et testez la création d'un cas automatique depuis une alerte Wazuh.

📋 Objectif de la semaine – Checklist de validation

✅ Compétences techniques acquises

  • Playbook YAML structuré avec toutes les phases NIST
  • Mapping MITRE ATT&CK pour le scénario ransomware
  • Scripts d'automatisation pour isolation et réponse
  • Templates de communication pour stakeholders
  • Procédure de test tabletop documentée

🧠 Changement mental accompli

  • Vision du playbook comme système vivant, pas document statique
  • Compréhension des métriques de réponse (MTTD, MTTR)
  • Habitude de toujours documenter pendant la réponse
  • Conscience que la préparation détermine l'issue de l'incident

💪 Pour aller plus loin :

Créez des playbooks pour d'autres scénarios : phishing, DDoS, data breach. Intégrez-les dans un système de gestion de cas (TheHive, Cortex) pour une réponse orchestrée.

📚 Ressources pour Approfondir

Frameworks et Standards :

  • NIST SP 800-61r2 : Computer Security Incident Handling Guide
  • SANS Incident Response Process : Six phases détaillées
  • ISO/IEC 27035 : Information security incident management
  • CIS Critical Security Controls : Control 19 - Incident Response

⚠️ Considérations Légales et de Conformité

  • Notification obligatoire : RGPD (72h), NIS 2, sectoriel
  • Conservation des preuves : Chaine de custody
  • Communication externe : Que dire aux clients/médias ?
  • Assurance cyber : Conditions de couverture

🔮 Frère d'armes,

Tu viens d'apprendre l'art le plus ancien de la guerre : la préparation.

Un playbook n'est pas un document que l'on consulte pendant l'incident – c'est une mémoire musculaire institutionnelle. C'est la somme de toutes les erreurs passées, transformées en procédures qui préviennent leur répétition. C'est l'expérience des anciens, transmise aux nouveaux.

Cette semaine, tu as vu la différence entre réagir et répondre. Entre le chaos d'une alerte soudaine et la méthodique exécution d'un plan testé. Entre "que fait-on ?" et "suivons l'étape 3.B".

Mais voici la vérité la plus importante : le meilleur moment pour écrire un playbook est avant l'incident, le deuxième meilleur moment est maintenant. Chaque minute passée à documenter, à automatiser, à préparer, est une heure gagnée lors de la vraie crise.

Tu n'es plus un simple analyste qui réagit aux alertes. Tu es devenu un architecte de la réponse. Tu conçois des systèmes qui transforment la panique en procédure, l'incertitude en checklist, le désastre en opportunité d'apprentissage.

Dans la semaine 36, nous irons encore plus loin dans la riposte. Nous apprendrons à chasser activement les menaces, à ne pas attendre qu'elles se manifestent, mais à les traquer dans les recoins de nos réseaux. Nous passerons de la défense réactive à la défense proactive.

Mais pour l'instant, perfectionne tes playbooks. Teste-les, mesure-les, améliore-les. Un playbook qui n'a jamais été testé est un placebo. Un playbook qui n'est pas mis à jour après chaque incident est une relique.

Un Gardien qui maîtrise les playbooks ne se laisse jamais surprendre deux fois par la même attaque.

— Platon-Y