Preuve d'exécution avec BAM : un cas de mouvement latéral
Une enquête fictive sur FIN-WKS-07 lue à travers BAM : phishing, compte de service détourné, scan, PsExec, RDP et rclone — et ce que BAM ne pouvait pas montrer.
TL;DR. Scénario fictif, données synthétiques. Sur FIN-WKS-07, BAM suffit à retracer une matinée : alice ouvre une « facture » à double extension, puis PowerShell 24 secondes plus tard ; une heure après, le compte de service svc_backup — censé n'exécuter qu'un agent de sauvegarde — lance cmd.exe, dépose un binaire dans ProgramData, exécute un scanner d'IP depuis un second volume, ouvre une session RDP, lance PsExec, 7-Zip et rclone. Un faux svchost.exe tourne en SYSTEM depuis Windows\Temp. BAM donne le qui, le quoi et le quand ; il ne donne ni les commandes, ni les hash, ni les cibles, et cet article le dit explicitement à chaque fois.
Tout ce qui figure dans cet article est fictif. La machine, les comptes, les SID, les chemins et les heures proviennent des ruches synthétiques derrière le bouton « Essayer un exemple » du BAM/DAM Parser. Aucune organisation, personne ou incident réel n'est décrit. Vous pouvez charger les mêmes données et suivre pas à pas.
Le contexte
Un poste de la comptabilité, FIN-WKS-07, a déclenché une alerte pour du trafic sortant vers un fournisseur de stockage cloud le 14 septembre 2026. L'intervenant a collecté SYSTEM, SYSTEM.LOG1/LOG2 et SOFTWARE avec KAPE avant que quiconque ne redémarre la machine — ce qui, comme l'explique l'article sur les limites, maintient en vie les entrées BAM des outils supprimés.
Le chargement des ruches dans l'outil donne l'en-tête suivant :
| Champ | Valeur |
|---|---|
| Machine | FIN-WKS-07 |
| Fuseau horaire | Romance Standard Time (Paris, UTC+2 en septembre) |
| Control set actif | 1 |
| Comptes | alice (…-1104), svc_backup (…-1119), SYSTEM (S-1-5-18) |
Toutes les heures ci-dessous sont en UTC, telles que stockées dans BAM. Ajoutez deux heures pour l'heure locale de Paris.
Phase 1 — Accès initial sous alice
En filtrant sur alice et en triant par dernière exécution :
| Dernière exécution (UTC) | Programme | Chemin | Signalements |
|---|---|---|---|
| 08:51:13 | explorer.exe (DAM) | \Windows\explorer.exe | |
| 08:55:02 | MSTeams | package MSTeams_8wekyb3d8bbwe | |
| 08:58:40 | OUTLOOK.EXE | \Program Files\Microsoft Office\root\Office16\ | |
| 09:03:11 | chrome.exe | \Program Files\Google\Chrome\Application\ | |
| 09:12:07 | Invoice_2026-0914.pdf.exe | \Users\alice\Downloads\ | dossier modifiable par l'utilisateur, double extension |
| 09:12:31 | powershell.exe | \Windows\System32\WindowsPowerShell\v1.0\ |
Ce que BAM étaye : un début de journée normal (Teams, Outlook, Chrome), puis un programme à double extension .pdf.exe lancé depuis Downloads, puis PowerShell 24 secondes plus tard, le tout sous alice.
Ce que BAM ne montre pas : comment le fichier est arrivé (téléchargement navigateur ou pièce jointe), son hash, si PowerShell était son processus enfant, ni ce que PowerShell a exécuté. Rappelez-vous que l'heure est la dernière activité enregistrée — mise à jour au lancement et à la fin du processus (Suhanov) —, la « facture » a donc pu démarrer un peu avant 09:12:07 si elle est restée ouverte un moment.
Étapes suivantes sur un vrai dossier : historique Chrome et flux Zone.Identifier pour l'origine du téléchargement (Browser Forensics), Amcache pour le SHA-1, journaux PowerShell Operational (4104, journalisation des blocs de script si activée) dans EVTX Parser.
Comparaison des control sets. En décochant « Control set actif uniquement », on voit ControlSet002 avec seulement quatre entrées d'alice — Chrome, Outlook, Excel, Notepad. Cet instantané plus ancien ne contient aucune des lignes suspectes, ce qui est cohérent avec une activité récente. C'est un point de comparaison, pas une preuve de chronologie.
Phase 2 — Le compte de service se réveille
svc_backup est un compte de service de sauvegarde. Dans un parc sain, sa clé BAM contiendrait au plus l'agent de sauvegarde. Ici :
| Dernière exécution (UTC) | Programme | Chemin | Signalements |
|---|---|---|---|
| 10:02:16 | cmd.exe | \Windows\System32\ | |
| 10:09:44 | m64.exe | \ProgramData\Intel\ | dossier modifiable par l'utilisateur |
| 10:15:58 | Advanced_IP_Scanner.exe | \Device\HarddiskVolume7\tools\ | double usage |
| 10:18:40 | mstsc.exe | \Windows\System32\ | |
| 10:21:03 | PsExec64.exe | \Users\svc_backup\Downloads\ | dossier modifiable par l'utilisateur, double usage |
| 10:39:25 | 7z.exe | \Program Files\7-Zip\ | |
| 10:47:12 | rclone.exe | \Users\Public\ | dossier modifiable par l'utilisateur, double usage |
C'est le constat central, et c'est le genre de constat où BAM est unique : une exécution attribuée à un compte précis. L'article sur l'attribution explique pourquoi il faut écrire « exécuté sous le compte svc_backup » — BAM ne sait pas si une personne a tapé les commandes ou si un outil a utilisé les identifiants.
Rattachement à MITRE ATT&CK pour le rapport :
Advanced_IP_Scanner.exe→ découverte de services réseau (T1046).mstsc.exe→ RDP sortant (T1021.001).PsExec64.exe→ exécution de services sur des machines distantes (T1569.002).7z.exepuisrclone.exe→ préparation et exfiltration vers un stockage cloud (T1567.002).
Ce qu'apportent les chemins
\Device\HarddiskVolume7\tools\— pas le volume système (HarddiskVolume3). BAM n'enregistre pas les exécutables sur des supports marqués amovibles (Suhanov) : ce volume s'est donc présenté autrement — un VHD/ISO monté ou un disque externe vu comme fixe sont des candidats. Rattachez-le avec d'autres artefacts avant d'écrire « clé USB ». Voir l'article sur le format des valeurs pour les chemins de périphérique.\ProgramData\Intel\m64.exe— un binaire inconnu dans un dossier d'apparence légitime. BAM ne peut pas dire ce que c'est ; le SHA-1 d'Amcache le peut.\Users\Public\rclone.exe— un dossier accessible en écriture à tous, souvent détourné pour préparer des données.
Ce qui manque
Pas de net.exe, whoami.exe ni nltest.exe, alors que ce type de commandes de reconnaissance est typique d'une session cmd.exe. C'est attendu : des programmes console lancés depuis une session en ligne de commande ont été observés sans entrée BAM (Suhanov). Cette absence ne dit rien. C'est dans Prefetch et les événements 4688/Sysmon qu'ils apparaîtront.
Phase 3 — SYSTEM depuis un dossier temporaire
Sous S-1-5-18 :
| Dernière exécution (UTC) | Chemin | Signalements |
|---|---|---|
| 07:45:00 | \Windows\System32\svchost.exe | |
| 10:05:01 | \Windows\Temp\svchost.exe | dossier modifiable par l'utilisateur, binaire système hors de son dossier |
Un svchost.exe hors de System32, exécuté en LocalSystem trois minutes après l'ouverture d'un shell par svc_backup et quatre minutes avant l'apparition de m64.exe. Du masquage classique (T1036). Comment il a obtenu SYSTEM — installation de service, tâche planifiée, service de PsExec lui-même — demande les événements 7045/4697 et la clé Services.
La timeline consolidée
| UTC | Compte | Événement (BAM) |
|---|---|---|
| 09:12:07 | alice | « Facture » à double extension depuis Downloads |
| 09:12:31 | alice | PowerShell |
| 10:02:16 | svc_backup | cmd.exe |
| 10:05:01 | SYSTEM | Faux svchost.exe dans Windows\Temp |
| 10:09:44 | svc_backup | m64.exe dans ProgramData\Intel |
| 10:15:58 | svc_backup | Scanner d'IP depuis HarddiskVolume7 |
| 10:18:40 | svc_backup | Client RDP |
| 10:21:03 | svc_backup | PsExec |
| 10:39:25 | svc_backup | 7-Zip |
| 10:47:12 | svc_backup | rclone |
Les quarante minutes entre PowerShell et le premier shell du compte de service forment le trou évident : comment l'attaquant a-t-il obtenu les identifiants de svc_backup ? BAM l'ignore. Pistes à tester : identifiants stockés dans un script ou une configuration lisible par alice, vol d'identifiants (Prefetch/Amcache pour les outils de dump, événements d'accès à LSASS), ou connexion depuis une autre machine (4624 type 3/10).
Ce qui est allé dans le rapport
- Les constats BAM, chacun formulé « dernière activité enregistrée sous le compte X à T UTC », avec le chemin de la clé SID.
- Les limites explicites : pas de lignes de commande, pas de hash, pas d'outils console, pas d'exécutions depuis supports amovibles ou réseau, un seul horodatage par programme.
- Le plan de corroboration : Amcache (hash de
m64.exe, de la facture, de rclone), Prefetch (compteurs, premières exécutions), EVTX (ouvertures de session, installations de service, PowerShell), SRUM (octets envoyés parrclone.exe), et les clés BAM des machines atteintes par PsExec et RDP, où le même compte (ou SYSTEM) a pu lancer des outils aussi. - Le périmètre : les autres machines atteintes par
mstsc.exeetPsExec64.exefont l'objet de la même collecte.
À vous de jouer
Ouvrez le BAM/DAM Parser, cliquez sur Essayer un exemple, et reproduisez chaque tableau avec le filtre de comptes, « Signalées uniquement » et le tri. Le pas-à-pas explique chaque commande, et la comparaison avec Prefetch, ShimCache et Amcache montre ce qu'apporterait chaque artefact de corroboration.