← Retour au blog

Prouver qu'un fichier a existé sur un système Windows

· Lecture 3 min

Les enquêtes forensiques tournent souvent autour d'une seule question : ce fichier a-t-il jamais été sur cet ordinateur ? Pas « est-il sur le disque maintenant ? » — ça, c'est dir. La version difficile est : peut-on montrer qu'il était sur le disque hier, la semaine dernière, l'année dernière ? Sur les volumes NTFS, le $MFT est généralement la meilleure réponse.

Ce qui survit à une suppression

Quand un fichier est supprimé sur NTFS, le bit « en cours d'utilisation » de son enregistrement MFT est effacé, mais le reste subsiste. Cet enregistrement porte :

  • le nom de fichier complet (dans $FILE_NAME) ;
  • la référence au dossier parent ;
  • quatre horodatages (création, modification, accès, modification MFT) — en double, dans SI et FN ;
  • les tailles logique et physique du fichier ;
  • pour les petits fichiers, l'intégralité du contenu ($DATA résident) ;
  • pour les plus gros, le runlist des clusters qui contenaient les données.

Chacun de ces éléments est une preuve directe. Un enregistrement MFT supprimé avec $FILE_NAME = plan-secret.docx, dossier parent \Users\bob\Documents, et SI-création 2024-11-03T14:02:11Z démontre qu'un fichier portant ce nom existait dans ce dossier à cette date, indépendamment de ce que dir afficherait aujourd'hui.

La force probante

Trois propriétés font des enregistrements MFT une preuve forensique solide :

  1. NTFS les écrit lui-même. Ils ne sont pas modifiables par l'utilisateur via les outils Windows standard. Un défendeur ne peut pas prétendre qu'ils ont été plantés sans qu'on ait forgé l'intégralité du $MFT — un travail de titan.
  2. Huit horodatages se vérifient mutuellement. La manipulation laisse en général des traces : SI changé alors que FN est inchangé est la signature du timestomping.
  3. $UsnJrnl et $LogFile corroborent. Si le $MFT dit qu'un fichier a été créé à l'heure T, le journal de changements doit enregistrer l'événement à la même heure. Les divergences sont, elles-mêmes, une preuve.

Ce que le $MFT ne prouve pas seul

Le $MFT prouve que le fichier existait dans un dossier donné à un moment donné. Il ne prouve pas :

  • qui l'a créé ou y a accédé — il faut les Security event logs ;
  • quel programme l'a produit — Prefetch et ShimCache aident ici ;
  • ce qu'il contenait, pour les gros fichiers — sauf à récupérer les clusters de données ;
  • s'il a été ouvert par un utilisateur — Jump Lists et fichiers LNK sont plus utiles.

Une réponse complète mêle généralement le $MFT aux artefacts environnants. Mais le $MFT est la pierre angulaire — sans lui, les autres pièces n'ont rien à quoi s'amarrer.

Ressources externes