Investigation forensique sur Veeam : triage DFIR, analyse de base de données et chasse aux artefacts
SCORE DE CAPACITÉ DFIR HERMES ET PROFONDEUR D'ARTEFACTS
Cible :Base de données de configuration, journaux de services et mémoire volatile Veeam 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.
Veeam Backup & ReplicationCOMPOSANT
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 commeRemoveBackupouDeleteFromDisk.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 Remotinget 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 source | ID d’événement | Intérêt forensique lors d’une compromission Veeam |
|---|---|---|
| Système | 7045 | Création de service : détecte la création de services de persistance ou de backdoors (ex. outils PsExec ou binaires pirates). |
| Sécurité | 4624 / 4625 | Activité 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é | 4720 | Création de compte utilisateur : les attaquants exploitant CVE-2024-40711 créent immédiatement un compte local pirate (net user <nom> /add). |
| Sécurité | 4732 | Ajout à un groupe local : repère l’intégration du compte pirate au groupe des Administrateurs locaux. |
| PowerShell | 4104 | Script block logging : capture les commandes PowerShell exécutées (ex. Remove-VBRBackup, Get-VBRCredentials) pour saboter ou dumper les secrets. |
| Microsoft-Windows-VSS | 8194 / 13 | Instantané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).
Tables sensibles de la base de données
Section intitulée « Tables sensibles de la base de données »[dbo].[Credentials]: stocke les identifiants à hauts privilèges du SI. La colonnedatacontient 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 sauvegardesSELECT session_id, job_name, creation_time, end_time, result, descriptionFROM "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 baseSELECT id, user_name, description, modification_date, account_typeFROM "dbo.Credentials"ORDER BY modification_date DESC;
-- 3. Détecter les modifications récentes de rétention sur les travauxSELECT id, name, schedule_enabled, last_modified, retention_daysFROM "Backup.Model.BackupJobs"ORDER BY last_modified DESC;-- 1. Identifier les opérations de purge de sauvegardesSELECT [session_id], [job_name], [creation_time], [end_time], [result], [description]FROM [VeeamBackup].[dbo].[Backup.Model.JobSessions]WHERE [description] LIKE '%delete%' OR [description] LIKE '%remove%'ORDER BY [creation_time] DESC;
-- 2. Extraire l'horodatage de modification des identifiantsSELECT [id], [user_name], [description], [modification_date]FROM [VeeamBackup].[dbo].[Credentials]ORDER BY [modification_date] DESC;Déconstruction du dump d’identifiants DPAPI
Section intitulée « Déconstruction du dump d’identifiants DPAPI »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.dllouSystem.Security.Cryptography. - Événement PowerShell 4104 mentionnant des chaînes telles que
Veeam-Get-Creds,SharpVeeamDecryptor,Unprotectou[dbo].[Credentials]. - Lecture anormale de la clé de registre
HKLM\SOFTWARE\Veeam\Veeam Backup and Replication\Datapar 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 :
Ce bloc d’instructions précis doit être recherché au sein de l’événement PowerShell 4104.
Fenêtre de terminal Get-VBRBackup | Remove-VBRBackup -FromDisk -Confirm:$false - Effacement bas niveau des disques de stockage :
L’agresseur fait appel à
diskpartouvds.exepour formater ou supprimer les partitions :Surveiller l’événement Windows 4688 (création de processus) et le journalFenêtre de terminal echo select disk 1 > s.txt && echo clean >> s.txt && diskpart /s s.txtUSN Journalsur 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.exeouwinscp.exe. - Transferts volumineux : examiner la table
NetworkDatadu 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 »<#.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 CyanNew-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 GreenGet-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 GreenGet-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 VeeamWrite-Host "[+] Exportation des connexions et sockets réseau actifs..." -ForegroundColor GreenGet-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 Cyantitle: Suppression de sauvegardes Veeam via PowerShellid: a81f47d2-9b21-4d1e-8732-veeam-wipe-hunting-frstatus: productiondescription: Détecte l'exécution de commandes PowerShell exploitant les modules Veeam pour effacer définitivement les archives de sauvegarde du disque (Remove-VBRBackup -FromDisk).references: - https://helpcenter.veeam.com/docs/backup/powershell/remove-vbrbackup.htmlauthor: Hermes Codex DFIR Labdate: 2026-09-09logsource: category: ps_script product: windows definition: 'Prérequis : journalisation des blocs de scripts (Event ID 4104) activée'detection: selection: ScriptBlockText|contains: - 'Remove-VBRBackup' - 'Remove-VBRServer' - 'DeleteFromDisk' condition: selectionfalsepositives: - Scripts de gestion de rétention configurés légitimement par les administrateurs système (valider la signature et le compte de service)level: hightags: - attack.impact - attack.t1490 - attack.t1562.001// Microsoft Sentinel KQL : détection de suppression massive de fichiers de sauvegarde Veeam (.vbk, .vib)SecurityEvent| where EventID in (4660, 4663) // Objet supprimé / Accès demandé| where ObjectName endswith ".vbk" or ObjectName endswith ".vib"| where AccessMask in ("0x10000", "0x2") // Masque d'accès DELETE| summarize DeletedFilesCount = count(), StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), TargetFiles = make_set(ObjectName, 20) by Account, Computer| where DeletedFilesCount > 3| order by DeletedFilesCount descrule HackTool_Veeam_Credential_Decryptor { meta: description = "Détecte les binaires et scripts conçus pour déchiffrer les identifiants DPAPI de Veeam" author = "Hermes Codex CTI" date = "2026-09-09" severity = "Critical" strings: $s1 = "Veeam-Get-Creds" ascii wide nocase $s2 = "SharpVeeamDecryptor" ascii wide nocase $s3 = "Veeam.Backup.Common.ProtectedStorage" ascii wide $s4 = "SELECT [user_name],[password] FROM [dbo].[Credentials]" ascii wide nocase $s5 = "HKLM:\\SOFTWARE\\Veeam\\Veeam Backup and Replication\\Data" ascii wide nocase $s6 = "CryptProtectData" ascii wide condition: 2 of ($s1, $s2, $s3) or ($s4 and ($s5 or $s6))}