
Analyseur pour $LogFile sur NTFS
Fonctionnalités Décoder et extraire les enregistrements $LogFile et les entrées de transaction. Décoder les modifications d'attributs NTFS. Résoudre optionnellement toutes les informations de liste de dataruns disponibles dans $LogFile. Option : « Reconstruct data runs ». Récupérer les transactions depuis l'espace résiduel (slack space) au sein de $LogFile. Choisir de reconstruire les en-têtes manquants ou endommagés des transactions trouvées dans le slack. Option : « Rebuild header ». Affiner optionnellement le résultat avec une valeur de niveau d'erreur LSN. Option : « LSN error level ». Journalise en csv et importe dans une base de données sqlite avec plusieurs tables. Importer optionnellement la sortie csv de mft2csv dans la base de données. Choisir parmi 6 formats d'horodatage différents. Choisir la précision de l'horodatage : None, MilliSec et NanoSec. Choisir le séparateur de précision à la milliseconde. Choisir le séparateur de précision à la nanoseconde. Choisir l'ajustement de région pour les horodatages. Par défaut, les horodatages sont présentés en UTC 0.0. Choisir le séparateur de sortie. Option : « Set separator ». Sortie UNICODE ou ANSI configurable. Option « Unicode ». Taille d'enregistrement MFT configurable (1024 ou 4096). Option « MFT record size ». Décoder optionnellement des transactions individuelles ou des transactions partielles (fragment). Option pour reconstruire les RCRD à partir d'une ou plusieurs transactions (fragments). Option pour configurer un $LogFile endommagé. Utile avec des RCRD extraits comme entrée. Option pour ignorer les fixups (pour un $LogFile endommagé, typiquement extrait de la mémoire). Sortie verbeuse détaillée dans debug.log. Liste configurable de lsn séparés par des virgules pour déclencher des informations ultra-verbeuses sur des transactions spécifiques dans debug.log. Configuration pour OS 32 bits. Configuration pour l'extraction de données binaires des mises à jour de données résidentes. sql autogénéré pour importer la sortie dans une base de données MySql. Option pour ignorer tout ce qui concerne sqlite3 afin d'accélérer l'analyse totale. Mode ligne de commande optionnel. Prend en charge errorlevel adapté aux scripts batch.
Contexte NTFS est conçu comme un système de fichiers récupérable. Cela se fait par la journalisation de toutes les transactions qui modifient la structure du volume. Ainsi, toute modification d'un fichier sur le volume nécessitera que quelque chose soit également journalisé dans $LogFile, afin de pouvoir être annulé en cas de défaillance du système à tout moment. Par conséquent, beaucoup d'informations sont écrites dans ce fichier, et comme il est circulaire, cela signifie que les nouvelles transactions écrasent les enregistrements plus anciens du fichier. Ainsi, la quantité de données historiques pouvant être récupérées à partir de ce fichier est quelque peu limitée. Là encore, cela dépendrait du type de volume et de la taille du $LogFile. Sur le disque système d'un système fréquemment utilisé, vous n'obtiendrez probablement que quelques heures d'historique, alors qu'un disque externe/secondaire contenant des fichiers de sauvegarde contiendra probablement plus d'informations historiques. Et un fichier de 2 Mo contiendra bien moins d'historique qu'un fichier de 256 Mo. Donc dans quelle plage de taille ce fichier peut-il être configuré ? De 256 Ko et plus. Configurer la taille à 2 Go peut se faire ainsi : « chkdsk D: /L:2097152 ». L'impact d'un fichier journal de grande taille sur les performances dépasse le cadre de ce texte. Le définir en dessous de 2048 n'est normalement pas possible. Cependant, c'est possible en patchant untfs.dll : http://code.google.com/p/mft2csv/wiki/Tiny_NTFS
Intro Ce parseur décodera et extraira de nombreuses informations de transaction depuis le $LogFile sur NTFS. Plusieurs csv sont générés ainsi qu'une base de données sqlite nommée ntfs.db contenant toutes les informations pertinentes. La sortie est extrêmement détaillée et de très bas niveau, ce qui signifie qu'elle nécessite de bonnes connaissances NTFS pour être comprise. Les types de transactions Redo actuellement traités avec un décodage de sortie significatif sont :
InitializeFileRecordSegment CreateAttribute DeleteAttribute UpdateResidentValue UpdateNonResidentValue UpdateMappingPairs SetNewAttributeSizes AddindexEntryRoot DeleteindexEntryRoot AddIndexEntryAllocation DeleteIndexEntryAllocation WriteEndOfIndexBuffer SetIndexEntryVcnRoot SetIndexEntryVcnAllocation UpdateFileNameRoot UpdateFileNameAllocation SetBitsInNonresidentBitMap ClearBitsInNonresidentBitMap OpenNonresidentAttribute OpenAttributeTableDump AttributeNamesDump DirtyPageTableDump TransactionTableDump UpdateRecordDataRoot UpdateRecordDataAllocation CompensationlogRecord
La liste des attributs actuellement pris en charge : $STANDARD_INFORMATION $ATTRIBUTE_LIST $FILE_NAME $OBJECT_ID $SECURITY_DESCRIPTOR $VOLUME_NAME $VOLUME_INFORMATION $DATA $INDEX_ROOT $INDEX_ALLOCATION $REPARSE_POINT $EA_INFORMATION $EA $LOGGED_UTILITY_STREAM
Donc, en gros, tous les attributs sont pris en charge.
Explication des différentes sorties générées :
LogFile.csv : Le csv principal généré par le parseur.
LogFile_DataRuns.csv Les informations d'entrée nécessaires à la reconstruction des dataruns
LogFile_DataRunsResolved.csv La sortie finale des dataruns reconstruits
LogFile_INDX_I30.csv Tous les enregistrements d'index extraits et décodés (IndexRoot/IndexAllocation)
LogFileJoined.csv Identique à LogFile.csv, mais avec les informations de nom de fichier jointes depuis le $UsnJrnl ou le csv de mft2csv.
MFTRecords.bin $MFT factice recréé à partir des enregistrements MFT trouvés dans les transactions InitializeFileRecordSegment. On peut utiliser mft2csv sur celui-ci (pensez à configurer correctement « broken MFT » et « Fixups »).
LogFile_lfUsnJrnl.csv Enregistrements pour le $UsnJrnl qui ont été décodés au sein de $LogFile
LogFile_UndoWipe_INDX_I30.csv Toutes les opérations d'annulation pour l'effacement des index de répertoire (INDX).
LogFile_AllTransactionHeaders.csv Tous les en-têtes des transactions décodées.
LogFile_BitsInNonresidentBitMap.csv Toutes les opérations SetBitsInNonresidentBitMap décodées.
LogFile_DirtyPageTable32bit.csv et LogFile_DirtyPageTable64bit.csv Toutes les entrées de chaque opération DirtyPageTableDump décodée pour les OS 32 bits et 64 bits.
LogFile_Mft_ObjectId_Entries.csv Attributs $ObjectId décodés.
LogFile_ObjIdO.csv Tous les décodages du fichier système $ObjId:$O.
LogFile_OpenAttributeTable.csv Toutes les entrées de chaque opération OpenAttributeTableDump décodée.
LogFile_QuotaO.csv Tous les décodages du fichier système $Quota:$O.
LogFile_QuotaQ.csv Tous les décodages du fichier système $Quota:$Q.
LogFile_RCRD.csv Tous les en-têtes des enregistrements RCRD décodés.
LogFile_ReparseR.csv Tous les décodages du fichier système $Reparse:$R.
LogFile_SecureSDH.csv Tous les décodages du fichier système $Secure:$SDH.
LogFile_SecureSII.csv Tous les décodages du fichier système $Secure:$SII.
LogFile_SecurityDescriptors.csv Descripteurs de sécurité décodés. La source peut provenir de $SECURITY_DESCRIPTOR ou de $Secure:$SDS.
LogFile_SlackAttributeNamesDump.csv Toutes les entrées des transactions AttributeNamesDump décodées trouvées dans l'espace résiduel.
LogFile_SlackOpenAttributeTable.csv Toutes les entrées des transactions OpenAttributeTableDump décodées trouvées dans l'espace résiduel.
LogFile_TransactionTable.csv Transactions TransactionTableDump décodées.
LogFile_Filenames.csv Tous les noms de fichiers résolus avec MftRef, MftRefSeqNo et Lsn.
LogFile_TxfData.csv Données décodées de $DATA:$TXF_DATA dans $LOGGED_UTILITY_STREAM.
LogFile_UpdateFileName_I30.csv Tous les décodages de UpdateFileNameRoot et UpdateFileNameAllocation pour les opérations redo et undo.
LogFile_CompensationlogRecord.csv Tous les décodages de CompensationlogRecord. Non pertinent pour nt5.x.