ShimCache でラテラルムーブメントを検知する

読了 1 分

TL;DR. ラテラルムーブメントのツール — PsExec、wmicat/schtasks、リモート PowerShell — はデスティネーションホスト(投下されたサービス binary)に、しばしばソースにも ShimCache エントリを残します。多数のホストで AppCompatCache を差分比較すると、攻撃者が辿った経路が浮かび上がります。

ShimCache は通常、単一ホストのアーティファクトとして語られます。しかし IR における真の強みはホスト横断です。触れたすべてのマシンで互換性のために検査される同一ツールは、相関可能な痕跡を残します。本稿はその痕跡の読み方です。

ShimCache 上でラテラルムーブメントはどう見えるか

リモート実行手法はデスティネーションに実行ファイルを投下または呼び出します。それぞれ特徴的なパスを残します。

手法デスティネーション側 ShimCache の手がかり
PsExec / SMB サービス実行C:\Windows\PSEXESVC.exe、または C:\Windows\ 内のランダム 8 文字のサービス binary
sc \\host create攻撃者命名のサービス binary、しばしば C:\Windows\\PerfLogs\
WMI(wmic process call createC:\Windows\Temp\ または書き込み可能ディレクトリ配下のペイロードパス
スケジュールタスク(schtasks /sタスクアクションの binary、しばしば C:\Users\Public\
リモート PowerShellpowershell.exe と、準備した投下済み .exe

C:\Windows\ 内のランダム名のサービス binary は、存在する中で最もシグナルの強い ShimCache 所見の一つです — ShimCache によるマルウェアハンティングでトリアージルールとして扱っています。

ソースホスト側

発信元ホストには、攻撃ツールそのものの ShimCache エントリが頻繁に現れます:PsExec.exe、対話的に使われた wmic.exe、カスタムムーバー、ポストエクスプロイトフレームワーク。「ホスト A 上のツール」と「ホスト B 上のサービス binary」を妥当な時間枠で対応付けることが、ラテラルムーブメント推論の核心です。

ホスト横断の差分ワークフロー

  1. スコープ内の各ホストから SYSTEM ハイブを収集する(SYSTEM ハイブの取得参照)。
  2. それぞれ解析し CSV にエクスポートする。
  3. パスを正規化し、共有された異常な binary を差分比較する — 複数ホストに現れる同じランダムサービス名や同じステージングパスが移動経路です。
  4. ホストを ShimCache の挿入順で並べる(タイムスタンプではない — それはファイルの mtime であってイベント時刻ではない)。
  5. 各ホップを Security 4624/4648、7045 サービスインストールイベント、AmCache で裏付ける。

これはプログラム実行の完全なタイムラインに自然に統合されます。報告のため手法を ATT&CK T1021(Remote Services)と T1570(Lateral Tool Transfer)にマッピングしてください。

注意点

ShimCache はクリーンシャットダウン時のみフラッシュされるため、稼働中のホストは決定的なエントリをまだ書き込んでいないかもしれません — メモリを確認してください(メモリダンプからの抽出)。またタイムスタンプ単独でホップを順序付けることは決してできません。挿入順とイベントログに依拠してください。値を消去する攻撃者は自らの手がかりを残します — ShimCache アンチフォレンジック参照。

ハイブを素早く差分比較するには、それぞれを Shimcache Parser で解析し CSV をエクスポートして比較してください — すべてクライアントサイドです。

さらに読む

関連記事