重要提示:本站仅作 Skill 资源导航与收录,正文以 GitHub 原仓库为准,版权归原项目所有。
以下为摘要预览,完整内容请查看 GitHub 原文。
Analyzing Malicious PDF with peepdf
When to Use
- When triaging suspicious PDF attachments from phishing emails
- During malware analysis of PDF-based exploit documents
- When extracting embedded JavaScript, shellcode, or executables from PDFs
- For forensic examination of weaponized document artifacts
- When building detection signatures for PDF-based threats
Prerequisites
- Python 3.8+ with peepdf-3 installed (pip install peepdf-3)
- pdfid.py and pdf-parser.py from Didier Stevens suite
- Isolated analysis environment (VM or sandbox)
- Optional: PyV8 for JavaScript emulation within peepdf
- Optional: Pylibemu for shellcode analysis
Workflow
- Triage with pdfid: Scan PDF for suspicious keywords (/JS, /JavaScript, /OpenAction, /Launch, /EmbeddedFile).
- Interactive Analysis: Open PDF in peepdf interactive mode to explore object structure.
- Identify Suspicious Objects: Locate objects containing JavaScript, streams, or encoded data.
- Extract Content: Dump suspicious streams and decode filters (FlateDecode, ASCIIHexDecode).
- Deobfuscate JavaScript: Analyze extracted JS for shellcode, heap sprays, or exploit code.
- Check VirusTotal: Use…
以下为摘要预览,完整内容请查看 GitHub 原文。
使用 peepdf 分析恶意 PDF
适用场景
- 对来自钓鱼邮件的可疑 PDF 附件进行分类时
- 在分析基于 PDF 的漏洞利用文档的恶意软件分析过程中
- 需要从 PDF 中提取嵌入的 JavaScript、shellcode 或可执行文件时
- 对武器化文档产物进行取证检查时
- 为基于 PDF 的威胁构建检测签名时
前置条件
- 已安装 Python 3.8+ 及 peepdf-3(pip install peepdf-3)
- Didier Stevens 工具集中的 pdfid.py 和 pdf-parser.py
- 隔离的分析环境(虚拟机或沙箱)
- 可选:用于在 peepdf 中进行 JavaScript 模拟的 PyV8
- 可选:用于 shellcode 分析的 Pylibemu
工作流程
- 使用 pdfid 进行分类:扫描 PDF 中的可疑关键字(/JS、/JavaScript、/OpenAction、/Launch、/EmbeddedFile)。
- 交互式分析:在 peepdf 交互模式下打开文件,以探索对象结构。
- 识别可疑对象:定位包含 JavaScript、流数据或编码数据的对象。
- 提取内容:转储可疑流并解码过滤器(FlateDecode、ASCIIHexDecode)。
- 去混淆 JavaScript:分析提取出的 JS,查找 shellcode、堆喷射或漏洞利用代码。
- 查询 VirusTotal:使用 peepdf vtcheck 将文件哈希与 AV 检测结果进行交叉比对。
- 生成 IOC:提取 URL、域名、哈希以及 shellcode 签名。
关键概念
| 概念 | 描述 |
|---|
| /OpenAction | 打开 PDF 时自动执行的动作 |
| /JavaScript /JS | PDF 对象中嵌入的 JavaScript 代码 |
| /Launch | 用于启动外部应用程序的动作 |
| /EmbeddedFile | 嵌入在 PDF 结构中的文件 |
| FlateDecode | 用于隐藏内容的 zlib 压缩过滤器 |
| Object Streams | 存储在压缩流中的 PDF 对象 |
工具与系统
| 工具 | 用途 |
|---|
| peepdf / peepdf-3 | 支持 JS 模拟的交互式 PDF 分析 |
| pdfid.py | 快速扫描可疑关键字进行分类 |
| pdf-parser.py | 深度对象级 PDF 解析 |
| VirusTotal | 哈希查询与 … |