TL;DR. SYSTEM ハイブを解析します。ユーザー書き込み可能な場所(\AppData\、\Temp\)と予期しないシステムパスのパスでフィルタします。ヒットを AmCache のハッシュと Prefetch で裏付けます。ファイルが消えていれば SHA-1 でピボットします。ShimCache はハントリストに名前を載せます。単独で案件を終わらせるものではありません。
ShimCache がハンティングワークフローで位置を確立する理由は、それが生き残るからです。攻撃者がツールをドロップし、実行し、削除しても、パスはキャッシュに残ります。AmCache と Prefetch が消去されたか有効になっていなかったとき、ハイシグナルのピボットとなります。実際の使い方を紹介します。
5 ステップのワークフロー
- SYSTEM ハイブを収集する。
C:\Windows\System32\config\SYSTEMと兄弟の.LOG1、.LOG2を取得するか、Velociraptor でライブ収集します。取得ガイド が安全な方法をカバーします。キャッシュはクリーンシャットダウンまでメモリにあることを覚えておき、ディスク上のハイブが最新だと仮定する前に ストレージタイミング を確認してください。 - フラットリストに解析する。 バイナリ Blob を
(path, mtime, format)行にデコードします。Shimcache Parser はこれをブラウザ内で行います。Eric Zimmerman のAppCompatCacheParserや Mandiant の Shim Cache Parser はオフラインで行います。 - 疑わしいパスでフィルタする。 ここで実際にハントが起こります。
- 実行を裏付ける。 ShimCache 行だけでは存在を証明しますが 実行は証明しません。興味深い行ごとに Prefetch、AmCache、または EVTX / Sysmon と組み合わせます。完全なマトリクスは プログラム実行アーティファクトリファレンス にあります。
- ハッシュでピボットする。 ディスク上のファイルが消えているとき、AmCache の SHA-1 が VirusTotal と脅威インテリジェンスの検索のためのハンドルです。ShimCache vs AmCache の内訳 で常に両方を引く理由を扱っています。
フィルタすべきパターン
実際のハントで一貫して最高スコアを獲得するパスパターン:
- ユーザー書き込み可能ディレクトリ。
\AppData\Local\Temp\、\AppData\Roaming\、\Users\Public\、\ProgramData\。ユーザーとサービスは管理者権限なしでここにバイナリをドロップでき、実際にそうします。 - システム書き込み可能だがそうあるべきでない場所。
C:\Windows\Temp\、C:\PerfLogs\、既知の Windows パスではないC:\Windows\配下のもの。PsExec サービスバイナリと名前付きパイプツールがここに頻繁に着地します。 - 二重拡張子と紛らわしいもの。
\System32\の外のsvchost.exe、異常な場所のlsass.exe、*.pdf.exe、*.docx.exe。AmCache のOriginalFileNameが通常その変装を破ります。 - ネットワーク共有とリムーバブルメディア。
\\?\UNC\、C:以外のドライブレター、\Device\HarddiskVolumeShadowCopy*。これらはステージングパスを示します。シェル履歴については LNK ファイル と相互参照してください。 - ワンショットツール。
psexec.exe、winrm.cmd、wmiexec.exe、mimikatz*.exe、Cobalt Strike アーティファクト。正規の管理ツールが悪用されます。無視するノイズではなく、クリアすべき所見として扱ってください。
最初のパスで正規表現に凝らないでください。mtime でソートし、最近のエントリを目で歩いてください。それがヒューリスティックフィルタが見逃すもの、フィルタリストを回避するために攻撃者がリネームしたバイナリも捕えます。
トリアージの経験則
シグナルをノイズから分離するクイックチェック:
- Prefetch の兄弟があるか? 実行のほぼ証明。
- AmCache が SHA-1 を保持しているか? 調べてください。クリーンな署名済みベンダーハッシュなら優先度を下げます。ユーザー書き込み可能なパス上の未知のハッシュならエスカレーションです。
- mtime が既知のインシデント時刻に怪しく近いか? アラートの数分以内に変更されたものは深く見る価値があります。mtime はファイルのプロパティであり、Windows が見た瞬間ではないことを覚えておいてください。
- 親ディレクトリがユーザーのプロファイルだがユーザーが管理者でないか? インストーラには妥当ですが、Sysmon Event ID 1 と昇格トークン付き Security 4688 で昇格指標を見てください。
- USN ジャーナル または MFT が関心の期間内の作成を確認しているか? ファイルがまだディスク上にあるとき強力な裏付けです。
このワークフローが教えてくれないこと
ShimCache 単独では、誰がどの引数でいつバイナリを起動したかは教えてくれません。それらには Sysmon、Security イベントログ、または 完全なプログラム実行タイムライン が必要です。キャッシュの仕事はハントリストに名前を載せることであり、調査を終わらせることではありません。
さらに読む
- Eric Zimmerman の AppCompatCacheParser:ゴールドスタンダードのオフラインパーサ。
- Velociraptor の
Windows.Registry.AppCompatCache:スケール時の収集。 - Mehrnoush の ShimCache & AmCache forensic analysis:ケース駆動の解説。