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
Outils
Comparer tous les outilsPré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 Windows | Chemin | Remarques |
|---|---|---|
| XP à 11 (tout volume NTFS) | <racine du volume>\$LogFile | Enregistrement MFT 2 ; fichier système caché, verrouillé tant que le volume est monté |
| Windows 8 et suivants | Idem | Log 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_INFORMATIONd'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
| Champ | Signification |
|---|---|
Pages RSTR | Deux 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 RCRD | Pages d'enregistrements de 4 Ko dans la zone circulaire |
| LSN | Log Sequence Number de l'enregistrement ; également stocké dans l'en-tête de chaque enregistrement MFT |
| LSN précédent / Undo-next LSN | Chaînent les enregistrements d'une même transaction |
| Opération redo | Action appliquée, par exemple InitializeFileRecordSegment, AddIndexEntryAllocation, UpdateResidentValue, DeallocateFileRecordSegment, DeleteIndexEntryAllocation, SetBitsInNonresidentBitMap |
| Opération undo | L'action inverse |
| Cible | Numéro d'enregistrement MFT / VCN et décalage de l'attribut visé |
| Données redo / undo | Octets 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
| Horodatage | Positionné quand | Format | Piè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 undo | Copiées depuis l'attribut modifié | FILETIME, UTC | Ce 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 LSN | Le LSN augmente à chaque enregistrement | Nombre 64 bits | Donne 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
RCRDpeuvent être carvées dans l'espace non alloué. - Redimensionner le journal avec
chkdsk /Lou reformater le volume détruit son contenu ; aucune commande utilisateur ne permet sinon de le vider.
Collecte
- Cible KAPE :
$LogFile(incluse aussi dansFileSystem) - 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
mft2csvpour 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:$Jet$MFTdans SQLite et résume les créations, suppressions et renommages. - dfir_ntfs (Maxim Suhanov, open source) :
ntfs_parser --log <$MFT> <$LogFile> out.txtproduit les enregistrements décodés. - MFTECmd n'analyse pas
$LogFileà ce jour ; utilisez-le pour la$MFTet le$Jà corréler.
Conseils d'investigation
- Servez-vous de
$LogFilepour valider un timestomping présumé : unUpdateResidentValuesur$STANDARD_INFORMATIONdont 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'enregistrementBasicInfoChangedu journal USN. - Lors de suppressions massives (wipers, nettoyage après rançongiciel), les
DeallocateFileRecordSegmentet 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
$LogFilene 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
- Table de fichiers maîtres ($MFT)Fiche $MFT : enregistrements FILE, horodatages $SI et $FN, données résidentes, entrées supprimées, numéros de séquence, timestomping et MFTECmd.
- Journal USN ($UsnJrnl:$J)Fiche journal USN : $UsnJrnl:$J et $Max, champs, indicateurs Reason, référence parent, taille par défaut, rotation, fsutil et analyse avec MFTECmd.
- Attributs d'index $I30Fiche $I30 : index de dossiers NTFS ($INDEX_ROOT, $INDEX_ALLOCATION), enregistrements INDX, horodatages, entrées de slack de fichiers supprimés.
- Clichés instantanés de volume (VSS)Fiche clichés instantanés VSS : fichiers de stockage dans System Volume Information, copie sur écriture, suppression par rançongiciel, montage et analyse.
Termes du glossaire
- NTFSNTFS est le système de fichiers par défaut de Windows ; ses fichiers de métadonnées ($MFT, $LogFile, $UsnJrnl) sont des sources forensiques centrales.
- $STANDARD_INFORMATION et $FILE_NAMELes deux attributs NTFS qui portent chacun un jeu d'horodatages MACB ; les comparer est une technique clé pour détecter le timestomping.
- TimestompingUne technique anti-forensique qui modifie les horodatages d'un fichier pour masquer sa date de création, de modification ou d'accès.
- Anti-forensiqueTechniques visant à détruire, cacher ou falsifier des preuves : effacement de journaux, timestomping, wiping, suppression des clichés ou du journal USN.