RecentFileCache vs AmCache : lequel est sur votre hôte, et pourquoi
Le BCF et l'AmCache résolvent des problèmes qui se chevauchent sur des versions différentes de Windows. Savoir lequel vous avez, et pourquoi, décide de ce que vous pouvez affirmer.
Si vous tirez des artefacts d'un hôte inconnu et que vous trouvez à la fois RecentFileCache.bcf et Amcache.hve dans C:\Windows\AppCompat\Programs\, arrêtez-vous et vérifiez le build Windows. Vous regardez quelque chose d'inhabituel.
Sur un hôte Win7 SP1 normal : BCF seul. Sur un hôte Win8 ou plus récent normal : AmCache seul. Les deux : un hôte Win7 qui a été mis à jour in-place en Win10 et a hérité de l'ancien fichier. Ça arrive. Rarement.
Les deux artefacts résolvent des problèmes qui se chevauchent mais ce ne sont pas la même chose, et les frontières comptent quand vous rédigez des conclusions.
La frontière de version
RecentFileCache.bcf était le fichier de travail pour l'appraiser d'Application Experience sur Windows 7 SP1 et Windows Server 2008 R2. À partir de Windows 8, Microsoft a remplacé la pipeline d'appraiser et le BCF a disparu. Le remplaçant, Amcache.hve, est un hive de registre façon ESE avec des métadonnées plus riches par entrée. Les deux formats n'étaient pas censés coexister.
La frontière de version est nette. Windows 8 RTM n'écrit pas de BCF. Windows 7 SP1 n'écrit pas d'AmCache. Il n'y a pas de milieu en fonctionnement normal.
L'exception, et elle est réelle : une mise à jour in-place de Windows 7 vers Windows 10 peut laisser l'ancien RecentFileCache.bcf sur disque parce que l'installateur ne le supprime pas. L'appraiser Win10 n'y touchera pas. Le fichier reste juste là. J'ai personnellement vu cela deux fois sur des endpoints d'entreprise à longue durée de vie dont les propriétaires n'ont fait des remplacements propres qu'après que le matériel soit mort. Les deux fois le BCF contenait des entrées datant d'années avant la mise à jour. Utile, dans le sens où ça épinglait l'exécution à une année spécifique. Pas utile pour les investigations actuelles.
Différences de cycle de vie
C'est là que les deux divergent le plus.
Le BCF est un write-ahead log. La tâche Application Experience traite le fichier environ quotidiennement, puis le tronque. Un binaire dans le BCF a tourné dans environ les dernières 24 heures. Les exécutions plus anciennes sont parties.
L'AmCache est plus proche d'une base de données à longue durée de vie. Les clés Root\InventoryApplicationFile persistent à travers les passes d'évaluation. Des entrées peuvent survivre pour toute la durée de vie de l'installation. La cadence des écritures est aussi différente : les mises à jour AmCache se font pendant la passe d'évaluation, mais les anciennes entrées ne sont pas vidées au même rythme. Vous pouvez trouver des entrées AmCache qui datent de plusieurs mois.
Pour les investigations, cela signifie :
- BCF répond à "est-ce que ça a tourné dans le dernier jour environ ?"
- AmCache répond à "ceci a-t-il été vu sur cette machine à un moment de l'histoire récente ?"
Deux questions forensiques différentes. Deux formes de preuves différentes.
Ce que chacun enregistre
Le BCF enregistre :
- Chemin NT complet de l'exécutable.
- Rien d'autre.
L'AmCache enregistre :
- Chemin complet.
- Hash SHA1 des 31 premiers mégaoctets du fichier (ou tout le fichier s'il est plus petit).
- Taille du fichier, horodatage de l'en-tête PE, date de link.
- Éditeur, nom du produit, version (depuis les ressources PE).
- Une approximation du temps d'installation.
- Des clés spécifiques aux pilotes sous
Root\InventoryDriverBinary. - Tout un tas d'autres champs moins consistamment peuplés, selon le build Windows.
Ce hash est le gros. Avec l'AmCache vous pouvez pivoter vers du threat intel. Avec le BCF vous ne pouvez pas. Vous devez acquérir le binaire depuis le disque ou le reconstruire depuis une autre source et le hasher vous-même.
En retour, le BCF vous donne quelque chose que l'AmCache ne donne pas : une affirmation plus stricte sur l'exécution. Le contenu du BCF est limité aux binaires que l'appraiser croit avoir été exécutés. L'AmCache a des colonnes qui suggèrent l'exécution (les horodatages de dernière modification de Root\InventoryApplicationFile, par exemple) mais l'AmCache lui-même est de forme plus inventaire que de forme exécution. Beaucoup de binaires dans l'AmCache n'ont jamais tourné sur l'hôte ; l'appraiser les a scannés. Le BCF, quand il existe, est plus proche d'un enregistrement propre d'exécution.
Si vous n'avez que l'AmCache, appuyez-vous sur Prefetch et EVTX 4688 / Sysmon 1 pour la confirmation d'exécution. L'AmCache seul ne prouve pas qu'un binaire a tourné. Le BCF seul le fait, dans une marge de fenêtre d'évaluation.
Quand vous verriez les deux
Le cas légitime que j'ai décrit ci-dessus : un hôte mis à jour de Win7 vers Win10 avec l'ancien BCF encore présent. Les entrées du BCF datent de la vie d'avant la mise à jour de la machine.
Le cas moins légitime : quelqu'un a déposé un RecentFileCache.bcf sur un hôte Win10 comme diversion. J'ai vu cela exactement une fois, dans un CTF, jamais dans un vrai incident. Notable parce que c'est une possibilité, pas parce que c'est commun. Vérifiez l'heure de création de l'entrée MFT du fichier contre la date d'installation du système. Un BCF créé la semaine dernière sur une boîte Win10 installée en 2022 est faux.
Le troisième cas, qui n'est pas "les deux en même temps" mais qui mérite d'être signalé : un hôte Win7 qui a été migré vers un domaine dont la politique désactive la tâche d'appraiser. Le BCF s'accumulera sans être vidé. Vous pouvez vous retrouver avec un BCF qui contient dix-huit mois d'exécutions parce que rien ne l'a fait tourner. Ce fichier est une mine d'or, et vous devriez l'attraper au premier contact.
Mapper une entrée BCF en pensée AmCache
Si vous êtes un analyste dont toute la carrière s'est passée sur Windows 10, le BCF peut sembler étranger. Deux traductions qui aident :
- Une entrée BCF équivaut à une ligne
InventoryApplicationFilequi a été ajoutée depuis la dernière passe d'évaluation, moins toutes les colonnes de métadonnées. - L'"horodatage de dernière exécution" que vous cherchez dans les parsers AmCache n'existe pas dans le BCF. Le plus proche est l'horodatage de dernière modification du fichier lui-même, qui vous dit quand l'appraiser y a écrit pour la dernière fois, pas quand une entrée individuelle a tourné.
Si vous vivez dans le monde AmCache et passez à une affaire Win7, la perte de métadonnées est la partie la plus difficile. Vous passez de "je connais le hash, l'éditeur, et environ quand ça a été installé" à "je connais le chemin". Le chemin est encore utile. Juste pas autant.
Arbre de décision pratique
Quand vous atterrissez sur un hôte et avez besoin de savoir quel artefact tirer :
- Vérifiez le build.
winver, ouSetup\InstallationType/CurrentVersiondu hive SYSTEM. - Si Win7 SP1 ou Server 2008 R2 : BCF. Attrapez-le avant la prochaine passe d'évaluation.
- Si Win8 ou plus récent : AmCache. Le BCF, s'il est présent, est historique et probablement non pertinent.
- Si les deux : probablement une mise à jour in-place. Traitez le BCF comme historique pré-mise-à-jour et l'AmCache comme actuel.
- Si vous êtes sur Server 2012 R2, attendez-vous à AmCache et un schéma antérieur particulier. Le parser AmCache gère les variations de schéma.
Appariez les deux artefacts avec les sources corroborantes avec lesquelles vous appariez toujours les preuves d'exécution : Prefetch, Shimcache, journal USN et MFT. Aucun n'est une preuve autonome.
Une note sur la parité d'outillage
La communauté forensique a eu des parsers de niveau production pour les deux formats depuis plus d'une décennie. Le BCF est vraiment facile à parser ; l'AmCache est plus difficile parce que le format ESE et la variance de schéma à travers les builds Windows ajoutent de la complexité. AmcacheParser d'Eric Zimmerman est la référence pour l'AmCache. Pour le BCF, plusieurs parsers open-source et le parser sur ce site produisent tous une sortie équivalente parce que le format ne laisse aucune place à l'interprétation.
Pour aller plus loin
- Yogesh Khatri, AmCache.hve in Windows 8: a goldmine for malware hunters. Le billet qui a introduit l'AmCache à la communauté.
- Willi Ballenthin, RecentFileCache.bcf. Pièce d'accompagnement pour le BCF.
- Blanche Lagny, Analyse de l'AmCache. Le deep-dive le plus exhaustif sur la sémantique de l'AmCache.
Si vous vous retrouvez à attraper le BCF sur un incident de 2026, l'hôte est plus vieux que l'analyste. Les deux peuvent arriver.