FAT(File Allocation Table)と NTFS は同じ問題 — どのクラスタがどのファイルに属するかを管理する — を解決しますが、その答え方はまったく異なります。フォレンジック アナリストにとって、両者の差は「ファイルがあったことは分かる」と「その正体がまだほぼ全部分かる」の差です。
FAT の仕組み
FAT は単一のテーブルを保持し、各エントリは 1 つのクラスタを次のいずれかにマップします。
- そのファイルの次のクラスタ
- チェーン終端マーカー
- 値
0(空きの意味)
別途、ディレクトリ エントリがファイル名と 先頭の クラスタを結びつけます。ファイルを読むときは連鎖をたどります。削除するときは、FAT がすべてのクラスタ エントリを 0 に戻し、ディレクトリ エントリ内のファイル名の先頭文字を 0xE5 に書き換えます。残りはそのまま残ります — ただし 残りだけ です。連鎖そのものが壊れているため、先頭クラスタと名前の一部は回収できても、後続クラスタへのリンクは失われています。
これが、FAT 上の断片化したファイルの復元ツールが苦戦する理由です。断片は見つけられても、つなぎ直せません。
NTFS の仕組み
NTFS はアロケーション テーブルをマスター ファイル テーブルに置き換えました — それは単一のファイルで、他のあらゆるファイルが少なくとも 1 つの 1,024 バイトのレコードによって記述されます。各レコードは型付き属性の小さなコンテナです: $STANDARD_INFORMATION、$FILE_NAME、$DATA、$INDEX_ROOT など。
決定的なのは、$DATA が単一の先頭クラスタを指すのではない点です。それはファイルのあらゆる断片を覆う(開始クラスタ、長さ)の対の並び、すなわち完全な ランリスト を保持します。ファイルを削除してもこのリストは壊れません。
フォレンジックへの含意
- 削除済みファイルは MFT スロットが再利用されるまでランリストを保持 — 激しく断片化したファイルでも再構成可能。
- レコードあたり 8 つのタイムスタンプ(SI に 4 つ、FN に 4 つ)が、FAT では得られないクロス チェックを提供。
- 常駐データ により、小さなファイルはデータ領域に触れずに復元できる。
- ジャーナル(
$UsnJrnl、$LogFile)が、FAT には存在しない監査トレイルを残す。
同じインシデントの FAT イメージと NTFS イメージのどちらを選べるなら、NTFS の方がほぼ常により多くの問いに答えてくれます。
それでも FAT を見る場所
FAT は死んでいません。次のような場所で今もよく目にします。
- 工場出荷時にフォーマットされた USB メモリ
- 多くの Windows インストールの EFI システム パーティション
- カメラや組み込みデバイスの SD カード
しかし、現代の Windows マシンの OS ボリュームを見ているなら、それは NTFS — そして始めるべき場所は $MFT です。