RecentFileCache vs Amcache vs Prefetch vs ShimCache
Quatre artefacts Windows d’evidence-of-execution côte à côte : ce que chacun stocke, ce qu’il ne stocke pas, et lequel ouvrir en premier.
"Evidence of execution" est un travail rempli par plusieurs artefacts Windows, pas un seul. Ils se chevauchent, se contredisent et disparaissent à des rythmes différents. Ce post met les quatre plus utiles — RecentFileCache, Amcache, Prefetch, ShimCache — sur la même table pour que vous arrêtiez de deviner lequel ouvrir en premier.
Vue d’ensemble
| Artefact | Emplacement | Windows | Granularité | Horodatages par entrée | Métadonnées riches | Survit au reboot |
|---|---|---|---|---|---|---|
| RecentFileCache | C:\Windows\AppCompat\Programs\RecentFileCache.bcf | 7 uniquement | Chemin seul | Non (mtime du fichier seul) | Aucune | Oui |
| Amcache | C:\Windows\AppCompat\Programs\Amcache.hve | 7→11 | Clé registre par entrée | Oui (LastWritten de clé, plus) | Chemin, SHA-1, PE, éditeur, date d’install | Oui |
| Prefetch | C:\Windows\Prefetch\*.pf | XP→11 | Par fichier exécutable | Oui (8 dernières exécutions) | Compteur, fichiers référencés, infos de volume | Oui (purge auto vers ~1024 entrées sur Win10+) |
| ShimCache | Hive SYSTEM : ControlSet\Control\Session Manager\AppCompatCache | XP→11 | Par exécutable, en mémoire jusqu’au shutdown | LastModified (fichier), pas exécution | Aucune | Uniquement à l’arrêt propre |
Ce à quoi chacun répond réellement
- RecentFileCache. "Quels exécutables ont croisé le scanner Application Experience depuis le dernier passage de
ProgramDataUpdater?" Peu coûteux à parser, pas de métadonnées, Win7 uniquement. - Amcache. "Quels programmes et fichiers ont été installés ou exécutés sur cette machine, avec hachages et infos d’éditeur, depuis l’installation de l’OS ?" Ce qui se rapproche le plus d’un journal système d’installation-et-exécution sur Windows moderne.
- Prefetch. "Qu’est-ce qui a effectivement été exécuté, quand, et combien de fois — pour les ~1024 derniers binaires ?" La preuve d’exécution la plus serrée disponible sans logging dédié.
- ShimCache. "Quels exécutables l’infrastructure de shim AppCompat a-t-elle vus ? Quand chacun a-t-il été modifié pour la dernière fois ?" Note : l’horodatage de ShimCache est le
LastModifieddu fichier, pas le moment d’exécution — c’est le champ le plus souvent mal lu dans les rapports DFIR.
Lequel ouvrir quand
Un court arbre de triage pour "le binaire X s’est-il exécuté" :
- Prefetch en premier. Si
*X*.pfexiste, vous avez un événement d’exécution avec horodatage(s) et compteur. Terminé. - Amcache. Si un SHA-1 dans
InventoryApplicationFilecorrespond à votre fichier, le fichier a au moins été vu par AppCompat — combiné à Prefetch, c’est une preuve d’exécution à forte confiance. - RecentFileCache (Win7). Si vous êtes sur Win7 et qu’Amcache est clairsemé,
.bcfpeut être le seul endroit où un chemin récent a atterri. À traiter comme "vu par AppCompat entre les deux derniers passages deProgramDataUpdater". - ShimCache. Preuve corroborante. Présence ≈ "l’infrastructure AppCompat a vu un fichier à ce chemin avec ce
LastModified". Ne lisez pas son horodatage comme un moment d’exécution.
Un scénario Win7 illustré
Imaginez un analyste sur un poste Win7 compromis. L’attaquant a déposé C:\Users\Public\update.exe, l’a lancé une fois, puis l’a supprimé. Le système a été éteint le lendemain matin.
Que reste-t-il ?
- Prefetch :
UPDATE.EXE-XXXXXXXX.pfprobablement présent, avec l’horodatage d’exécution intégré. - ShimCache : entrée présente avec le
LastModifiedpré-suppression du fichier — confirme que l’infrastructure AppCompat l’a observé, ne dit pas quand il a été exécuté. - Amcache : si
ProgramDataUpdaters’est déclenché entre l’exécution et l’extinction, une cléInventoryApplicationFileexiste avec le SHA-1, l’éditeur (ou son absence), et leLastWrittende la clé registre comme horodatage le plus proche de l’exécution. - RecentFileCache : chemin présent si
ProgramDataUpdaterne l’avait pas encore promu vers Amcache. Si la promotion a eu lieu, le chemin peut déjà avoir disparu de.bcftout en étant présent dans.hve.
La même exécution peut donc laisser des traces à 4 endroits, racontant des choses légèrement différentes. Aucune, isolée, n’est "une preuve d’exécution". Lus ensemble, ils triangulent avec confiance.
Outils dans cette flotte
Chaque artefact du tableau ci-dessus a un parseur frère dans cette collection — tous en WebAssembly côté client, aucun upload requis :
recentfilecache-parser— ce site.amcache-parserprefetch-parsershim-cache-parser
Ils partagent un style de code, une UI et le même modèle de confidentialité : les octets ne quittent jamais votre navigateur.