← Retour au blog

Volume Shadow Copy et $MFT : anciennes versions

· Lecture 5 min

Réponse courte : chaque snapshot Volume Shadow Copy contient une copie figée de $MFT au moment où le snapshot a été pris. Monter un snapshot ancien et en exporter $MFT permet de comparer le système de fichiers d'aujourd'hui avec celui d'il y a une semaine, de récupérer des fichiers supprimés entre snapshots, et de voir les métadonnées évoluer dans le temps.

Ce que capture VSS

Le service Volume Shadow Copy (VSS) prend des snapshots ponctuels d'un volume NTFS. Chaque snapshot est un delta copy-on-write : quand un bloc est sur le point d'être modifié, l'original est d'abord préservé dans le shadow copy. Le snapshot reflète donc le volume exactement tel qu'il était à l'instant de la création, y compris la Master File Table.

Sur un poste Windows typique, les snapshots sont pris automatiquement — généralement avant une mise à jour Windows, parfois par la Restauration du système, souvent par un logiciel de sauvegarde tiers. Un poste de travail peut facilement avoir une demi-douzaine de snapshots remontant à plusieurs semaines.

Pourquoi c'est important en forensique

La $MFT vivante est une observation. Un volume avec cinq snapshots vous donne six observations : aujourd'hui plus cinq historiques. Chaque $MFT historique enregistre l'état du volume à cet instant, y compris :

  • Les fichiers qui existaient alors et ont depuis été supprimés — récupérables intégralement.
  • Les fichiers qui existent maintenant mais étaient absents alors — prouvant quand ils ont été introduits.
  • Les enregistrements dont les horodatages diffèrent d'aujourd'hui, révélant des renommages, déplacements et timestomping survenus entre snapshots.

Les snapshots sont particulièrement utiles dans les cas de ransomware : si VSS n'a pas été supprimé (certains ransomwares essaient — voir motifs ransomware dans la MFT), l'un des snapshots anciens contiendra la $MFT pré-chiffrement et, souvent, les données originales des fichiers.

Lister les snapshots

Depuis une PowerShell élevée :

vssadmin list shadows

Chaque entrée affiche un chemin Shadow Copy Volume qui ressemble à \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7. Ce chemin est montable.

Depuis une image forensique, utilisez libvshadow. L'outil vshadowinfo énumère les snapshots dans une image .dd ou .E01 ; vshadowmount les expose comme des volumes virtuels distincts.

vshadowinfo disk.dd
vshadowmount disk.dd /mnt/shadows

Après montage, vous obtenez vss1, vss2, ... comme fichiers séparés, chacun analysable comme un volume NTFS.

Extraire $MFT d'un snapshot

Une fois un snapshot monté (système vivant ou via vshadowmount), $MFT se trouve au même décalage que sur le volume parent — la racine du snapshot. Récupérez-la avec les mêmes outils :

  • fsutil (système vivant) : fsutil file queryextents \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7\$Mft
  • FTK Imager : ajoutez le périphérique shadow copy comme preuve, naviguez jusqu'à $MFT, exportez.
  • icat de The Sleuth Kit (image) : icat -o <offset> vss1 0 > mft_vss1.bin (inode 0 est toujours $MFT).
  • KAPE avec la cible MFT lancée contre chaque snapshot monté.

Voir extraire $MFT pour la mécanique sur système vivant.

Comparer deux MFT

L'analyse la plus utile à moindre coût est un diff. Analysez les deux fichiers $MFT en CSV (une ligne par enregistrement), triez par numéro d'enregistrement, et diffez :

mft_dump -o csv mft_today.bin   > today.csv
mft_dump -o csv mft_vss3.bin    > vss3.csv
diff <(sort today.csv) <(sort vss3.csv) > changes.diff

Ce que vous cherchez :

  • Enregistrements présents dans vss3 mais absents ou marqués supprimés dans today — fichiers supprimés dans l'intervalle.
  • Enregistrements présents dans today mais absents dans vss3 — fichiers introduits dans l'intervalle.
  • Enregistrements dont les horodatages $STANDARD_INFORMATION ont reculé — possible timestomping (le snapshot est la vérité de terrain).
  • Enregistrements dont la référence parente $FILE_NAME a changé — fichier déplacé dans un autre dossier.

Le même diff au niveau de $UsnJrnl est encore plus riche ; combinez-le avec le diff MFT pour une vue complète.

Limites

  • Les snapshots peuvent être supprimés. vssadmin delete shadows /all est un effacement en une ligne et figure dans tous les playbooks de ransomware. Les snapshots déjà évincés ont disparu — VSS conserve un maximum fixe (64 par défaut).
  • Les snapshots ne sont pas des instants arbitraires. Vous obtenez ce qui a été planifié ou ce qu'un installateur a déclenché. Il y a rarement un snapshot exactement au moment d'un incident.
  • Les données résidentes dans une $MFT plus ancienne ne sont pas préservées au-delà du snapshot. Si le fichier existait dans un snapshot et était petit, ce snapshot a les octets résidents. Ne vous attendez pas à récupérer les données depuis un snapshot postérieur à la suppression.

Questions fréquentes

Puis-je lire un snapshot VSS depuis Linux ?

Oui — libvshadow est multi-plateforme. Montez l'image avec vshadowmount, puis tout outil compatible NTFS lit les volumes de snapshot comme des fichiers ordinaires.

Les snapshots incluent-ils les fichiers système comme $MFT ?

Oui. Un snapshot VSS capture chaque bloc du volume au moment du snapshot, y compris les fichiers de métadonnées au début de $MFT.

Combien de snapshots Windows conserve-t-il ?

Jusqu'à 64 par volume par défaut. Le réglage est MaxShadowCopies dans le registre et est rarement personnalisé. Sur les serveurs avec logiciel de sauvegarde, la limite effective est généralement ce que le logiciel de sauvegarde conserve.

Les données shadow copy résistent-elles à l'effacement ?

Elles résistent à la suppression de fichiers individuels sur le volume vivant — c'est le but. Elles ne résistent pas à vssadmin delete shadows, à un effacement disque complet ou à un dommage physique du média.

Ressources externes