Skip to content

Clé de registre BAM : emplacement et collecte

Chemins exacts des clés BAM et DAM selon la version de Windows, pourquoi CurrentControlSet n'existe pas hors ligne, et comment acquérir SYSTEM et ses journaux.

Publié le 6 min de lecture

TL;DR. BAM se trouve dans la ruche SYSTEM, sous ControlSet00X\Services\bam\State\UserSettings\<SID> (Windows 10 1809+ et 11) ou ControlSet00X\Services\bam\UserSettings\<SID> (1709–1803). DAM suit le même modèle sous Services\dam. Hors ligne, CurrentControlSet n'existe pas : lisez Select\Current. Collectez SYSTEM avec SYSTEM.LOG1 et SYSTEM.LOG2, et prenez SOFTWARE pour transformer les SID en noms.

Sur une machine allumée, la clé se trouve facilement dans regedit. Les erreurs arrivent hors ligne : lire le mauvais control set, analyser une ruche copiée sans ses journaux, ou copier un fichier verrouillé qui revient rempli de zéros. Cet article couvre les chemins et les options d'acquisition. Pour ce qu'il y a dans chaque valeur, voyez le format des valeurs BAM ; pour la vue d'ensemble, le guide complet BAM/DAM.

Les chemins dans le registre

Sur un système en fonctionnement, via la vue HKEY_LOCAL_MACHINE :

HKLM\SYSTEM\CurrentControlSet\Services\bam\State\UserSettings\<SID>    (Windows 10 1809+, Windows 11)
HKLM\SYSTEM\CurrentControlSet\Services\bam\UserSettings\<SID>          (Windows 10 1709–1803)
HKLM\SYSTEM\CurrentControlSet\Services\dam\State\UserSettings\<SID>    (DAM, appareils Modern Standby)
Arborescence de la ruche SYSTEM : Select\Current pointe vers ControlSet001, dont la clé Services\bam\State\UserSettings contient une sous-clé par SID avec Version, SequenceNumber et une valeur REG_BINARY par exécutable commençant par un FILETIME de 8 octets

Le passage à la sous-clé State avec la 1809 est documenté dans les notes de kacos2000 sur BAM : l'ancienne clé bam\UserSettings n'est plus mise à jour, mais « d'anciennes entrées peuvent encore s'y trouver ». Une machine mise à niveau depuis la 1803 peut donc avoir les deux clés, l'ancienne faisant office de petite capsule temporelle d'avant la mise à niveau. L'article sur les versions de Windows traite ce cas.

Chaque sous-clé <SID> contient une valeur par exécutable, plus les valeurs de gestion Version et SequenceNumber. Le SID est le compte auquel le modérateur a attribué le processus ; voir l'attribution BAM à un utilisateur.

Le fichier de ruche sur le disque

HKLM\SYSTEM correspond au fichier C:\Windows\System32\config\SYSTEM, comme l'indique la référence Microsoft sur les ruches. À côté se trouvent les journaux de transactions SYSTEM.LOG1 et SYSTEM.LOG2 (fichiers du registre).

Ne comptez pas sur C:\Windows\System32\config\RegBack pour une copie plus ancienne : depuis Windows 10 1803, Windows n'y sauvegarde plus les ruches par défaut (Microsoft Learn). Les clichés instantanés de volume (VSS) sont une meilleure source de ruches SYSTEM historiques.

CurrentControlSet n'existe pas hors ligne

CurrentControlSet est un lien construit par le noyau au démarrage. Dans un fichier de ruche, vous n'avez que ControlSet001, souvent ControlSet002, et une clé Select :

Valeur sous SelectSignification
CurrentLe control set en service (en général 1)
LastKnownGoodLe jeu conservé comme « dernière bonne configuration connue »
DefaultLe jeu à utiliser au prochain démarrage

Un parseur hors ligne correct lit Select\Current et traite ce jeu comme « courant ». L'autre est en général une copie plus ancienne : dans la ruche d'exemple fictive de ce site, ControlSet002 contient un instantané des entrées BAM de l'utilisatrice avant l'intrusion — utile pour comparer, trompeur si on le mélange à la timeline actuelle. Le BAM/DAM Parser lit tous les ControlSet00X, marque les lignes du jeu actif et n'affiche que celles-ci par défaut (« Control set actif uniquement »).

Acquérir la ruche SYSTEM

La ruche est verrouillée tant que Windows tourne ; l'Explorateur ou copy échouent. Les options, de la plus légère à la plus lourde :

MéthodeCommande / cibleJournaux ?Remarques
reg savereg save HKLM\SYSTEM C:\triage\SYSTEM.hivNon (ruche consolidée)Intégré ; droits admin requis (Microsoft Learn). Modifie légèrement la machine.
KAPECible RegistryHivesSystem, ou la cible composée !SANS_TriageOuiCopie NTFS brute ; définitions dans KapeFiles
VelociraptorCollecte Windows.Triage.Targets avec la cible RegistryHivesSystem (anciennement Windows.KapeFiles.Targets sur les anciennes versions), ou Windows.Forensics.Bam pour une analyse à chaudOui (collecte de fichiers)Documentation de l'artefact Bam
FTK ImagerAdd evidence → disque physique/logique → exporter config\SYSTEM*OuiOu « Obtain protected files »
Image disqueMonter l'image, copier Windows\System32\config\SYSTEM*OuiIdéal pour la chaîne de traçabilité ; voir Disk Image Parser
Cliché instantané (VSS)vssadmin list shadows, puis copie depuis le périphérique du clichéOuiRuches SYSTEM plus anciennes = entrées BAM plus anciennes (vssadmin)

Quelle que soit la méthode, prenez aussi C:\Windows\System32\config\SOFTWARE (et ses journaux) : sa clé ProfileList fait le lien entre SID et dossiers de profil. La cible KAPE RegistryHivesSystem l'inclut déjà.

Le piège du fichier rempli de zéros

Une ruche copiée à chaud par une simple copie de fichier (ou par certains agents de sauvegarde) peut revenir avec la bonne taille mais remplie de zéros. Notre parseur le détecte et explique pourquoi il l'ignore (« rempli de zéros — la ruche était sans doute verrouillée lors de la copie »). Refaites la collecte avec un outil de copie brute.

Ruches « dirty » et journaux de transactions

Windows écrit d'abord les modifications du registre dans SYSTEM.LOG1/SYSTEM.LOG2, puis les fusionne plus tard dans le fichier principal. Une ruche dont les deux numéros de séquence de l'en-tête diffèrent est dirty : elle a des écritures en attente qui n'existent que dans les journaux (notes de format libregf, spécification msuhanov/regf). Pour BAM, mis à jour en permanence, ces écritures en attente sont souvent les exécutions les plus récentes — précisément celles qui vous intéressent.

Que faire :

  1. Collectez toujours SYSTEM.LOG1 et SYSTEM.LOG2 avec la ruche.
  2. Vérifiez si la ruche est dirty. Le BAM/DAM Parser affiche un bandeau d'avertissement quand les numéros de séquence diffèrent.
  3. Si c'est le cas, rejouez les journaux avec rla.exe d'Eric Zimmerman ou laissez Registry Explorer le faire, puis analysez la ruche nettoyée.

Notre outil ne rejoue pas encore les journaux ; il vous dit quand c'est nécessaire. Un export reg save est déjà consolidé : il ne sera pas dirty.

La lire sur un système allumé

Pour un coup d'œil rapide pendant le triage, sans rien collecter :

Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Services\bam\State\UserSettings' |
  ForEach-Object { $_.PSChildName }

Cela liste les SID. Les valeurs sont des FILETIME binaires, illisibles en l'état : exportez la ruche et analysez-la, ou lancez l'artefact Velociraptor Windows.Forensics.Bam, qui les décode et résout les noms d'utilisateur. N'oubliez pas que les programmes que vous lancez sur la machine peuvent eux-mêmes apparaître dans BAM sous votre compte — notez-les dans votre journal d'investigation.

Check-list

  • Chemins : bam\State\UserSettings (1809+), bam\UserSettings (1709–1803), dam\State\UserSettings (DAM).
  • Hors ligne : résolvez Select\Current ; ne mélangez pas les control sets.
  • Collectez SYSTEM + SYSTEM.LOG1 + SYSTEM.LOG2 + SOFTWARE.
  • Vérifiez si la ruche est dirty ; rejouez avant d'analyser.
  • Cherchez dans les clichés instantanés des états BAM plus anciens.

Déposez ensuite le tout dans le BAM/DAM Parser, ou suivez comment analyser BAM et DAM. Les autres artefacts de la même ruche, comme la ShimCache, sont traités sur ShimCache Parser et Registry Parser.

Questions fréquentes

Où se trouve la clé de registre BAM ?

Dans la ruche SYSTEM : ControlSet00X\Services\bam\State\UserSettings\<SID> sous Windows 10 1809+ et Windows 11, et ControlSet00X\Services\bam\UserSettings\<SID> sous Windows 10 1709 à 1803.

Puis-je copier la ruche SYSTEM avec l'Explorateur sur un système allumé ?

Non. La ruche est verrouillée par le noyau tant que Windows tourne. Utilisez reg save, un outil de copie NTFS brute comme KAPE ou FTK Imager, Velociraptor ou un cliché instantané de volume (VSS).

Articles liés