pashasec/phish-triage

GitHub: pashasec/phish-triage

phish-triage 能快速将 .eml 钓鱼邮件文件转换为详细的事件报告,解决安全团队手动分析耗时且繁琐的问题。

Stars: 0 | Forks: 0

# 钓鱼邮件分流工具 `phish-triage` 是一款安全运营中心分析师工具,它只需一个命令就能完成目前需要 15 分钟切换标签页才能完成的工作:解析邮件、分析邮件头、提取 URL、计算附件哈希值、检测相似发送者域名,还可选地集成 VirusTotal / URLscan / AbuseIPDB 进行信息增强,映射到 MITRE ATT&CK 框架,进行风险评分判定,并输出一份准备归档的 Markdown 报告和一个可供 SIEM 吸收的 IOC CSV 文件。 该工具可完全离线工作。信息增强功能是可选的,只需设置您拥有的 API 密钥即可。 ![phish-triage 演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b611ab4ee9130026.png) ## 为什么需要这个工具 每个安全运营中心处理用户举报的钓鱼邮件的方式都大同小异: 1. 用户点击“举报钓鱼” → `.eml` 文件落入共享邮箱 2. 分析师打开它,将邮件头复制到 Mxtoolbox,打开 6 个标签页查找 URL 和附件,将 SHA256 复制到 VirusTotal,在 whois 中检查发送者域名的注册时间,最后将以上所有信息写入 Jira 工单 这大约需要 10-20 分钟每封邮件,而且大部分工作是机械性的。SOAR 平台可以自动化这个流程,但每年需要花费 5 万美元以上。而这个二进制文件的工作流完全相同。 ``` $ phish-triage suspicious.eml ``` ## 快速开始(零配置) 需要 Python 3.9+ 版本。只需三个命令,您就能获得一份分流报告: ``` git clone https://github.com/pashasec/phish-triage.git cd phish-triage ./run.sh tests/fixtures/sample-phish.eml --no-enrich ``` 就这样。`run.sh` 会在首次调用时创建虚拟环境、安装依赖项、运行工具,并且它是幂等的——后续调用只需运行即可。 Windows 用户: ``` git clone https://github.com/pashasec/phish-triage.git cd phish-triage run.bat tests\fixtures\sample-phish.eml --no-enrich ``` 该脚本会在当前目录下生成 `report-.md` 和 `iocs-.csv` 文件,在终端打印摘要信息,并在判定为 `可能钓鱼` 或 `确认钓鱼` 时以退出码 `2` 退出(便于通过管道连接到邮件网关钩子)。 ### 安装为命令(可选) 如果您希望将 `phish-triage` 添加到 `PATH` 而非通过 `./run.sh` 运行: ``` # 推荐使用: pipx (管理的 venv, 命令随处可用) pipx install -e . # 或: 经典 virtualenv python3 -m venv .venv && source .venv/bin/activate pip install -e . phish-triage tests/fixtures/sample-phish.eml ``` ### 可选的信息增强功能 将 `.env.example` 复制为 `.env`,并填入您拥有的 API 密钥: ``` VIRUSTOTAL_API_KEY=... URLSCAN_API_KEY=... ABUSEIPDB_API_KEY=... ``` ## 检查项目 | 信号 | 来源 | |---|---| | SPF / DKIM / DMARC 验证结果 | `Authentication-Results` 邮件头 | | 接收跳转链(源 IP、ASN、地理位置、时间戳) | `Received:` 邮件头 | | 时间戳偏移与邮件头伪造异常 | 跳转对之间的时间差 | | Reply-To 不匹配 | `From` 与 `Reply-To` 对比 | | 发送者域名年龄 | python-whois | | 相似域名(Microsoft / Google / Amazon / 30+ 品牌) | 编辑距离 + 同形字标准化 | | 从纯文本 + HTML 中提取 URL | 正则表达式 + BeautifulSoup | | URL 脱敏处理 (`hxxps://example[.]com`) | SOC 约定 | | 短链接扩展 (bit.ly, t.co, tinyurl, …) | HEAD 请求 | | 附件 SHA256 / SHA1 / MD5 | hashlib | | 危险文件类型 (`.exe`, `.scr`, `.js`, `.hta`, …) | 扩展名白名单 | | 宏启用文档 (`.docm`, `.xlsm`, …) | 扩展名白名单 | | HTML 附件(凭证窃取载体) | 扩展名白名单 | | 双扩展名欺骗 (`invoice.pdf.exe`) | 扩展名解析器 | | 外部信誉(VirusTotal, URLscan, AbuseIPDB) | 通过 API 密钥可选启用 | | MITRE ATT&CK 技术映射 | 基于规则 | | 判定评分 (`安全` / `可疑` / `可能` / `确认`) | 加性启发式算法 | ## 输出 Markdown 报告包含所有: IOC CSV 文件中每个指标一行(`类型, 值, 上下文, 来源判定`)——无需重新格式化即可导入 Splunk / Sentinel / TheHive / MISP。 ## 命令行接口 ``` Usage: phish-triage [OPTIONS] EML Triage a single .eml file end-to-end. Arguments: EML Path to .eml file [required] Options: -o, --out PATH Directory for the report and IOC CSV [default: .] --expand / --no-expand Expand shortened URLs via HEAD [default: expand] --enrich / --no-enrich Run external API enrichment when keys are set [default: enrich] -q, --quiet Suppress the terminal summary --version Show version and exit ``` 退出码: - `0` — 判定为 `安全` 或 `可疑` - `2` — 判定为 `可能钓鱼` 或 `确认钓鱼`(用于拦截/隔离) ## 在邮件网关中使用 ``` # Postfix content_filter, Sieve filter, 等 phish-triage "$EML_FILE" --quiet --no-enrich --out /var/log/phish if [ $? -eq 2 ]; then mv "$EML_FILE" /var/quarantine/ fi ``` ## 测试 ``` pip install -e ".[dev]" pytest ``` ## 路线图 - [ ] 通过无头 Chromium 自动截图 URL 落地页 - [ ] 集成 Hybrid Analysis & Joe Sandbox 信息增强 - [ ] 将确认的 IOC 推送到 OpenCTI / MISP - [ ] HTML 附件静态分析(提取表单操作、解码混淆代码) - [ ] `--watch DIR` 模式用于轮询共享邮箱 - [ ] 内置 Docker 镜像,预装所有依赖项 欢迎提交 PR。 ## 许可证 MIT — 详情请参阅 [LICENSE](LICENSE)。 属于 [30 天 30 个工具](https://github.com/pashasec) 挑战的一部分。
标签:Cloudflare, IOC提取, MITRE ATT&CK, Python, SIEM集成, SOC工具, Splunk, URL提取, 反编译, 域名检测, 威胁情报, 威胁情报集成, 威胁评分, 安全运营, 开发者工具, 恶意邮件分析, 扫描框架, 无后门, 漏洞发现, 电子邮件分析, 离线工作, 网络安全, 网络钓鱼检测, 自动化分析, 跨站脚本, 逆向工具, 附件分析, 隐私保护