USN ジャーナルでランサムウェアの活動を検出する

バイナリが消えていても、ランサムウェアは $UsnJrnl:$J に非常に特徴的な痕跡を残します。探すべきパターンと、対応する reason コードの組み合わせを解説します。

著者: 約 2 分で読了

ランサムウェアは USN ジャーナルで読める最もクリーンな信号の一つです。オペレータが上流で何をしたか — 資格情報の窃取、ラテラルムーブメント、永続化のためのインプラント、シャドウコピーの削除 — はさておき、暗号化フェーズは均一で大量、かつ単調増加するパターンでファイルシステムに触れ、何か月後でも周囲のノイズから際立ちます。私が対応したオペレータは皆、キルチェーンのどこかを偽装しようとしてきましたが、5 分で数万ファイルを暗号化することを偽装する方法は、まだ誰も見つけていません。

本記事は、そのパターンを見つけるためのプレイブックです。前提として、すでに $J を取得済み でパースを終え、reason ビットマスク がもう謎ではないとします。

暗号化フェーズの典型パターン

現代のランサムウェアの大半 (LockBit 3.0、BlackCat/ALPHV、Royal、Akira、Conti 後のさまざまな派生、Play、Black Basta) は、ファイルごとに同じ三段階のレシピに従います。

  1. ファイルを読み取りで開く。
  2. 内容をその場で上書きするか、新しいファイルを横に書いて元を削除する。
  3. マーカー拡張子 (.locked.lockbit、8〜16 文字のランダム文字列、あるいは一部のファミリでは無し) を付けてリネームする。

これによりジャーナルにはファイルごとに次のように現れます。

DataOverwrite | Close
DataOverwrite | Close
...           ← 書き込みブロックごとに 1 つ
RenameOldName | Close   (旧: document.docx)
RenameNewName | Close   (新: document.docx.locked)

これが数分間で数千ファイルにわたって発生します。診断的な二つのシグナルは次のとおりです。

短いウィンドウ内における DataOverwrite のバースト。 通常の Windows 活動では、データベース以外のファイルに対する持続的な DataOverwrite はまれにしか発生しません。Office の保存、ブラウザキャッシュの圧縮、IDE のリビルドは 一時的な スパイクを生成しますが、ランサムウェアはホストの暗号化対象が尽きるかオペレータがバイナリを停止するまで下がらない単調な床を生成します。

新しい名前のサフィックスがきっちりクラスタリングされた大量の RenameNewName イベント。 暗号化中、RenameNewName の総アクティブファイルに対する比率が爆発的に増加します。クラスタシグネチャ — 同じ固定文字列、または同じ .{8} のランダムパターンが、ウィンドウ内のリネームの 80% 以上で見られる — が、ランサムウェアを正当なワークロードから分離する基準です。

これは主に MITRE ATT&CK の T1486 Data Encrypted for Impact に該当し、近接するジャーナル証拠が T1490 (システム復旧の妨害) と T1485 (データ破壊) をカバーします。

法廷でも通用する検出レシピ

パース済みのジャーナルを進める手順:

  1. DataOverwrite を分単位でヒストグラム化する。 分単位にバケットし、崖を探します。ベースラインの Windows ホストは分あたり一桁の DataOverwrite で動きます。暗号化はそれの 50〜500 倍まで上がり、そこに留まります。スプレッドシートで折れ線にするかピボットすれば、形状が瞬時に物語ります。
  2. RenameNewName イベントを新しい拡張子でクラスタリングする。 新しい名前の拡張子、または新しい名前に対する正規表現でグループ化します。あるウィンドウ内のリネームの 80% 以上が同一のサフィックスを共有するか、同じ固定長のランダムパターンにマッチするなら、それは暗号化ツールです。
  3. FileDelete | Close を「ステム同一・拡張子違い」の FileCreate とペアリングする。 ファミリによっては (LockBit の旧バリアントを含む) 暗号文を新しいファイルに書き、元を削除します。最近削除されたファイルとステムが一致する FileCreate を、同じ壁時計秒内で探してください。create の FileReferenceNumber が直前のリネームのそれと同じなら決定的です。
  4. $MFT を介して親ディレクトリを辿る。 影響を受けたファイルの親参照を解決します。ランサムウェアはユーザプロファイル、マップされたネットワークドライブ、Users\Public\ を掃きます。単一サブディレクトリに限定されたスコープは、Office の自動保存か、誤動作したバックアップツールである可能性がはるかに高いです。

本ページのパーサは reason ごとのフィルタリングを直接公開しています。ステップ 1 では DataOverwrite に、ステップ 2 では RenameNewName に設定します。ステップ 3 と 4 では CSV エクスポートとピボットテーブルが必要です。

実データではこう見える

私が対応した LockBit 3.0 案件からの匿名化抜粋:

2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  RenameOldName Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  RenameNewName Close   C:\Users\ana\Desktop\notes.docx.HLJkNskOq
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\quarterly.xlsx
...

ディレクトリ内のすべてのファイルが同じ壁時計秒内で暗号化されました。新しい拡張子は均一な 9 文字のランダム文字列です。ステップ 2 の強力なクラスタシグナルであり、LockBit 3.0 が暗号文をオペレータ固有のキーストリームに紐付けるためのマーカーです。

暗号化フェーズの前後

ジャーナルはバーストの前後の準備および後始末行動も捕捉します。

シャドウコピーの削除$J には直接見えません。VSS の状態は $WSC が管理する名前空間にあります。しかしオペレータが起動した vssadmin.exewmic.exe shadowcopy deletewbadmin.exe delete catalogbcdedit.exe /set の呼び出しはすべて \Windows\Temp\\Users\<u>\AppData\Local\Temp\ に一時ファイルを触ります。これらの FileCreate レコードは暗号化バーストの直前に現れます。実際のプロセスツリーには Sysmon イベント 1 を組み合わせてください。

ディスカバリ スキャン はジャーナルにはほぼ不可視です。読み取り専用のディレクトリ列挙は何も生成しません。しかしツールのドロップは記録されます。adfind.exePsExec.exeBloodHound の SharpHound 出力などのツールは、それぞれの作業ディレクトリ (通常 \ProgramData\\Users\Public\\Users\<u>\AppData\Local\Temp\) に FileCreate イベントを生成します。

身代金要求メモの配信。 現代のファミリはすべて、暗号化された各ディレクトリにメモを置きます。README.txtHOW_TO_DECRYPT.htmlrestore-my-files.txt、ファミリ固有の名前など。同じファイル名が多数の親ディレクトリで同じ分内に FileCreate されるのが、それらの大多数を捕捉できる雑な正規表現です。

暗号化前のステージング。 一部のオペレータは暗号化前に流出をステージングします — 流出検出の記事 を参照してください。暗号化バーストの直前 1 時間以内に .zip.7z.rar 拡張子のアーカイブ FileCreate イベントを探してください。

ジャーナルが教えてくれないこと

ジャーナルは変更を記録するもので、アクターは記録しません。暗号化バーストにユーザやプロセスを紐付けるには:

  • Security.evtx イベント 4663 (オブジェクトアクセス) — 事前に SACL の設定が必要で、ほぼ確実に設定されていません。
  • Microsoft-Windows-Sysmon%4Operational.evtx のイベント 11 (ファイル作成) とイベント 1 (プロセス作成) — Sysmon が展開済みであればこれがゴールドスタンダードです。
  • PrefetchAmCache — オペレータが削除した後でもランサムウェアバイナリ自体に到達できます。

より広範な対応のプレイブックには、CISA の #StopRansomware ガイド が決定版のリファレンスです。

ランサムウェアと正当なバーストの見分け方

誤ったフィルタを使うと、いくつかの実際のワークロードが表面的にランサムウェアに似て見えます。

BitLocker の初期変換 は持続的な DataOverwrite を生成しますが RenameNewName は出しません。ランサムウェアは常にリネームします。RenameNewName のカウントがフラットなら、それはランサムウェアではありません。

バックアップソフト (Veeam、Macrium、Acronis) はユーザの DocumentsDesktop ではなく、書き込み先ボリュームに DataOverwrite を生成します。ユーザとパスを相互確認してください。

Office の自動保存と Visual Studio のリビルド は数秒間スパイクして停止します。ランサムウェアは単調です。分単位のヒストグラムがそれを明らかにします。

ディスクイメージの復元 は大量のデータを書きますが、それはユーザプロファイルではなく \\?\Volume{...} のデバイスパスへの書き込みです。親ディレクトリの解決でそれを捕捉できます。

健全なベースラインでアラート 0 件を生成する検出ロジックは、仕様が不足しています。欲しいのは DataOverwrite レート、RenameNewName レート、同一拡張子クラスタリングの 組み合わせ であり、これらのうちどれか一つだけではありません。

参考資料

  • CISA、#StopRansomware ガイド — エンドツーエンドの対応プレイブックとして決定版です。
  • The DFIR Report の LockBit 3.0 のウォークスルー と同様の長文の侵入分析 — 実際のランサムウェア案件の壁時計リズムを示す最良の公開資料です。
  • Microsoft Defender Research の Ransomware-as-a-service — あなたのジャーナル証拠が実際に何を表しているかについての、オペレータ側の文脈として有用です。