🔒 Sécurité

security-soc-analyst-guide

Guide pour analyste SOC — triage d'alertes, investigation, SIEM, indicateurs de compromission et playbooks de réponse.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- security-soc-analyst-guide --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } security-soc-analyst-guide -Launch"

🚀 Déjà installé ?

claude "/security-soc-analyst-guide"

Ou tapez /security-soc-analyst-guide dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

SOCanalyste SOCSIEMIoCincident de sécuritétriage sécurité

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/security-soc-analyst-guide ~/.claude/skills/

Payload du plugin : skills/security-soc-analyst-guide · source éditable : security-skills/soc-analyst-guide

📖 Manuel

Guide Analyste SOC

1. Triage initial (< 5 min)

Critères de priorisation — Appliquer un score composite :

FacteurPoids
Sévérité SIEM (critique/haute/moyenne/basse)40 %
Criticité de l'asset (DC, prod, PII)30 %
Fiabilité de la règle (% faux positifs historique)20 %
Contexte horaire (heures ouvrées vs nuit/weekend)10 %

Commandes rapides de qualification :

# Réputation IP en ligne de commande
curl -s "https://api.abuseipdb.com/api/v2/check?ipAddress=<IP>&maxAgeInDays=30" \
  -H "Key: $ABUSEIPDB_KEY" | jq '.data | {score: .abuseConfidenceScore, country: .countryCode}'

# Hash VirusTotal CLI
vt file <sha256_hash>

# Résolution inverse + ASN
whois <IP> | grep -E 'OrgName|CIDR|country'
dig -x <IP> +short

Décision faux positif vs vrai positif :


2. Qualification de l'incident

Corréler dans la fenêtre -1 h / +1 h autour de l'alerte :

# Splunk — corrélation par host
index=security sourcetype=* host="<HOSTNAME>"
  earliest=-1h latest=+1h
| eval _time=strptime(_time, "%Y-%m-%d %H:%M:%S")
| sort _time
| table _time, sourcetype, EventCode, user, src_ip, dest_ip, process, message
// Microsoft Sentinel — timeline host
SecurityEvent
| where Computer == "<HOSTNAME>"
| where TimeGenerated between (ago(1h) .. now())
| project TimeGenerated, EventID, Account, Process, CommandLine, IpAddress
| order by TimeGenerated asc

Mapping MITRE ATT&CK rapide :

ObservationTactique ATT&CKTechnique
Connexion RDP depuis IP étrangèreInitial AccessT1133 External Remote Services
powershell -enc ou cmd /cExecutionT1059.001 / T1059.003
net user /add en dehors heures bureauPersistenceT1136.001
Beacon régulier vers IP externeC2T1071 Application Layer Protocol
Exfiltration DNS (TXT records longs)ExfiltrationT1048.003

3. Collecte forensique (ne pas contaminer)

Ordre de volatilité (RFC 3227) — collecter du plus volatile au moins volatile :

  1. RAM / processus actifs
  2. Connexions réseau actives
  3. Logs système en mémoire
  4. Fichiers temporaires
  5. Logs sur disque
  6. Images disque
# Windows — snapshot processus et connexions réseau
Get-Process | Select-Object Name,Id,CPU,WorkingSet,Path | Export-Csv proc_snapshot.csv
netstat -ano | Out-File netstat_snapshot.txt
Get-NetTCPConnection | Where-Object State -eq 'Established' | Export-Csv tcp_connections.csv

# Dump mémoire processus suspect (PID connu)
& "C:\Program Files\Sysinternals\procdump.exe" -ma <PID> C:\forensics\proc_<PID>.dmp
# Linux — collecte rapide
ss -tnap > /tmp/ir/connections.txt
ps auxf > /tmp/ir/processes.txt
find /tmp /var/tmp /dev/shm -type f -newer /proc/1 2>/dev/null > /tmp/ir/new_files.txt
last -n 50 > /tmp/ir/logins.txt
journalctl --since "2h ago" > /tmp/ir/journal.txt

4. Extraction et partage des IoCs

Format STIX 2.1 minimal pour partage MISP :

{
  "type": "indicator",
  "spec_version": "2.1",
  "id": "indicator--<uuid>",
  "created": "2026-06-24T00:00:00Z",
  "name": "C2 domain observé incident IR-2026-042",
  "pattern": "[domain-name:value = 'malicious-domain.example']",
  "pattern_type": "stix",
  "valid_from": "2026-06-24T00:00:00Z",
  "labels": ["malicious-activity"],
  "confidence": 85
}

Push MISP via CLI :

# Ajouter un attribut IP à un event MISP existant
misp-modules -m add_attribute --event-id <EVENT_ID> --type ip-dst --value <IP> \
  --comment "C2 identifié IR-2026-042" --to_ids 1

5. Playbooks de réponse type

Phishing confirmé

  1. Isoler la boîte mail concernée (O365 : Set-Mailbox -Identity user -AccountDisabled $true)
  2. Purger le mail de toutes les boîtes : Search-UnifiedAuditLog → Compliance Center purge
  3. Bloquer le domaine expéditeur dans le proxy/MTA
  4. Rechercher les clics sur le lien dans les logs proxy
  5. Réinitialiser MFA de l'utilisateur si clic confirmé

Ransomware détecté

  1. Isoler immédiatement (couper le réseau, pas éteindre — préserver la RAM)
  2. Identifier le patient zéro via les logs de partage SMB
  3. Snapshot VM avant toute action
  4. Contacter le CERT si impact > 10 assets ou données sensibles
  5. Ne jamais payer sans analyse légale préalable

Brute force SSH/RDP réussi

  1. Vérifier les connexions actives depuis la session suspecte
  2. Killer la session : kill -9 <PID> ou logoff <SESSION_ID>
  3. Bloquer l'IP source (firewall + fail2ban / Conditional Access)
  4. Analyser les actions post-authentification (sudo, cron, fichiers créés)
  5. Forcer rotation credentials du compte ciblé

6. Documentation et clôture

Template rapport d'incident (champs minimaux) :

Incident ID : IR-YYYY-NNN
Date/Heure détection : 
Date/Heure clôture : 
Analyste : 
Sévérité finale : [P1/P2/P3/P4]
Assets impactés : 
Vecteur initial : 
Timeline (UTC) :
  - HH:MM — [action/observation]
IoCs extraits : [IP, hash, domaine, compte]
Actions de remédiation :
Recommandations :
MITRE ATT&CK : [Tactic — Technique ID]

7. Tuning et amélioration continue

# Splunk — identifier les règles les plus bruyantes (faux positifs)
index=notable | stats count, dc(host) as hosts by search_name
| sort -count | head 20

Garde-fous et anti-patterns