p-kami-sama/pdf-polyglot-forge
GitHub: p-kami-sama/pdf-polyglot-forge
一个用于安全研究的 PDF polyglot 生成工具包,支持将多种脚本语言 payload 以不同策略注入 PDF 文件并批量生成实验样本。
Stars: 0 | Forks: 0
# pdf-polyglot-forge
一个用于研究生成嵌入了 Bash、JavaScript 和 Python payload 的 PDF polyglot 的工具包。本项目提供了多种合并策略,并支持整洁的格式化和保留文件头。专为数字取证、恶意软件分析研究以及 polyglot 研究而设计,不可用于恶意用途。
## 📂 目录结构
该仓库的组织结构旨在支持 polyglot 的生成,以及复现我们研究中展示的实验数据:
* **`make_pdf_polyglot.py`**:核心 Python 脚本,用于使用不同的结构位置将 payload 注入到 PDF 文件中。
* **`automated_task_scripts/`**:一套辅助 `python` 脚本,用于自动批量生成 polyglot,并验证其语法(`check_polyglots_syntax.sh`)。
* **`generate_graphs/`**:包含实验数据集(`NEW_PDF_tests.csv`)以及用于绘制论文中检测率图表的 Python 脚本(`generate_graph_X.py`)。输出结果保存在 `graphs/` 子文件夹中。
## ⚙️ 工作原理:`make_pdf_polyglot.py`
主工具接收一个正常的 PDF 和一个 payload 脚本(Bash、JavaScript 或 Python),并将它们合并为一个单一的有效 polyglot 文件。该工具支持三种不同的注入技术,以测试对静态分析的规避能力:
### 位置参数
* `base_file`:基础文件的路径(例如:原始 PDF)。
* `payload_file`:payload 文件的路径(例如:JavaScript)。
* `output_file`:生成的输出文件的路径。
### 选项
* `-h`, `--help`:显示帮助信息并退出。
* `-o`, `--obfuscate`:通过对注入的代码进行混淆,隐藏 payload 在 PDF 结构中的存在。
* `-t`, `--type`:要使用的注入策略。有效选项:{stack,cavity,zipper,original}。original 不会修改脚本的结构,如果设置了 `-o` 标志,则只会应用混淆。
* `-v`, `--verbose`:启用详细的日志输出。
### 使用示例
```
python merge_pdf.py input.pdf payload.js result.pdf --type cavity --obfuscate -v
```
标签:DNS 反向解析, PDF处理, Python, 应用安全, 恶意代码分析, 搜索语句(dork), 文件多态生成, 无后门, 逆向工具, 配置文件