Comment analyser les fichiers Prefetch Windows
Vous avez un répertoire C:\Windows\Prefetch\ extrait d'une image de triage et une question à résoudre sur l'exécution de programmes. L'ordre ci-dessous est celui que je suis réellement, à peu près dans l'ordre où je le fais. Sauter des étapes est à vos risques ; l'étape où les analystes se brûlent est presque toujours la 3.
1. Triagez le dossier
Parsez l'ensemble du répertoire d'un coup. PECmd sur un dossier, pyscca en boucle ou le parser de ce site : choisissez-en un qui gère correctement les fichiers MAM-compressés de Win10/11. Les anciens outils Python sautent MAM en silence et vous donnent une image partielle.
Avant de cliquer où que ce soit, répondez à trois questions à partir du tableau de synthèse :
- Combien de fichiers ? Une station Windows 10/11 avec un usage normal se situe dans les centaines. Douze fichiers sur un endpoint de six mois signifie soit une SKU serveur, soit un wipe, soit
EnablePrefetcher = 0. Zéro fichier avec le répertoire présent signifie généralement que SysMain a été arrêté. - Quelles versions ? Majoritairement v30 sous Win10, majoritairement v31 sous Win11. Une entrée v17 éparse sur un hôte moderne est anormale ; v17 ne se livre que sur XP/Vista/7, donc en trouver une dans une image Win11 signifie que le fichier a été importé d'ailleurs.
- Des noms manifestement inhabituels ? Triez par nom d'exécutable et survolez. Variantes PowerShell avec suffixes aléatoires, binaires à nom d'un seul caractère, tout ce qui semble packé, tout ce qui vit dans
\AppData\Local\Temp\ou\Users\Public\.
2. Plongez dans les lignes signalées
Pour chaque candidat, trois questions :
- Quand a-t-il tourné ? En v26+ vous obtenez jusqu'à huit valeurs FILETIME en UTC, plus le « last run ». Cartographiez-les sur la fenêtre d'incident. Si votre fenêtre est « entre mardi 18h00 et mercredi 03h00 » et que trois des huit emplacements de dernière exécution tombent à l'intérieur, c'est votre nombre d'exécutions sur la période d'intérêt.
- D'où a-t-il tourné ? La section d'information de volume contient le chemin de périphérique NTFS et le numéro de série. Un numéro de série qui ne correspond pas au volume principal du système pointe vers un média amovible ou une image montée. Recoupez le numéro de série avec les enregistrements de volume de la MFT et les seriaux de lecteur des LNK, qui contiennent souvent le même numéro.
- Qu'a-t-il touché ? La liste de métriques de fichiers est constituée de chaque chemin que le binaire a lu durant ses dix premières secondes d'exécution surveillée, typiquement quelques centaines d'entrées pour une application réelle. Des références à des répertoires de profil utilisateur, à des partages réseau ou à des DLL système renommées sont des pistes. Le détournement de l'ordre de recherche DLL apparaît ici sous la forme d'un binaire de confiance qui charge quelque chose depuis
\AppData\Local\Temp\au lieu de\System32\.
3. Recoupez toujours
Prefetch seul vous dit qu'un processus a démarré. Il ne vous dit pas qui l'a démarré, avec quels arguments, ni si le binaire actuellement sur disque est celui qui a tourné. Cette étape est ce qui transforme un hit prefetch en revendication d'exécution défendable.
- AmCache pour SHA-1, taille de fichier, éditeur, statut de signature. Une entrée Prefetch sans enregistrement AmCache est inhabituelle sous Win10+. Une entrée AmCache sans Prefetch est commune (binaire présent, jamais exécuté).
- Shimcache / AppCompatCache corrobore le chemin. Que Prefetch et Shimcache placent tous deux le binaire dans
C:\Users\Public\evil.exeest plus difficile à contester que l'un sans l'autre. - Security 4688 ou Sysmon EID 1 — si l'audit de processus était activé, vous y obtenez le processus parent et la ligne de commande. Prefetch n'enregistre jamais les arguments.
- Le journal USN vous dit quand le binaire est arrivé sur le disque ; combinez-le avec le plus ancien FILETIME prefetch pour borner la durée de séjour.
- RecentFileCache sur les systèmes plus anciens pour la même couverture qu'apporte AmCache sur les modernes.
4. Cherchez des manipulations
Un .pf n'est qu'un fichier. Il peut être supprimé, planté, ou réécrit. Trois vérifications peu coûteuses :
- Recalculez le hash du chemin et comparez au suffixe du nom de fichier. L'algorithme Win7+ est court et le parser expose le chemin qu'il a lu ; une discordance signifie que le fichier n'est pas né ici.
- Un compteur d'exécutions à 1 avec un horodatage « last run » correspondant à la fenêtre de compromission suspectée sur un hôte en ligne depuis des semaines vaut un second coup d'œil. Le
.pflégitime a peut-être été supprimé, un nouveau écrit lorsque le binaire a tourné après le ménage. - Huit FILETIMEs de dernière exécution agglutinés à la même seconde, ou alignés sur des secondes pleines, sent la manipulation par lots. Les exécutions réelles se répartissent sur des offsets sous-seconde.
L'article dédié à la manipulation détaille davantage ; ceci est la passe rapide.
5. Exportez et documentez
Exportez la sortie structurée (JSON ou CSV) et stockez-la à côté des notes de dossier. Vous voulez un artefact stable au niveau horodatage, facile à grepper, facile à differ contre une collecte ultérieure du même hôte, et facile à intégrer dans un outil de chronologie. Le CSV de PECmd s'insère directement dans la sortie chronologique de KAPE ; le JSON du parser de ce site convient à jq et à un notebook.
Pour davantage de contexte sur chaque champ, voir Comprendre Windows Prefetch et Changements de Prefetch v30 et v31.