Aller au contenu

Accès aux fichiers

$LogFile (journal de transactions NTFS)

Fiche $LogFile : journal des métadonnées NTFS (enregistrement MFT 2), 64 Mo par défaut, opérations redo/undo, zone de redémarrage, rétention courte.

Emplacement
C:\$LogFile
Prouve
Changements récents de métadonnées : créations, renommages, suppressions, $SI
Horodatages
Pas d'heure par enregistrement ; valeurs $SI/$FN embarquées en FILETIME, UTC ; l'ordre des LSN donne la séquence
Rétention
Circulaire : sur un volume système actif, écrasé en quelques minutes à quelques heures (tests : de 16 minutes à plus de 5 heures)
Accès
Administrateur ; verrouillé et illisible via l'API Windows : collecter via NTFS brut (KAPE, Velociraptor) ou une image disque
Type
Fichier / système de fichiers
Windows
XPVista / 78 / 8.11011
Cible KAPE
$LogFile
Velociraptor
Windows.Triage.Targets:$LogFile

Présentation

$LogFile est le journal de transactions de NTFS. Avant de modifier ses propres métadonnées (enregistrements MFT, index de dossiers, bitmap des clusters), NTFS écrit un enregistrement décrivant le changement, afin de pouvoir ramener le volume dans un état cohérent après un plantage. Chaque enregistrement porte une opération redo (comment réappliquer le changement) et une opération undo (comment l'annuler), souvent avec les octets bruts avant et après. $LogFile offre ainsi un microscope sur les dernières minutes ou heures d'activité du système de fichiers, y compris sur des valeurs déjà écrasées dans la $MFT.

Emplacement

Version de WindowsCheminRemarques
XP à 11 (tout volume NTFS)<racine du volume>\$LogFileEnregistrement MFT 2 ; fichier système caché, verrouillé tant que le volume est monté
Windows 8 et suivantsIdemLog File Service (LFS) en version 2.0 pendant l'utilisation ; repassé en 1.1 par défaut à l'arrêt propre. Certains anciens parseurs ne comprennent que la 1.1

Taille : généralement 64 Mo (chkdsk affiche 65 536 Ko) sur les volumes Windows récents. Elle se modifie avec chkdsk <volume> /L:<taille en Ko>, et chkdsk C: /L affiche la taille actuelle.

Ce que l'artefact prouve

  • Opérations récentes sur les métadonnées : création, suppression, renommage et déplacement de fichiers et dossiers, création et suppression d'attributs, écriture de données résidentes, ajout et retrait d'entrées d'index.
  • Valeurs avant et après : les données undo peuvent contenir les anciens horodatages $STANDARD_INFORMATION d'un fichier dont les dates ont été modifiées, ce qui peut révéler un timestomping et restituer les valeurs d'origine.
  • Contenu résident : de petits fichiers et flux alternatifs écrits dans les enregistrements MFT peuvent apparaître dans les données redo.
  • Il ne journalise pas le contenu des fichiers non résidents, l'auteur d'une action, ni rien d'antérieur à ce que couvre le tampon circulaire.

Champs clés

ChampSignification
Pages RSTRDeux pages de redémarrage en tête de fichier (4 Ko chacune, la seconde est une copie) : LSN courant, liste des clients, point de départ de la récupération
Pages RCRDPages d'enregistrements de 4 Ko dans la zone circulaire
LSNLog Sequence Number de l'enregistrement ; également stocké dans l'en-tête de chaque enregistrement MFT
LSN précédent / Undo-next LSNChaînent les enregistrements d'une même transaction
Opération redoAction appliquée, par exemple InitializeFileRecordSegment, AddIndexEntryAllocation, UpdateResidentValue, DeallocateFileRecordSegment, DeleteIndexEntryAllocation, SetBitsInNonresidentBitMap
Opération undoL'action inverse
CibleNuméro d'enregistrement MFT / VCN et décalage de l'attribut visé
Données redo / undoOctets bruts : un enregistrement FILE complet, une entrée d'index $FILE_NAME ou la partie modifiée de $STANDARD_INFORMATION

Un renommage, par exemple, apparaît comme une suite d'opérations sur l'index parent (suppression de l'ancienne entrée, ajout de la nouvelle) et sur l'enregistrement du fichier (suppression puis recréation de l'attribut $FILE_NAME).

Horodatages

HorodatagePositionné quandFormatPièges
Aucun par enregistrement--Les enregistrements n'ont pas de champ de date propre ; la chronologie se déduit
Valeurs $SI / $FN dans les données redo ou undoCopiées depuis l'attribut modifiéFILETIME, UTCCe sont des dates de fichier, pas l'heure de journalisation ; en cas de timestomping, ce peut être la valeur choisie par l'attaquant
Ordre des LSNLe LSN augmente à chaque enregistrementNombre 64 bitsDonne une séquence fiable ; ancrez-la dans le temps grâce aux enregistrements du journal USN sur les mêmes fichiers

Rétention et effacement

  • La zone de journalisation est circulaire : une fois pleine, les nouveaux enregistrements écrasent les plus anciens. Sur un disque système actif, cela représente de quelques minutes à quelques heures ; des tests publiés sur Windows 10 ont mesuré de 16 minutes à plus de 5 heures avant écrasement. Un journal plus grand ou un volume secondaire calme en conserve davantage.
  • Collectez-le le plus tôt possible : chaque action sur un système en fonctionnement, y compris vos propres outils, repousse les anciens enregistrements.
  • D'anciennes pages peuvent subsister dans les clichés instantanés et en mémoire, et des pages RCRD peuvent être carvées dans l'espace non alloué.
  • Redimensionner le journal avec chkdsk /L ou reformater le volume détruit son contenu ; aucune commande utilisateur ne permet sinon de le vider.

Collecte

  • Cible KAPE : $LogFile (incluse aussi dans FileSystem)
  • Velociraptor (Windows.Triage.Targets) : $LogFile
  • Commandes natives : le fichier est verrouillé et illisible via l'API Windows ; utilisez un collecteur NTFS brut ou une image disque. Seule la taille se vérifie nativement :
chkdsk C: /L
fsutil fsinfo ntfsinfo C:

Collectez toujours $LogFile avec la $MFT et le $J du même volume pour résoudre chemins et dates.

Outils d'analyse

  • LogFileParser (Joakim Schicht, open source) : décode les opérations redo/undo et les changements d'attributs en CSV et base SQLite, reconstruit les data runs, récupère des transactions dans le slack et peut importer la sortie de mft2csv pour résoudre les chemins. Très détaillé et bas niveau.
  • NTFS Log Tracker (Junghoon Oh, gratuit) : analyse $LogFile (y compris LFS 2.0 de Windows 10), $UsnJrnl:$J et $MFT dans SQLite et résume les créations, suppressions et renommages.
  • dfir_ntfs (Maxim Suhanov, open source) : ntfs_parser --log <$MFT> <$LogFile> out.txt produit les enregistrements décodés.
  • MFTECmd n'analyse pas $LogFile à ce jour ; utilisez-le pour la $MFT et le $J à corréler.

Conseils d'investigation

  • Servez-vous de $LogFile pour valider un timestomping présumé : un UpdateResidentValue sur $STANDARD_INFORMATION dont les données undo contiennent des dates récentes et les données redo des dates anciennes montre la modification et les valeurs d'origine. Associez-le à l'enregistrement BasicInfoChange du journal USN.
  • Lors de suppressions massives (wipers, nettoyage après rançongiciel), les DeallocateFileRecordSegment et suppressions d'entrées d'index listent des fichiers même si leurs enregistrements $MFT ont été réutilisés quelques minutes plus tard.
  • Cherchez des données résidentes dans les enregistrements redo pour récupérer de petits scripts ou notes créés puis supprimés rapidement.
  • Comparez le LSN de l'en-tête de chaque enregistrement MFT avec la plage présente dans le journal : les fichiers modifiés le plus récemment ont un LSN compris dans cette plage.
  • Si le journal ne couvre que quelques minutes, indiquez-le dans le rapport : l'absence d'une opération dans $LogFile ne dit rien de l'activité plus ancienne.
  • Consultez la page index $I30 et l'entrée $STANDARD_INFORMATION et $FILE_NAME pour les autres copies d'horodatages à comparer.

Artefacts liés

Termes du glossaire

Tous les artefacts sur une page : aide-mémoire