使用 peepdf 分析惡意 PDF
使用時機
- 處理來自釣魚郵件的可疑 PDF 附件時
- 對基於 PDF 的漏洞利用文件進行惡意軟體分析時
- 需要提取 PDF 中嵌入式 JavaScript、shellcode 或可執行檔時
- 對武器化文件工件進行取證檢查時
- 為基於 PDF 的威脅建立檢測特徵時
先決條件
- Python 3.8+ 並安裝 peepdf-3(使用 pip install peepdf-3)
- 來自 Didier Stevens 套件的 pdfid.py 和 pdf-parser.py
- 隔離的分析環境(虛擬機或沙箱)
- 可選:PyV8 用於 peepdf 中的 JavaScript 模擬
- 可選:Pylibemu 用於 shellcode 分析
工作流程
- 使用 pdfid 進行初步篩選:掃描 PDF 中可疑關鍵字(/JS, /JavaScript, /OpenAction, /Launch, /EmbeddedFile)。
- 互動式分析:在 peepdf 互動模式中開啟 PDF 以探索物件結構。
- 識別可疑物件:定位包含 JavaScript、串流或編碼資料的物件。
- 提取內容:傾印可疑串流並解碼過濾器(FlateDecode、ASCIIHexDecode)。
- 去除 JavaScript 混淆:分析提取的 JS 以找出 shellcode、堆噴射或漏洞利用程式碼。
- 查詢 VirusTotal:使用 peepdf vtcheck 將檔案哈希與防毒偵測結果交叉比對。
- 生成威脅指標 (IOCs):提取 URL、域名、哈希值和 shellcode 特徵。
關鍵概念
| 概念 | 描述 |
|---|
| /OpenAction | 開啟 PDF 時自動執行的動作 |
| /JavaScript /JS | 嵌入在 PDF 物件中的 JavaScript 程式碼 |
| /Launch | 啟動外部應用程式的動作 |
| /EmbeddedFile | 嵌入在 PDF 結構中的檔案 |
| FlateDecode | 用於隱藏內容的 zlib 壓縮過濾器 |
| 物件串流 | 以壓縮串流儲存的 PDF 物件 |
工具與系統
| 工具 | 用途 |
|---|
| peepdf / peepdf-3 | 具備 JS 模擬功能的互動式 PDF 分析 |
| pdfid.py | 快速初步掃描,尋找可疑關鍵字 |
| pdf-parser.py | 深層物件級 PDF 解析 |
| VirusTotal | 哈希查詢與防毒偵測交叉比對 |
| CyberChef | 解碼與轉換提取的有效載荷 |
輸出格式
分析報告:PDF-MAL-[日期]-[序號]
檔案:[檔名.pdf]
SHA-256:[哈希值]
可疑關鍵字:[/JS、/OpenAction 等]
含有 JavaScript 的物件:[物件 ID]
提取的 URL:[列表]
偵測到 Shellcode:[是/否]
內嵌檔案:[數量與類型]
VirusTotal 偵測:[X/Y 引擎]
風險等級:[關鍵/高/中/低]