ほとんどのランサムウェアは、ディスク上でほぼ同じことをします: ファイルを列挙し、1 つずつ読み、暗号化されたコピーを隣に書き、元ファイルを削除する。そのすべてのステップが $MFT に現れます。
見抜くべき 3 つのパターン
大量の拡張子変更。既存ファイルと同じ親ディレクトリ・同じベース名なのに拡張子だけ違う新しいファイルが出現します。report.docx が report.docx.locked、report.encrypted、report.{guid} になる、といった具合です。短い時間枠の中でこうしたペアが何件現れるかを数えるのは、$MFT で最も明瞭なランサムウェア指標の 1 つです。
数秒の中に固まる SI 作成タイムスタンプの連射。通常のユーザー活動は 1〜2 個ずつしかファイルを作りません。ランサムウェアは何百、何千と作ります。SI 作成タイムスタンプをヒストグラムにすれば、攻撃の窓は縦のスパイクとして浮かび上がります。
暗号化済みのコピーと対になる、削除された元ファイル。report.docx.locked ごとに、対応する report.docx の「使用中」フラグが落ちていることが多いです。削除済みレコードは再利用されるまで $MFT に残るため、そのスロットから元ファイルの名前・サイズ・タイムスタンプを取り戻せます。
$MFT が語らないこと
$MFT は 何が と いつ を確定します。どのプロセスが書いたかは語りません。それには以下が必要です。
- どの実行体が走ったかの裏取り — Prefetch と ShimCache
- 作成・削除・改名の順序を知るための
$UsnJrnl - マシンがまだ生きていてプロセスが常駐していればメモリ フォレンジック
それでも、$MFT だけで「攻撃はいつ始まったか」「どこまで広がったか」「どのファイルが触られたか」という最も急ぎの問いに答えられることが多いのです。
身代金要求ノート ファイルについて一言
ほとんどのファミリーは、被害ディレクトリごとに HOW_TO_DECRYPT.txt や README_FOR_DECRYPT.html といった名前のノートを置きます。これらのノートは内容も大きさも同じで、作成時刻も密集しています。多数のディレクトリにまたがって「同じサイズの多数のテキスト ファイル」を $MFT でたどると、名前パターンに頼るより早く見つかることがよくあります。