オフラインの ShimCache 解析のために Windows SYSTEM ハイブを取得する方法

読了 2 分

TL;DR. Windows 稼働中は C:\Windows\System32\config\SYSTEM を copy できません。ファイルはロックされています。稼働ホストでは FTK Imager、KAPE、reg save、VSS スナップショット、または Velociraptor を使用してください。デッドボックス作業ではマウントされたオフラインディスクから直接読み取ってください。生のファイルをコピーする場合は、必ず SYSTEM.LOG1 と SYSTEM.LOG2 も一緒に取得してください。それらがないと古いデータを読むことになります。reg save ではこれらは不要です。

入ってくる証拠で最も一般的な取得ミスは、アナリストが SYSTEM をコピーしてトランザクションログをスキップしたケースです。2 番目に多いのは、稼働ホストで xcopy を試みて「別のプロセスが使用中のためアクセスできません」と出て、結局 3 日前の EDR 収集コピーを探しに行くケースです。どちらも起こる必要はありません。方法を選び、正しく使い、先に進みましょう。

ただコピーできない理由

Windows が稼働している間、カーネルは SYSTEM ハイブを排他的アクセスで開いたままにします。素の copy はアクセス拒否エラーを返します。ロックをバイパスしてバイトを読み取っても、稼働中の OS は次のクリーンシャットダウンまで最近のレジストリ書き込みをメモリに保持します。つまり、最も有用な ShimCache エントリは取得したファイルにはありません。ストレージとフラッシュモデル はどの方法を使うか決める前に読む価値があります。

目標は次のいずれかです。

  1. 稼働ホスト上でロックをクリーンにバイパスする(raw NTFS、VSS、フォレンジックコピー)。
  2. マウントされたオフラインディスクイメージまたは一時停止された VM からファイルを直接読む。
  3. RAM ダンプ からメモリ内コピーを回収する。アクティブセッションのエントリを取得する唯一の方法です。

方法 1:デッドボックスまたはマウント済みオフラインディスク

最もシンプルな経路です。電源を落とすか、読み取り専用でマウントしてコピーします。

<DriveLetter>:\Windows\System32\config\SYSTEM
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG1
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG2

3 ファイルすべて。堅牢なパーサは .LOG1 と .LOG2 をメインハイブ読み取り前に再生するので、まだマージされていない書き込みを見逃しません。スキップすると古いビューを読むことになります。

方法 2:稼働システム、フォレンジックグレードのコピー

ロックを回避する方法はツールごとに異なります。FTK Imager と KAPE はボリュームレベルでファイルを読み取り、reg save はレジストリ API を経由し、esentutl /vss や VSS スナップショットはシャドウコピーから読み取ります。

  • FTK Imager. GUI、無料。「Obtain Protected Files」→「Custom」→ SYSTEM、SYSTEM.LOG1、SYSTEM.LOG2 を選択。外部ドライブに出力。
  • KAPE. コマンドライン、スクリプタブル。RegistryHives ターゲットは関連するハイブとログをすべて取得します。
    kape.exe --tsource C: --target RegistryHives --tdest C:\out
    
  • reg save. Windows 標準搭載で、管理者として実行したプロンプトが必要です。カーネルにロード中のハイブを書き出させるため、結果はクリーンで一貫性があり、トランザクションログは不要です。生のファイルが必要な場合は、esentutl /y /vss が一時的なシャドウコピーからコピーします(SYSTEM.LOG1 と SYSTEM.LOG2 についても再実行してください)。
    reg save HKLM\SYSTEM C:\out\SYSTEM.hiv /y
    esentutl /y C:\Windows\System32\config\SYSTEM /vss /d C:\out\SYSTEM
    
    稼働中のシステムで robocopy /B を使わないでください。バックアップモードが回避するのはファイル ACL であり、ロード済みハイブに対するカーネルの排他ロックではないため、コピーは共有違反で失敗します。マウントしたイメージやシャドウコピー向けに取っておきましょう。例: イメージを E: にマウントして robocopy E:\Windows\System32\config C:\out SYSTEM SYSTEM.LOG1 SYSTEM.LOG2 /B。
  • VSS スナップショット. 読み取り可能なポイントインタイムのシャドウコピーです。一貫したビューが必要で、システムを停止できない場合に有用です。vssadmin create shadow は Windows Server でのみ動作します。クライアントでは esentutl /y ... /vss(上記)が自動で作成・削除するか、管理者権限の PowerShell で Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume='C:\'} を実行して作成します。

4 つすべての方法で利用可能なコピーが得られます。FTK Imager と KAPE はレポートの方法論セクションでレビュアーが目にすることを期待するものです。reg save はインストール不要で応急処置として機能しますが、ファイルのバイト単位のコピーではなくハイブの現在の内容を書き出すため、削除済みセルやスラック領域は保持されないことをレポートに記載してください。

方法 3:メモリイメージ

ディスク上のハイブには、前回のクリーンシャットダウン時に永続化されたエントリのみが含まれます。インシデント以降クリーンに再起動されていないホストでは、最も新しいエントリはメモリにあり、それ以外の場所にはありません。

WinPmem、Magnet RAM Capture、または AVML でメモリをキャプチャしてください。次に SYSTEM ハイブを抽出するか、Volatility 3 で直接 ShimCache を取得します。

# レジストリハイブを抽出
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.registry.hivedump --offset <addr>

# またはハイブをスキップしてメモリから直接 ShimCache を読む
vol -f memory.raw windows.shimcachemem

メモリダンプからの ShimCache 抽出 で詳細を扱っており、Velociraptor のライブ収集経路も含まれています。

方法 4:スケール時のライブトリアージ

Velociraptor はロックされたハイブを直接 NTFS アクセスで読み取り、オフライン解析のために返します。艦隊規模の収集には、Windows.Triage.Targets を RegistryHivesSystem ターゲットで収集してください(古いサーバー: Windows.KapeFiles.Targets と RegistryHives)。SYSTEM ハイブをトランザクションログと一緒に取得するので、収集 ZIP をダウンロードしてオフラインで解析します。

ShimCache を超えた広範なレジストリトリアージについては registry parser を参照してください。

トランザクションログをスキップしないでください

保留中の書き込みは次のチェックポイントまで SYSTEM.LOG1 と SYSTEM.LOG2 に残ります。デルタには最も気になるエントリが含まれることがあります。Eric Zimmerman の AppCompatCacheParser はログを自動的に再生しますが、ハイブと同じ場所にログがある場合のみです。Mandiant の Shim Cache Parser と本ツールはログを再生せず、プライマリのハイブファイルをそのまま読みます。これらを使う場合は、先に Eric Zimmerman の rla.exe(Registry Log Applier)または Registry Explorer でログを再生し、クリーンになったハイブを解析してください。

数ヶ月前にログなしでハイブを収集していて、何が欠落しているか知りたい場合:答えは「最も興味深い部分」です。可能なら再取得してください。

それから解析する

SYSTEM ハイブを Shimcache Parser にドロップしてください。受け付けるのはその 1 ファイルのみです。ハイブが dirty の場合は、先に rla.exe または Registry Explorer で .LOG1 と .LOG2 を再生してください。完全にブラウザ内で動作し、アップロードステップなし、XP から Windows 11 までのすべての Windows バージョンを扱います。フォーマットの詳細については Windows 10/11 バイナリフォーマットリファレンス を参照してください。

さらに読む

関連記事