SuperAPI AI 工具集

analyzing-pdf-malware-with-pdfid

安全与审计

查看项目

更新于 10-15 16:35

技能介绍

用途

该技能用于对可疑 PDF 文件进行结构分析,判断其中是否包含内嵌 JavaScript、shellcode、漏洞利用代码或可疑对象。它面向的是 PDF 文件格式层面的恶意对象分析,而非 PDF 渲染后的视觉内容分析。典型使用场景包括:邮件安全系统标记的可疑 PDF 附件、用户上报的可疑文档、在沙箱或分析环境中打开前的初步分类、从恶意 PDF 对象中提取内嵌可执行文件、脚本或 URL,以及分析针对 Adobe Reader 或其他 PDF 阅读器漏洞的 PDF 漏洞利用工具包。

主要能力

技能围绕三类工具展开:

  • PDFiD:在不完整解析文档的情况下扫描 PDF 中的可疑关键词和结构,如 /JS、/JavaScript、/AA、/OpenAction、/Launch、/EmbeddedFile、/RichMedia、/ObjStm、/URI、/AcroForm 等,并按高、中、低风险进行分类。
  • pdf-parser:用于详细提取 PDF 对象、解压流内容、搜索特定关键词、按对象 ID 提取内容,以及导出原始流数据。
  • peepdf:提供交互式 shell,用于对象检查、JavaScript 提取与美化、在沙箱环境中评估 JavaScript,以及查看对象偏移量。

此外,技能还涉及使用 scdbg 或 speakeasy 进行 shellcode 模拟分析、使用 CyberChef 解码 Base64/十六进制/deflate 流、使用 YARA 规则匹配已知 PDF 恶意软件家族,以及使用 QPDF 对 PDF 进行线性化、解密和重构。

使用方式

工作流程分为六个步骤:

  1. PDFiD 初步分类:运行 pdfid suspect.pdf 扫描可疑关键词,可使用 -e 获取额外细节,或使用 -d 对可疑关键词进行重命名。根据 /JS、/JavaScript、/AA、/OpenAction、/Launch、/JBIG2Decode 等高风险指标,以及 /EmbeddedFile、/RichMedia、/AcroForm、/XFA 等中风险指标进行风险评估。
  2. pdf-parser 解析结构:使用 pdf-parser --search 搜索特定关键词,使用 --object 提取指定对象,使用 --filter --raw 解压并导出流内容,使用 --stats 列出所有对象及其类型。
  3. 提取并分析内嵌 JavaScript:通过 pdf-parser 或 peepdf 提取 JavaScript 代码,使用 peepdf 的 js_analyse、js_beautify、js_eval 等命令进行分析。
  4. 分析内嵌 shellcode:使用 pdf-parser --dump 导出原始流数据,再用 scdbg 或 speakeasy 进行模拟执行并记录 API 调用。
  5. 提取内嵌文件与 URL:搜索 /EmbeddedFile 对象,通过 MZ/PE 签名定位内嵌可执行文件并计算哈希,使用正则表达式提取 URL。
  6. 生成分析报告:汇总 PDFiD 分类结果、PDF 结构异常、提取的 JavaScript、shellcode 分析结果、内嵌文件哈希、URL 与外部引用、CVE 识别以及 YARA 规则匹配情况。

适用场景

  • 对带有可疑 JavaScript 指标的钓鱼 PDF 进行分诊,判断其是漏洞利用还是社会工程重定向。
  • 在隔离分析虚拟机中分析 PDF 漏洞利用工具包。
  • 从恶意 PDF 中提取 IOC,包括 URL、IP、域名和内嵌文件哈希。
  • 识别针对 Adobe Reader 或其他 PDF 阅读器漏洞的已知 CVE。

限制

该技能不适用于分析 PDF 渲染后的视觉内容,仅针对 PDF 文件格式的结构分析。分析应在未安装 PDF 阅读器的隔离虚拟机中进行,以防止意外打开。需要注意的常见陷阱包括:使用标准阅读器打开 PDF 而非命令行工具分析、遗漏隐藏在对象流(/ObjStm)中的 JavaScript、未在分析前解压流(FlateDecode、ASCIIHexDecode、ASCII85Decode 过滤器),以及误以为缺少 /JS 就意味着没有 JavaScript(代码可能嵌入在表单字段 /AcroForm 与 /XFA 中)。

前置条件

需要 Python 3.8+ 并安装 Didier Stevens 的 PDF 工具(pip install pdfid pdf-parser)、peepdf(pip install peepdf)、poppler-utils 中的 pdftotext、带有 PDF 专用规则的 YARA、未安装 PDF 阅读器的隔离分析虚拟机,以及 CyberChef。