Forensic Windows – Partie 4 : exploiter le SuperFetch

Threat Intel & Forensic

Forensic Windows – Partie 4 : exploiter le SuperFetch

Sur une machine Windows, chaque application lancée laisse une empreinte, et SuperFetch en conserve une trace précieuse pour l’analyste. Après avoir étudié le Prefetch dans les parties précédentes de cette série, nous nous intéressons ici à SuperFetch, souvent présenté comme son complément naturel. Dans cet article, nous verrons comment fonctionne ce mécanisme, où sont stockées ses données, et comment les analyser et les exploiter dans un contexte forensic.

À propos de Superfetch

Nous avons vu que le Prefetch permet d’accélérer le lancement des applications en préchargeant les fichiers nécessaires dès leur première exécution. Toutefois, ce mécanisme reste limité, car il ne prend pas en compte les habitudes globales de l’utilisateur ni l’évolution de l’utilisation du système dans le temps.

Introduite avec Windows Vista, la technologie SuperFetch vient compléter ce fonctionnement. Elle analyse en continu l’utilisation des applications afin d’identifier celles qui reviennent le plus souvent, ainsi que les moments où elles sont lancées (par exemple au démarrage de la session, ou à la reprise après une mise en veille prolongée). En s’appuyant sur ces informations, elle anticipe les besoins et recharge en mémoire les données utiles avant même l’exécution des programmes.

SuperFetch adopte donc une approche prédictive et dynamique. Il optimise l’utilisation de la mémoire en privilégiant les applications les plus pertinentes, tout en veillant à ne pas saturer la RAM.

Un point de vocabulaire mérite d’être clarifié, car il prête souvent à confusion. Sur les versions modernes de Windows (Windows 10 et Windows 11), le service ne s’appelle plus SuperFetch mais SysMain. En réalité, SysMain est le nom de l’ensemble du service, qui regroupe plusieurs composants dont le Prefetcher et SuperFetch lui-même. Le terme SuperFetch désigne aujourd’hui davantage une brique de SysMain que le service dans son intégralité. Dans la suite de cet article, nous emploierons les deux termes selon le contexte, en gardant cette nuance à l’esprit.

Note : le service SysMain est implémenté dans , hébergé par un processus . Vous pouvez vérifier son état dans la console des services () ou avec la commande .

Pourquoi SuperFetch intéresse l’analyse forensic

Au-delà de son rôle d’optimisation, SuperFetch enregistre une quantité d’informations qui en fait un artefact d’exécution à part entière. L’analyse de ses fichiers permet d’identifier les programmes exécutés et les fichiers chargés en mémoire, avec des données comme les chemins d’accès ou la fréquence d’utilisation.

Plusieurs caractéristiques rendent cet artefact intéressant dans une investigation :

  • Une couverture large. Contrairement au Prefetch, centré sur les exécutables, SuperFetch trace aussi d’autres types de fichiers, comme les , les et leurs chemins d’accès. Cela enrichit la reconstitution de l’activité.
  • Une trace des applications historiques. Les fichiers de type conservent une trace d’applications utilisées par le passé, même si elles ne sont plus exécutées ou ont été désinstallées. C’est précieux lorsqu’un attaquant a tenté d’effacer ses outils.
  • Une vision multi-utilisateurs. Ces bases regroupent les informations de l’ensemble des utilisateurs du système, et pas seulement de la session courante.

Le fichier est l’un des plus intéressants : il contient des informations sur les applications les plus fréquemment lancées, tous contextes confondus, là où le Prefetch se concentre davantage sur le lancement des exécutables.

Il faut néanmoins garder à l’esprit une limite structurante, sur laquelle nous reviendrons : SuperFetch ne fournit pas d’horodatage précis et fiable pour chaque exécution. Ces traces servent donc surtout à établir ou corroborer un usage, rarement à dater une action à la seconde près.

Où se trouvent les fichiers SuperFetch

Les fichiers SuperFetch sont stockés au même emplacement que les fichiers Prefetch, dans le dossier .

Leurs noms commencent généralement par le préfixe et portent l’extension . Il existe également des variantes compressées, reconnaissables au suffixe ajouté à la suite (par exemple ).

Un comportement du service mérite d’être connu, car il conditionne la collecte. La plupart des bases SuperFetch sont écrites sur le disque au moment de l’arrêt du service, tandis que est également mis à jour à son démarrage. Comme SysMain est actif en permanence, certains fichiers peuvent donc ne pas apparaître immédiatement, ou ne pas refléter l’activité la plus récente. Dans un cadre de test sur système vivant, il peut alors être nécessaire d’arrêter le service SysMain, de lancer les applications voulues pour générer de l’activité, puis de redémarrer le service afin de forcer l’écriture des fichiers.

Attention : arrêter le service SysMain et générer de l’activité modifie l’état du système. Dans une véritable investigation, ces manipulations n’ont pas leur place sur la preuve d’origine. Elles se réservent à un environnement de laboratoire ou à une copie de travail, afin de préserver l’intégrité des éléments collectés.

Le schéma suivant résume le fonctionnement de SuperFetch.

Pour aller plus loin sur le format interne et la structure des données, la documentation de Forensics Wiki sur le format SuperFetch constitue une référence utile.

Analyser les fichiers SuperFetch

L’analyse des fichiers SuperFetch reste complexe, en raison de leur format propriétaire et du manque d’outils fiables et maintenus. Plusieurs approches coexistent, avec des résultats inégaux. Regardons ce qu’il en est.

L’outil rewolf-superfetch-dumper

Une première approche consiste à utiliser l’outil open source (licence GPL) développé par rewolf, le rewolf-superfetch-dumper.

Cependant, lors de mes tests, j’ai constaté que cet outil ne prenait pas en charge les systèmes récents comme Windows 10 et Windows 11, notamment à cause de l’évolution du mécanisme de compression établi sur l’algorithme Xpress Huffman introduit par Microsoft.

L’analyse en éditeur hexadécimal

Une autre approche consiste à ouvrir les fichiers dans un éditeur hexadécimal. Cette méthode permet d’identifier certaines chaînes de caractères, en particulier des noms de fichiers ou des chemins, mais elle reste fastidieuse et peu exploitable à grande échelle.

Nous pouvons observer une action sur le service SuperFetch, suivie du lancement du processus Explorer. Toutefois, l’analyse complète nécessiterait de convertir l’ensemble des données binaires, ce qui s’avère particulièrement fastidieux. J’ai donc choisi d’abandonner cette approche.

Pour aller plus loin sur l’architecture des fichiers, le blog de rewolf propose une description détaillée du format.

Les travaux de recherche de référence

Des travaux plus avancés ont été présentés lors de la conférence Black Hat USA 2020, dans une intervention intitulée « Fooling Windows through Superfetch », par Mathilde Venault et Baptiste David. Ils apportent une bien meilleure compréhension du fonctionnement interne de SysMain et du format de ses fichiers. Les slides de la conférence sont accessibles publiquement.

Ces recherches ont donné lieu à un article scientifique de référence, « Superfetch: the famous unknown spy », publié dans le Journal of Computer Virology and Hacking Techniques. Il détaille l’architecture du service et le format de l’ensemble des fichiers de prefetch, jusque-là mal documentés.

SysMainView, l’outil adapté aux systèmes récents

C’est de ces travaux qu’est né SysMainView, un outil proposé par Mathilde Venault, compatible avec les systèmes récents. Une fois compilé, il permet de lire et d’interpréter les fichiers SuperFetch de manière beaucoup plus accessible que les méthodes précédentes. C’est aujourd’hui l’approche que je recommande. Le projet est disponible sur son dépôt GitHub SysMainView.

Utilisation de Sysmain View

Une fois l’outil récupéré et compilé, son menu se révèle intuitif. Il suffit de saisir un numéro pour déclencher l’action correspondante. Nous choisissons ici l’option pour lister le contenu d’un fichier SuperFetch.

Nous sélectionnons ensuite le fichier à analyser.

Sélectionnez le fichier. Le contenu (parsing) est alors affiché.

Si le fichier est compressé, un message nous invite à le décompresser. Il suffit alors de choisir l’option , puis de valider.

Les différentes bases contiennent des informations simultanément sur les chemins et les fichiers utilisés.

Vous pouvez ainsi visualiser l’ensemble des éléments lancés par les utilisateurs et le système, avec de nombreuses extensions.

L’exploration de ces fichiers révèle des informations particulièrement intéressantes. Je vous invite à les analyser avec un œil attentif, l’objectif ici n’étant pas de détailler chaque champ, mais plutôt d’illustrer la méthode dans une approche orientée forensic.

Voilà pour cette partie. L’outil ne propose pas de sortie formatée, mais le code source étant disponible, il est tout à fait possible d’y ajouter un export au format afin de faciliter vos analyses.

Conclusion

Les bases SuperFetch constituent une solution d’appoint et représentent un complément intéressant à ce que nous avons vu avec le Prefetch. Ces dernières ne se limitent pas aux exécutables ou aux applications, mais couvrent également d’autres types de fichiers, tels que les .ini, les .dll, ainsi que leurs chemins d’accès, ce qui rend l’analyse plus riche et plus pertinente.

Cependant, l’absence d’horodatage précis peut constituer un frein dans une investigation forensic. Néanmoins, la mise en évidence d’un usage permet, dans certains cas, de corroborer une action.

Nous compléterons prochainement cette approche avec l’analyse des mécanismes BAM et DAM.

FAQ

Qu’est-ce que SuperFetch sous Windows ?

SuperFetch est un mécanisme d’optimisation mémoire introduit avec Windows Vista. Il analyse les habitudes d’utilisation des applications pour précharger en mémoire les données utiles et accélérer leur lancement. Sur Windows 10 et Windows 11, il est intégré au service SysMain.

Quelle est la différence entre SuperFetch et SysMain ?

SysMain est le nom du service complet sur les versions récentes de Windows. Il regroupe plusieurs composants, dont le Prefetcher et SuperFetch. SuperFetch était l’ancien nom du service, et désigne aujourd’hui une brique de SysMain plutôt que l’ensemble.

Pourquoi SuperFetch est-il utile en analyse forensic ?

SuperFetch conserve des traces des programmes exécutés, des fichiers chargés et de leurs chemins d’accès. Il couvre aussi des applications désinstallées et l’activité de tous les utilisateurs, ce qui en fait une source de preuves d’exécution complémentaire au Prefetch.

Comment analyser un fichier SuperFetch ?

Plusieurs méthodes existent : l’outil rewolf-superfetch-dumper (limité aux anciens systèmes), l’analyse en éditeur hexadécimal (fastidieuse), ou l’outil SysMainView, qui parse les fichiers sur Windows 10 et Windows 11 de façon accessible.

Où se trouvent les fichiers SuperFetch ?

Les fichiers SuperFetch sont stockés dans le dossier , au même endroit que les fichiers Prefetch. Ils portent le préfixe Ag et l’extension , avec des variantes compressées en .

SOURCE