ShimCache は削除されたファイルを記録するか?

読了 1 分

TL;DR. はい。ShimCache エントリはファイルがディスク上に存在するか否かに関わらずレジストリに保持されます。バイナリを削除しても ShimCache エントリは削除されません。だからこそ、このアーティファクトは攻撃者がドロップして使用して消去したツールを捕えるのに非常に有用なのです。

キャッシュはレジストリ値にパスとタイムスタンプを保存します。その値はファイルシステムへのリンクを持ちません。NTFS が実行ファイルを解放しても、レジストリデータは動きません。これがこのアーティファクトを引く価値がある全理由であり、侵入の唯一の生存証拠であることがある全理由です。

短い答え:はい、記録します

ShimCache はパスに加えてファイルの $STANDARD_INFORMATION mtime を HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache の値に保存します。そのレコードはファイルシステムへのリンクを持ちません。実行ファイルが削除されると NTFS はファイルを解放します。レジストリ値は触れられません。新しいエントリによって追い出されるか(キャッシュは最大約 1,024 件を保持)、値自体がクリアされるまでエントリは残ります。

つまり、攻撃者が C:\Users\Public\ にドロップし、実行し、10 分後に削除したバイナリは、それがかつて占有していたフルパスを示すクリーンで読みやすい ShimCache エントリを依然として残せます。

なぜこれがフォレンジック的に強力か

削除ファイルエントリは、しばしば攻撃者ツーリングの唯一の生存証拠です:

  • 認証情報窃取後に削除された名前変更済み mimikatz.exe。
  • 抽出後に削除されたステージングアーカイブ。
  • ペイロードをインストールした後に自己削除したドロッパー。
  • 転送前にデータをバンドルするのに使用された 7z.exe のコピー。

ファイルは消えています。キャッシュパスはそれが存在したこと、どこに、そして(最終更新タイムスタンプ 経由で)どのビルドに結び付くかを教えてくれます。これは ShimCache でマルウェアを狩る と ランサムウェア調査 の背骨で、攻撃者は日常的にツールを消去します。

MFT と USN ジャーナル と相互参照してください。ジャーナルがまだ create-then-delete シーケンスを保持していれば、クリーンなタイムラインアンカーがあります。ごみ箱 はこれらをほとんど保持しません(バイパスします)が、念のため確認してください。

削除ファイルエントリはどのくらい長く生存するか?

2 つの制限が適用されます:

  • 追い出し。 キャッシュは約 1,024 エントリで境界付けされています。忙しいホストでは、大量の実行ファイル活動が古いエントリを押し出すことがあります。静かなサーバでは数ヶ月生存することがあります。
  • フラッシュタイミング。 新しいエントリはクリーンシャットダウン時にのみハイブに永続化されます。ホストが削除以降シャットダウンされていない場合、生き残ったエントリはまだメモリにのみあるかもしれません。RAM ダンプ から引いてください、メモリ抽出ガイド を参照。ストレージとフラッシュモデルは ShimCache の保存場所 でカバーされています。

何を証明しないか

削除ファイルエントリは、ファイルが存在し、そのホストで検査されたことを証明します。ファイルが実行されたことを証明せず、いつ削除されたかを教えません。タイムスタンプはファイルの mtime であり、削除時刻ではありません。強力な存在の証人として扱い、実行は Prefetch または AmCache で裏付けてください。ShimCache は実行を証明するか を参照してください。

ハイブ上のどのエントリがもはや存在しないファイルを指しているか確認するには、Shimcache Parser で解析し、ライブファイルシステム(またはフォレンジックイメージ)に対してパスを相互参照してください。すべてあなたのブラウザでローカルに動作します。

さらに読む

関連記事