← ブログに戻る

USN ジャーナルでデータ持ち出しと USB コピーを検出する

大量コピー、USB へのドロップ、ステージング ディレクトリは $UsnJrnl:$J に特徴的な形を残します。フィルタすべきパターンを、具体例とともに解説。

約 2 分で読了

ランサムウェアの次に多い DFIR の問いは 「ここから何か持ち出されたか?」 です。USN ジャーナルはその答えを最も低コストで得られる場所の一つ。あらゆる作成、リネーム、データ拡張を記録するため、USB 持ち出し、クラウド同期のステージング、そして定番の「temp フォルダに集めて zip 化」は、いずれもタイムラインに非常に独特な姿で現れます。

本記事はそうしたパターンを見つけ出すためのプレイブックです。

USB は簡単モード

ユーザがリムーバブル ボリュームを接続すると、Windows は新しいドライブ レターを割り当て、NTFS であればデバイス側のファイル システムが自分の $UsnJrnl を持ちます。とはいえ、調査対象システム から USB ファイルがコピーされる場合、ソース ボリュームのジャーナルも一連のアクセスとして読み取り側を記録します — そしてより重要なのは、USB のイメージを取得できれば、デスティネーション側のジャーナルが実ファイルの書き込みを示すことです。

通常手元にあるもの:

  • ソース ディスクのジャーナル — 何が開閉されたか、一時ファイルは何か、を示す。
  • レジストリ ハイブ — どの USB が接続されたかを特定する SYSTEM\MountedDevicesNTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2、セットアップのハードウェア イベント。
  • デスティネーション ボリュームのジャーナル — デバイスが NTFS でイメージできた 場合に限り — ここに実ファイルが見えます。

ソース側の最初のシグナルは、ユーザの documents/desktop/downloads 配下を狙う ファイル オープン が短いウィンドウに集中するクラスタです。オープンは常に USN レコードを生むわけではありませんが、その後に走るファイル システム キャッシュや AV スキャンが生むことが多いです(属性に触れると BasicInfoChange | Close をトリガします)。

攻撃者がまずデータを zip 化する場合は、より決定的なシグナルが現れます:.7z.zip.rar、ランダムな名前のファイルの FileCreate が temp パスで起こり、続いて目標サイズに達するまで DataExtend | Close レコードが持続的に並びます。

古典的なステージングからのコピー パターン

MITRE ATT&CK では T1074 Data Staged にマッピングされる、よく見るパターン:

FileCreate | Close   C:\Users\bob\AppData\Local\Temp\sales_q3\
FileCreate | Close   C:\Users\bob\AppData\Local\Temp\sales_q3\report.xlsx
DataExtend | Close   C:\Users\bob\AppData\Local\Temp\sales_q3\report.xlsx
FileCreate | Close   C:\Users\bob\AppData\Local\Temp\sales_q3\customers.csv
DataExtend | Close   ...
…
FileCreate | Close   C:\Users\bob\AppData\Local\Temp\sales_q3.zip
DataExtend | Close   ...           ← 大量、ファイルが大きくなる
FileDelete | Close   C:\Users\bob\AppData\Local\Temp\sales_q3\*  (掃除)

3 つのシグナルが同時に出ます:

  • 単一のステージング ディレクトリでの FileCreate のバースト。
  • 単一のアーカイブに対する DataExtend で、最終サイズがステージされたファイルの合計とほぼ一致。
  • アーカイブ作成直後のステージング ディレクトリ削除スイープ。

\AppData\Local\Temp\\Public\\Downloads\ などユーザ ツリー内の書き込み可能な場所での FileCreate をフィルタし、60 秒以内に 50 件超の時間的クラスタを探します。インサイダーの窃盗やインフォスティーラーのディスク上の挙動は、概ねこの姿をしています。

クラウド同期によるステージング

OneDrive、Dropbox、Google Drive — どれもローカルに同期フォルダを持ちます。そこに置かれたものはエージェントが拾った瞬間にアップロードされます。2 つのシグナル:

  • Desktop\Documents\Downloads\ から同期フォルダへの一括 RenameNewName。リネームの片割れが直前の親を示し、新しい親が同期フォルダです。
  • 同期フォルダ内ファイルへの DataExtend | Close で、ユーザ アプリの FileCreate を伴わないもの。同期エージェント自身がこれらを書くため、これらはダウンロードです — アップロードを見たいなら 作成 に注目します。

名前ベースでフィルタするなら、Windows での標準的な同期ディレクトリは \Users\<u>\OneDrive\\Users\<u>\Dropbox\\Users\<u>\Google Drive\ です。CISA の TLP-WHITE インサイダー脅威リソース に挙げられたツールも同様のベースライン前提に立ちます。

実務で効くヒューリスティクス

複数の事例を経て、実際に効くヒューリスティクスは以下の通り:

  1. 作成バースト:単一のディレクトリで T 秒以内に N 件超の FileCreate。ベースラインに合わせて調整可能。出発点は N=50、T=60。
  2. バースト後のアーカイブ:既知のアーカイブ拡張子(.zip.7z.rar.tar.gz)を持つ 1 件の FileCreate が作成バーストの数分以内に出現し、後続の DataExtend が数 MB に積みあがる。
  3. 境界をまたぐ一括リネーム:RenameNewName レコードで、新しい親パスが古いものと構造的に異なるもの(DocumentsOneDriveDesktopPublic 等)。解決済みフル パスへの正規表現で表しやすい。
  4. 業務時間外のバースト:上記いずれかが、そのユーザの業務時間外で起きる。確認のため Security.evtx のログオン イベントと突き合わせる。

本サイトのパーサは時間窓フィルタとレザン別フィルタを直接公開しており、1〜3 はそれぞれワン クリックで済みます。4 は CSV にエクスポートして時刻でピボットしてください。

見えないもの

実際に使われる持ち出し手口の一部は、有用な USN シグナルを まったく 生みません:

  • メモリからの直接アップロード(ブラウザや PowerShell 経由)— データはディスクに着地しないため、ジャーナルに残りません。
  • ネットワーク共有を読む — ソースは共有が乗るファイル システムで、しばしばあなたのものではありません。
  • 持ち出し手段としての画面キャプチャ — 画像ファイルの作成が 1〜2 件あるだけ。
  • 印刷\Windows\System32\spool\PRINTERS\ 配下の活動だけが残り、これは独自の痕跡で、本質的に USN の領分ではありません。

より広い脅威モデルの視点には MITRE の Exfiltration タクティクスのページ があり、各テクニックとその残留情報を網羅します。USN が直接カバーするのは恐らく 3 分の 1 程度で、残りはイベント ログ、ネットワーク キャプチャ、ブラウザ履歴が必要です。

実例

実案件で持ち出しを示すためにエクスポートする CSV の典型像:

時刻理由パス備考
19:42:11FileCreate Close\Users\b\Temp\q3\新規フォルダ
19:42:13–14FileCreate × 84\Users\b\Temp\q3\*.xlsxバースト
19:44:08FileCreate Close\Users\b\Temp\q3.zipアーカイブ
19:44:08–22DataExtend × ~40\Users\b\Temp\q3.zip187 MB まで成長
19:44:45RenameNewName Close\Users\b\OneDrive\q3.zip同期へ移動
19:45:11FileDelete × 84\Users\b\Temp\q3\*掃除

このタイムラインは決定的証拠です。ジャーナルなしでは、レジストリ、Prefetch、シャドウ コピーから再構成する必要があり、作業量は 5 倍、確信度は半分です。