Python を使った Windows プリフェッチの解析
概要
Windows プリフェッチファイル (.pf) は、実行可能ファイル名、実行回数、タイムスタンプ、読み込まれた DLL、アクセスされたディレクトリなど、アプリケーションの実行データを記録します。このスキルでは、windowsprefetch Python ライブラリを使用してプリフェッチファイルを解析し、実行タイムラインを再構築したり、実行可能ファイル名と読み込まれたリソースを比較して名前が変更されたり偽装されたバイナリを検出し、マルウェアの実行や横方向の移動を示す可能性のある不審なプログラムを特定する方法を説明します。
使用するタイミング
- セキュリティインシデントの調査において、Python を使った Windows プリフェッチの分析が必要な場合
- このドメインに関する検知ルールや脅威ハンティングクエリを作成する場合
- SOC アナリストがこの分析タイプの構造化された手順を必要とする場合
- 関連する攻撃手法に対するセキュリティ監視のカバレッジを検証する場合
前提条件
- Python 3.9 以上と
windowsprefetchライブラリ (pip install windowsprefetch) - Windows プリフェッチファイル (C:\Windows\Prefetch\ から、バージョン 17~30 に対応)
- Windows プリフェッチファイルの命名規則 (EXECUTABLE-HASH.pf) に関する理解
手順
ステップ 1: プリフェッチファイルを収集する
対象システムの C:\Windows\Prefetch\ ディレクトリから .pf ファイルを収集します。
ステップ 2: 実行履歴を解析する
実行可能ファイル名、実行回数、最終実行タイムスタンプ、ボリューム情報を抽出します。
ステップ 3: 不審な実行を検出する
既知の攻撃ツール (mimikatz、psexec など)、名前が変更されたバイナリ、異常な実行パターンをフラグ付けします。
ステップ 4: 実行タイムラインを構築する
すべてのプリフェッチファイルから時系列の実行タイムラインを再構築します。
期待される出力
実行履歴、不審な実行可能ファイル、名前変更されたバイナリの兆候、タイムライン再構築を含む JSON レポート。
出力例
$ python3 prefetch_analyzer.py --dir /evidence/Windows/Prefetch --output /analysis/prefetch_report
Windows Prefetch Analyzer v2.1
================================
ソース: /evidence/Windows/Prefetch/
プリフェッチ形式: Windows 10 (MAM 圧縮、バージョン 30)
見つかったファイル数: 234
--- 実行タイムライン (インシデント期間: 2024-01-15 から 2024-01-18) ---
最終実行 (UTC) | 実行回数 | ファイル名 | ハッシュ | パス
------------------------|-----------|-----------------------------|----------|------------------------------------------
2024-01-15 14:33:15 | 1 | Q4_REPORT.XLSM-2A1B3C4D.pf | 2A1B3C4D | C:\Users\jsmith\Downloads\Q4_Report.xlsm
2024-01-15 14:35:44 | 1 | POWERSHELL.EXE-A2B3C4D5.pf | A2B3C4D5 | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
2024-01-15 14:36:30 | 3 | UPDATE_CLIENT.EXE-B3C4D5E6.pf| B3C4D5E6| C:\ProgramData\Updates\update_client.exe
2024-01-15 15:10:22 | 1 | NETSCAN.EXE-C4D5E6F7.pf | C4D5E6F7 | C:\Users\jsmith\Downloads\netscan.exe
2024-01-16 02:28:00 | 1 | PROCDUMP64.EXE-D5E6F7A8.pf | D5E6F7A8 | C:\Windows\Temp\procdump64.exe
2024-01-16 02:30:15 | 2 | MIMIKATZ.EXE-E6F7A8B9.pf | E6F7A8B9 | C:\Windows\Temp\mimikatz.exe
2024-01-16 02:40:00 | 4 | PSEXEC.EXE-F7A8B9C0.pf | F7A8B9C0 | C:\Users\jsmith\AppData\Local\Temp\psexec.exe
2024-01-17 02:45:00 | 1 | SDELETE64.EXE-A8B9C0D1.pf | A8B9C0D1 | C:\Windows\Temp\sdelete64.exe
2024-01-18 03:00:45 | 1 | WEVTUTIL.EXE-B9C0D1E2.pf | B9C0D1E2 | C:\Windows\System32\wevtutil.exe
--- 名前変更バイナリの検出 ---
警告: UPDATE_CLIENT.EXE が Cobalt Strike ビーコンと一致する DLL を読み込んでいます:
参照 DLL: wininet.dll、ws2_32.dll、advapi32.dll、dnsapi.dll、netapi32.dll
ボリューム: \VOLUME{01d94f2a3b5c7d8e-A4E73F21} (C:)
参照ディレクトリ:
C:\ProgramData\Updates\
C:\Windows\System32\
--- 実行頻度分析 ---
最も実行されたもの (上位 5 件):
1. SVCHOST.EXE (267 回)
2. CHROME.EXE (189 回)
3. EXPLORER.EXE (156 回)
4. RUNTIMEBROKER.EXE (134 回)
5. OUTLOOK.EXE (98 回)
初回実行 (インシデント期間以前に未確認):
6 個の実行可能ファイルが 2024-01-15 から 2024-01-18 の間に初めて実行されました
サマリー:
プリフェッチファイルの合計数: 234
不審な実行可能ファイル: 6
名前変更バイナリの兆候: 1 (update_client.exe)
アンチフォレンジックツール: 2 (sdelete64.exe、wevtutil.exe)
JSON レポート: /analysis/prefetch_report/prefetch_timeline.json