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规则替代, 云安全监控, 品牌冒用检测, 域名信誉, 威胁检测, 开源安全工具, 无后门, 欺诈检测, 漏洞发现, 电子邮件安全, 社会工程学, 紧急性语言检测, 网络安全, 误报检测, 逆向工具, 逆向工程平台, 邮件取证, 钓鱼邮件分析, 隐私保护, 静态分析, 风险评分