ランサムウェアの次に多い DFIR の問いは 「ここから何か持ち出されたか?」 です。USN ジャーナルはその答えを最も低コストで得られる場所の一つ。あらゆる作成、リネーム、データ拡張を記録するため、USB 持ち出し、クラウド同期のステージング、そして定番の「temp フォルダに集めて zip 化」は、いずれもタイムラインに非常に独特な姿で現れます。
本記事はそうしたパターンを見つけ出すためのプレイブックです。
USB は簡単モード
ユーザがリムーバブル ボリュームを接続すると、Windows は新しいドライブ レターを割り当て、NTFS であればデバイス側のファイル システムが自分の $UsnJrnl を持ちます。とはいえ、調査対象システム から USB へ ファイルがコピーされる場合、ソース ボリュームのジャーナルも一連のアクセスとして読み取り側を記録します — そしてより重要なのは、USB のイメージを取得できれば、デスティネーション側のジャーナルが実ファイルの書き込みを示すことです。
通常手元にあるもの:
- ソース ディスクのジャーナル — 何が開閉されたか、一時ファイルは何か、を示す。
- レジストリ ハイブ — どの USB が接続されたかを特定する
SYSTEM\MountedDevices、NTUSER.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 インサイダー脅威リソース に挙げられたツールも同様のベースライン前提に立ちます。
実務で効くヒューリスティクス
複数の事例を経て、実際に効くヒューリスティクスは以下の通り:
- 作成バースト:単一のディレクトリで T 秒以内に N 件超の
FileCreate。ベースラインに合わせて調整可能。出発点は N=50、T=60。 - バースト後のアーカイブ:既知のアーカイブ拡張子(
.zip、.7z、.rar、.tar.gz)を持つ 1 件のFileCreateが作成バーストの数分以内に出現し、後続のDataExtendが数 MB に積みあがる。 - 境界をまたぐ一括リネーム:
RenameNewNameレコードで、新しい親パスが古いものと構造的に異なるもの(Documents→OneDrive、Desktop→Public等)。解決済みフル パスへの正規表現で表しやすい。 - 業務時間外のバースト:上記いずれかが、そのユーザの業務時間外で起きる。確認のため
Security.evtxのログオン イベントと突き合わせる。
本サイトのパーサは時間窓フィルタとレザン別フィルタを直接公開しており、1〜3 はそれぞれワン クリックで済みます。4 は CSV にエクスポートして時刻でピボットしてください。
見えないもの
実際に使われる持ち出し手口の一部は、有用な USN シグナルを まったく 生みません:
- メモリからの直接アップロード(ブラウザや PowerShell 経由)— データはディスクに着地しないため、ジャーナルに残りません。
- ネットワーク共有を読む — ソースは共有が乗るファイル システムで、しばしばあなたのものではありません。
- 持ち出し手段としての画面キャプチャ — 画像ファイルの作成が 1〜2 件あるだけ。
- 印刷 —
\Windows\System32\spool\PRINTERS\配下の活動だけが残り、これは独自の痕跡で、本質的に USN の領分ではありません。
より広い脅威モデルの視点には MITRE の Exfiltration タクティクスのページ があり、各テクニックとその残留情報を網羅します。USN が直接カバーするのは恐らく 3 分の 1 程度で、残りはイベント ログ、ネットワーク キャプチャ、ブラウザ履歴が必要です。
実例
実案件で持ち出しを示すためにエクスポートする CSV の典型像:
| 時刻 | 理由 | パス | 備考 |
|---|---|---|---|
| 19:42:11 | FileCreate Close | \Users\b\Temp\q3\ | 新規フォルダ |
| 19:42:13–14 | FileCreate × 84 | \Users\b\Temp\q3\*.xlsx | バースト |
| 19:44:08 | FileCreate Close | \Users\b\Temp\q3.zip | アーカイブ |
| 19:44:08–22 | DataExtend × ~40 | \Users\b\Temp\q3.zip | 187 MB まで成長 |
| 19:44:45 | RenameNewName Close | \Users\b\OneDrive\q3.zip | 同期へ移動 |
| 19:45:11 | FileDelete × 84 | \Users\b\Temp\q3\* | 掃除 |
このタイムラインは決定的証拠です。ジャーナルなしでは、レジストリ、Prefetch、シャドウ コピーから再構成する必要があり、作業量は 5 倍、確信度は半分です。