Aller au contenu

Exécution

Fichiers Prefetch (.pf)

Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.

Emplacement
C:\Windows\Prefetch\<EXE>-<HASH>.pf
Prouve
Un exécutable précis a été lancé, combien de fois et quand (jusqu'à 8 dates)
Horodatages
8 dernières exécutions (1 avant Windows 8) en FILETIME, UTC, environ 10 s après le lancement ; dates $SI du fichier .pf, UTC
Rétention
Plafond de 128 fichiers (XP à 7) ou 1 024 (8+), les plus anciens évincés ; seules les 8 dernières exécutions conservées ; désactivé par défaut sur Server
Accès
Administrateur ; fichiers non verrouillés, une copie simple suffit (robocopy /COPY:DAT conserve les dates)
Preuve de
Exécution
Type
Fichier / système de fichiers
Windows
XPVista / 78 / 8.11011
Cible KAPE
Prefetch
Velociraptor
Windows.Triage.Targets:Prefetch

Présentation

Le Prefetch est une fonction de performance gérée par le service SysMain (anciennement Superfetch). Au lancement d'une application, Windows observe les fichiers qu'elle charge pendant ses dix premières secondes environ et enregistre cette liste, avec des métadonnées d'exécution, dans un fichier .pf afin d'accélérer le lancement suivant. Pour l'enquêteur, chaque fichier .pf est l'une des preuves d'exécution les plus solides sur un poste de travail.

Emplacement

Version de WindowsCheminVersion du format
XP / Server 2003C:\Windows\Prefetch\*.pf17
Vista / 7C:\Windows\Prefetch\*.pf23
8 / 8.1C:\Windows\Prefetch\*.pf26
10 / 11C:\Windows\Prefetch\*.pf (compressé, signature MAM)30 (certaines versions de Windows 11 : 31)

Nom de fichier : <NOM DE L'EXÉCUTABLE>-<hash de 8 chiffres hexadécimaux>.pf, par exemple CMD.EXE-0BD30981.pf. Le hash est calculé à partir du chemin complet de l'exécutable : un même binaire lancé depuis deux dossiers produit deux fichiers .pf. Pour les binaires « hôtes » (svchost.exe, dllhost.exe, rundll32.exe, mmc.exe), la ligne de commande entre aussi dans le hash, d'où leurs multiples fichiers .pf.

Le même dossier contient Layout.ini et les bases SysMain Ag*.db, qui sont des artefacts distincts.

Ce que l'artefact prouve

  • Exécution : l'exécutable nommé a été lancé au moins une fois depuis le chemin encodé dans le fichier.
  • Combien de fois et quand : nombre d'exécutions, plus la dernière date d'exécution (Vista/7) ou jusqu'à huit dates (8 et suivants).
  • Ce qu'il a touché : DLL, fichiers de configuration et documents ouverts dans les premières secondes, avec leur chemin de volume complet. Un document listé dans le Prefetch de WINWORD.EXE ou 7Z.EXE montre que ce fichier a été manipulé.
  • Sur quel volume : chemin de périphérique, date de création et numéro de série du volume, utile pour rattacher une exécution à un support amovible.

Champs clés

ChampSignification
Nom de l'exécutableNom en majuscules, tronqué à 29 caractères dans l'en-tête
HashHash du chemin dans le nom de fichier ; hash différent = chemin ou ligne de commande différents
Nombre d'exécutionsNombre de lancements enregistrés par SysMain
Dernière(s) exécution(s)1 horodatage (XP à 7) ou jusqu'à 8 (8 et suivants), du plus récent au plus ancien
Informations de volumeChemin de périphérique, numéro de série et date de création de chaque volume référencé
Fichiers référencésChemins complets des fichiers chargés au démarrage
Dossiers référencésDossiers touchés au démarrage (Vista et suivants)

Horodatages

HorodatagePositionné quandFormatPièges
Date(s) d'exécution (internes)SysMain écrit le .pf après la fenêtre d'observation du démarrageFILETIME, UTCTombe en général ~10 secondes après le vrai démarrage du processus : ce n'est pas la seconde exacte du lancement
Création du .pf ($SI)Première mise en Prefetch de l'exécutableNTFS, UTCRéinitialisée si le .pf a été supprimé puis recréé, ou évincé puis recréé
Modification du .pf ($SI)Dernière mise à jour du .pfNTFS, UTCCorrespond en général à la date d'exécution interne la plus récente
Création du volumeFormatage du volumeFILETIME, UTCDécrit le volume, pas l'exécution

Rétention et effacement

  • Le dossier est plafonné : 128 entrées de XP à 7 et 1 024 entrées à partir de Windows 8. Les fichiers les plus anciens sont évincés à la limite : l'absence d'un .pf ne prouve pas que le programme n'a jamais tourné.
  • Seules les huit dernières dates d'exécution sont conservées ; les exécutions plus anciennes ne subsistent que dans le compteur.
  • Le Prefetch est piloté par EnablePrefetcher sous HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters (0 désactivé, 1 applications, 2 démarrage, 3 les deux). Il est désactivé par défaut sur Windows Server.
  • Les attaquants et les outils de nettoyage suppriment les .pf. Ces suppressions restent souvent visibles dans le journal USN et la $MFT.

Collecte

  • Cible KAPE : Prefetch
  • Velociraptor (Windows.Triage.Targets) : Prefetch
  • Commandes natives : les fichiers ne sont pas verrouillés, une simple copie suffit. robocopy conserve les horodatages d'origine :
robocopy C:\Windows\Prefetch E:\case\Prefetch *.pf /COPY:DAT /DCOPY:T
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher

Outils d'analyse

  • PECmd (Eric Zimmerman, gratuit) : PECmd.exe -d E:\case\Prefetch --csv E:\out produit un CSV par fichier et un CSV chronologique de toutes les exécutions. Il décompresse les fichiers de Windows 10/11 lorsqu'il tourne sous Windows 8 ou ultérieur.
  • WinPrefetchView (NirSoft, gratuit) : revue rapide en interface graphique.
  • libscca / pyscca (Joachim Metz, open source) : bibliothèque et outil sccainfo, avec la documentation du format.
  • Velociraptor : l'artefact Windows.Forensics.Prefetch analyse le Prefetch sur les postes en direct.
  • Plaso : le parseur prefetch ajoute chaque exécution à une super-chronologie.

Conseils d'investigation

  • Cherchez les exécutables situés dans des emplacements accessibles en écriture aux utilisateurs (\Users\Public\, \AppData\Local\Temp\, \ProgramData\) et les outils d'attaque classiques (PSEXESVC.EXE, RCLONE.EXE, MIMIKATZ.EXE, PROCDUMP renommé).
  • Plusieurs hash pour un même nom signalent plusieurs emplacements de lancement : comparez les chemins de fichiers de chaque .pf pour isoler l'intrus.
  • Lisez la liste des fichiers référencés : le Prefetch d'un hôte de script (WSCRIPT.EXE, MSHTA.EXE) qui référence un fichier de Downloads révèle souvent la charge initiale.
  • Corrélez avec Amcache (SHA-1 du binaire), ShimCache et BAM (attribution à un utilisateur, absente du Prefetch).
  • Si le Prefetch est vide ou que des fichiers récents manquent, vérifiez EnablePrefetcher avant de conclure à de l'anti-forensique.

Artefacts liés

Termes du glossaire

Guides

Tous les artefacts sur une page : aide-mémoire