TL;DR. ShimCache はファイルがディスク上に存在したことを証明します。AmCache は実行されたことを証明し、SHA-1 で識別します。ShimCache はクリーンシャットダウン時のみフラッシュされます。AmCache は継続的に書き込みます。両方を取得してください。両者は代替ではなく、共同証人です。
私がオンボーディングしたすべてのジュニアアナリストが最初の週に同じ質問をします。「AmCache の方が優れているなら、なぜまだ ShimCache を引くのか?」答えは、両者は異なるイベントを異なる時刻に、異なる失敗モードで記録するからです。代替として扱えば、最初の技術レビューで崩壊するレポートを書くことになります。
一目でわかる比較
| ShimCache | AmCache | |
|---|---|---|
| レジストリの場所 | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache | C:\Windows\AppCompat\Programs\Amcache.hve |
| 容量 | 約 1,024 件まで | 数千件、固定上限なし |
| エントリあたりのデータ | パス、ファイル mtime、(レガシー)実行フラグ | パス、SHA-1、サイズ、発行元、インストール日など多数 |
| 書き込みタイミング | クリーンシャットダウン時のみ | 継続的、および Appraiser タスク実行時 |
| ハードリブート後の生存 | 不可、直近エントリは失われる | 可、すでにディスク上 |
| 最適用途 | ファイルがディスク上に存在したことの証明 | ファイルが実行されたことの証明とハッシュによる識別 |
ShimCache が勝つとき
キャッシュは実行ではなく、検査時に発火します。その感度のおかげで、攻撃者が短時間ドロップしてからすぐに消去したファイルに対しては、より優れた証人となります。14:33 に C:\Users\Public\ に着地し 14:35 に削除されたバイナリは、その 2 分間に Windows が何らかの理由で触れていれば、ShimCache に現れる可能性があります。
キャッシュはまたファイルの $STANDARD_INFORMATION mtime を保持します。このタイムスタンプは実行時刻ではありません。これはファイルのプロパティであり、メタデータを保持するリネームやコピーでも生き残ります。ホスト間で関連ビルドをクラスタリングするには有用です。タイムライン上でイベントを順序付けるのには使えません。これについては ShimCache タイムスタンプが実際に意味するもの で説明しています。
AmCache が勝つとき
「このバイナリは実際に実行されたか、それも正確にどのバイナリか?」と AmCache に尋ねると、本物の答えが返ってきます。Amcache.hve 配下の各 InventoryApplicationFile エントリには SHA-1 ハッシュ、ファイルサイズ、発行元、署名状態、ファイルごとの LastWrite(「Appraiser がこれに気付いたとき」の代理)が含まれます。これだけあれば、VirusTotal、脅威インテリジェンス、あるいは資産内の他のホストに展開するのに十分です。ディスク上のファイルがとうに消えていても可能です。
永続化モデルでも勝ります。AmCache は compattelrunner.exe がスケジュールおよびインストーライベントでフラッシュします。ハードリブートや BSOD は ShimCache のように直近の活動を音もなく破壊しません。Amcache.hve と Amcache.hve.LOG1、Amcache.hve.LOG2 を取得して、進行中のトランザクションを再生してください。
併用する
異なる盲点を持つ共同証人として扱ってください。
- 両方存在、パス一致。 強力な実行の証拠です。AmCache をハッシュベースの同一性に、ShimCache をある時点でそのパスにファイルが存在したことの確認に使います。
- ShimCache のみ。 ファイルは存在しました。実行は証明されていません。Prefetch、EVTX、または BAM/DAM による裏付けを探してください。
- AmCache のみ。 活動以降ホストがクリーンシャットダウンしていません。ShimCache がフラッシュされなかったのです。マシンが稼働中なら RAM ダンプ を取得してください。インメモリの ShimCache がそこにあります。
- どちらも存在せず、しかし活動が疑われる。 Appraiser タスク が動作したか確認してください。Compatibility Appraiser が無効化されていると AmCache ハイブが空のように見えます。
技術的なレイアウトの詳細は Windows 10/11 バイナリフォーマット解説 を参照してください。今すぐ何もインストールせずにハイブを解析するなら、Shimcache Parser にドロップしてください。完全にブラウザ内で動作します。
さらに読む
- Eric Zimmerman の AppCompatCacheParser:リファレンスとなる C# 実装。
- Velociraptor の
Windows.Registry.AppCompatCacheアーティファクト:稼働システムからの収集ロジック。 - Mehrnoush の ShimCache & AmCache forensic analysis:ケース駆動の解説。