FAT と NTFS は同じ問題を解決します。どのクラスタがどのファイルに属するかを追跡することです。2 つのファイルシステムはその答え方が大きく異なり、その違いが、現代の Windows フォレンジックが現在のツールキットを持つ理由のすべてです。FAT では、ファイルが存在したことを証明できることが多いです。NTFS では、何が中にあったか、いつ触れられたか、誰がリンクしていたか、そしてそれに何が起こったかを通常証明できます。
FAT の仕組み、1 段落で
FAT は単一のテーブルを保持し、各エントリは 1 つのクラスタを、ファイル内の次のクラスタ、エンドオブチェーンマーカー、または「空き」を意味する値 0 のいずれかにマップします。別個のディレクトリエントリがファイル名をファイルの最初のクラスタとペアにします。ファイルを読むためにはチェーンをたどります。ファイルを削除するには、FAT はチェーン内のすべてのクラスタエントリを 0 にクリアし、ディレクトリエントリのファイル名の最初の文字を 0xE5 に置き換えます。データは残されますが、チェーン自体は破壊されます。最初のクラスタと部分的なファイル名は回復できますが、後続クラスタへのリンクは失われます。
最後の文が FAT 回復のすべての問題です。FAT 回復ツールはファイルの断片を見つけられます。ファイルがディスク上で断片化していると、それらを確実に再アセンブルできません。順次ファイル(カメラ、1 つの大きな WAV を書くオーディオレコーダー)は戻ってきますが、断片化したファイル(Office 関連のもの、時間をかけて書かれたもの、半分埋まったボリューム上のもの)は部分的に戻るか、まったく戻ってきません。
NTFS の仕組み
NTFS はアロケーションテーブルを Master File Table に置き換えます。1 つのファイルで、他のすべてのファイルがそれを記述する少なくとも 1 つの 1,024 バイトのレコードを持ちます。各レコードは型付き属性を持つ小さなコンテナです。$STANDARD_INFORMATION、$FILE_NAME、$DATA、$INDEX_ROOT、その他は 属性リファレンス に詳述されています。
決定的なのは、$DATA は「最初のクラスタ」を指してチェーンを別のテーブルに依存することはしません。完全な ランリスト を保持します。ファイルのすべての断片をカバーする(開始 LCN、長さ)のペアの系列です。ファイルを削除してもそのリストは壊れません。リストはレコード内にあり、レコードは他の何かがそのスロットを要求するまで残ります。
これが、フォレンジックにとってすべてを変えた唯一の設計決定です。
フォレンジックで何が変わるか
削除されたファイルはランリストを保持します。 MFT スロットが再利用されるまで、削除されたファイルのランリストを読み取り、そのクラスタへ(アロケータがまだ与えていない可能性がある)たどり、ファイルが激しく断片化していてもデータを再構築できます。FAT にはできません。
レコードごとに 8 つのタイムスタンプ、そのうち 2 つは改ざんに耐性があります。 $STANDARD_INFORMATION と $FILE_NAME はそれぞれ 4 つのタイムスタンプを持ちます。SI はあらゆる操作で動きます。FN は作成後安定です。両者は互いをクロスチェックします。これが浮かび上がらせる timestomping シグナルについては 4 つの MFT タイムスタンプ を参照してください。FAT は 1 つの作成タイムスタンプ、1 つの変更タイムスタンプ(DOS 時間形式で 2 秒粒度)、オプションのアクセス日付を保持します。クロスチェックなし、粒度なし、些細な timestomping への防御なしです。
小さなファイルのレジデントデータ。 およそ 700 バイト未満のデータのファイルは、MFT レコード内に完全に存在します。レコードを回復すれば、データ領域に触れずにファイルを回復できます。これが、1 か月前に削除され、データクラスタが上書きされた小さなテキストファイルが、依然として無傷で戻ってくる仕組みです。resident data を参照してください。
ハードリンクと ADS。 単一の MFT レコードは複数の $FILE_NAME 属性(ハードリンク)と複数の $DATA 属性(プライマリストリームに加えて 代替データストリーム)を持てます。これらからのフォレンジック証拠は豊富で、FAT には等価なものがありません。ADS は攻撃者がペイロードを隠す場所です。ハードリンクは、異なる親参照を持つ複数のディレクトリに同じファイルを表示させる方法であり、永続化メカニズムの追跡に有用です。
ジャーナル。 変更ジャーナル $UsnJrnl はすべてのメタデータ操作を記録します。作成、削除、リネーム、データ上書き、タイムスタンプと理由付き。$LogFile はトランザクションレベルの詳細を記録します。FAT はどちらも記録しません。
セキュリティディスクリプタ。 $Secure は ACL ストアを保持します。すべてのファイルは ID で ACL を参照します。フォレンジック上の関連性。誰がアクセスを持っていたか、いつ ACL が変更されたかを証明できます(SetSecurityInfo は USN reason SECURITY_CHANGE を書き込みます)。FAT にはファイルごとの権限の概念がありません。
リパースポイント。 symlink、junction、マウントポイント、OneDrive プレースホルダ、dedup スタブ、WSL POSIX メタデータはすべて $REPARSE_POINT 属性に存在します。FAT はこれらのどれも表現できません。リパースポイントに依存する最新の Windows 機能は FAT ボリュームでは単純に動作しません。
集計効果。同じインシデントの FAT イメージと NTFS イメージのどちらかを選べるなら、NTFS イメージはほぼ常により多くの質問に答えます。多くの場合、桁違いに。
それでも FAT に出会う場所
FAT は死んでいません。次の場所でまだ出会います。
- 工場でフォーマットされた USB フラッシュドライブ(大きいものは exFAT、小さいものは FAT32)。
- すべての UEFI Windows インストールの EFI システムパーティション(FAT32、約 100〜300 MB、Windows Boot Manager を含む)。
- カメラ、ドローン、組み込みデバイスからの SD カード。
- 古い産業用コントローラ、リムーバブルストレージのために依然として FAT をデフォルトにする組み込み Linux のロングテール。
- Windows と共有される一部の Mac フォーマット済みボリューム(exFAT)。
最新の Windows マシンの OS ボリュームについては、NTFS を見ています。ReFS は一部の Server インストールと Storage Spaces で現れますが、ブートドライブにはありません。あなたが欲しいアーティファクトは $MFT です。
exFAT について簡単に
exFAT は中間ケースです。Microsoft が FAT32 の実用 32 GB 制限には大きすぎるボリュームで FAT32 を置き換えるために使ったものです。クラスタチェーン付きの最新アロケーションテーブルですが、ジャーナル、MFT、ADS、ハードリンク、セキュリティディスクリプタはありません。フォレンジックの視点から、NTFS よりも FAT に近いです。タイムスタンプ(FAT より粒度が細かい)が得られ、クラスタチェーンが得られ、ディレクトリエントリが得られます。NTFS フォレンジックを価値あるものにする要素は何も得られません。
リムーバブルデバイス上の exFAT が重要だった場合、ツーリングは移行します。シグネチャカービングには PhotoRec と scalpel、わずかにある構造には Sleuth Kit の fsstat と fls、そしてアーティファクトセットが限定的であることへの率直な認識をレポートに含めます。
実務的な帰結
人々はよく、なぜ FAT フォーマットの USB スティックが同じインシデントの NTFS ボリュームに比べてほとんど何も得られなかったのかと尋ねます。正直な答えは構造的です。ファイルシステムは、インシデントが起こる何年も前にどの証拠を残すかを決めていました。フォーマットの選択自体がフォレンジック変数であり、Windows デスクトップからアーティファクトを取得するのに慣れている人は、exFAT のカメラカードに鋭く失望するでしょう。
選択を制御できるなら(コーポレートベースライン、ラボイメージングメディア)、NTFS を選んでください。制御できないなら(指定していないターゲットでのインシデントレスポンス)、制約を受け入れ、ツーリングをシフトしてください。
参考資料
- Microsoft, FAT vs NTFS の比較。公式の機能マトリックス。
- Brian Carrier, File System Forensic Analysis。FAT と NTFS を比較する章は依然として決定的なリファレンスです。
- exFAT 仕様(Microsoft)。リムーバブルメディアを頻繁に扱うなら一度読む価値があります。