Windows mercredi : Prefetch Files

Pour le post d’aujourd’hui, je vais prendre quelques instants pour discuter de Windows Prefetch. Mais d’abord, un rapide plug pour une formation à venir :

Je suis actuellement en train de préparer une prochaine classe FOR508 avec Chad Tillbury au SANS Security East 2017. Bien que cela se rapproche beaucoup, nous nous réjouissons d’une classe impressionnante et de trouver la prochaine équipe de légistes létaux ! Si vous participez à la conférence, envoyez-moi un message à l’avance. Si vous voulez participer, je crois que les inscriptions sont encore ouvertes ! Pendant l’événement, le mercredi 11 janvier, je donnerai une conférence SANS@Night intitulée Zero In on the Artifacts That Matter. La préparation de cette conférence a été l’inspiration pour le post d’aujourd’hui, car prefetch sera certainement mentionné.

Je l’ai déjà dit et je le répète – de nombreux artefacts que nous aimons dans le monde DFIR sont en fait des sous-produits du système d’exploitation qui essaient de rendre la vie plus facile et/ou plus efficace pour l’utilisateur ou les développeurs. À mon avis, prefetch fait également partie de cette catégorie.

Prefetch existe depuis Windows XP. Il a été conçu à l’origine pour aider à accélérer le démarrage du système et le lancement des applications. L’objectif de prefetch est d’analyser et d’enregistrer le comportement de démarrage des applications lors de leur exécution afin de rendre les futurs démarrages plus efficaces. Ces données sont enregistrées pendant un maximum de 10 secondes après le démarrage de l’application. Le comportement de l’application enregistré est sauvegardé dans un fichier de trace – ce que nous appelons le fichier prefetch – dans le chemin C:\Windows\Prefetch.

Fichiers prefetch

Comme mentionné ci-dessus, les fichiers prefetch se trouvent dans le répertoire statique C:\Windows\Prefetch. Les fichiers prefetch ont une extension .pf et suivent une convention de nommage standard:

<APPLICATION NAME IN ALL CAPS>-<EIGHT CHARACTER HASH OF APPLICATION LOCATION>.pf

Les fichiers prefetch contiennent les métadonnées suivantes :

  • Le nom de l’exécutable correspondant
  • Le nombre de fois où l’exécutable a été exécuté
  • La taille du fichier prefetch
  • Les fichiers et répertoires qui ont été référencés pendant le démarrage de l’application (c’est ce que Windows veut tracer)
  • Les informations relatives au volume sur lequel se trouve l’exécutable, y compris le chemin du volume et le numéro de série.

Voici un échantillon de quelques fichiers prefetch de mon hôte de test :

Capture d’écran du dossier Prefetch d’un hôte de test Windows 10

Notez que j’ai plusieurs applications avec le même nom, mais un emplacement différent. Cela est mis en évidence par les hachages quelque peu similaires, et dans les cas de nombreuses applications, cela indique probablement une mise à jour logicielle ou un changement de structure de dossier.

EDIT : Merci à Eric Zimmerman de m’avoir rappelé que les noms de fichiers prefetch dépendent également des arguments de la ligne de commande et sont sensibles à la casse, malgré l’absence de sensibilité à la casse dans le fichier de trace. Hexacorn couvre l’algorithme de hachage en détail ici, et je vous recommande de le consulter si vous avez besoin de faire ce niveau d’analyse prefetch.

Parsing the Prefetch File

La structure des fichiers Prefetch est en fait assez bien connue et il existe de multiples options d’analyse disponibles. Voici quelques options:

  • Au pire, nous pouvons utiliser strings pour obtenir quelques informations sur les traces de prefetch. Voici un exemple d’énumération des chaînes Unicode d’un exécutable suspect:

Capture d’écran des chaînes d’un fichier prefetch pour A.EXE
  • Eric Zimmerman maintient son outil PECmd, actuellement à la version 0.7.2.0. Il peut être téléchargé ici.
  • log2timeline/Plaso contient un parseur de prefetch, et peut mettre les données clés des fichiers prefetch dans un format de ligne de temps.
  • TZWorks publie également un parseur de prefetch vraiment utile et pratique pf. Vous pouvez consulter plus d’informations à son sujet ici. Voici un exemple de la sortie de l’outil pf de TZWorks :

Capture d’écran de la sortie pf de TZWorks pour un fichier prefetch

J’aborderai certains des artefacts médico-légaux dans cette sortie dans la section suivante, mais remarquez comment nous obtenons maintenant des informations contextuelles, les temps d’exécution, et les horodatages importants.

Une autre note importante sur l’analyse des fichiers prefetch est que les nouvelles versions prefetch, à savoir Windows 10, utilisent un nouveau format de compression qui ne joue pas bien avec les analyseurs des versions précédentes. Assurez-vous que votre outil peut gérer les artefacts Windows 10 – ou allez trouver un nouveau script – avant de supposer que les fichiers peuvent être corrompus.

Comment utiliser dans DFIR

Les analystes de DFIR doivent être conscients de prefetch car il contient beaucoup de valeur médico-légale. Voici quelques façons dont j’ai utilisé prefetch dans le passé:

  • Le compte d’exécution peut être une indication importante sur la durée pendant laquelle un logiciel malveillant peut avoir été sur un système ou la fréquence à laquelle il est/était utilisé. Si vous n’avez vu que des preuves de deux exécutions de logiciels malveillants, mais que prefetch en montre des dizaines, alors il faut creuser un peu plus.
  • Les horodatages du fichier prefetch nous disent aussi des volumes. Pensez à ce qui suit : Qu’est-ce qui crée un fichier prefetch, et qu’est-ce qui modifie un fichier prefetch ? Transformez ces actions en horodatages, et nous pouvons déterminer ce qui suit : L’horodatage de création d’un fichier prefetch correspond à la première exécution de l’application, et l’horodatage de dernière modification d’un fichier prefetch correspond à la dernière exécution de l’application. Reprenons la capture d’écran ci-dessus :

Capture d’écran de la sortie pf de TZWorks pour un fichier prefetch

Notez notre dernière heure d’exécution (2012-04-04 00:43:06.137) et l’heure de modification : (2012-04-04 00:43:07). Maintenant, nous pouvons espérer très rapidement à travers les fichiers Prefetch, sans avoir besoin d’analyser, et trouver nos derniers temps d’exécution.

Vous pouvez utiliser les timestamps dans d’autres moyens aussi. Par exemple, considérez la visualisation des timestamps de création de tous les fichiers du dossier prefetch. Si nous avons des délais d’intérêt, ou des fichiers prefetch pour les logiciels malveillants connus, recherchez d’autres fichiers avec des timestamps dans une proximité temporelle étroite.

  • Lors de l’analyse des fichiers prefetch, en particulier ceux liés à des logiciels malveillants connus, jetez un coup d’œil aux fichiers mappés ou chargés. Vous pouvez trouver des indicateurs supplémentaires.
  • En outre, examinez les répertoires mappés à partir du fichier prefetch. Vous pouvez trouver des preuves d’un lecteur externe ou d’une partition précédente.
  • Voyez-vous plusieurs fichiers prefetch avec différents hachages à la fin du fichier ? Rappelez-vous, ce hachage est dérivé de l’emplacement – vous pouvez avoir des logiciels malveillants à plusieurs endroits.
  • Enfin, n’oubliez pas que Windows surveille le démarrage des applications pendant 10 secondes. Ainsi, alors que nous pouvons compter sur nos horodatages de fichiers prefetch comme des indicateurs assez forts, nous devons prendre en compte le retard maximal de dix secondes.

Au delà du prefetch

Dans Windows Vista et au-delà, Microsoft a continué à développer le prefetch avec des fonctionnalités supplémentaires telles que SuperFetch, ReadyBoost, ReadyBoot et ReadyDrive. Je vais creuser dans ces fonctionnalités dans un post ultérieur.

Jusqu’à demain, Joyeux Forensicating!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.