ShimCache でマルウェアを狩る:ステップバイステップのワークフロー

読了 1 分

TL;DR. SYSTEM ハイブを解析します。ユーザー書き込み可能な場所(\AppData\、\Temp\)と予期しないシステムパスのパスでフィルタします。ヒットを AmCache のハッシュと Prefetch で裏付けます。ファイルが消えていれば SHA-1 でピボットします。ShimCache はハントリストに名前を載せます。単独で案件を終わらせるものではありません。

ShimCache がハンティングワークフローで位置を確立する理由は、それが生き残るからです。攻撃者がツールをドロップし、実行し、削除しても、パスはキャッシュに残ります。AmCache と Prefetch が消去されたか有効になっていなかったとき、ハイシグナルのピボットとなります。実際の使い方を紹介します。

5 ステップの ShimCache マルウェアハンティングワークフロー

5 ステップのワークフロー

  1. SYSTEM ハイブを収集する。 C:\Windows\System32\config\SYSTEM と兄弟の .LOG1、.LOG2 を取得するか、Velociraptor でライブ収集します。取得ガイド が安全な方法をカバーします。キャッシュはクリーンシャットダウンまでメモリにあることを覚えておき、ディスク上のハイブが最新だと仮定する前に ストレージタイミング を確認してください。
  2. フラットリストに解析する。 バイナリ Blob を (path, mtime, format) 行にデコードします。Shimcache Parser はこれをブラウザ内で行います。Eric Zimmerman の AppCompatCacheParser や Mandiant の Shim Cache Parser はオフラインで行います。
  3. 疑わしいパスでフィルタする。 ここで実際にハントが起こります。
  4. 実行を裏付ける。 ShimCache 行だけでは存在を証明しますが 実行は証明しません。興味深い行ごとに Prefetch、AmCache、または EVTX / Sysmon と組み合わせます。完全なマトリクスは プログラム実行アーティファクトリファレンス にあります。
  5. ハッシュでピボットする。 ディスク上のファイルが消えているとき、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 イベントログ、または 完全なプログラム実行タイムライン が必要です。キャッシュの仕事はハントリストに名前を載せることであり、調査を終わらせることではありません。

さらに読む

関連記事