MFT パーサー — ブラウザで動く NTFS $MFT 解析ツール

ブラウザ内で完結する MFT パーサーです。NTFS の $MFT ファイルをドロップし、すべてのレコードを検査できます — 削除済みエントリ、$STANDARD_INFORMATION と $FILE_NAME のタイムスタンプ、代替データ ストリーム、常駐データ — 1 バイトも送信しません。内部は WebAssembly、解析は omerbenamram/mft Rust クレートが担います。

この MFT パーサーについて

MFT パーサーとは、NTFS の Master File Table——すべての NTFS ボリュームの先頭にある $MFT ファイル——を読み取り、その 1,024 バイトのレコードをフォレンジック アナリストが扱える形式に変換するツールです。ファイル名、タイムスタンプ、親ディレクトリ、代替データ ストリーム、削除済みエントリ、レジデント データなどを取り出します。本サイトはそうしたパーサーの一つで、ブラウザ内で動作します。

$MFT ファイルを上のエリアにドロップしてください。ファイルはブラウザのメモリに読み込まれ、WebAssembly にコンパイルされた Rust クレート omerbenamram/mft によって解析され、ページネーション付きの検索可能なテーブルとして表示されます。アップロードは行いません——ドロップ前にネットワークを切断すれば確認できます。後続の分析向けに CSV エクスポートとトリアージ レポートも用意しています。

表示される内容

  • 割り当て済みか削除済みかにかかわらず、すべての MFT レコードと in-use フラグの状態。
  • 2 つのタイムスタンプ群——$STANDARD_INFORMATION と $FILE_NAME——により、 タイムストンピング を一目で検出できます。
  • 各レコードに紐付く代替データ ストリーム(Zone.Identifier を含む)。
  • 小さなファイルのレジデント $DATA バイト——削除後に復元できる唯一のバージョンであることが多くあります。
  • テーブル内の親参照を辿ることによる、完全なフル パス再構築。

他の MFT パーサーとの比較

Windows の分析ワークステーションでは、 MFTECmd が標準の CLI で、Timeline Explorer や KAPE が想定する CSV を出力します。Linux でのスクリプティングには、CLI とRust クレート omerbenamram/mft が JSON Lines を出力します。本ブラウザ パーサーは三番目の選択肢を埋めます——インストール不要、ブラウザが動くところならどこでも動作し、迅速なトリアージや、証拠をクラウド サービスに送信できない状況に適しています。詳しい比較は記事 MFT パーサー比較にあります。

解析する $MFT を入手する

$MFT は Windows が実行中はロックされています。コピーを抽出するには、ライブ システム上で fsutil を使うか、物理ドライブに対して FTK Imager を使うか、フル トリアージ収集には KAPE の MFT ターゲットを使います。手順は 実行中の Windows システムから $MFT を抽出する方法を参照してください。

フォレンジック FAQ

Master File Table とは何ですか?
Master File Table($MFT)は NTFS のメタデータ インデックスです。ボリューム上のすべてのファイルとディレクトリは、$MFT 内に少なくとも 1 つの 1,024 バイトのレコードを持ち、名前・属性・タイムスタンプ・データのディスク上の位置が記述されています。
MFT は何の略ですか?
MFT は Master File Table の略です。ディスク上では $MFT と書かれます — ドル記号は NTFS のメタデータ ファイルの慣例的な接頭辞です。
Master File Table にはどのファイル属性が保存されますか?
すべてのレコードは $STANDARD_INFORMATION(タイムスタンプ、DOS フラグ)、$FILE_NAME(名前と 2 組目のタイムスタンプ)、$DATA(ファイルの内容またはそのクラスタ ラン)を持ちます。レコードはさらに $ATTRIBUTE_LIST、$OBJECT_ID、$SECURITY_DESCRIPTOR、$INDEX_ROOT、$INDEX_ALLOCATION、$BITMAP、$REPARSE_POINT、$EA、$LOGGED_UTILITY_STREAM も持ち得ます。
Windows から $MFT を取り出すにはどうすればよいですか?
$MFT はすべての NTFS ボリュームの先頭ファイルで、Windows 稼働中はロックされています。FTK Imager、KAPE、または Windows コマンドの「fsutil」などのフォレンジック ツールで稼働中のシステムからコピーを取得するか、ディスク イメージから直接読み出してください。
破損した Master File Table はどう修復しますか?
まず何よりも先にディスクをイメージング してください。その後、イメージに対して chkdsk /f を実行する(速いが読めないレコードを破棄することがあります)か、生ボリュームから「FILE」シグネチャを走査してレコードを再構成する復旧ツールを使います(遅いがより多くの証拠を保全)。イメージング前にオリジナルで chkdsk を絶対に実行しないでください。
このツールは $MFT をどこかにアップロードしますか?
いいえ。解析は WebAssembly を用いた Web Worker 内で行われます。ファイルはブラウザのメモリに読み込まれるだけで、送信されることはありません。確認のためにネットワークを切断しても問題ありません。
なぜ一部のエントリが「削除済み」と表示されますか?
各 MFT レコードには「使用中」フラグがあります。ファイルが削除されるとフラグはクリアされますが、レコード自体は再利用されるまで $MFT に残ります。こうした削除済みエントリには、復元可能なファイル名・タイムスタンプ・場合によっては常駐データが残っていることがよくあります。
非常に大きな $MFT ファイルでも処理できますか?
解析は専用の Web Worker スレッドで実行されます。メモリ使用量はファイル サイズに比例します。複数ギガバイトの $MFT もモダン ブラウザで動作しますが、メモリへの初期読み込みには少し時間がかかります。