TL;DR. 私がトリアージで実際に使う優先順位は以下のとおりです。Prefetch(有効時に最も強力)、BAM/DAM(Win10+ のユーザーごとの最終実行、犯罪的に過少利用)、AmCache(SHA-1 識別)、ShimCache(存在のアンカー)、UserAssist(Explorer 起動のみ)。単一のアーティファクトで案件は終わりません。三角測量しなければ、実行を主張するのはやめてください。
「このプログラムは、いつ、誰によって実行されたか?」を完璧に答える単一の Windows アーティファクトは存在しません。そう言うなら、まだ案件を十分に経験していないか、何かを売り込んでいるかのどちらかです。機能するのは、それぞれが質問の一部をカバーする短いリストのアーティファクトと、相互参照する習慣です。
ショートリスト
| アーティファクト | 場所 | 記録内容 | 実行に対する信頼性 |
|---|---|---|---|
| Prefetch | C:\Windows\Prefetch\*.pf | パス、実行回数、直近 8 回の実行時刻、ロードされたファイル | 非常に高い。プロセス開始時のみ書き込まれる。 |
| AmCache | C:\Windows\AppCompat\Programs\Amcache.hve | パス、SHA-1、サイズ、発行元、インストール + 初回実行 | 高い。明示的な実行タイムスタンプ。 |
| ShimCache | SYSTEM ハイブ …\Session Manager\AppCompatCache | パス、ファイル mtime | 中程度。存在を証明し、しばしば(必ずではない)実行を示唆する。 |
| UserAssist | NTUSER.DAT …\UserAssist(registry) | Explorer 経由のユーザーごとの GUI プログラム起動 | 高い、ただしユーザー起動のみ、ROT13 でエンコード。 |
| BAM / DAM | SYSTEM ハイブ …\bam\State と …\dam\State | バイナリごとのユーザーごとの最終実行時刻 | 非常に高い。Win10+、解析容易、しばしば見落とされる。 |
優先順位に従って読む
1. まず Prefetch。 .pf ファイルは Windows が持つ「これが実行された」レシートに最も近いものです。最大 8 回の実行時刻、総実行回数、ロードされたモジュールのリスト。ワークステーション SKU では Prefetch がデフォルトで有効です。Eric Zimmerman の PECmd が標準パーサです。自作したい場合は Prefetch parser がフォーマットをカバーしています。
2. 次に BAM / DAM。 Background and Desktop Activity Moderator はバックグラウンドアプリをスロットルし、SYSTEM ハイブの …\Services\bam\State と …\Services\dam\State 配下にユーザーごと、バイナリごとの「最終実行」タイムスタンプを保持します。Windows 10 と 11 で存在し、ノイズが少なく、読みやすい。元の IR チームの誰も引き出していなかった BAM 行で案件を終えたことがあります。
3. 3 番目に AmCache。 Prefetch が無効化されていることが多いサーバー、攻撃者が Prefetch フォルダを消去したホストで Prefetch を補完します。SHA-1 ハッシュがキラー機能です。ファイルが削除されているとき、ハッシュが VirusTotal と脅威インテリジェンスへの唯一のハンドルになります。ShimCache と AmCache を参照してください。
4. 4 番目に ShimCache。 存在のアンカーであり、実行主張ではありません。実行証明の投稿 で根拠を扱っています。
5. 最後に UserAssist。 Explorer 経由の対話的起動の強力な証拠です。シェル、スケジュールされたタスク、サービスから起動されたものには盲目です。「ユーザーがこれをクリックしたか?」が問いのときに有用。ROT13 を扱う任意のレジストリツールで読めます。registry parser はインラインでデコードします。
ハマるところ
- Prefetch が無効化されていることがある。 SSD、サーバー SKU、グループポリシーがすべて無効化します。空の Prefetch は不在の証拠ではありません。
- AmCache はローテートする。 古いエントリは年を経て排出されます。トリアージの早い段階でハイブを引きましょう。
- ShimCache タイムスタンプはファイル mtime。 実行時刻ではありません。フラッシュ時刻でもありません。ファイルの mtime です。腑に落ちるまで読み直してください。
- UserAssist は ROT13。 デコードは簡単ですが、不慣れな読者を引っ掛けます。
- BAM は過少利用。 モダンな Windows で「このユーザーがこのバイナリを実行したか?」のシグナルとしてはおそらく最もクリーンです。
ケース次第で知っておくべき他のアーティファクト:RecentFileCache(Win7 レガシー)、30 日間のネットワークおよびプロセスリソース使用については SRUM、シェル活動については ジャンプリスト と LNK ファイル、ファイルシステムレベルのタイムラインについては MFT と USN ジャーナル。
ツール
完全忠実なオフライン解析には Eric Zimmerman ツールスイート が事実上の標準です。AppCompatCacheParser、AmcacheParser、PECmd、RBCmd はすべて信頼できます。Velociraptor は艦隊規模のライブトリアージを扱います。ShimCache に特化していえば、Shimcache Parser は何もインストールせずブラウザで直接ハイブを読みます。
さらに読む
- Eric Zimmerman の AppCompatCacheParser:リファレンス ShimCache パーサ。
- Velociraptor ShimCache アーティファクト:稼働システムからの収集ロジック。
- Mehrnoush の ShimCache & AmCache forensic analysis:拡張されたケース駆動の記事。