ShimCache タイムスタンプが実際に意味するもの(と意味しないもの)

読了 1 分

TL;DR. ShimCache タイムスタンプは、ファイルシステムからコピーされた実行ファイルの $STANDARD_INFORMATION 最終更新時刻です。実行された時刻ではありません。キャッシュされた時刻でもありません。ファイルのプロパティとして扱い、タイムライン上のイベントとして扱わないでください。

ShimCache 解析で最も一般的なミスは、タイムスタンプ列を「これが実行された時刻」と読むことです。そうではありません。アナリストがその解釈を顧客や規制当局の前に提示し、NTFS の実用知識を持つ誰かによってレビューでレポートが引き裂かれるのを目撃してきました。そのアナリストにはならないでください。

タイムスタンプが実際に何であるか

各エントリはファイルの $STANDARD_INFORMATION 最終更新時刻(SI mtime)を、Windows がエントリを記録した瞬間の NTFS ボリューム上の状態として保存します。ファイルシステム属性のストレートなコピーです。プロセス作成、モジュールロード、シャットダウンについては何も言いません。

直接の 3 つの帰結:

  • 昨年ビルドされ今日実行されたバイナリは昨年の日付を示します。
  • タイムスタンプを保持するツールでコピーされたファイルは元の mtime を保持し、コピー時刻ではありません。
  • 同じ署名済みバイナリを実行する 2 つのホストは同じタイムスタンプを示します。それはファイルのプロパティであり、いずれかのマシンのプロパティではないからです。

実行時刻ではない理由

Windows は互換性の理由でファイルを検査するときキャッシュエントリを追加します。実行と一致することが多いが、必ずしもそうではありません。一致するときでも、キャッシュは検査の瞬間ではなくファイルの mtime を保存します。したがって、タイムスタンプは「このファイルが最後にいつ変更されたか?」に答え、「いつ実行されたか?」には決して答えません。実行 vs 存在の区別は ShimCache はプログラムが実行されたことを証明するか で詳しく扱っています。

実際の実行時刻が必要なら、Prefetch の実行時刻、AmCache の初回実行、Security 4688、または Sysmon Event ID 1 が必要です。キャッシュはそれを与えられません。

タイムスタンプが依然として価値があるとき

イベント時刻としては弱いですが、アイデンティティアンカーとしては強いです:

  • 改ざん検出。 svchost.exe のようなシステムバイナリがホストのパッチレベルと一致しない mtime を示すなら、そのファイルは置き換えられました。改ざんがより困難な MFT の $FILE_NAME 属性と相互検証してください。
  • ビルド相関。 キャンペーンでコンパイルされたマルウェアは、しばしば被害者間で mtime クラスタを共有します。同じアクターへのインシデントのグループ化に有用です。
  • 順序付け、注意して。 1 つのホスト内で、エントリは挿入順序の大まかな順序で保存されます。活動の順序付けには絶対タイムスタンプより順序の方が信頼できます。しかし順序は時刻ではなく、挿入シーケンスは起動時にリセットされます。

攻撃者がそれを悪用する方法

ファイルシステム属性であるため、些細に偽造可能です。タイムストンピング(mtime を古典的な kernel32.dll 日付である 2009-07-14 に設定)はドロッパーを Windows システムファイルに紛れ込ませます。キャッシュは忠実にストンプされた値を記録します。そのため C:\Users\Public\ 内のパス上のクリーンな 2009 タイムスタンプ自体が警告サインです。アンチフォレンジックパターンは 攻撃者は ShimCache を消去できるか でカタログ化されています。

MFT の $FILE_NAME 属性は通常、$STANDARD_INFORMATION がストンプされた後でも真の作成時刻を保持します。MFT parser が比較を解説します。USN ジャーナル もほとんどの場合に元の作成イベントを捕えます。

タイムラインで正しく使う

ShimCache mtime をイベント時刻とは別の列に置いてください。アクションのようにメインタイムラインに統合してはいけません。Prefetch 実行時刻、AmCache インストール / 初回実行、Security 4688、Sysmon Event ID 1 のようにイベント時刻を保持するアーティファクトで順序付けを裏付けてください。完全な相互参照は Prefetch、AmCache、ShimCache:クイックリファレンス にあります。

生の値を自分で検査するには、SYSTEM ハイブを Shimcache Parser にドロップしてください。エントリごとに正確な保存された mtime をブラウザで表示し、アップロードはありません。

さらに読む

  • Mandiant の Caching Out the Val:アーティファクトのフォレンジック用途を定義したオリジナルの記事。
  • Eric Zimmerman の AppCompatCacheParser:その出力が同じ mtime セマンティクスを使うリファレンスパーサ。

関連記事