使用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 功能,将文件哈希与AV检测结果进行交叉引用。
- 生成IOC:提取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 | 哈希查找与AV检测交叉引用 |
| CyberChef | 解码和转换提取的载荷 |
输出格式
Analysis Report: PDF-MAL-[日期]-[序号]
文件: [文件名.pdf]
SHA-256: [哈希值]
可疑关键字: [/JS, /OpenAction, 等]
含有JavaScript的对象: [对象ID]
提取的URL: [列表]
检测到Shellcode: [是/否]
嵌入式文件: [数量和类型]
VirusTotal检测结果: [X/Y个引擎]
风险等级: [严重/高/中/低]