Skip to content

Analyser les clés de registre BAM et DAM, pas à pas

Méthode pour analyser BAM/DAM depuis une ruche SYSTEM : collecter, analyser dans le navigateur, cibler compte et control set, trier, corroborer, exporter.

Publié le 6 min de lecture

TL;DR. Collectez SYSTEM + ses deux fichiers .LOG + SOFTWARE. Rejouez les journaux si la ruche est dirty. Déposez le tout dans le BAM/DAM Parser. Laissez « Control set actif uniquement » coché, choisissez un compte, triez par heure. Servez-vous des signalements pour décider quoi ouvrir en premier, consultez le panneau de détail, corroborez avec Prefetch/Amcache/journaux d'événements, exportez les lignes filtrées. Comptez une vingtaine de minutes pour une machine.

Voici la méthode que nous appliquons pour une machine Windows 10/11. Elle suppose que vous savez ce qu'est BAM — sinon, lisez d'abord le guide complet BAM/DAM. Les exemples utilisent les données intégrées « Essayer un exemple » de l'outil : des ruches synthétiques décrivant une intrusion fictive sur une machine nommée FIN-WKS-07. Aucune donnée réelle n'est en jeu.

Étape 1 — Collecter les ruches

Il vous faut, dans C:\Windows\System32\config\ :

FichierPourquoi
SYSTEMBAM et DAM s'y trouvent
SYSTEM.LOG1, SYSTEM.LOG2Écritures en attente — souvent les exécutions les plus récentes
SOFTWARELa ProfileList transforme les SID en noms de compte

Les fichiers sont verrouillés sur un système en marche. Utilisez KAPE (cible RegistryHivesSystem, ou !SANS_Triage), Velociraptor, FTK Imager, ou copiez-les depuis une image disque montée. reg save HKLM\SYSTEM fonctionne aussi et produit une ruche déjà consolidée. Commandes et pièges sont détaillés dans où se trouve la clé BAM et comment la collecter.

Si vous voulez une activité plus ancienne que la dernière semaine, récupérez aussi SYSTEM dans chaque cliché instantané de volume.

Étape 2 — Vérifier si la ruche est dirty et rejouer les journaux

Si Windows avait des modifications non écrites au moment de la copie, les deux numéros de séquence de l'en-tête diffèrent : la ruche est dirty. Le BAM/DAM Parser affiche alors un bandeau (« Ruche « dirty » : les dernières écritures BAM peuvent encore être dans SYSTEM.LOG1/LOG2 et ne sont pas rejouées. »).

Le parseur ne rejoue pas les journaux lui-même. Lancez rla.exe d'Eric Zimmerman (ou ouvrez la ruche dans Registry Explorer et enregistrez la copie nettoyée) — les deux sont sur la page des outils EZ — puis analysez le résultat. Analyser le fichier dirty tel quel convient pour un premier coup d'œil ; ne concluez simplement pas à l'absence d'une entrée.

Étape 3 — Charger les ruches

Ouvrez l'outil et, au choix :

  • déposez les fichiers sur la page,
  • utilisez Choisir des fichiers ou Choisir un dossier,
  • déposez une archive ZIP KAPE ou Velociraptor entière.

Le parseur tourne en WebAssembly dans un Web Worker de votre navigateur ; rien n'est envoyé. Il repère les ruches SYSTEM et SOFTWARE dans une collecte et liste chaque fichier ignoré avec la raison (journal de transactions, autre ruche, fichier rempli de zéros issu d'une copie verrouillée, etc.).

Lisez ensuite l'en-tête :

  • Machine — depuis ControlSet00X\Control\ComputerName (FIN-WKS-07 dans l'exemple).
  • Fuseau horaire — le TimeZoneKeyName configuré (Romance Standard Time dans l'exemple, soit Paris).
  • Control set actif — depuis Select\Current.
  • Entrées / Comptes / Signalées — les compteurs de la vue actuelle.

Étape 4 — Cibler la vue

Control set. Laissez Control set actif uniquement coché. Le ControlSet002 de l'exemple contient un instantané plus ancien des entrées d'alice, antérieur à l'incident ; décocher le filtre affiche les deux, ce qui sert à comparer mais brouille la timeline. Plus de détails dans l'article sur l'emplacement de la clé.

Compte. La liste des comptes affiche chaque SID avec son nom issu de la ProfileList, du plus actif au moins actif. Les SID bien connus sont étiquetés (SYSTEM pour S-1-5-18, DWM-1, UMFD-0…). Comment raisonner sur ces comptes : voir l'attribution BAM à un utilisateur.

Source. « BAM + DAM » par défaut ; limitez à l'un des deux si besoin (DAM expliqué).

Tri. Cliquez sur Dernière exécution pour lire l'activité d'un compte dans l'ordre. La colonne horaire est en UTC avec une précision de 100 ns ; le bouton Local convertit vers le fuseau de votre navigateur et affiche le décalage, qui n'est pas forcément celui de la machine étudiée.

Recherche. Le champ de filtre porte sur le chemin, le compte, le SID ou la date — 2026-09-14 réduit l'exemple au jour de l'incident, \Users\Public\ à un seul dossier.

Étape 5 — Trier les lignes signalées

L'outil signale quatre motifs. Ce sont des heuristiques simples et explicables qui indiquent où regarder en premier — pas des verdicts :

SignalementRègleExemple
Dossier modifiable par l'utilisateurChemin sous AppData, Downloads, Desktop… d'un profil, Users\Public, ProgramData, Windows\Temp, $Recycle.Bin, PerfLogs\Users\Public\rclone.exe
Double extensionExtension de document/archive suivie d'une extension exécutableInvoice_2026-0914.pdf.exe
Binaire système hors de son dossierNom d'un binaire central de Windows hors de son dossier attendu\Windows\Temp\svchost.exe
Outil à double usage / d'attaqueNom figurant dans une liste d'outils d'administration à distance, d'exfiltration et de vol d'identifiantsPsExec64.exe, Advanced_IP_Scanner.exe

Cochez Signalées uniquement pour une première liste courte, puis décochez : les entrées d'apparence légitime (cmd.exe, mstsc.exe, 7z.exe) sont souvent le contexte qui donne leur sens aux lignes signalées.

Cliquez sur une ligne pour ouvrir le panneau de détail :

  • Clé de registre — chemin complet, control set et format compris.
  • Données brutes — le REG_BINARY complet en hexadécimal (format expliqué).
  • FILETIME — la valeur 64 bits brute.
  • Dernière écriture de la clé SID — la dernière modification de la clé de ce compte ; un bon contrôle anti-altération (anti-forensique).
  • Ruche source — le fichier d'où vient la ligne, important quand vous chargez plusieurs ruches SYSTEM.

Étape 6 — Corroborer

BAM vous donne qui, quel chemin et quand (en dernier). Pas de hash, pas de compteur, pas de ligne de commande, pas de parent. Pour chaque ligne qui compte :

  • Prefetch — nombre d'exécutions, jusqu'à huit heures d'exécution, fichiers chargés (Prefetch Parser).
  • Amcache — SHA-1 et métadonnées du fichier (Amcache Parser).
  • Journaux d'événements — 4688 création de processus (si l'audit est activé), Sysmon événement 1, ouvertures de session 4624/4648, installations de service 7045 (EVTX Parser).
  • ShimCache — présence du chemin sur le disque (ShimCache Parser).

La matrice de comparaison résume quel artefact répond à quelle question.

Étape 7 — Exporter

CSV et JSON exportent les lignes actuellement affichées : appliquez vos filtres d'abord (ou retirez-les pour un export complet). Les fichiers portent le nom de la machine (FIN-WKS-07_bamdam.csv).

  • Colonnes CSV : LastExecutionUtc, Program, Path, User, SID, Service, ControlSet, ActiveControlSet, LegacyLayout, Volume, Flags, SidKeyLastWriteUtc, FileTime, DataHex, SourceFile. Les cellules commençant par =, +, - ou @ sont préfixées pour qu'un chemin malveillant ne puisse pas s'exécuter comme formule de tableur.
  • Le JSON ajoute des métadonnées par source : nom de la ruche, indicateur dirty, version du parseur, machine, fuseau horaire, control sets et avertissements.

Intégrez l'un ou l'autre dans votre outil de timeline (par exemple Plaso ou une super-timeline en tableur), à côté des artefacts de corroboration.

Erreurs fréquentes

  • Analyser SYSTEM sans ses journaux et conclure à une absence.
  • Mélanger les lignes de ControlSet002 à la timeline actuelle.
  • Présenter la colonne en heure locale comme l'heure locale de la machine étudiée.
  • Prendre un signalement pour un constat, ou l'absence de signalement pour un feu vert.
  • Oublier que BAM rate les exécutions depuis supports amovibles, partages réseau et beaucoup de lancements en ligne de commande.

Pour un cas complet, lisez l'enquête fictive sur un mouvement latéral avec BAM.

Articles liés