交互式 PDF 分析(也称为 IPA)允许任何研究人员探索任何 PDF 文件的内部细节。PDF 文件可能被用来携带利用漏洞的恶意载荷,以及 PDF 阅读器的问题,或者可能被用于钓鱼攻击中作为社会工程学手段。 该软件的目标是让任何分析师都能自行深入研究 PDF 文件。通过 IPA,你可以从 PDF 文件中提取重要的载荷,理解对象之间的关系,并推断出可能有助于对恶意或不受信任载荷进行分类的元素。
主要的灵感来源于 Zynamics 背后那些了不起的人,以及他们出色的产品,名为 PDF dissector。
当我开始逆向工程恶意软件时,可用于分析恶意载荷的主要工具是 Didier Stevens 的优秀工具。这些工具已成为 事实上的 标准,但其中一个主要问题是它们只能从命令行使用,必须记住非常大量的标志组合,并报告各种对象的编号。尽管分析师和开发者每天都必须应对各种命令行工具,但这并不意味着我们不能创建一个新的图形化文件检查工具。
事实上,静态分析和逆向工程领域的部分工作也关注如何从用户体验的角度向分析师展示最显著的信息。Didier Stevens 的工具以及 peepdf 已经被广泛使用且相当成熟。然而,分析师可以使用某种图形化工具来理解各种对象之间的关系,理解它们引用了哪些页面以及哪些对象类型(图像、字体、颜色、元数据),以简单的方式导出流内容,并以表格形式查看字典的内容。
主要的灵感来源是 Zynamics 开发的名为 PDF-dissector 的工具:一些前用户的出色反馈以及不断有人要求将其开源,促使我花了几天时间创建了这个工具。
该工具可以使用 Rust 和 cargo 编译。除了 Rust 和所拉取的 crate 之外,不需要任何依赖。
git clone https://github.com/seekbytes/IPA
cd IPA
## compile with debug symbols, the binary is inside ./target/debug/IPA
cargo b
## compile in release mode, the binary is inside ./target/release IPA
cargo b --release
IPA 目前有以下局限性:
最后,这个工具确实可以大幅改进,我敢打赌有些人会注意到我的代码有多糟糕。如果你是其中之一,请告诉我潜在的改进、更好的模式以及任何建议。
如果你有任何问题、改进建议,或者只是想给我发消息,请发送邮件至 [email protected]。