TL;DR. Prefetch は実行回数と実行時刻を伴う実行の真の証拠です。ShimCache はファイルが存在し検査されたことのみを証明します。「実行されたか、いつか?」が必要なら、まず Prefetch に手を伸ばしてください。Prefetch が無効化または消去されていれば、ShimCache はフォールバックの存在の証人となります。
両者はどちらも「Windows ホスト上のプログラム」を浮上させるため、頻繁に比較されます。同じ種類の証拠ではありません。互換的に扱えば、間違った結論を生み出します。直接対決です。
一目でわかる比較
| ShimCache | Prefetch | |
|---|---|---|
| 場所 | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache | C:\Windows\Prefetch\*.pf |
| 何を証明するか | ファイルが存在し検査されたこと | ファイルが実行されたこと |
| 実行回数 | なし | あり |
| 実行タイムスタンプ | なし(ファイル mtime のみ) | あり、直近 8 回の実行時刻 |
| 参照されたファイル | なし | あり、ロードされた DLL とデータファイル |
| 書き込まれるとき | クリーンシャットダウン時のみ | 実行後約 10 秒以内 |
| ワークステーション SKU でのデフォルト | あり | あり |
| サーバー SKU でのデフォルト | あり | しばしば無効化 |
| 容量 | 約 1,024 エントリまで | Win8+ で 1,024 個の .pf ファイル |
Prefetch が勝つところ
Prefetch はより強力な実行アーティファクトで、議論の余地はありません。各 .pf ファイルは最終実行時刻(Windows 8+ で最大 8 回まで)、総実行回数、プロセスがロードしたファイルのリストを与えます。「このバイナリはこれらの時刻に実行された」と主張するのに十分です。ShimCache はそれを決してできません。その唯一のタイムスタンプはファイルの最終更新時刻だからで、実行時刻ではありません。
ロードされたモジュールリストもトリアージにとっては金です。WINWORD.EXE プラス MSO.DLL プラス \AppData\ 内の怪しい DLL をロードした Word プロセスを示す .pf は、悪意のあるアドインロードの素早い読み取りです。Eric Zimmerman の PECmd が標準パーサです。自作したい場合は Prefetch parser がフォーマットをカバーします。
ShimCache が勝つところ
Prefetch には致命的な弱点があります。サーバー、SSD チューニングされたイメージ、そして攻撃者(EnablePrefetcher = 0)でしばしば無効化されます。クリーンアップツールによって積極的に削除されることもあります。対照的に ShimCache は常にオンで、実行する前にドロップされて削除されたバイナリを記録するのに十分敏感です。
Prefetch が空のとき、ShimCache はしばしば「このファイルはこのホストに触れたか?」に答えます。完全な推論は ShimCache はプログラムが実行されたことを証明するか にあります。
キャッシュはまた Prefetch が決して見ないファイルも捕えます:
- プロセス初期化を完了する前にクラッシュしたバイナリ。
- Windows が互換性のために検査したがユーザーが実際には起動しなかったファイル。
- Prefetch が
.pfを書き込むと決めるより前にネットワーク共有から実行された実行ファイル。
併用する方法
- 両方存在、パス一致。 強力な実行証拠。Prefetch の実行時刻をイベントタイムラインとして使用。ShimCache の mtime はファイルの同一性をアンカーするのみに使用。
- Prefetch のみ。 実行は証明されています。ShimCache は単にまだフラッシュされていない可能性があります(シャットダウン時にのみ書き込み、ShimCache の保存場所 を参照)。
- ShimCache のみ。 ファイルは存在し検査されました。裏付けなしに実行を主張しないでください。AmCache、BAM、EVTX を引いてください。完全なマトリクスは アーティファクトリファレンス にあります。
- どちらもなし、しかし実行を疑う。 アンチフォレンジックを探してください。Prefetch の削除と ShimCache フラッシュの欠落それ自体が所見です。ShimCache アンチフォレンジック でカバーされています。
何もインストールせずに ShimCache 側を読むには、SYSTEM ハイブを Shimcache Parser にドロップしてください。完全にブラウザ内。
さらに読む
- libyal の Windows Prefetch (PF) format notes:
.pfバイナリレイアウトのリファレンス。 - Mandiant の Caching Out the Val:ShimCache のフォレンジック役割を定義。