Windows Amcache アーティファクト解析 は何をしますか?
使用するタイミング
- インシデントレスポンス中に Windows システム上でどのプログラムが存在または実行されたかを特定する
- Amcache から抽出した SHA-1 ハッシュを既知のマルウェアデータベース(VirusTotal、CIRCL、MISP)と突き合わせる
- フォレンジック調査のためのアプリケーションインストールおよび実行タイムラインを構築する
- ファイル削除後も Amcache に痕跡を残す削除済み実行可能ファイルを特定する
- ポータブルアプリケーションや不正なアプリケーションの存在を文書化して内部不正を調査する
- ルートキットや悪意のあるカーネルモジュールを検出するためにドライバ読み込み履歴を分析する
プログラム実行の唯一の証拠として使用しないでください。 Amcache はファイルの存在とメタデータの登録を証明しますが、ShimCache(AppCompatCache)や Prefetch の方が実行の強力な証拠となります。結論を出すには、これら3つのアーティファクトをすべて一緒に使用してください。
前提条件
- フォレンジックイメージまたはライブトリアージから取得した
C:\Windows\appcompat\Programs\Amcache.hve(および関連する.LOG1、.LOG2トランザクションログ) - Eric Zimmerman の AmcacheParser(
AmcacheParser.exe)を https://ericzimmerman.github.io/ からダウンロード済み - 解析した CSV 出力を表示するための Eric Zimmerman の Timeline Explorer
- オプション:手動ハイブ検査用の Registry Explorer
- フィルタリング用の既知の正規実行可能ファイルの SHA-1 ホワイトリスト(例:NSRL ハッシュセット)
- .NET 6+ ランタイムがインストールされている(現在の EZ ツールで必要)
- CSV 結果の出力ディレクトリへの書き込み権限
ワークフロー
ステップ 1:Amcache.hve ファイルの取得
フォレンジックイメージまたはライブシステムから Amcache ハイブを抽出します。
# ライブシステムから(管理者権限と raw コピーツールが必要)
# Amcache.hve はシステムによってロックされているため、raw ディスクコピーツールを使用します
# オプション A:FTK Imager - イメージをマウントして以下のパスに移動:
# C:\Windows\appcompat\Programs\Amcache.hve
# 同時に収集:Amcache.hve.LOG1、Amcache.hve.LOG2
# オプション B:KAPE を使用した自動トリアージ収集
kape.exe --tsource C: --tdest D:\Evidence\%m --target Amcache
# オプション C:マウントされたフォレンジックイメージから(E: = マウントされたイメージ)
copy "E:\Windows\appcompat\Programs\Amcache.hve" D:\Evidence\
copy "E:\Windows\appcompat\Programs\Amcache.hve.LOG1" D:\Evidence\
copy "E:\Windows\appcompat\Programs\Amcache.hve.LOG2" D:\Evidence\
ハイブと一緒にトランザクションログファイル(.LOG1、.LOG2)も必ず収集してください。AmcacheParser はこれらのログから未コミットのトランザクションを再生し、最も完全なデータを復元します。
ステップ 2:AmcacheParser で Amcache を解析
取得したハイブに対して AmcacheParser を実行します。
# CSV 出力の基本解析
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" --csv "D:\Evidence\Output"
# SHA-1 ホワイトリストを使用して既知の正規エントリを除外(NSRL)
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" -w "D:\Whitelists\nsrl_sha1.txt" --csv "D:\Evidence\Output"
# SHA-1 インクルージョンリストを使用(既知の悪意のあるハッシュとの一致のみ表示)
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" -b "D:\IOCs\malware_sha1.txt" --csv "D:\Evidence\Output"
# 高精度タイムスタンプで削除済みエントリを含める
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" --csv "D:\Evidence\Output" -i --mp
AmcacheParser は出力ディレクトリに複数の CSV ファイルを生成します。
| 出力ファイル | 内容 |
|---|---|
Amcache_AssociatedFileEntries.csv | SHA-1 ハッシュ、パス、サイズ、タイムスタンプを含むファイルエントリ |
Amcache_UnassociatedFileEntries.csv | 古い Amcache 形式からの孤立したファイルエントリ |
Amcache_ProgramEntries.csv | インストールされたプログラムのメタデータ(名前、発行元、バージョン、インストール日) |
Amcache_DeviceContainers.csv | USB およびデバイス接続履歴 |
Amcache_DevicePnps.csv | プラグアンドプレイデバイスドライバ情報 |
Amcache_DriverBinaries.csv | 読み込まれたドライババイナリ(パスとハッシュを含む) |
ステップ 3:ファイルエントリを分析して不審なプログラムを特定
Timeline Explorer で AssociatedFileEntries.csv を開き、主要な列を確認します。
確認すべき主要な列:
- ProgramId : ファイルを親プログラムエントリにリンク
- SHA1 : 脅威インテリジェンス検索用のハッシュ
- FullPath : ディスク上の元のファイルの場所
- FileSize : 実行可能ファイルのサイズ
- FileKeyLastWriteTimestamp : Amcache エントリが最後に更新された日時
- Name : ファイル名
- Publisher : コード署名の発行元(空白 = 署名なし)
- BinProductVersion : PE ヘッダーからのバージョン文字列
- LinkDate : PE コンパイルタイムスタンプ(タイムスタンプ改ざんの検出に有用)
不審な兆候でフィルタリング:
# Timeline Explorer で以下のフィルタを適用:
# 1. 署名なし実行可能ファイルを検索(悪意の可能性)
Publisher 列 = (空)
# 2. 不審なパスから実行可能ファイルを検索
FullPath に次の文字列が含まれる:\temp\、\appdata\、\downloads\、\public\、\programdata\
# 3. インシデント期間中の最近のタイムスタンプを持つ実行可能ファイルを検索
FileKeyLastWriteTimestamp が次の範囲:2026-03-15 00:00:00 から 2026-03-16 00:00:00
# 4. 不審なコンパイル日付を持つ実行可能ファイルを検索(タイムスタンプ改ざん)
LinkDate 年 < 2015 かつ FileKeyLastWriteTimestamp 年 = 2026
ステップ 4:SHA-1 ハッシュを脅威インテリジェンスと突き合わせる
SHA-1 ハッシュを抽出し、マルウェアデータベースと照合します。
# 解析出力から一意の SHA-1 ハッシュを抽出
# PowerShell を使用して SHA1 列を抽出
Import-Csv "D:\Evidence\Output\Amcache_AssociatedFileEntries.csv" |
Select-Object -ExpandProperty SHA1 -Unique |
Where-Object { $_ -ne "" } |
Out-File "D:\Evidence\Output\extracted_hashes.txt"
# vt-cli を使用して VirusTotal に対してハッシュを確認
foreach ($hash in Get-Content "D:\Evidence\Output\extracted_hashes.txt") {
vt file $hash --format json | Select-Object -Property meaningful_name, last_analysis_stats
}
# CIRCL hashlookup に対してハッシュを確認
foreach ($hash in Get-Content "D:\Evidence\Output\extracted_hashes.txt") {
Invoke-RestMethod -Uri "https://hashlookup.circl.lu/lookup/sha1/$hash"
}
# NSRL とクロスリファレンスして既知の正規と未知を特定
# NSRL に含まれない未知のハッシュは、より詳細な調査が必要です
ステップ 5:プログラムエントリを分析して不正インストールを特定
ProgramEntries.csv を確認して、攻撃者がインストールした可能性のあるソフトウェアを特定します。
ProgramEntries の主要な列:
- ProgramName : インストールされたアプリケーションの表示名
- ProgramVersion : バージョン文字列
- Publisher : ソフトウェア発行元
- InstallDate : プログラムがインストールされた日時
- Source : インストールソース(msi、exe など)
- UninstallKey : レジストリアンインストールパス
- PathsList : インストールディレクトリ
以下を探します:
- リモートアクセスツール(AnyDesk、TeamViewer、ngrok、Chisel)
- ハッキングツール(Mimikatz、PsExec、Cobalt Strike)
- トンネリングユーティリティ(plink、socat、WireGuard)
- インシデント期間中にインストールされたプログラム
- 標準でない場所にインストールされたプログラム
ステップ 6:ドライババイナリを分析してルートキットの証拠を特定
DriverBinaries.csv を確認して、不審に読み込まれたドライバを特定します。
DriverBinaries の主要な列:
- DriverName : ドライバの名前
- DriverInBox : Windows に同梱されていたか(false = サードパーティ)
- DriverSigned : ドライバに有効な署名があるか
- DriverTimeStamp : コンパイルタイムスタンプ
- Product : ドライバに関連する製品
- ProductVersion : ドライババージョン
- SHA1 : ドライババイナリのハッシュ
DriverInBox = false かつ DriverSigned = false でフィルタリングして、ルートキットや BYOVD(Bring Your Own Vulnerable Driver)攻撃で使用される可能性のある、署名のないサードパーティドライバを見つけます。
ステップ 7:Amcache データからタイムラインを構築
Amcache データを他のアーティファクトと組み合わせて、包括的なタイムラインを作成します。
# Timeline Explorer を使用して Amcache CSV を他の EZ Tools 出力とマージ
# 以下の CSV を Timeline Explorer に読み込みます:
# - Amcache_AssociatedFileEntries.csv(ファイル証拠)
# - Amcache_ProgramEntries.csv(インストール証拠)
# - PECmd.exe からの Prefetch 出力(実行証拠)
# - AppCompatCacheParser.exe からの ShimCache 出力(実行証拠)
# すべてのエントリをタイムスタンプで並べ替えて攻撃シーケンスを再構築
# Timeline Explorer は複数ファイルの読み込みと列ベースの並べ替えをサポート
# 結合したタイムラインをエクスポート
# ファイル > CSV に保存 > combined_timeline.csv
主要な概念
| 用語 | 定義 |
|---|---|
| Amcache.hve | C:\Windows\appcompat\Programs\Amcache.hve にある Windows レジストリハイブ。アプリケーション互換性の目的で、アプリケーション、ファイル、ドライバに関するメタデータを保存します |
| 関連ファイルエントリ | 特定のプログラムインストールにリンクされた Amcache レコード。ファイルパス、サイズ、ハッシュ、タイムスタンプを含みます |
| 非関連ファイルエントリ | 古い形式からの孤立した Amcache レコードで、プログラムエントリにリンクされていません。Windows 7/8 システムで一般的です |
| プログラムエントリ | プログラム名、バージョン、発行元、インストール日、アンインストールキーなどのインストールメタデータを含む Amcache レコード |
| SHA-1 ハッシュ | 登録された各ファイルに対して Amcache に保存される暗号化ハッシュ。脅威インテリジェンス検索によるマルウェア識別を可能にします |
| LinkDate | 実行可能ファイルヘッダーに埋め込まれた PE コンパイルタイムスタンプ。ファイルシステムのタイムスタンプとの不一致はタイムスタンプ改ざんを示す可能性があります |
| トランザクションログ | 未コミットのレジストリトランザクションを含む .LOG1 および .LOG2 ファイル。AmcacheParser が完全なデータ復元のために再生します |
| NSRL(National Software Reference Library) | NIST が管理する既知の商用ソフトウェアの SHA-1 ハッシュデータベース。良性のエントリをフィルタリングするためのホワイトリストとして使用されます |
検証
- Amcache.hve とトランザクションログ(LOG1、LOG2)がフォレンジックイメージから収集された
- AmcacheParser がエラーなく期待されるすべての CSV 出力ファイルを生成した
- SHA-1 ハッシュが抽出され、VirusTotal または CIRCL hashlookup で確認された
- 不審なパスにある署名なし実行可能ファイルがさらなる分析のためにフラグ付けされた
- プログラムエントリがインシデント期間内のすべてのソフトウェアインストールを示している
- ドライババイナリが署名なしまたは標準以外のエントリについて確認された
- LinkDate と FileKeyLastWriteTimestamp の比較がタイムスタンプ改ざん検出のために実行された
- Amcache の調査結果が実行確認のために Prefetch および ShimCache と関連付けられた
- 最終タイムラインが Amcache データを他のフォレンジックアーティファクトと統合している