インシデントレスポンスの最前線において、我々が対峙するのは常に「過去の残像」だ。攻撃者がシステムに侵入し、ペイロードを実行し、痕跡を消去して立ち去った後、我々に残されるのは、断片化されたログと、揮発しゆくメモリの残滓、そしてファイルシステムの片隅に刻まれた「実行の証拠(Evidence of Execution)」だけである。
特に、攻撃者が実行ファイルを削除(UNLINK)し、MFT(Master File Table)のレコードが上書きされてしまった絶望的な状況下で、一筋の光明となるのが「Amcache.hve」だ。今回は、Windows 8以降のフォレンジックにおける聖遺物とも言えるこのアーティファクトを、単なる解析手法を超え、低レイヤの挙動からハンティングへの応用まで深く掘り下げていく。
—
1. Amcache.hve:互換性インフラが残す「実行の墓標」
多くの若手アナリストは、実行の痕跡としてまず Prefetch や ShimCache (AppCompatCache) を確認する。しかし、ShimCacheはメモリ上に常駐し、シャットダウン時までレジストリにフラッシュされないという揮発性のリスクを孕んでいる。一方、Amcache.hve は、Windowsのアプリケーション互換性インフラ(Compatibility Infrastructure)が管理する独自のハイブファイルであり、実行ファイルのメタデータを執拗に記録し続ける。
なぜ Amcache が最強の証拠となるのか
Amcacheの特筆すべき点は、実行ファイルのパスやタイムスタンプだけでなく、「SHA-1ハッシュ」を記録している点にある。これは ShimCache には存在しない特性だ。攻撃者が svchost.exe という名称でマルウェアを実行し、その後ファイルを削除したとしても、Amcacheを解析すればその正体が既知のバイナリか、あるいは未知のカスタムバックドアかを、ハッシュベースで特定できる。
—
2. Amcache の内部構造とデータ配置
Amcache.hve は通常のレジストリハイブ形式(HBIN構造)をとっており、以下のパスに格納されている。
C:\Windows\AppCompat\Programs\Amcache.hve
このハイブ内には複数のキーが存在するが、DFIRにおいて最も重要なのは Root\InventoryApplicationFile だ。Windows 10以降のビルドでは、この配下にサブキーとしてファイルのフルパスを難読化したようなID(FileId)が並び、その中に詳細なメタデータが格納されている。
注目すべきデータフィールド
- FileId: ファイルを識別する一意のID。
- SHA-1: 先頭に
0000が付与されることが多いが、実質的なハッシュ値。 - LinkDate: PEヘッダーから抽出されたコンパイル日時。攻撃者のタイムゾーンや開発時期を推測する鍵となる。
- LongPathHash: ファイルのフルパスに基づくハッシュ。
—
3. 実践:Amcache の抽出と解析パイプライン
現場では、稼働中のシステムから Amcache.hve を直接コピーすることはできない(システムによってロックされているため)。そのため、F-Response などのツールや、Raw Disk Access ツールを用いてファイルを抽出する。
抽出後、Eric Zimmerman氏の AmcacheParser を使用して、人間が解読可能な形式へとパースするのが業界標準だ。
AmcacheParser による解析コマンド例
# Amcache.hve を解析し、CSV形式で出力する
# -f: 入力ファイルパス
# --csv: 出力先ディレクトリ
.\AmcacheParser.exe -f "C:\Forensics\Evidence\Amcache.hve" --csv "C:\Forensics\Analysis\Output"
# 実行結果の中から、不審なディレクトリ(TempやAppData等)から実行された形跡を抽出する
Import-Csv "C:\Forensics\Analysis\Output\20231027_Amcache_UnassociatedFileInventory.csv" | `
Where-Object { $_.FullPath -match "Temp|AppData|Users\\Public" } | `
Select-Object LastWriteTimestamp, FullPath, SHA1, ProductName | `
Out-GridView
このコマンドで得られる SHA1 を、即座に VirusTotal や内部の脅威インテリジェンス(TIP)に照合する。もし ProductName が空、あるいは「Microsoft Corporation」を自称しているにもかかわらずハッシュが未登録であれば、それは「真っ黒」に近いグレーだ。
—
4. プロアクティブ・ハンティングへの応用
Amcacheの真価は、インシデント後の調査だけではない。EDRのログが溢れて消えてしまった数ヶ月前の不審な挙動を、レトロスペクティブ(回顧的)に追跡する際に威力を発揮する。
異常検知のロジック:タイムスタンプの矛盾
攻撃者は Timestomp 等の手法でファイル作成日時を偽装する。しかし、Amcache内の LastWriteTimestamp (キーの最終更新日時)と、ファイルシステム上の Standard Information 属性の作成日時に大きな乖離がある場合、それは「過去に遡ってファイルを配置した」強力な証拠となる。
通信ログとの紐付け
Amcacheで特定したハッシュをもとに、プロキシログやファイアウォールログを検索する。特定のバイナリが実行された直後に、不審なC2ドメイン(例:.top や .xyz などの安価なTLD)への通信が発生していれば、そのバイナリが通信モジュールを持っていることを裏付ける。
—
5. 耐量子暗号(PQC)時代とフォレンジックの変遷
少し未来の話をしよう。現在、我々がハッシュアルゴリズムとして利用している SHA-1 や SHA-256 は、量子コンピュータによる衝突攻撃に対して一定の耐性を持つが、電子署名(RSA/ECDSA)は脆弱だ。将来的にマルウェアが耐量子署名を備え、署名検証プロセスそのものを汚染するような高度な攻撃が登場した際、Amcacheのような「OSが独自に生成・管理する静的なハッシュ記録」は、バイナリの真正性を検証する最後の砦となる。
生成AIを用いたプロンプトインジェクション攻撃によって、正規の管理ツール(PowerShell等)を介して非ファイル型の攻撃(Fileless Malware)が仕掛けられた場合、Amcacheには直接的なエントリは残らない。しかし、その過程でドロップされた中間モジュールや、踏み台となったバイナリの挙動は Amcache に刻まれる。
—
6. 結論:アーキテクトに求められる視点
単に「ツールを使ってCSVを出す」のはオペレーターの仕事だ。我々セキュリティアーキテクトに求められるのは、Amcacheのようなアーティファクトが、システムのどのコンポーネント(この場合は互換性データベース)と連動し、どのようなトリガーで更新されるのかという「内部ロジックの解像度」を上げることだ。
インシデントレスポンスは、攻撃者との知恵比べである。彼らが痕跡を消そうと躍起になればなるほど、OSの深層心理とも言える Amcache.hve にはその「焦り」が記録される。この静かなる目撃者を味方につけること。それが、高度なサイバー防衛を実現するための必須要件である。
もし、貴方の管理するネットワークで今、不審なハッシュが見つかったとしたら。その SHA-1 が Amcache に刻まれた瞬間こそが、攻撃者の「終わりの始まり」なのだ。
コメント