onurtnc/phishtriage

GitHub: onurtnc/phishtriage

PhishTriage 是一款零依赖的 SOC 钓鱼邮件自动分诊工具,通过标头、认证、链接、附件和内容多维度分析在几秒内生成钓鱼评分和可操作的调查依据。

Stars: 0 | Forks: 0

# PhishTriage **几秒钟内即可对可疑邮件进行分诊的零依赖 SOC 工具。** ![Python](https://img.shields.io/badge/python-3.8%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Dependencies](https://img.shields.io/badge/dependencies-none-brightgreen) ![Tests](https://img.shields.io/badge/tests-19%20passing-success) 只需提供一个 `.eml` 文件;PhishTriage 就会检查标头链、SPF/DKIM/DMARC 结果, 分析每个链接和每个附件,生成 **0-100 之间的钓鱼评分**以及 理由列表。您可以将输出直接粘贴到工单中,或将 IOC 输入到 SIEM 中。 ## 为什么需要? Tier-1 SOC 收到的工单中,大部分都是“这封邮件是伪造的吗?”这个问题。手动 检查每封邮件需要 5-10 分钟:读取标头、检查 SPF、对链接进行 defang 处理、对附件进行 hash 计算。PhishTriage 将这一切简化为一条命令,并逐条列出 **为什么**它很可疑——也就是说,它不会代替分析师做决定,而是为分析师提供依据。 ## 功能 ### 标头分析 - 显示名称与实际发件人地址不匹配 - `Reply-To` 和 `Return-Path` 差异(回复是否发送给了攻击者) - 品牌冒充 + 免费电子邮件提供商组合 - 缺失/不匹配的 `Message-ID`,伪造的 `Re:` 主题标头 - 解析 `Received` 链,提取源 IP ### 身份验证 - 从 `Authentication-Results` 和 `Received-SPF` 标头获取 SPF / DKIM / DMARC / compauth - 对 `fail`、`softfail`、`none` 状态进行权重计算 ### 链接分析 - HTML `` 标签中 **显示文本与实际目标不匹配** - 品牌冒充域名(`microsoft-hesap-dogrulama.top`)和 typo-squat 检测 - Punycode / IDN 同形异义词,西里尔字母与拉丁字母混合 - URL 缩短服务,使用 `@` 隐藏用户名,直接使用 IP - 高风险 TLD(`.zip`、`.top`、`.xyz`、`.tk`...),被滥用的托管平台 - 所有 URL 自动进行 **defang** 处理(`hxxp://evil[.]com`) ### 附件分析 - MD5 + SHA256 hash(可直接输入到 VirusTotal/IOCForge) - 高风险扩展名,双扩展名伪装(`Makbuz.pdf.exe`),RTLO 字符 - 检测 Office 文件中的 **VBA 宏项目**(扫描 zip 内容) - PDF 中的 `/JavaScript`、`/OpenAction`、`/Launch`,内嵌文件 - PE (`MZ`) 签名检查 ### 内容分析 - 土耳其语 + 英语的紧急/恐吓性用语及索取凭据的词汇 - 嵌入在邮件正文中的 HTML `
`(收集身份信息) - 1x1 追踪像素,使用 `display:none` 隐藏的文本 - 非个性化的称呼(“尊敬的客户”) ## 安装 ``` git clone https://github.com//phishtriage.git cd phishtriage python -m phishtriage samples/ # kurulum gerekmiyor ``` 要添加为命令,请使用:`pip install -e .` ## 使用方法 ``` # 分析样本示例 python -m phishtriage samples/ # 单文件,详细(供应链 + 内容预览) python -m phishtriage supheli.eml -v # 生成 HTML 报告(用于添加到 ticket) python -m phishtriage karantina/ --html rapor.html # 仅 IOC 列表 - 用于提供给 SIEM/TIP python -m phishtriage supheli.eml --iocs # 批量扫描:仅显示 40 分以上的 python -m phishtriage kutu/ --min-score 40 --json bulgular.json # CI/自动化:若存在 70+ 分的邮件则 exit 1 python -m phishtriage kutu/ --fail-on 70 --quiet ``` ### 示例输出 ``` ============================================================================== PhishTriage - 01_marka_taklidi.eml ============================================================================== Karar: PHISHING Skor: [####################] 100/100 ------------------------------------------------------------------------------ Konu : ACIL: Hesabiniz 24 saat icinde askiya alinacak Gonderen : Microsoft Hesap Guvenligi Reply-To : destek@microsoft-hesap-dogrulama.top Dogrulama : SPF=fail DKIM=none DMARC=fail BULGULAR (14) [+35] Kurumsal marka taklidi + ucretsiz e-posta (Baslik) Gorunen ad 'Microsoft Hesap Guvenligi' ile 'microsoft' taklit ediliyor ama adres ucretsiz bir saglayicida (gmail.com). [+30] Gorunen adres 'microsoftonline.com' ama gercek hedef 'microsoft-hesap-dogrulama.top' (Baglanti) [+30] DMARC politikasi ihlal edildi (fail) (Kimlik dogrulama) [+25] E-posta icinde HTML form (Icerik) ... IOC OZETI urls: http://microsoft-hesap-dogrulama.top/login/verify?id=8812 domains: microsoft-hesap-dogrulama.top, bit.ly source_ips: 193.176.79.204, 127.0.0.1 ``` ## 评分 每个发现都有相应的权重;总和在 100 处截断。 | 评分 | 决定 | 操作建议 | |---|---|---| | 70-100 | **钓鱼 (PHISHING)** | 进行隔离,阻止发件人/URL,警告收件人 | | 40-69 | **可疑 (SUPHELI)** | 需要分析师检查,在沙箱中打开 | | 15-39 | **低风险 (DUSUK RISK)** | 可能是营销/垃圾邮件,记录并跳过 | | 0-14 | **干净 (TEMIZ)** | 无需处理 | 权重定义在 `phishtriage/scoring.py` 中的单一位置;您可以根据贵机构的 实际情况轻松调整。 ## `.msg` 文件 不支持 Outlook 基于 OLE 的 `.msg` 格式(该工具刻意保持零 依赖)。请在 Outlook 中使用 **另存为 → .eml** 导出,或者: ``` pip install extract-msg extract_msg --out-dir . mail.msg ``` ## 架构 ``` phishtriage/ ├── models.py Indicator / UrlInfo / AttachmentInfo / Analysis veri siniflari ├── parser.py EML okuma, Received zinciri, SPF-DKIM-DMARC, ek cikarma ├── urls.py URL cikarma, defang, marka/homograf/anchor analizi ├── scoring.py Tum gostergeler ve agirliklari (ayar noktasi burasi) ├── analyzer.py Akisi birlestiren katman ├── report.py Konsol / JSON / HTML ciktilari └── cli.py argparse arayuzu ``` ## 测试 ``` python -m unittest discover -s tests -v ``` `samples/` 下有三个真实的示例:品牌冒充钓鱼邮件、带恶意附件的 虚假发票以及干净的通讯简报。测试确认这三者都被正确分类。 ## 路线图 - [ ] 集成 VirusTotal / URLhaus(与 IOCForge 协作) - [ ] 连接 IMAP 邮箱进行自动扫描 - [ ] QR 码 (quishing) 检测 — 解析图片附件中的 QR 码 - [ ] 以 MISP 格式导出 IOC - [ ] 内置 `.msg` 解析器 ## 免责声明 这是一个防御性工具。生成的评分 **并非自动决策**,而是分析师进行 调查的起点。切勿在生产机器上打开恶意附件。 ## 许可证 MIT — 详情请见 [LICENSE](LICENSE)。
标签:LNA, Python, SOC工具, 动态分析, 威胁情报, 开发者工具, 无后门, 无服务器架构, 漏洞发现, 逆向工具, 邮件安全, 钓鱼检测