メモリダンプから ShimCache を抽出する

読了 1 分

TL;DR. ShimCache はメモリに存在します。ディスク上の SYSTEM ハイブには前回のクリーンシャットダウン時にフラッシュされたエントリのみが含まれます。実行中またはクラッシュしたホストからアクティブセッションのエントリを回収するには、RAM ダンプ に対して Volatility 3 の windows.shimcachemem を実行するか、Velociraptor の Windows.Registry.AppCompatCache アーティファクトでライブに引き出してください。

キャッシュは Windows 稼働中、揮発性メモリに存在します。クリーンシャットダウン時にのみ SYSTEM ハイブに書き込まれます。つまり、メモリイメージはしばしば現在のセッションの ShimCache エントリを見つけられる唯一の場所であり、それらはアクティブなインシデントで最も重要な可能性が高いエントリです。ストレージタイミング投稿 でその理由をカバーしています。

メモリコピーがディスクより重要なとき

インメモリキャッシュが欲しいのは次のとき:

  • インシデント以降ホストがクリーンシャットダウンされていない。大半のハードリブート、BSOD、強制電源断はディスク上の ShimCache を古いままにします。
  • アンチフォレンジックを疑う。ディスク上のハイブを編集した攻撃者はインメモリコピーには触れていないかもしれません。これはセッションごとに再構築されます。アンチフォレンジック検出 を参照。
  • 前回のフラッシュでディスク上のハイブから追い出されたエントリが必要。1,024 エントリの上限が古いエントリをローテートしますが、特定の条件下ではメモリにまだあるかもしれません。

Volatility 2 で

クラシックなプラグインは shimcachemem です。XP から Win10 までのメモリイメージに対して:

vol.py -f memory.raw --profile=Win10x64_19041 shimcachemem

SYSTEM ハイブのインメモリ表現内の AppCompatCache 構造を歩き、オフラインパーサと同じように (mtime, path) 行を出力します。プラグインソースは Volatility 2 リポジトリ にあります。

Volatility 3 で

Volatility 3 はこれを windows.shimcachemem として出荷します:

vol -f memory.raw windows.shimcachemem

プロファイル選択は不要です。Vol 3 は OS を自動的に判別します。Volatility 3 ドキュメント は Windows アーティファクトセットの残りと並んでプラグインを文書化しています。ダンプを開いたついでに、プロセス、ネットワーク接続、モジュールリストも引いてかまいません。RAM parser はより広範なメモリフォレンジックワークフローをカバーします。

Velociraptor で

単一のダンプを解析するより大規模に収集するには、Velociraptor の Windows.Registry.AppCompatCache アーティファクトがライブレジストリビューを介して、稼働中のエンドポイントから直接インメモリ ShimCache を読みます。シャットダウンを待つことなく、OS がシャットダウン時にフラッシュするはずだったのと同じキャッシュです。

2 つのビューを組み合わせる

実際にはしばしば両方を持つことになります:

  • Volatility または Velociraptor からのインメモリキャッシュ。
  • 同じホストの SYSTEM ハイブからのディスク上キャッシュ。

クリーンシャットダウンが発生していない瞬間、メモリコピーはディスクコピーのスーパーセットです。しかし、長いアップタイムの後すでにメモリから追い出されたエントリをディスクコピーに含むことがあります。両方を引き、(path, mtime) でデデュープし、和集合を ハンティングワークフロー に投入してください。

2 つのビューが同じスロットでパスやタイムスタンプで食い違うなら、それは改ざんの指標です。アンチフォレンジック を参照してください。

役立つ次のステップ

エントリを取得したら:

  • 抽出したハイブの迅速なオフライントリアージには Shimcache Parser を使用してください。ブラウザで動作し、アップロードなし。
  • 生 Blob を自分でデコードする場合は バイナリフォーマットリファレンス を参照してください。
  • メモリから回収したエントリがプログラム実行を意味すると主張する前に 実行証明 を参照してください。
  • メモリとディスクの両方からキャッシュが部分的に消去されている疑いがあるなら、pagefile.sys をカービングしてください。フラグメントがスワップに残っていることがあります。

さらに読む

関連記事