Aller au contenu

Investigation forensique sur Veeam : triage DFIR, analyse de base de données et chasse aux artefacts

HERMES

SCORE DE CAPACITÉ DFIR HERMES ET PROFONDEUR D'ARTEFACTS

Cible : Base de données de configuration, journaux de services et mémoire volatile Veeam
Confiance : 99%
95 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 19 / 20
Activité de menace 20 / 20
Militarisation 19 / 20
Exposition 18 / 20
Prévalence 19 / 20
Impact 20 / 20
Maturité de l'exploit 20 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

Le laboratoire DFIR Hermes évalue la profondeur forensique de Veeam à 95 (CRITIQUE). Lors d'une investigation de compromission, le serveur Veeam renferme les preuves décisives des agissements de l'attaquant : les journaux de sessions horodatés révèlent quelles sauvegardes ont été purgées, les tables d'audit SQL consignent les altérations administratives, et les clés de registre DPAPI indiquent si les secrets d'entreprise ont été siphonnés.

🕸️ Graphe de connaissances connecté & Provenance

Veeam Backup & ReplicationCOMPOSANT

Nœuds connectés : 0

1. Liste de contrôle de réponse à incident : les 60 premières minutes

Section intitulée « 1. Liste de contrôle de réponse à incident : les 60 premières minutes »

Dès la suspicion d’une compromission sur un serveur Veeam, appliquez la procédure de triage séquentielle ci-après afin de préserver l’intégrité des preuves tout en neutralisant la destruction des données.

Séquence de triage DFIR sur serveur Veeam :
┌─────────────────────────────────────────────────────────────┐
│ Étape 1 : Isolation (bloquer la destruction sortante) │
│ - Déconnecter les interfaces réseau ou isoler l'hôte via EDR│
│ - NE PAS éteindre la machine (préserver RAM et clés DPAPI) │
└──────────────────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Étape 2 : Acquisition de la mémoire vive (RAM) │
│ - Capture de la RAM via WinPmem, LiME ou DumpIt │
│ - Capture des sockets réseau : netstat -ano > netstat.txt │
└──────────────────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Étape 3 : Sauvegarde de la base de données et des clés │
│ - Snapshot ou dump à chaud de PostgreSQL / MSSQL │
│ - Exportation des ruches de registre HKLM\SOFTWARE\Veeam │
└──────────────────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Étape 4 : Extraction forensique des journaux │
│ - Copie de l'arborescence %ProgramData%\Veeam\Backup\ │
│ - Exportation des journaux Windows Sécurité, Système et PS │
└─────────────────────────────────────────────────────────────┘

2. Artefacts du système de fichiers et arborescence des journaux

Section intitulée « 2. Artefacts du système de fichiers et arborescence des journaux »

Veeam centralise une journalisation granulaire et structurée au sein du répertoire masqué %ProgramData%\Veeam\Backup\. La maîtrise de cette structure est indispensable pour guider les recherches de l’analyste.

Arborescence des journaux Veeam Backup & Replication :
C:\ProgramData\Veeam\Backup\
├── Svc.VeeamBackup.log <-- Activité du moteur principal et transactions RPC
├── Svc.VeeamBroker.log <-- Requêtes de la console UI et appels d'API broker
├── Svc.VeeamDataAnalyzer.log <-- Détection de malwares inline et calcul d'entropie
├── VeeamThreatHunter.log <-- Activité du service Threat Hunter (.NET Remoting 6175)
├── Svc.VeeamMount.log <-- Opérations du service de montage et vPower NFS (TCP 6172)
├── Svc.VeeamDeployment.log <-- Déploiement et mise à niveau des paquets
├── Malware_Detection_Logs\ <-- Fichiers suspects, alertes d'entropie et correspondances YARA
├── Job_Sessions\ <-- Traces détaillées par seconde pour chaque exécution de travail
└── [Nom_Du_Job]\ <-- Répertoire dédié à chaque travail de sauvegarde configuré

Fichiers de journaux critiques pour l’investigation

Section intitulée « Fichiers de journaux critiques pour l’investigation »
  • Svc.VeeamBackup.log : consigne l’ensemble des commandes administratives, les modifications de planification, l’état des dépôts et les requêtes sur les magasins d’identifiants. Permet de repérer les appels d’API hostiles comme RemoveBackup ou DeleteFromDisk.
  • Svc.VeeamMount.log : doit être analysé en priorité en cas de suspicion d’exploitation de CVE-2024-40711. Repérez les connexions de clients inhabituels émanant d’adresses IP suspectes précédant immédiatement l’apparition de nouveaux processus.
  • VeeamThreatHunter.log : artefact clé pour traquer CVE-2026-44963. Enregistre les instanciations de proxy .NET Remoting et les callbacks suspects initiés sur le port TCP 6175.
  • Svc.VeeamDataAnalyzer.log : contient les alertes du moteur de détection d’entropie. Lorsqu’un ransomware commence à chiffrer des données en amont de la sauvegarde, ce composant consigne des blocs d’entropie anormale et la présence d’extensions malveillantes connues (ex. .akira, .locked).

3. Journaux d’événements Windows et corrélation de la télémétrie OS

Section intitulée « 3. Journaux d’événements Windows et corrélation de la télémétrie OS »

La corrélation des journaux Veeam avec les journaux d’événements Windows permet d’établir formellement la preuve de l’exécution ennemie et de l’élévation de privilèges.

Journal Windows sourceID d’événementIntérêt forensique lors d’une compromission Veeam
Système7045Création de service : détecte la création de services de persistance ou de backdoors (ex. outils PsExec ou binaires pirates).
Sécurité4624 / 4625Activité de connexion : Logon Type 3 (réseau) ou Logon Type 10 (RDP). Identifie le pivot initial de l’attaquant vers le serveur Veeam.
Sécurité4720Création de compte utilisateur : les attaquants exploitant CVE-2024-40711 créent immédiatement un compte local pirate (net user <nom> /add).
Sécurité4732Ajout à un groupe local : repère l’intégration du compte pirate au groupe des Administrateurs locaux.
PowerShell4104Script block logging : capture les commandes PowerShell exécutées (ex. Remove-VBRBackup, Get-VBRCredentials) pour saboter ou dumper les secrets.
Microsoft-Windows-VSS8194 / 13Instantanés de volume : consigne les tentatives de suppression des clichés instantanés locaux (vssadmin delete shadows).

4. Analyse forensique de la base de configuration (PostgreSQL et MSSQL)

Section intitulée « 4. Analyse forensique de la base de configuration (PostgreSQL et MSSQL) »

Veeam stocke l’intégralité de son inventaire, l’état de ses planifications et les identifiants d’accès au sein d’une base relationnelle (PostgreSQL par défaut depuis v12+, MSSQL pour les parcs plus anciens).

  • [dbo].[Credentials] : stocke les identifiants à hauts privilèges du SI. La colonne data contient un blob XML avec le nom d’utilisateur et la chaîne de mot de passe chiffrée par DPAPI.
  • [dbo].[Backup.Model.BackupJobs] : liste l’ensemble des tâches de sauvegarde, les machines sources et les paramètres de planification.
  • [dbo].[Backup.Model.JobSessions] : conserve l’historique de chaque session de sauvegarde, restauration ou suppression, avec les horodatages précis et l’identité du compte initiateur.
  • [dbo].[AuditLog] / [dbo].[AuditEvents] : trace les actions interactives réalisées depuis la console ou l’API REST.

Requêtes SQL forensiques pour la réponse à incident

Section intitulée « Requêtes SQL forensiques pour la réponse à incident »
-- 1. Identifier les purges manuelles et suppressions de sauvegardes
SELECT
session_id,
job_name,
creation_time,
end_time,
result,
description
FROM "Backup.Model.JobSessions"
WHERE description ILIKE '%delete%'
OR description ILIKE '%remove%'
OR job_name ILIKE '%delete%'
ORDER BY creation_time DESC;
-- 2. Auditer l'ensemble des identifiants enregistrés en base
SELECT
id,
user_name,
description,
modification_date,
account_type
FROM "dbo.Credentials"
ORDER BY modification_date DESC;
-- 3. Détecter les modifications récentes de rétention sur les travaux
SELECT
id,
name,
schedule_enabled,
last_modified,
retention_days
FROM "Backup.Model.BackupJobs"
ORDER BY last_modified DESC;

Les cybercriminels (dont FIN7 et Akira) extraient systématiquement les mots de passe de la base selon un procédé technique documenté :

Mécanisme d'extraction et de déchiffrement DPAPI :
1. Interrogation de la base de données :
SELECT user_name, data FROM [dbo].[Credentials];
│
▼
2. Parsing du blob XML :
<Credentials user="DOMAINE\Administrateur" password="AQAAANCMnd8BFdERjHoAwE..."/>
│
▼
3. Récupération du sel de registre (VBR v12.1+) :
HKLM\SOFTWARE\Veeam\Veeam Backup and Replication\Data -> Valeur Entropy
│
▼
4. Appel natif à la méthode DPAPI :
[System.Security.Cryptography.ProtectedData]::Unprotect(
$EncryptedBytes,
$EntropyBytes,
[System.Security.Cryptography.DataProtectionScope]::LocalMachine
)

Artefacts forensiques attestant du vol d’identifiants :

Section intitulée « Artefacts forensiques attestant du vol d’identifiants : »
  • Exécution de processus PowerShell suspects important les bibliothèques Veeam.Backup.Common.dll ou System.Security.Cryptography.
  • Événement PowerShell 4104 mentionnant des chaînes telles que Veeam-Get-Creds, SharpVeeamDecryptor, Unprotect ou [dbo].[Credentials].
  • Lecture anormale de la clé de registre HKLM\SOFTWARE\Veeam\Veeam Backup and Replication\Data par un processus extérieur à la suite logicielle Veeam.

5. Chasse au sabotage et à l’exfiltration de sauvegardes

Section intitulée « 5. Chasse au sabotage et à l’exfiltration de sauvegardes »

Avant de déclencher le chiffrement des charges utiles, les attaquants s’assurent de la destruction des dépôts et procèdent fréquemment à l’exfiltration préalable des conteneurs de sauvegarde.

1. Détection de la suppression malveillante des dépôts

Section intitulée « 1. Détection de la suppression malveillante des dépôts »

Les agresseurs utilisent soit les commandes du composant PowerShell de Veeam, soit des utilitaires bas niveau de gestion de disques :

  • Abus des cmdlets PowerShell Veeam :
    Fenêtre de terminal
    Get-VBRBackup | Remove-VBRBackup -FromDisk -Confirm:$false
    Ce bloc d’instructions précis doit être recherché au sein de l’événement PowerShell 4104.
  • Effacement bas niveau des disques de stockage : L’agresseur fait appel à diskpart ou vds.exe pour formater ou supprimer les partitions :
    Fenêtre de terminal
    echo select disk 1 > s.txt && echo clean >> s.txt && diskpart /s s.txt
    Surveiller l’événement Windows 4688 (création de processus) et le journal USN Journal sur les volumes de stockage.

2. Traque de l’exfiltration d’images de sauvegarde (.vbk / .vib)

Section intitulée « 2. Traque de l’exfiltration d’images de sauvegarde (.vbk / .vib) »

Les fichiers complets .vbk et incrémentaux .vib renferment l’image exacte des systèmes d’information. Les attaquants les dérobent pour exercer un chantage à la fuite de données :

  • Outils d’exfiltration réseau : analyser les bases de données SRUM (System Resource Usage Monitor), Shimcache et Amcache pour détecter l’exécution d’utilitaires tels que rclone.exe, megasync.exe, 7z.exe ou winscp.exe.
  • Transferts volumineux : examiner la table NetworkData du SRUM pour déceler des volumes de transfert sortants anormaux (plusieurs centaines de gigaoctets) vers des adresses IP d’hébergeurs cloud publics.

6. Boîte à outils interactive de détection et de triage DFIR

Section intitulée « 6. Boîte à outils interactive de détection et de triage DFIR »
Fenêtre de terminal
<#
.SYNOPSIS
Script de triage forensique d'urgence pour serveur Veeam compromis
.DESCRIPTION
Collecte les logs critiques Veeam, interroge la base locale et examine
les journaux d'événements à la recherche d'artefacts d'exploitation.
#>
[CmdletBinding()]
param (
[string]$DestinationPath = "C:\DFIR_Triage_Veeam"
)
Write-Host "[+] Lancement du triage forensique Veeam..." -ForegroundColor Cyan
New-Item -ItemType Directory -Path $DestinationPath -Force | Out-Null
# 1. Collecte des journaux de service Veeam principaux
$VeeamLogPath = "C:\ProgramData\Veeam\Backup"
if (Test-Path $VeeamLogPath) {
Write-Host "[+] Extraction des journaux Veeam depuis $VeeamLogPath..." -ForegroundColor Green
Copy-Item -Path "$VeeamLogPath\*.log" -Destination $DestinationPath -Force
}
# 2. Détection de créations récentes de comptes locaux (Event ID 4720)
Write-Host "[+] Chasse aux créations de comptes locaux (Event ID 4720)..." -ForegroundColor Green
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4720} -MaxEvents 50 -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, Message |
Export-Clixml -Path "$DestinationPath\AccountCreations_4720.xml"
# 3. Traque des commandes PowerShell de purge de sauvegarde (Event ID 4104)
Write-Host "[+] Recherche de commandes PowerShell suspectes (Event ID 4104)..." -ForegroundColor Green
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; Id=4104} -MaxEvents 500 -ErrorAction SilentlyContinue |
Where-Object { $_.Message -match "Remove-VBRBackup" -or $_.Message -match "Unprotect" -or $_.Message -match "Credentials" } |
Select-Object TimeCreated, Message |
Export-Csv -Path "$DestinationPath\Suspicious_PowerShell_4104.csv" -NoTypeInformation
# 4. Capture des connexions et sockets réseau sur les ports Veeam
Write-Host "[+] Exportation des connexions et sockets réseau actifs..." -ForegroundColor Green
Get-NetTCPConnection | Where-Object { $_.LocalPort -in 6172, 6175, 9401, 9380 } |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess |
Export-Csv -Path "$DestinationPath\Veeam_Sockets.csv" -NoTypeInformation
Write-Host "[+] Triage achevé. Preuves rassemblées dans $DestinationPath." -ForegroundColor Cyan

7. Navigation dans la série et renseignements connexes

Section intitulée « 7. Navigation dans la série et renseignements connexes »