「14:00 から 16:00 の間にこのコンピュータで何が起きたか」という問いの大半は USN ジャーナルから直接答えられます。レコードはシステム コール ログではなく、ユーザでタグ付けされてもいませんが、ほぼ同じだけ有用なものを持っています — マシンが触れたあらゆるファイルについて、操作単位の高頻度な記録です。パターンの心得が少しあれば、Office の保存、ブラウザ操作、IDE のリビルド、お昼休憩 といった粒度でユーザの行動を復元できます。
本記事はジャーナルを行動タイムラインとして読むためのフィールド ガイドです。
なぜ機能するか
USN ジャーナルはどのファイルがいつ、どう変わったかを記録します — そしてデスクトップ上のユーザ可視アクションの大半は、認識可能なファイル活動シグネチャを生みます。ユーザが Word の保存をクリックする;Word は一時ファイルに書き、アトミックにリネームし、結果に BasicInfoChange | Close。Chrome が新しいタブを開く;ディスク キャッシュが伸びる。IDE がリビルドする;数千のオブジェクト ファイルが生まれる。
これらのシグネチャは公式には文書化されていません — 学んで身につけるものです。以下はスタータ セットと、それらを扱いやすくするパーサのコントロールです。
実世界の Office
ユーザが Word、Excel、PowerPoint を保存すると次が見えます:
FileCreate | Close ~$<filename>.docx (ロック ファイル)
FileCreate | Close <filename>.tmp (アトミックな一時)
DataExtend | Close <filename>.tmp × N
RenameOldName | Close <filename>.docx
FileDelete | Close <filename>.docx
RenameNewName | Close <filename>.docx (元は <filename>.tmp)
FileDelete | Close ~$<filename>.docx
BasicInfoChange | Close <filename>.docx
~$ のロック ファイルは「ドキュメントが開いている」という Office のシグナル — その FileCreate と FileDelete が開閉のタイミングを示します。.tmp → .docx のアトミック リネームは保存そのもの。先頭の ~$ ファイルは ドキュメントが開いている間だけ存在する ため、思いのほか有用です。
ピボットの小技:ファイル名が ~$ で始まる FileCreate をフィルタすれば、ウィンドウ内でユーザが開いた Office ドキュメントを列挙できます。同名の FileDelete を差し引けば、取得時点で開きっぱなしのものが見えます(稼働中のマシンから取った フォレンジック イメージには、正しく閉じられなかったドキュメントのロック ファイルが残っていることがあります)。
ブラウザ活動
現代のブラウザはファイル システムに重いキャッシュを持ちます。Chrome と Edge は \Users\<u>\AppData\Local\<browser>\User Data\Default\Cache\Cache_Data\(または Code Cache\)、Firefox は \Users\<u>\AppData\Local\Mozilla\Firefox\Profiles\<id>\cache2\ を使います。
ブラウジング中に見えるもの:
- キャッシュ ディレクトリで
FileCreate | CloseとDataExtend | Closeが低レートで持続。 - LRU が古いエントリを追い出す
FileDelete | Closeがたまに混じる。 - インデックスが圧縮されるとき、キャッシュ ファイルの
RenameNewNameが数分ごとに発生。
キャッシュ書き込みのバーストは、メディア重めのサイトや SPA の訪問と相関します。静かな時間帯は、ユーザの離席や読み込みの長いページと相関します。
キャッシュのファイル名はどの URL が訪問されたかは示しません(これはブラウザの DB にあります)が、キャッシュ I/O の リズム はブラウジングを示します。ユーザの Downloads\ 配下のジャーナル FileCreate イベントと組み合わせれば、明確な意図的ダウンロードが特定できます。
コード活動
ユーザが開発者なら、IDE のリビルドは非常に特徴的なバーストを生みます:
- Webpack/Vite/Turbopack —
node_modules\.cache\やdist\で数百件単位のFileCreate。 - Visual Studio C++ —
Debug\やRelease\配下で.obj、.pdbのFileCreate。 - Cargo (Rust) — 増分ビルドは
target\debug\incremental\を強く触り、フル ビルドはtarget\debug\deps\を触ります。
node_modules\ での FileCreate の 5 分バーストに続き、dist\bundle.js への DataExtend の群れが来れば、「ビルドを回し、続いて dev サーバがリロードした」です。
ダウンロードとインストール
直接ダウンロードはこう見えます:
FileCreate | Close \Users\<u>\Downloads\<file>.crdownload (Chrome)
DataExtend | Close \Users\<u>\Downloads\<file>.crdownload × N
RenameNewName | Close \Users\<u>\Downloads\<file>
BasicInfoChange | Close \Users\<u>\Downloads\<file>
.crdownload、.part、.download の拡張子はそれぞれ Chrome、Firefox、Edge。最後のアトミック リネームでファイルが「完了」状態になります。
新規プログラムのインストールは典型的に、Downloads 内のインストーラ .exe/.msi の FileCreate に続いて、\Program Files\、\Program Files (x86)\、または \Users\<u>\AppData\Local\Programs\ 配下での FileCreate のバースト。分単位のヒストグラムでインストールは自明に特定できます。
まとめ:1 日のタイムライン
「今日ユーザは何をしたか」レポートのレシピ:
- その日のユーザの解析済みジャーナルを引き出す。
\Users\<u>\配下のレコードに絞り、システム ノイズを取り除く。 - 10 分単位のバケットごとに、
FileCreate、DataExtend、BasicInfoChangeの件数を計算。 - 3 系列をプロット。形が活動を示します:
- 多くの create + extend:内容の作成/保存。
BasicInfoChangeだけが多い:閲覧、スクロール、軽い編集。- extend が多く create が少ない:大きなダウンロードやメディア再生。
Cache\ディレクトリで持続的な create:閲覧。node_modules\/Debug\/target\で持続的な create:コーディング。
- 各バケットで最も多いファイル名を確認してピークに注釈をつける。Office のファイル名は良いアンカー、キャッシュのファイル名は基本無視可。
本サイトのパーサはタイムライン コンポーネント上で分単位ヒストグラムを公開しています — バーをクリックするとテーブルがそのウィンドウに絞り込まれ、コードを書かずに上記ワークフローが再現できます。
落とし穴
- バックアップと AV スキャン はボリューム規模の
BasicInfoChangeバーストを生み、表面上ユーザ活動に似て見えます。たいていスケジュールに従い、ユーザだけでなくあらゆるディレクトリを巡るため、見分けて除外しやすいです。 - 同期エージェント(OneDrive、Dropbox)はユーザ活動 のように見える ジャーナル トラフィックを生みますが、エージェント自身の作業です。同期フォルダ 外 のパスのレコードに絞り、ユーザ起点の作業に集中させます。
- バックグラウンド インデクサ(
SearchIndexer.exe)は\Users\<u>\AppData\Roaming\Microsoft\Windows\Recent\や\ProgramData\Microsoft\Search\のファイルを触ります — システム ノイズとして整理しやすいです。
次に進むなら
- ジャーナル活動を Security/Sysmon のイベントと組み合わせる場合は Microsoft Learn の Windows イベント リファレンス。
- Velociraptor のアーティファクト パック — 多くのコミュニティ アーティファクトが上記のような journal + MFT 相関を使っています。
- 大規模で動かすタイムラインなら、Plaso (
log2timeline) が解析済みジャーナルを取り込み、他のあらゆる Windows タイムライン アーティファクトと統合した「スーパー タイムライン」を作れます。
ジャーナル単体は本格的なスーパー タイムラインの代用にはなりません。しかし 80% の調査では、「14:00 から 16:00 の間にユーザは何をしていたか」は $J と $MFT だけで答えられます — それらを本ページにドラッグするのと同じだけの時間で。