D0m0x61/InboxForensics
GitHub: D0m0x61/InboxForensics
用于钓鱼邮件静态分析的工具,解析 .eml 文件并通过五项检查输出风险评分和 HTML 报告。
Stars: 0 | Forks: 0
# InboxForensics
用于邮件钓鱼分类的静态分析工具。接收 `.eml` 文件,运行五项独立检查,并输出风险评分(0–100)及一份独立的 HTML 报告。
不进行抓取,不进行主动探测。每项检查要么是本地的,要么是只读 DNS/API。
## 评分机制
五个模块按顺序运行,每个模块在最终得分中占有加权比例:
**Headers (20%)** — 检查 Reply-To/From 域名不匹配、显示名称中包含品牌名但与发送域不匹配(例如:从 `gmail.com` 发送的 "PayPal Support")、通过 Levenshtein 距离检测相似域名,以及缺失标准头部。
**SPF / DKIM / DMARC (25%)** — 对发件人域进行 DNS 查询。标记缺失记录、SPF 无失败策略 (`+all`)、DMARC 设置为 `p=none`、缺少 DKIM 签名,以及 `Authentication-Results` 头部中的明确失败结果。
**URLs (25%)** — 检查正文中的每个 URL。标记 IP 作为主机、URL 缩短服务、可疑 TLD(`.tk`、`.xyz`、`.zip` 等)、路径/查询参数中的钓鱼关键词、子域名中滥用品牌名(`paypal.com.evil.xyz`)以及明文 HTTP。
**Domain reputation (20%)** — 查询 VirusTotal 获取从 URL 中提取的每个唯一域名的信息。报告恶意/可疑引擎数量和信誉评分。需要免费的 API key;如果未设置则跳过。
**Content (10%)** — 使用正则表达式匹配英语和意大利语的紧迫性语言(`account suspended`、`verifica immediatamente` 等)、HTML 正文中的凭据收集表单、主题行中的紧迫性关键词,以及链接显示文本与实际 href 不匹配。
最终评分:**LOW** 0–39 · **MEDIUM** 40–69 · **HIGH** 70–100
## 安装
```
git clone https://github.com/D0m0x61/InboxForensics.git
cd InboxForensics
pip install -e .
```
需要 Python 3.10+。
## VirusTotal API key(可选)
如果没有它,工具仍然可以运行 —— 域名信誉检查将被跳过,该模块对评分为 0 贡献。
要启用它:在 [virustotal.com](https://www.virustotal.com/gui/join-us) 注册,进入个人资料 → API Key,然后:
```
# ~/.zshrc
export IBF_VT_KEY=your_key_here
```
免费层允许每分钟 4 次请求和每天 500 次请求。该工具会自动遵守此限制。
## 使用方法
```
python -m ibf --file suspicious.eml
```
```
python -m ibf --file suspicious.eml --output report.html --json result.json
```
```
--file .eml file to analyze (required)
--output HTML report path (default: inbox_report.html)
--json JSON output path (default: inbox_result.json)
--vt-key VirusTotal key (overrides IBF_VT_KEY)
```
**获取 .eml 文件**
- Gmail:打开邮件 → ⋮ → "Download message"
- Outlook:File → Save As → `.eml`
- Thunderbird:Message → Save As → File
## 输出
HTML 报告是独立的(渲染时无外部依赖)。它显示总体评分环、带有进度条和单独发现的各模块细分、正文中发现的每个链接的 URL 级别详细信息,以及设置 key 后的 VirusTotal 结果表。
JSON 输出包含相同的结构化数据,适合通过管道传输到其他工具或进行日志记录。
## 测试
测试覆盖三个完全本地的模块(headers、URLs、content),使用两个硬编码的模拟邮件 —— 一个明显的钓鱼尝试,一个干净的通讯。不需要网络调用,不需要 API key。
```
pip install -e ".[dev]"
pytest tests/ -v
```
`auth` 和 `reputation` 未进行单元测试,因为它们分别需要实时 DNS 和 VT key。
## 许可证
MIT
标签:AMSI绕过, Ask搜索, CSIRT, EML解析, ESC8, Header分析, HTML报告, Python, SOC工具, SPF/DKIM/DMARC校验, URL分析, VirusTotal, YARA规则替代, 云安全监控, 品牌冒用检测, 域名信誉, 威胁检测, 开源安全工具, 无后门, 欺诈检测, 漏洞发现, 电子邮件安全, 社会工程学, 紧急性语言检测, 网络安全, 误报检测, 逆向工具, 逆向工程平台, 邮件取证, 钓鱼邮件分析, 隐私保护, 静态分析, 风险评分