使用 Python 分析 Windows Prefetch 是做什麼的?
概述
Windows Prefetch 檔案 (.pf) 記錄應用程式的執行資料,包括可執行檔名稱、執行次數、時間戳記、載入的 DLL 以及存取的目錄。本技能涵蓋使用 windowsprefetch Python 函式庫解析 Prefetch 檔案,以重建執行時間線、透過比較執行檔名稱與載入的資源來偵測改名或偽裝的二進位檔案,以及識別可能表示惡意程式執行或橫向移動的可疑程式。
使用時機
- 調查安全事件時,需要分析 Windows Prefetch 檔案 (使用 Python)
- 為此領域建立偵測規則或威脅獵捕查詢時
- SOC 分析師需要此分析類型的結構化程序時
- 驗證相關攻擊技術的監控覆蓋率時
先決條件
- Python 3.9+ 並安裝
windowsprefetch函式庫 (pip install windowsprefetch) - 來自 C:\Windows\Prefetch\ 的 Windows Prefetch 檔案 (支援版本 17 至 30)
- 了解 Windows Prefetch 檔案命名慣例 (EXECUTABLE-HASH.pf)
步驟
步驟 1:收集 Prefetch 檔案
從目標系統的 C:\Windows\Prefetch\ 目錄收集 .pf 檔案。
步驟 2:解析執行歷史記錄
擷取可執行檔名稱、執行次數、最後執行時間戳記與磁碟區資訊。
步驟 3:偵測可疑執行
標記已知的攻擊工具 (mimikatz、psexec 等)、經改名的二進位檔案以及異常的執行模式。
步驟 4:建立執行時間線
從所有 Prefetch 檔案重建按時間排序的執行時間線。
預期輸出
JSON 格式的報告,內容包含執行歷史記錄、可疑的可執行檔、改名二進位檔案指標以及時間線重建結果。
範例輸出
$ python3 prefetch_analyzer.py --dir /evidence/Windows/Prefetch --output /analysis/prefetch_report
Windows Prefetch Analyzer v2.1
================================
來源: /evidence/Windows/Prefetch/
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 載入的 DLL 與 Cobalt Strike 信標一致:
參考的 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 之間首次執行
摘要:
總計 Prefetch 檔案數: 234
可疑可執行檔: 6
改名二進位檔案指標: 1 (update_client.exe)
反鑑識工具: 2 (sdelete64.exe, wevtutil.exe)
JSON 報告: /analysis/prefetch_report/prefetch_timeline.json