Construire une chronologie d'exécution de programmes à partir d'une ruche SYSTEM

4 min de lecture

TL;DR. Construisez une chronologie fusionnée de ShimCache + AmCache + Prefetch + BAM/DAM + Security/Sysmon. Utilisez le ShimCache pour définir le cast (chemins) puis enrichissez chaque ligne avec les horodatages des autres sources. Étiquetez chaque horodatage avec sa sémantique d'origine — ne fusionnez jamais « mtime du fichier » et « démarrage de processus » en une seule colonne.

Une chronologie d'exécution de programmes est l'artefact unique le plus utile que produit un enquêteur IR Windows. Bien faite, elle raconte une histoire chronologique à travers plusieurs sources. Mal faite, elle sur-affirme et se fait contester. Ce billet montre comment en construire une avec le ShimCache comme épine dorsale.

Pourquoi le ShimCache est une bonne épine dorsale

Le ShimCache est rarement la source la plus précise sur un champ donné, mais il a des avantages uniques en tant qu'ancre temporelle :

  • Il porte explicitement le chemin du fichier (certains artefacts n'ont que des hashs ou des chemins partiels).
  • Il capture les exécutables que Windows a simplement examinés — il inclut donc des binaires qui ont tourné brièvement et ont été supprimés, et que Prefetch et BAM peuvent manquer.
  • Il survit à de nombreuses tentatives anti-forensiques qui effacent d'autres artefacts (avec des mises en garde importantes).

Utilisez le ShimCache pour définir le cast de votre chronologie, puis enrichissez chaque ligne avec des artefacts corroborants pour assigner des heures fiables.

Les sources à fusionner

Une chronologie complète d'exécution tire d'au moins ces cinq sources :

SourceCe qu'elle ajoute à la ligne
ShimCacheChemin + mtime du fichier
AmCacheSHA-1, taille, éditeur, date d'install, date de 1re exécution
PrefetchHeures de démarrage de processus (jusqu'aux 8 dernières), fichiers chargés
BAM/DAMHorodatage « dernière exécution » par utilisateur sur Win10/11
Security/SysmonÉvénements de création de processus avec ligne de commande, parent, utilisateur

Pour le détail de chacun, voir la référence des artefacts d'exécution.

Un workflow reproductible

  1. Collecter les artefacts. Ruche SYSTEM (avec journaux de transaction), Amcache.hve, C:\Windows\Prefetch\*.pf, journal Security exporté, journal Sysmon s'il est dispo.
  2. Parser chacun vers une table normalisée. Utilisez la suite Eric Zimmerman (AppCompatCacheParser, AmcacheParser, PECmd) ou le Shimcache Parser pour la partie ShimCache dans votre navigateur.
  3. Fusionner sur (chemin, SHA-1 optionnel). La clé de jointure est le chemin, avec le SHA-1 en signal secondaire quand AmCache le fournit. Attention : le ShimCache peut avoir le chemin légèrement différent (casse, normalisation).
  4. Étiqueter chaque horodatage par sa sémantique source. Ne fusionnez pas « date d'install AmCache » et « heure d'exécution Prefetch » dans une seule colonne — elles répondent à des questions différentes. Gardez-les adjacentes mais distinctes.
  5. Rendre vers un outil qui gère l'attribution par ligne. Timeline Explorer (TLE) d'Eric Zimmerman et Plaso / log2timeline font cela bien tous les deux. Le CSV dans un tableur fonctionne pour les cas plus petits.

Ce qui ressemble à du « bon »

Une ligne défendable dans une chronologie finale ressemble à :

2026-04-12 09:14:33 UTC  C:\Users\alice\AppData\Local\Temp\setup.exe
  ShimCache mtime : 2026-04-12 09:14:30 UTC
  AmCache         : SHA-1 a3b8c9…, signataire « Acme Updates », install 2026-04-12 09:14:33
  Prefetch        : dernière exécution 2026-04-12 09:15:01 UTC (1 exécution)
  Security 4688   : 2026-04-12 09:15:01 UTC, PID 4521, PID parent 1234 (svchost.exe)

Chaque horodatage est sourcé et la ligne tient face à la contestation. L'inverse — « le ShimCache montre que setup.exe a tourné à 09:14:33 » — confond le mtime du fichier avec l'heure d'exécution et c'est le type d'affirmation qui fait rejeter un rapport. Voir preuve d'exécution.

Quand les sources se contredisent

Les conflits sont des données utiles :

  • mtime ShimCache ≠ première exécution Prefetch. Normal — ils mesurent des choses différentes. Notez les deux, n'en choisissez pas un.
  • AmCache dit exécuté, ShimCache est vide pour ce fichier. Raisons possibles : effacement anti-forensique (motifs de détection), entrée évincée du plafond de 1 024, binaire qui a tourné après le dernier arrêt propre.
  • Prefetch absent. Les SKU serveur et hôtes SSD-lourds ont souvent Prefetch désactivé — retombez sur AmCache + BAM.

S'arrêter au bon endroit

Une chronologie n'a pas besoin d'être complète pour être utile. Une fenêtre ciblée — « qu'est-ce qui a tourné sur l'hôte X entre 14h00 et 18h00 le 2026-04-11 ? » — construite rigoureusement bat une chronologie tentaculaire avec une attribution faible. Le workflow de chasse aux malwares vous aide à choisir cette fenêtre.

Pour aller plus loin

Articles connexes