← ブログに戻る

$MFT はランサムウェア攻撃をどう暴くか

· 読了 1 分

ほとんどのランサムウェアは、ディスク上でほぼ同じことをします: ファイルを列挙し、1 つずつ読み、暗号化されたコピーを隣に書き、元ファイルを削除する。そのすべてのステップが $MFT に現れます。

見抜くべき 3 つのパターン

大量の拡張子変更。既存ファイルと同じ親ディレクトリ・同じベース名なのに拡張子だけ違う新しいファイルが出現します。report.docxreport.docx.lockedreport.encryptedreport.{guid} になる、といった具合です。短い時間枠の中でこうしたペアが何件現れるかを数えるのは、$MFT で最も明瞭なランサムウェア指標の 1 つです。

数秒の中に固まる SI 作成タイムスタンプの連射。通常のユーザー活動は 1〜2 個ずつしかファイルを作りません。ランサムウェアは何百、何千と作ります。SI 作成タイムスタンプをヒストグラムにすれば、攻撃の窓は縦のスパイクとして浮かび上がります。

暗号化済みのコピーと対になる、削除された元ファイルreport.docx.locked ごとに、対応する report.docx の「使用中」フラグが落ちていることが多いです。削除済みレコードは再利用されるまで $MFT に残るため、そのスロットから元ファイルの名前・サイズ・タイムスタンプを取り戻せます。

$MFT が語らないこと

$MFT何がいつ を確定します。どのプロセスが書いたかは語りません。それには以下が必要です。

  • どの実行体が走ったかの裏取り — Prefetch と ShimCache
  • 作成・削除・改名の順序を知るための $UsnJrnl
  • マシンがまだ生きていてプロセスが常駐していればメモリ フォレンジック

それでも、$MFT だけで「攻撃はいつ始まったか」「どこまで広がったか」「どのファイルが触られたか」という最も急ぎの問いに答えられることが多いのです。

身代金要求ノート ファイルについて一言

ほとんどのファミリーは、被害ディレクトリごとに HOW_TO_DECRYPT.txtREADME_FOR_DECRYPT.html といった名前のノートを置きます。これらのノートは内容も大きさも同じで、作成時刻も密集しています。多数のディレクトリにまたがって「同じサイズの多数のテキスト ファイル」を $MFT でたどると、名前パターンに頼るより早く見つかることがよくあります。

外部リソース