Skip to content

BAM/DAM en forensique : le guide complet de BAM Windows

Ce que BAM enregistre sous Windows, où BAM et DAM se trouvent dans la ruche SYSTEM, ce qu'ils prouvent, ce qu'ils ratent et comment les analyser.

Publié le 8 min de lecture

TL;DR. BAM (Background Activity Moderator) et son cousin DAM (Desktop Activity Moderator) sont des pilotes de gestion de l'énergie de Windows qui, au passage, tiennent dans la ruche SYSTEM une liste d'exécutables horodatés par utilisateur. Pour l'enquêteur, cela veut dire une chose : quel compte a lancé quel programme, et quand il l'a fait pour la dernière fois, sur Windows 10 1709 et suivants. Les entrées vivent peu (environ une semaine), ignorent les supports amovibles et les partages réseau, et ne contiennent ni compteur ni hash. BAM est un pointeur précis et attribué à un utilisateur ; il reste à corroborer.

BAM figure désormais sur toutes les check-lists de « preuves d'exécution », y compris le poster SANS Windows Forensic Analysis. L'artefact est petit, rapide à analyser et — contrairement à Prefetch ou à la ShimCache — il dit qui. Ce guide rassemble ce que l'on sait réellement de BAM, sources à l'appui, et renvoie vers les articles détaillés de la série.

Ce que sont BAM et DAM

Le Background Activity Moderator est un pilote noyau (bam.sys) que Windows utilise pour brider les applications qui tournent en arrière-plan. Il est apparu avec Windows 10 version 1709 (Fall Creators Update), comme l'ont documenté les premiers chercheurs (padawan-4n6, 2018) et l'artefact Velociraptor Windows.Forensics.Bam.

Le Desktop Activity Moderator est plus ancien. Microsoft le décrit comme un pilote en mode noyau qui suspend ou bride les processus de bureau quand l'appareil passe en veille connectée, et précise qu'il n'existe pas sur les éditions serveur (Microsoft Learn). Sous Windows 10 et 11, il tient des enregistrements par utilisateur au même format que BAM, mais en général uniquement sur du matériel compatible Modern Standby. L'article consacré à DAM détaille les différences.

Aucun des deux n'a été conçu pour la forensique. Les données existent pour que le modérateur se souvienne de ce qu'il a vu pour chaque utilisateur ; les horodatages sont un effet de bord que nous avons la chance de pouvoir lire.

Où sont stockées les données

Les deux services enregistrent leur état dans la ruche SYSTEM (C:\Windows\System32\config\SYSTEM), avec une sous-clé par SID utilisateur :

Version de WindowsClé
Windows 10 1809 et suivants, Windows 11ControlSet00X\Services\bam\State\UserSettings\<SID>
Windows 10 1709 – 1803ControlSet00X\Services\bam\UserSettings\<SID>
DAM (appareils Modern Standby)ControlSet00X\Services\dam\State\UserSettings\<SID>

Le passage de bam\UserSettings à bam\State\UserSettings est documenté dans les travaux de kacos2000 sur BAM : à partir de 1809, l'ancienne clé n'est plus mise à jour mais peut encore contenir des entrées obsolètes. Hors ligne, CurrentControlSet n'existe pas : lisez Select\Current pour savoir quel control set était actif. Le détail, les commandes d'acquisition et le piège des journaux de transactions sont dans où se trouve la clé de registre BAM et comment la collecter.

Ce que contient une entrée BAM

Sous chaque clé SID :

  • Nom de la valeur — l'exécutable, écrit sous forme de chemin de périphérique NT comme \Device\HarddiskVolume3\Windows\System32\cmd.exe ou, pour les applications empaquetées (Store/MSIX), un nom de famille de package comme Microsoft.WindowsCalculator_8wekyb3d8bbwe.
  • Données de la valeur — un REG_BINARY dont les 8 premiers octets sont un FILETIME en UTC. Sur les builds étudiés par Maxim Suhanov, les données font 24 octets (BAM internals).
  • Deux valeurs de gestion, Version et SequenceNumber, qui ne sont pas des programmes.

La vue octet par octet, avec un exemple décodé, se trouve dans l'article sur le format des valeurs BAM.

Ce que signifie l'horodatage

La rétro-ingénierie de bam.sys par Suhanov montre que le FILETIME est mis à jour à la création du processus et à sa terminaison (source). Pour un outil qui ne vit que quelques secondes, les deux instants se confondent. Pour un processus resté ouvert des heures, la valeur lue peut être plus proche de sa fin. La plupart des outils, dont le nôtre, intitulent la colonne « dernière exécution » ; lisez-la comme « dernière activité enregistrée par BAM pour ce chemin et cet utilisateur ».

Pourquoi les enquêteurs s'y intéressent

QuestionRéponse de BAM
Qui l'a lancé ?La clé SID sous laquelle se trouve la valeur. Résolvez-la avec la ProfileList de la ruche SOFTWARE.
Qu'est-ce qui a tourné ?Le chemin complet, volume compris, ou le nom de l'application empaquetée.
Quand ?La dernière activité enregistrée, à 100 ns près, en UTC.
Est-ce que ça a tourné récemment sur cette machine ?Les entrées de plus d'une semaine environ sont purgées au démarrage : la présence signifie récent.

C'est cette attribution à un utilisateur qui fait la différence. Prefetch, ShimCache et Amcache sont globaux au système ; BAM relie un binaire à un compte. Quand un compte de service affiche soudain PsExec64.exe dans son dossier Téléchargements, vous savez quels identifiants réinitialiser. La comparaison avec Prefetch, ShimCache et Amcache et la comparaison avec UserAssist montrent où chaque artefact est le plus fort.

BAM ne se limite pas non plus à ce qu'un utilisateur a lancé d'un double-clic dans l'Explorateur, ce que suit UserAssist. Des clés peuvent aussi exister pour des comptes de service et des comptes bien connus — S-1-5-18 (LocalSystem) par exemple, que notre parseur étiquette SYSTEM. L'article sur l'attribution par SID explique comment lire ces comptes.

Ce que BAM ne dit pas

Les limites comptent autant que les données, et l'article sur les limites et l'anti-forensique les détaille une à une. En bref, d'après l'analyse de Suhanov :

  • Un seul horodatage. Pas de première exécution, pas de compteur, pas de durée.
  • Rétention courte. Les entrées de plus de sept jours sont supprimées au démarrage.
  • Les exécutables supprimés disparaissent. Une entrée peut être retirée au démarrage quand son exécutable n'existe plus au chemin enregistré.
  • Exclusions. Les exécutables situés sur un support amovible ou un partage réseau n'ont pas d'entrée ; des programmes console lancés depuis une session en ligne de commande ont aussi été observés sans entrée.
  • Ni hash, ni ligne de commande, ni processus parent. L'identité et le contexte viennent d'Amcache, des journaux d'événements ou de l'EDR.
  • Des numéros de volume, pas des lettres de lecteur. HarddiskVolume3 doit être rattaché à C: grâce à d'autres artefacts.

Une méthode en cinq minutes

  1. Collecter SYSTEM, SYSTEM.LOG1, SYSTEM.LOG2 et SOFTWARE avec un outil de copie brute (KAPE, Velociraptor, FTK Imager). Si la ruche est « dirty », rejouez les journaux avec rla.exe d'Eric Zimmerman (outils EZ).
  2. Analyser — déposez les fichiers dans le BAM/DAM Parser. Il lit tous les control sets, les deux formats et DAM, nomme les SID grâce à la ProfileList, et tourne entièrement dans votre navigateur.
  3. Cibler — laissez « Control set actif uniquement » coché, filtrez sur le compte qui vous intéresse, triez par dernière exécution.
  4. Trier — voyez les signalements (dossier modifiable par l'utilisateur, double extension, binaire système hors de son dossier, outil à double usage) comme des pistes, pas des verdicts.
  5. Corroborer et exporter — confirmez les lignes clés avec Prefetch, Amcache et les journaux d'événements, puis exportez en CSV ou JSON vers votre timeline.

La version pas à pas, avec la logique de chaque filtre, se trouve dans comment analyser BAM et DAM. Un cas fictif complet, construit sur les données d'exemple du site, est dans l'enquête sur un mouvement latéral.

Les versions en un coup d'œil

VersionBAMDAM
Windows 7 / 8.1 / 10 avant 1709Pas de clé BAMPilote DAM présent sur les appareils à veille connectée (Windows 8+), aucun enregistrement UserSettings documenté côté forensique
Windows 10 1709 – 1803bam\UserSettingsAppareils Modern Standby uniquement
Windows 10 1809+ / Windows 11bam\State\UserSettingsAppareils Modern Standby uniquement
Windows ServerVérifiez sur l'image — voir BAM selon les versions de WindowsAbsent des éditions serveur d'après Microsoft

Questions fréquentes

Qu'est-ce que BAM en forensique Windows ?

BAM (Background Activity Moderator) est un service noyau de Windows 10 1709+ dont les clés de registre par utilisateur, dans la ruche SYSTEM, listent des exécutables avec un horodatage FILETIME. Les enquêteurs s'en servent comme preuve d'exécution récente, attribuée à un utilisateur.

BAM prouve-t-il qu'un programme a été exécuté ?

Une entrée BAM est un indice fort que l'exécutable a tourné sous ce SID, car bam.sys l'écrit à la création et à la fin du processus. Elle ne donne ni nombre d'exécutions, ni ligne de commande, ni hash : corroborez avec Prefetch, Amcache ou les journaux d'événements.

Combien de temps les entrées BAM sont-elles conservées ?

D'après la rétro-ingénierie de Maxim Suhanov, les entrées de plus de sept jours sont supprimées au démarrage, et celles dont l'exécutable n'existe plus peuvent l'être aussi. Acquérez la ruche SYSTEM au plus tôt.

Sources et lectures complémentaires

Articles liés