$npx -y skills add killvxk/cybersecurity-skills-zh --skill analyzing-malicious-pdf-with-peepdf使用 peepdf、pdfid 和 pdf-parser 对恶意 PDF 文档进行静态分析, 提取嵌入的 JavaScript、shellcode 和可疑对象。
| 1 | # 使用 peepdf 分析恶意 PDF |
| 2 | |
| 3 | ## 适用场景 |
| 4 | |
| 5 | - 对来自钓鱼邮件的可疑 PDF 附件进行分类 |
| 6 | - 对基于 PDF 的漏洞利用文档进行恶意软件分析 |
| 7 | - 从 PDF 中提取嵌入的 JavaScript、shellcode 或可执行文件 |
| 8 | - 对武器化文档工件进行取证检查 |
| 9 | - 为基于 PDF 的威胁构建检测签名 |
| 10 | |
| 11 | ## 前置条件 |
| 12 | |
| 13 | - Python 3.8+,安装 peepdf-3(pip install peepdf-3) |
| 14 | - Didier Stevens 工具套件中的 pdfid.py 和 pdf-parser.py |
| 15 | - 隔离分析环境(虚拟机或沙箱) |
| 16 | - 可选:PyV8,用于 peepdf 内的 JavaScript 模拟 |
| 17 | - 可选:Pylibemu,用于 shellcode 分析 |
| 18 | |
| 19 | ## 工作流程 |
| 20 | |
| 21 | 1. **使用 pdfid 分类**:扫描 PDF 中的可疑关键词(/JS、/JavaScript、/OpenAction、/Launch、/EmbeddedFile)。 |
| 22 | 2. **交互式分析**:在 peepdf 交互模式下打开 PDF,探索对象结构。 |
| 23 | 3. **识别可疑对象**:定位包含 JavaScript、流或编码数据的对象。 |
| 24 | 4. **提取内容**:转储可疑流并解码过滤器(FlateDecode、ASCIIHexDecode)。 |
| 25 | 5. **去混淆 JavaScript**:分析提取的 JavaScript 中的 shellcode、堆喷射或漏洞利用代码。 |
| 26 | 6. **VirusTotal 检查**:使用 peepdf vtcheck 将文件哈希与 AV 检测结果交叉验证。 |
| 27 | 7. **生成 IOC**:提取 URL、域名、哈希值和 shellcode 签名。 |
| 28 | |
| 29 | ## 核心概念 |
| 30 | |
| 31 | | 概念 | 定义 | |
| 32 | |---------|-------------| |
| 33 | | /OpenAction | PDF 打开时自动执行的操作 | |
| 34 | | /JavaScript /JS | PDF 对象中嵌入的 JavaScript 代码 | |
| 35 | | /Launch | 启动外部应用程序的操作 | |
| 36 | | /EmbeddedFile | 嵌入在 PDF 结构中的文件 | |
| 37 | | FlateDecode | 用于隐藏内容的 zlib 压缩过滤器 | |
| 38 | | Object Streams | 存储在压缩流中的 PDF 对象 | |
| 39 | |
| 40 | ## 工具与系统 |
| 41 | |
| 42 | | 工具 | 用途 | |
| 43 | |------|---------| |
| 44 | | peepdf / peepdf-3 | 带 JavaScript 模拟的交互式 PDF 分析 | |
| 45 | | pdfid.py | 扫描可疑关键词的快速分类工具 | |
| 46 | | pdf-parser.py | 深层对象级 PDF 解析 | |
| 47 | | VirusTotal | 哈希查询和 AV 检测交叉验证 | |
| 48 | | CyberChef | 解码和转换提取的载荷 | |
| 49 | |
| 50 | ## 输出格式 |
| 51 | |
| 52 | ``` |
| 53 | 分析报告:PDF-MAL-[日期]-[序号] |
| 54 | 文件:[filename.pdf] |
| 55 | SHA-256:[哈希值] |
| 56 | 可疑关键词:[/JS、/OpenAction 等] |
| 57 | 包含 JavaScript 的对象:[对象 ID] |
| 58 | 提取的 URL:[列表] |
| 59 | 检测到 Shellcode:[是/否] |
| 60 | 嵌入文件:[数量和类型] |
| 61 | VirusTotal 检测:[X/Y 引擎] |
| 62 | 风险等级:[严重/高/中/低] |
| 63 | ``` |