Gurkirat-sudo-su/pdf-malware-analysis-toolkit
GitHub: Gurkirat-sudo-su/pdf-malware-analysis-toolkit
一个基于 Python 的 PDF 恶意软件静态分析工具包,通过元数据提取、对象扫描、JS 混淆检测和 IOC 提取等手段,在不执行文件的前提下对可疑 PDF 进行风险评估和报告生成。
Stars: 0 | Forks: 0
# PDF 恶意软件分析工具包
这是一个基于 Python 的静态分析工具包,用于检测恶意 PDF 文档,
作为网络安全实习项目的一部分而开发。它复现了 SOC 分析师对可疑 PDF 附件执行的
核心分诊检查——而无需
执行该文件。
**在线演示:** _部署后在此处添加您部署的 Streamlit URL_
## 功能简介
- **元数据提取** — 作者、生成者、创建/修改日期,以及
异常标志(缺失字段、篡改的时间戳、加密文档)。
- **对象枚举和关键字扫描** — 统计间接对象数量,并标记
已知的危险关键字(`/JavaScript`、`/OpenAction`、`/Launch`、
`/EmbeddedFile`、`/RichMedia` 等),每个关键字按严重程度进行加权。
- **JavaScript 分析** — 提取嵌入的 JS(正确处理 PDF 的平衡
非转义括号字符串文字),并标记混淆
模式,例如 `eval()`、`unescape()`、`String.fromCharCode` 和
已知的漏洞触发器调用。
- **IOC 提取** — 提取嵌入的 URL、IP 地址,并根据
文件签名(magic bytes,魔数)标记嵌入的二进制文件,而不仅仅是扩展名。
- **风险评分引擎** — 将所有信号组合成一个 0–100 的单一评分
并给出低 / 中 / 高 / 严重(Low / Medium / High / Critical)的判定结果以及缓解措施清单。
- **报告生成** — 生成人类可读的文本报告和机器可读的
JSON 输出。
所有分析都是静态的(没有执行或沙箱机制),因此直接
针对可疑文件运行是安全的。
## 项目结构
```
pdf_malware_toolkit/
├── app.py # Streamlit web UI (deployment entry point)
├── cli.py # Command-line entry point
├── requirements.txt
├── toolkit/
│ ├── metadata.py # Metadata extraction + anomaly detection
│ ├── objects.py # Object enumeration + keyword scanning
│ ├── javascript.py # JS extraction + obfuscation detection
│ ├── iocs.py # URL/IP/embedded-binary extraction
│ ├── risk.py # Risk scoring engine
│ └── report.py # Text report builder
├── samples/ # Safe test PDFs (no working exploit code)
└── reports/ # Example generated reports
```
## 使用说明
### 命令行
```
pip install -r requirements.txt
python cli.py path/to/file.pdf
python cli.py path/to/file.pdf --json results.json --report report.txt
```
### Web 应用(本地)
```
streamlit run app.py
```
然后打开 Streamlit 打印的本地 URL(通常是 `http://localhost:8501`),
上传 PDF,并在浏览器中查看分析结果。
### 部署 Web 应用
1. 将此代码库推送到 GitHub。
2. 前往 [share.streamlit.io](https://share.streamlit.io),使用
GitHub 登录,并创建一个指向此代码库 `app.py` 的新应用。
3. Streamlit Cloud 会自动安装 `requirements.txt`,并为您提供一个
公开的 `https://.streamlit.app` URL —— 这就是您的部署链接。
## 结果示例
`samples/` 目录下包含了两个安全样本文件:
- `clean_sample.pdf` — 一个没有可疑结构的良性 PDF。评分
**0/100(低)**。
- `suspicious_pattern_sample.pdf` — 一个包含结构
标记的合成 PDF(`/OpenAction`、`/JavaScript`、混淆风格的函数
调用、嵌入的 PE magic-byte 标记),仅用于验证检测
逻辑。**不包含有效的漏洞利用代码**。评分 **87/100(严重)**。
## 免责声明
此工具仅供教育和授权的安全测试目的使用。
仅分析您拥有或被明确授权测试的文件。静态
分析降低了风险,但并未完全消除风险——在直接
打开任何可疑附件之前,请务必遵守您所在
组织的恶意软件处理程序(隔离的虚拟机、在
VirusTotal 上进行哈希查询等)。
标签:AMSI绕过, DAST, DNS 反向解析, Go语言工具, Kubernetes, Python, 云安全监控, 威胁检测, 恶意软件分析, 无后门, 逆向工具, 静态分析