Déverrouiller son PC après une attaque de rançongiciel — guide expert RSSI

Déverrouiller son PC après une attaque de rançongiciel — guide expert RSSI

1 — Introduction & avertissements légaux

Ce guide s’adresse aux professionnels (RSSI, SOC, administrateurs système) qui doivent réagir et récupérer des systèmes compromis par un ransomware. Il présente uniquement des méthodes légales et défensives — restauration à partir de sauvegardes, usage d’outils de décryptage officiels, procédures forensiques encadrées.
Nous ne fournissons pas d’instructions exploitables permettant de développer des déchiffreurs contre des familles de ransomware ni des étapes détaillées pour extraire des clés secrètes depuis des systèmes en production sans encadrement légal et professionnel. Si vous êtes dans ce cas, faites appel à nos experts en cliquant sur le bouton ci-dessous ou à toute autre équipe d’intervention spécialisée (voir section Ressources).

2 — Que fait un ransomware — signes et impacts

  • Chiffrement : algorithmes symétriques (AES) pour le contenu + chiffrement asymétrique (RSA) pour la clé symétrique.
  • Extorsion : message de rançon, coordonnées pour paiement (souvent via Tor + crypto).
  • Destruction ou chiffrement des sauvegardes : tentatives d’accès et suppression des sauvegardes en ligne/montées.
  • Propagation : lateral movement via partages réseau, RDP, credentials volés.

Signes visibles :

  • Fichiers renommés avec extension nouvelle ou suffixe unique.
  • Messages “README” / “_HELP” / “DECRYPT_INSTRUCTIONS.txt”.
  • Utilisation CPU élevée, accès disque massif, services arrêtés.
  • Connexions réseau vers IP/Tor nodes inhabituels.

3 — Réponse immédiate — actions « étape par étape » (opérationnel, à faire tout de suite)

Objectif : arrêter la propagation, préserver les preuves et restaurer.

3.1 Isoler le poste (toujours la 1ère action)

  • Etape par étape Windows GUI :
    1. Clic gauche sur l’icône réseau (barre des tâches).
    2. Sélectionnez « Déconnecter » ou cliquez sur « Mode Avion ».
    3. Si possible, retirez le câble Ethernet physiquement du poste.
  • macOS : Menu Wi‑Fi → Désactiver le Wi‑Fi ; ou débrancher le câble Ethernet.
  • Linux (cli) : nmcli radio wifi off ou sudo ip link set dev eth0 down.

3.2 Préserver la preuve — imagerie disque & capture mémoire (niveau opérationnel)

Important : faire une image disque et une capture mémoire sur une copie si vous n’êtes pas formé en forensic, parce que des manipulations peuvent détruire des preuves. Si vous disposez d’une équipe IR, contactez‑la; sinon, vous pouvez contacter nos experts à l’aide du bouton ci-dessous.

Procédure générale (haut niveau) :

  1. Documenter : notez heure, utilisateur, contexte, capture écran du message de rançon.
  2. Créer une image bit-à-bit du disque (lecture seule sur la source) vers un stockage sécurisé (ex : disque externe dédié). Exemple d’outil : FTK Imager, dd (Linux) — utiliser des outils forensiques dédiés.
  3. Capturer la RAM si possible (utile si attaque récente) — utiliser outils spécialisés (en IR certifié).
  4. Préserver la chaîne de custody : qui a touché quoi, signatures SHA256 des images.

(Nous ne fournissons pas de commandes détaillées pour dumping mémoire exploitables en production — c’est une opération forensique critique qui doit être faite par un technicien formé.)

3.3 Évaluer l’étendue

  • Lister les partages réseau, endpoints connectés, sauvegardes visibles.
  • Vérifier si le serveur de backup est accessible ou chiffré.

4 — Préparer une intervention forensique sûre (collecte, imagerie, chaîne de custody)

4.1 Matériel recommandé

  • Disque externe forensique (écriture désactivable ou writeblocker).
  • Ordinateur dédié pour analyse (isolé, sécurisé).
  • Outils : FTK Imager, Autopsy, EnCase, Volatility, OSForensics.

4.2 Étapes (procédure de haut niveau)

  1. Ne travaillez pas sur le disque original. Branchez un write-blocker et faites une image.
  2. Calculez des empreintes (SHA256) de l’image et stockez dans le rapport.
  3. Capture mémoire (si valide et autorisé) — documentez la méthode.
  4. Collecte de logs : Windows Event Logs, syslog, AD logs, sauvegardes.
  5. Analyser hors ligne : faire l’analyse sur une copie isolée.

5 — Récupération légale et sûre des fichiers

5.1 Vérifier les sauvegardes avant tout

  • Procédure étape par étape (Windows Server / Veeam / NAS) :
    1. Accédez à l’interface d’administration de la solution de sauvegarde.
    2. Recherchez la dernière sauvegarde antérieure à l’incident.
    3. Validez l’intégrité (checksum/restore test).
    4. Restaurer sur un hôte isolé pour vérifier.

Remarque : si les sauvegardes sont sous forme d’images ou snapshots, restaurez sur un environnement isolé pour test.

5.2 Shadow Copies / Versions précédentes (Windows)

Etape par étape (utilisateur) :

  1. Explorer → Clic droit sur un dossier → Propriétés → Versions précédentes.
  2. Sélectionner une version antérieure → Ouvrir ou Restaurer.

Caveat : certains ransomwares détruisent Shadow Copies (via vssadmin delete shadows /all /quiet). Si c’est le cas, elles peuvent être absentes.

5.3 Outils de décryptage officiels (procédure complète)

  1. Identifier la famille : capture un échantillon de fichier chiffré (petit fichier) et/ou le message de rançon.
  2. No More Ransom — catalogue d’outils : https://www.nomoreransom.org/fr/index.html
    • Aller sur Tools → chercher la famille → télécharger l’outil recommandé.
    • Etape par étape : télécharger → vérifier signature/MD5 du fichier téléchargé → lire la documentation fournie → lancer sur un poste de test → pointer vers un échantillon chiffré → lancer le décryptage.
    • Toujours tester d’abord sur copies. Ne lancez jamais un décryptor inconnu sur la machine de production sans test.
  3. Vendors : Kaspersky, Emsisoft, Trend, … Ils fournissent des décryptors spécifiques. Toujours vérifier la source officielle avant l’exécution.

6 — Décryptage avec une clé légitime

Ce code est strictement pédagogique et ne permet pas de casser un ransomware : il suppose que vous possédez déjà la clé et les paramètres (IV) — situation légitime : clé fournie par un éditeur, ou extraite légalement par une équipe IR, ou obtenue via backup.

Nous vous fournissons deux implémentations complètes : Python (PyCryptodome) et PowerShell (.NET). Ces scripts prennent un dossier d’entrées chiffrées et décryptent les fichiers vers un répertoire de sortie. Testez toujours sur copies des fichiers chiffrés.


6.1 Script Python (décryptage AES-CBC avec PKCS7) — cas légal : clé connue

Prérequis (étape par étape) :

  1. Installer Python 3.8+ (https://www.python.org/downloads/).
  2. Ouvrir un terminal (PowerShell / Terminal).
  3. Installer PyCryptodome :
pip install pycryptodome

Fichier : decrypt_with_key.py

#!/usr/bin/env python3
"""
decrypt_with_key.py
Usage:
  python decrypt_with_key.py --key HEXKEY --iv HEXIV --indir encrypted_folder --outdir decrypted_folder
Notes:
 - This script performs AES-CBC decryption with PKCS7 unpadding.
 - ONLY use when you legally possess the symmetric key (e.g. received from IR or vendor).
"""

import os
import sys
import argparse
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
from binascii import unhexlify

def decrypt_file(infile, outfile, key_bytes, iv_bytes):
    with open(infile, 'rb') as f:
        data = f.read()
    cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)
    try:
        plain = unpad(cipher.decrypt(data), AES.block_size)
    except ValueError as e:
        print(f"[!] Unpadding error for {infile}: {e}")
        return False
    with open(outfile, 'wb') as f:
        f.write(plain)
    return True

def main():
    parser = argparse.ArgumentParser(description="Decrypt files using AES-CBC with provided key/iv (legal use only).")
    parser.add_argument('--key', required=True, help='Symmetric key in HEX (e.g. 001122...)')
    parser.add_argument('--iv', required=True, help='Initialization Vector in HEX (16 bytes)')
    parser.add_argument('--indir', required=True, help='Folder with encrypted files (will NOT recurse)')
    parser.add_argument('--outdir', required=True, help='Folder to write decrypted files')
    args = parser.parse_args()

    key_bytes = unhexlify(args.key)
    iv_bytes = unhexlify(args.iv)

    if not os.path.isdir(args.indir):
        print("[!] Input folder does not exist.")
        sys.exit(1)
    os.makedirs(args.outdir, exist_ok=True)

    for fname in os.listdir(args.indir):
        inpath = os.path.join(args.indir, fname)
        outpath = os.path.join(args.outdir, fname + ".decrypted")
        print(f"[.] Decrypting {inpath} -> {outpath}")
        ok = decrypt_file(inpath, outpath, key_bytes, iv_bytes)
        if ok:
            print(f"[+] Success: {outpath}")
        else:
            print(f"[-] Failed: {inpath}")

if __name__ == "__main__":
    main()

Exécution (pas à pas) :

  1. Placez les fichiers chiffrés dans C:\temp\enc\.
  2. Ouvrez PowerShell/CMD dans le dossier où est decrypt_with_key.py.
  3. Exécutez :

Interprétation :

  • --key et --iv doivent être fournis par une source légitime (IR, vendor).
  • Le script décrypte en AES-CBC ; si le ransomware utilise autre mode/algorithme, le script doit être adapté (mais nous ne fournissons pas des adaptations pour casser une ransomware).

6.2 Script PowerShell (.NET AES) — clé connue

Prérequis (étape par étape) :

  1. Ouvrir PowerShell en administrateur.
  2. Créez un fichier Decrypt-AES.ps1 avec le contenu ci-dessous.

Fichier : Decrypt-AES.ps1

<#
.SYNOPSIS
  Decrypt files encrypted with AES-CBC and PKCS7 (requires key and iv).
.EXAMPLE
  .\Decrypt-AES.ps1 -KeyHex "001122..." -IvHex "010203..." -InputDir "C:\temp\enc" -OutputDir "C:\temp\dec"
#>

param(
    [Parameter(Mandatory=$true)] [string]$KeyHex,
    [Parameter(Mandatory=$true)] [string]$IvHex,
    [Parameter(Mandatory=$true)] [string]$InputDir,
    [Parameter(Mandatory=$true)] [string]$OutputDir
)

function HexToBytes($hex) {
    $hex -replace '\s','' | ForEach-Object { $_ -replace '(.{2})', '0x$1 ' } | Out-String |
    ForEach-Object { $_.Trim() } | ConvertFrom-StringData @{} # not ideal, simpler way below
}

# Simpler conversion:
function HexToByteArray([string]$hex) {
    if ($hex.Length % 2 -ne 0) { throw "Hex string length must be even." }
    $bytes = New-Object byte[] ($hex.Length / 2)
    for ($i=0; $i -lt $bytes.Length; $i++) {
        $bytes[$i] = [Convert]::ToByte($hex.Substring($i*2,2),16)
    }
    return $bytes
}

$key = HexToByteArray $KeyHex
$iv = HexToByteArray $IvHex

if (-not (Test-Path $InputDir)) { Write-Error "InputDir does not exist"; exit 1 }
New-Item -ItemType Directory -Force -Path $OutputDir | Out-Null

Add-Type -AssemblyName System.Security

Get-ChildItem -Path $InputDir -File | ForEach-Object {
    $infile = $_.FullName
    $outfile = Join-Path $OutputDir ($_.Name + ".decrypted")
    Write-Host "[.] Decrypting $infile -> $outfile"
    $enc = [System.IO.File]::ReadAllBytes($infile)
    $aes = [System.Security.Cryptography.Aes]::Create()
    $aes.Mode = [System.Security.Cryptography.CipherMode]::CBC
    $aes.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7
    $aes.Key = $key
    $aes.IV = $iv
    $transform = $aes.CreateDecryptor()
    try {
        $plain = $transform.TransformFinalBlock($enc, 0, $enc.Length)
        [System.IO.File]::WriteAllBytes($outfile, $plain)
        Write-Host "[+] Decrypted: $outfile"
    } catch {
        Write-Host "[-] Decryption failed for $infile : $_"
    } finally {
        $aes.Dispose()
    }
}

Exécution (pas à pas) :

  1. Placez les fichiers chiffrés dans C:\temp\enc.
  2. Ouvrez PowerShell en admin, naviguez au dossier contenant Decrypt-AES.ps1.
  3. Exécutez :
.\Decrypt-AES.ps1 -KeyHex "00112233445566778899AABBCCDDEEFF" -IvHex "0102030405060708090A0B0C0D0E0F10" -InputDir "C:\temp\enc" -OutputDir "C:\temp\dec"

7 — Étude de cas complète (BOÎTE À OUTILS OPÉRATIONNELLE)

Scénario réaliste et traité de bout en bout — LockBit-like, parc mixte Windows, serveur de fichiers. Montre la voie légale et opérationnelle : prise en charge par l’équipe interne + vendor decryptor + backups.

Contexte simulé

  • Date/heure : 2025-10-01 09:12
  • Endpoint initial : WS-1234 (utilisateur Alice)
  • Symptom : Message de rançon + fichiers .locked
  • Sauvegarde : Veeam backup quotidien + NAS hors site (snapshots journaliers)
  • Politique : notification obligatoire DSI + ISO/incident response déclenché

Étapes (détaillées, opérationnelles)

A. Détection & isolement (0–30 minutes)

  1. Alice signale : capture écran du message → envoi à SOC.
  2. SOC : isole WS-1234 : désactivation réseau via NAC (Cisco ISE) ou débranchement physique.
  3. SOC génère ticket, notifie DSI, active playbook ransomware.

B. Collecte initiale (30–90 minutes)

  1. SOC demande image quick (FTK Imager) sur disque externe via write-blocker.
    • Etape par étape (FTK Imager GUI) : Create Disk Image → Source: Physical Drive → Destination: Image File → Options: Evidence Number → Start.
  2. Stocker image et calculer SHA256 (FTK affiche). Documenter.

C. Identification de la famille (90–180 minutes)

  1. Extrait 1 fichier chiffré et l’upload sur ID Ransomware.
  2. Résultat : LockBit (ou similaire). Le site retourne lien vers décryptor si existant.
  3. Si décryptor disponible → Télécharger le décryptor depuis site officiel du vendor référencé (No More Ransom / Emsisoft).

D. Validation des sauvegardes (2–6 heures)

  1. Vérifier sur Veeam console : dernière bonne restauration : 2025-09-30 23:00.
  2. Lancer une restore test sur une VM isolée (Restore to new VM).
  3. Valider intégrité des fichiers restaurés. Si OK → Plan de restauration.

E. Test du décryptor (6–12 heures)

  1. Sur VM isolée (copie de fichier chiffré), lancer le décryptor vendor (procédure fournie par vendor).
  2. Tester sur 1–5 fichiers. Documenter résultats (logs, succès/échecs).
  3. Si succès → planifier décryptage en production sur copies des fichiers (flot de 10 machines test).

F. Remediation & restauration en production (12–48 heures)

  1. Pour chaque endpoint :
    • Isoler → image disque → appliquer nettoyage antivirus (Emsisoft/Malwarebytes/Kaspersky) → restaurer fichiers depuis backup ou lancer le décryptor si approuvé → remettre en production.
  2. Mettre à jour mots de passe, révoquer sessions, pousser patchs RDP/SMB.

G. Retours d’expérience & renforcement

  • Inventaire des vecteurs d’entrée (phishing email détecté) → sensibilisation.
  • Mise en place 3-2-1 backups hors ligne + MFA sur accès distant + durcissement RDP.

(Cette étude montre un processus complet et légal : aucun aspect technique n’explique ici comment fabriquer un déchiffreur maison — toutes les actions de décryptage utilisent des clés ou outils officiels ou des backups.)

8 — Automatisation & scripts pour restaurer un parc (exemples)

8.1 PowerShell : timeline d’inventaire & export des fichiers chiffrés

# Liste des machines à vérifier (fichier CSV)
$computers = Get-Content -Path C:\tools\computers.txt
foreach ($c in $computers) {
    Write-Host "Interrogation $c..."
    # Exemple : vérifie présence d'extensions .locked dans le dossier Documents (requiert credentials)
    Invoke-Command -ComputerName $c -ScriptBlock {
        Get-ChildItem -Path "$env:USERPROFILE\Documents" -Filter "*.locked" -Recurse -ErrorAction SilentlyContinue |
        Select-Object FullName,Length | Export-Csv -Path "C:\Temp\$env:COMPUTERNAME-encfiles.csv" -NoTypeInformation
    } -Credential (Get-Credential)
}

8.2 Bash (Linux) : restaurer snapshots via rsync (exemple NAS -> host)

# restore_from_snapshot.sh
SNAPSHOT="/mnt/backup/snapshots/2025-09-30"
DEST="/data/projects"
rsync -av --progress --checksum "$SNAPSHOT/" "$DEST/"

8.3 Ansible playbook (esquisse) : restaurer fichiers depuis backup central

Nous fournissons une structure — compléter avec les modules spécifiques à votre solution de backup.

- name: Restore files from backup
  hosts: windows_clients
  tasks:
    - name: Copy restored files to host
      win_copy:
        src: "\\backup-server\restores\{{ inventory_hostname }}\"
        dest: "C:\RestoredFiles\"

9 — Nettoyage, hardening et remise en production sécurisée

  1. Éradication : run full AV / EDR scan; supprimez artefacts détectés.
  2. Patching : appliquez tous les patches critiques (OS, apps).
  3. Credential Hygiene : reset global admin creds, rotate secrets, revoke tokens.
  4. Segmenter réseau : micro-segmentation pour limiter déplacement latéral.
  5. EDR / SIEM : intégrer indicators-of-compromise (IoCs) et surveiller.
  6. Backups : mettre en place sauvegardes immutables ou air-gapped + vérifier periodic test restores.

10 — Templates & checklist

Template rapport d’incident (résumé)

Titre : Incident Ransomware – [Organisme] – [Date]

  1. Récapitulatif
  • Endpoint initial : WS-1234
  • Famille identifiée : LockBit (ID Ransomware)
  1. Actions immédiates
  • Isolation : oui, à [heure]
  • Image disque : oui, hash SHA256:
  1. Sauvegarde disponible : Veeam (snapshot 2025-09-30)
  2. Décryptor testé : Vendor Emsisoft – test sur VM : SUCCESS
  3. Plan de restauration : restaurer 150 endpoints via Veeam orchestration, timeline 48h
  4. Recommandations : MFA, segmentation, formation phishing
    Signé : [Auditeur / RSSI]

Checklist opérationnelle complète

  • Isoler endpoint(s) infectés
  • Documenter et capturer écran message de rançon
  • Image disque + SHA256
  • Vérifier sauvegardes et test restore sur VM
  • Identifier famille (ID Ransomware)
  • Tester décryptor vendor sur VM (copies)
  • Déployer restauration / décryptage planifié
  • Nettoyage AV/EDR + rotation credentials
  • Rapport et rétroaction

Conclusion

La priorité après une attaque est de préserver les preuves, de restaurer les services via des sauvegardes saines, et d’impliquer une équipe IR qualifiée si nécessaire. Si votre organisation veut :

  • un audit de préparation (playbook, tests restore),
  • un POC de restauration automatisée (Veeam/Commvault/Whatever),
  • une intervention IR certifiée pour extraction de clés et forensic légal,

Contactez nos équipes d’experts pour un diagnostic et une offre sur-mesure ou Demander un audit Ransomware gratuit.

Ressources officielles

Lectures recommandées

Index