Aller au contenu
← Retour au blog

Volatility + pagefile.sys : associer les deux pour une forensique mémoire complète

20/05/2026 · 5 min de lecture

Volatility (et son successeur MemProcFS) sont les outils standards de la forensique mémoire Windows. La plupart des analystes les utilisent contre un dump RAM seul. Ce qu'on rate souvent, c'est que les deux savent lire pagefile.sys si vous le leur fournissez — et le faire élargit considérablement ce que vous pouvez récupérer.

Pourquoi Volatility ne peut pas utiliser le pagefile seul

Le travail de Volatility consiste à parcourir les structures de données noyau d'une image mémoire capturée : listes EPROCESS, entrées de table de page (PTE), pools noyau, tampons réseau. Tout cela vit en RAM — rien n'est dans le pagefile.

Le pagefile en lui-même n'est que du contenu : des cadres mémoire bruts de 4 Ko sans attribution. Volatility ne sait pas quel emplacement appartient à quel processus, à quelle adresse virtuelle, ni même quel type de mémoire (tas, pile, fichier mappé) il représente.

C'est pour cela que des outils autonomes comme ce parser adoptent une approche de carving — regarder le contenu seul via des signatures d'octets magiques. Voir le billet sur les limites pour l'explication complète.

Ce qui change quand vous avez les deux

Quand vous fournissez à Volatility un dump RAM et le pagefile correspondant, il peut :

  1. Parcourir les PTE en RAM pour déterminer à quel processus et à quelle adresse virtuelle chaque emplacement du pagefile correspond.
  2. Lire à la demande les pages paginées pendant l'exécution des plugins — si bien qu'un scan de processus, un pslist, un cmdline, un vadinfo, un dumpfiles obtiennent le contenu complet, y compris pour les régions mémoire qui ont paginé.
  3. Faire tourner des plugins qui étaient auparavant en échec ou partiels : pstree, cmdline, dlllist, handles, consoles, cmdscan — tous deviennent complets.

En pratique, le pagefile est monté comme stockage de backing pour l'image mémoire.

Syntaxe Volatility 3

# Sans pagefile (le contenu paginé manque)
vol -f memory.dmp windows.pslist

# Avec pagefile (le contenu paginé est récupéré)
vol -f memory.dmp \
    --layer "Stacker.layer0:PageFile=pagefile.sys" \
    windows.pslist

La syntaxe --layer vous permet d'empiler un PagefileLayer au-dessus de la couche mémoire physique, et la traduction de Volatility retombe sur lui quand une PTE a le bit Pagefile positionné.

Note : la CLI exacte pour empiler les couches pagefile a évolué d'une mineure à l'autre de Volatility 3 ; consultez vol --help et le -h de windows.info pour votre build.

Syntaxe Volatility 2

Legacy mais encore beaucoup utilisé :

vol.py -f memory.dmp --profile=Win10x64_19041 \
    --pagefile pagefile.sys \
    pslist

Le flag --pagefile fonctionne pour la plupart des profils Win64 / Win10. Pour les profils plus anciens, le flag peut ne pas être supporté.

Syntaxe MemProcFS

MemProcFS expose la surface d'analyse sous forme de système de fichiers virtuel dans lequel vous pouvez cd :

MemProcFS.exe -device memory.dmp -pagefile0 pagefile.sys

Le paramètre pagefile0 accepte un chemin ; pagefile1, pagefile2, … peuvent être utilisés pour des pagefiles additionnels (serveurs multi-volumes).

Une fois monté, des chemins comme :

M:\pid\1234\virt2phys.txt
M:\pid\1234\memory.vmem
M:\pid\1234\modules\…

… retournent du contenu avec les données paginées remplies depuis le pagefile de manière transparente.

Quel outil pour quoi

ObjectifMeilleur outil
Parcourir processus, modules, handles, connexions réseauVolatility 3 (avec --layer PageFile=)
Monter la mémoire comme système de fichiers ; triage interactifMemProcFS
Carver du contenu d'un pagefile sans dump RAMCe parser
Chercher chaînes + IOC dans le pagefile sans dump RAMCe parser
Déchiffrer les secrets LSASS depuis la RAMpypykatz / mimikatz / plugins Volatility

Un triage IR complet implique généralement les trois : capture RAM pour l'analyse à chaud, pagefile pour le contenu paginé, et un balayage de chaînes pour les IOC rapides.

Workflow pratique

Un workflow de bout en bout raisonnable sur un hôte Windows :

  1. Acquérir la RAM (DumpIt, WinPMem, Magnet RAM Capture).
  2. Acquérir pagefile.sys (voir le billet dédié).
  3. Acquérir hiberfil.sys s'il existe (pourquoi) — c'est une seconde image mémoire plus riche.
  4. Éteindre, imager le disque.
  5. Première passe : déposer le pagefile dans ce parser pour un balayage IOC rapide — URL, IP, lignes de commande, credentials. C'est le chemin le plus rapide vers « est-ce qu'il y a quelque chose d'évidemment mauvais ici ? ».
  6. Deuxième passe : lancer MemProcFS avec le dump RAM + le pagefile. Parcourir les processus, dumper LSASS, vérifier les connexions réseau, examiner les drivers.
  7. Troisième passe : plugins Volatility 3 pour tout ce que MemProcFS ne couvre pas (plugins custom, extracteurs spécifiques à une famille de malwares).
  8. Recouper les trouvailles carvées contre les journaux EDR / Sysmon / EVTX pour l'ancrage temporel.

Et si vous n'avez que le pagefile ?

Cas courant lorsque la capture à chaud n'a pas été possible (verrouillé, BitLocker sans clé de récupération, attaquant déjà éteint, etc.) :

  • Volatility / MemProcFS sont largement inutiles sans image RAM correspondante.
  • Ce parser est votre outil. Carving + chaînes + artefacts produiront le signal le plus fort atteignable depuis le pagefile seul.
  • La qualité de récupération est en contenu seul, pas en contexte — voir les limites.

Et si vous n'avez que le dump RAM ?

Cas courant en forensique cloud / VM où le pagefile vit sur le volume hyperviseur hôte et n'est pas facilement accessible :

  • Volatility / MemProcFS fonctionnent, mais toute adresse paginée retourne zéro.
  • Certains plugins échouent partiellement ; d'autres ne sont pas affectés (tout ce qui ne touche qu'aux pools noyau non paginés).
  • Le pagefile est le supplément qui transforme une image mémoire partielle en image complète.

Les dumps de crash comme hybride

MEMORY.DMP issu d'un crash noyau est structurellement similaire à un dump RAM et Volatility le lit nativement (--profile=… plus le fichier). Il n'inclut pas le contenu du pagefile. Associez-le à pagefile.sys de la même manière qu'avec une capture à chaud.

Liens connexes