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, 云安全监控, 威胁检测, 恶意软件分析, 无后门, 逆向工具, 静态分析