Strixhack/phishing-triage-pipeline

GitHub: Strixhack/phishing-triage-pipeline

自动化 SOC 钓鱼邮件分流平台,集成 IOC 提取、威胁情报富化、YARA 扫描、MITRE ATT&CK 映射、风险评分、TheHive/Cortex 联动及 NIS2 合规追踪。

Stars: 0 | Forks: 0

# 钓鱼邮件分流处理流水线 自动化的 SOC 钓鱼邮件分流平台。上传 `.eml` 文件,流水线将解析邮件头、提取 IOC,结合 VirusTotal、AbuseIPDB 和 MISP 进行富化,运行 YARA 规则,映射 MITRE ATT&CK 技术,进行 0-100 的风险评分,创建 TheHive 案例,运行 Cortex 分析器,追踪 NIS2 第 23 条截止期限,并检测协同钓鱼活动。 本项目作为面向 EU SOC 实习生和 L1 分析师岗位的作品集项目构建。 ## 快速开始 ``` git clone https://github.com/Strixhack/phishing-triage-pipeline cd phishing-triage-pipeline cp .env.example .env docker compose up --build ``` 打开 http://localhost:3000 示例邮件位于 `samples/` 目录中 —— 上传任意 `.eml` 文件即可开始。 ## 截图 ### 仪表盘 —— 结论分布、案例统计、近期案例 ![仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/cas/0d/0d8f808edef3b262cbacd78a04fe4c95eb6b2768a43bf612f8c36dbf0ad85723.png) ### 上传 —— 包含 MITRE ATT&CK 映射和 Cortex 分析的分流结果 ![上传](https://static.pigsec.cn/wp-content/uploads/repos/cas/3f/3f1b7be4758e755ce302cbf97732c2392b4a181a8643266bb257baf2be36c83a.png) ### 案例详情 —— 包含真实 VT/AbuseIPDB 评分的 IOC 表格、审计日志、NIS2 状态 ![案例详情](https://static.pigsec.cn/wp-content/uploads/repos/cas/06/0618566dcdd7da806fe47b73a755be177a6f37c4cbf3d0ea3b6e0df915963f8e.png) ### NIS2 合规 —— 第 23 条计时器、按紧急程度排序的重大案例 ![NIS2](https://static.pigsec.cn/wp-content/uploads/repos/cas/94/94ea64288166861d5ff1550c5c5737e616e2079ac495b133e13e6a730e91af71.png) ### 活动检测 —— 通过共享的 IOC 和发件人模式对钓鱼邮件进行聚类 ![活动](https://static.pigsec.cn/wp-content/uploads/repos/cas/d7/d711350e1bf53ef49b0c8cc04984be625f9a35465f6c776c65f85b8669be9ad3.png) ### API 文档 —— Swagger UI,所有端点 ![API 文档](https://static.pigsec.cn/wp-content/uploads/repos/cas/0a/0a95f2a114da17d2c41f4b0f5a6fa2e7543183dc2edf233cb196b532f50ee0b0.png) ## 功能说明 一封真实的钓鱼邮件(来自 phishing_pot 蜜罐的 `sample-1159.eml`)被评为 **38/100 SUSPICIOUS**,详情如下: - URL `https://mail.contianer.best` —— **75% VT 检测率**,被 Cortex 标记为 **malicious** - IP `27.112.189.185` —— AbuseIPDB 评分 **16**,被 Cortex 标记为 **suspicious** - IP `185.189.112.27` —— AbuseIPDB 评分 **4** - 映射了 **5 项 MITRE ATT&CK 技术**:T1566.002, T1071.001, T1204.001, T1566, T1583.001 - 自动创建了 TheHive 案例 **~681377** - Cortex 分析了 **3 个 IOC** ## 特性 | 特性 | 详情 | |---|---| | 邮件解析 | 从 Authentication-Results 头部提取 SPF/DKIM/DMARC,通过正则表达式提取 IOC | | IOC 类型 | URLs, IPs (过滤 RFC-1918), domains, SHA256/SHA1/MD5 哈希 | | 富化 | VirusTotal v3, AbuseIPDB v2, MISP —— 每个 IOC 异步并行处理 | | YARA 扫描 | 7 条规则:凭证收集、BEC、宏恶意软件、勒索软件、dropper、虚假登录 | | MITRE ATT&CK | 根据 IOC、认证结果、启发式分析和 YARA 匹配自动映射技术 | | 风险评分 | VT 35% + AbuseIPDB 20% + MISP 20% + 认证 15% + 启发式分析 10% = 0-100 | | 结论 | BENIGN(低于 30),SUSPICIOUS(30-54),MALICIOUS(55+) | | NIS2 合规 | 第 23 条:24 小时早期预警 + 72 小时通知计时器,评分达到 55+ 时自动标记 | | TheHive | 自动创建案例:TLP:AMBER,严重程度 1-3,标签,富化后的 IOC 摘要 | | Cortex | 分析前 3 个 IOC:VirusTotal_GetReport, URLhaus, DomainTools, Abuse_Finder, MalwareBazaar | | 活动检测 | 根据发件人 domain 相似度、邮件主题模板、URL domain 重叠度对邮件进行聚类 | | 审计日志 | 仅追加 —— 记录所有操作:上传、评分、TheHive、Cortex、分析师更改 | | 模拟桩 | 无需 API 密钥的完整离线演示,确定性评分确保演示可重现 | ## 技术栈 | 层级 | 技术 | |---|---| | 后端 | Python 3.12, FastAPI, SQLAlchemy 2.0 async, aiosqlite | | 富化 | VirusTotal v3, AbuseIPDB v2, MISP REST, TheHive REST, Cortex REST | | 检测 | yara-python, MITRE ATT&CK 静态映射 | | 前端 | React 18, React Router, Recharts, Vite | | 基础设施 | Docker Compose — 3 个服务:API :8000, UI :3000, 模拟桩 :9000 | | 合规 | NIS2 第 23 条 (EU 2022/2555) | ## 风险评分模型 ``` VirusTotal 35% malicious detections / total engines x 100 AbuseIPDB 20% confidence score 0-100 MISP 20% attribute hits x 25, capped at 100 Auth 15% SPF/DKIM/DMARC fail=40pts, softfail=25pts each Heuristics 10% subject keywords, reply-to mismatch, dangerous attachments YARA boost +15% of YARA score contribution added on top ``` ## NIS2 实现 结论为 MALICIOUS 或风险评分 >= 55 的案例将被标记为 NIS2 第 23 条规定的重大事件。 - 上传时记录 `detected_at` - `early_warning_due` = detected_at + 24 小时 - `notification_due` = detected_at + 72 小时 - NIS2 仪表盘显示所有按紧急程度排序的重大案例 - 逾期案例以红色高亮显示 - 分析师点击“标记为已通知” —— 记录至不可变的审计日志中 ## 活动检测 `/api/campaigns/` 端点使用以下条件对数据库中的所有案例进行聚类: - 发件人 domain 相似度:精确匹配为 1.0,相同 TLD+1 匹配为 0.5 - 主题模板相似度:去除可变部分(ID、日期、token)后的 token 重叠度 - URL domain 重叠度:跨邮件共享 domain 的比例 综合相似度 >= 0.12 的案例将被归为一个活动。在包含 26 封上传邮件的测试中,检测到了 6 个活动,其中 CAMP-0002 包含 7 个共享 `malware-phish` URL domain 的案例。 ## 服务 | 服务 | URL | |---|---| | 仪表盘 | http://localhost:3000 | | API | http://localhost:8000 | | Swagger 文档 | http://localhost:8000/api/docs | | 模拟桩 | http://localhost:9000 | | 桩文档 | http://localhost:9000/docs | ## 示例邮件 `samples/` 中的 10 个场景: | 文件 | 场景 | 预期结论 | |---|---|---| | 01-clean-legitimate.eml | 第三季度预算报告 | BENIGN | | 02-suspicious-invoice.eml | 发票支付欺诈 | SUSPICIOUS | | 03-malicious-phishing.eml | PayPal 凭证收集 | MALICIOUS | | 04-bec-ceo-fraud.eml | CEO 电汇 BEC | SUSPICIOUS | | 05-credential-harvest-m365.eml | Microsoft 365 欺骗 | MALICIOUS | | 06-malware-attachment-invoice.eml | .exe dropper 投递 | MALICIOUS | | 07-delivery-scam-dhl.eml | DHL 重新投递诈骗 | SUSPICIOUS | | 08-hr-payroll-redirect.eml | 工资银行账户重定向 | MALICIOUS | | 09-legitimate-newsletter.eml | 内部时事通讯 | BENIGN | | 10-it-security-alert-spoof.eml | 勒索软件警报欺骗 | MALICIOUS | ## 实时 API 模式 编辑 `.env`: ``` USE_MOCK_STUBS=false VT_API_KEY=your_virustotal_key ABUSEIPDB_API_KEY=your_abuseipdb_key MISP_URL=https://your-misp-instance MISP_API_KEY=your_misp_key THEHIVE_URL=http://localhost:9001 THEHIVE_API_KEY=your_thehive_key CORTEX_URL=http://localhost:9002 CORTEX_API_KEY=your_cortex_key ``` 免费的 VirusTotal API:4 次请求/分钟。对包含大量 IOC 的邮件进行分流将需要 30-60 秒。 ## 已知限制 - 免费 VT API 限制为 4 次请求/分钟 —— 在处理 IOC 密集的邮件时会变慢 - 使用 SQLite 以提高可移植性 —— 生产环境建议使用 PostgreSQL - 活动检测针对演示数据量进行了调整 —— 在大规模应用时可能需要调整阈值 - YARA 仅扫描正文文本 —— 尚未实现附件字节扫描 ## SOC L1 操作手册 参见 [docs/SOC_L1_RUNBOOK.md](docs/SOC_L1_RUNBOOK.md) —— 分流程序、升级矩阵 (L1/L2/CISO)、NIS2 通知步骤。 ## 项目结构 ``` phishing-triage/ backend/ app/ api/ FastAPI route handlers core/ config, database models/ SQLAlchemy models (Case, IOC, AuditLog) services/ email_parser, enrichment, risk_scorer, yara_scanner, mitre_mapper, nis2, thehive, cortex, campaign_detector stubs/ mock API server (VT, AbuseIPDB, MISP, TheHive, Cortex) tests/ yara_rules/ phishing.yar frontend/ src/ api/ API client pages/ Dashboard, CaseList, CaseDetail, Upload, NIS2Dashboard, Campaigns docs/ SOC_L1_RUNBOOK.md samples/ 10 test .eml files docker-compose.yml ``` ## 许可证 MIT ## 真实分流示例 上传了一封来自 [phishing_pot](https://github.com/rf-peixoto/phishing_pot) 蜜罐数据集的真实钓鱼邮件,并启用了实时 VirusTotal API。 ![真实分流结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/3f/3f1b7be4758e755ce302cbf97732c2392b4a181a8643266bb257baf2be36c83a.png) **结果:** | 字段 | 值 | |---|---| | 参考 | PT-E5564AEC | | 主题 | Password Expiry Notification for phishing@pot | | 风险评分 | 38/100 SUSPICIOUS | | 发现的 IOC | 5 (1 个 URL, 3 个 IP, 1 个 domain) | | TheHive 案例 | 自动创建 ~681377 | | YARA 匹配 | 0 | | MITRE 技术 | 映射了 5 项 | **来自实时 API 的评分明细:** | 来源 | 评分 | 发现 | |---|---|---| | VirusTotal | 38.2 | URL https://mail.contianer.best - 真实检测 | | AbuseIPDB | 7 | IP 27.112.189.185 被报告 | | MISP | 75 | 威胁情报命中 | | 认证 | 45 | SPF/DKIM/DMARC 无 | | 启发式分析 | 15 | 可疑指标 | **自动映射的 MITRE ATT&CK 技术:** | 技术 | 名称 | 战术 | 置信度 | |---|---|---|---| | T1566.002 | Phishing: Spearphishing Link | Initial Access | high | | T1071.001 | Application Layer Protocol: Web Protocols | Command and Control | medium | | T1204.001 | User Execution: Malicious Link | Execution | medium | | T1566 | Phishing | Initial Access | medium | | T1583.001 | Acquire Infrastructure: Domains | Resource Development | low | **Cortex 对前 3 个 IOC 的分析:** | 类型 | IOC | 结果 | |---|---|---| | url | https://mail.contianer.best/international.html | malicious | | ip | 27.112.189.185 | suspicious | | ip | 185.189.112.27 | safe |
标签:AV绕过, Docker, FastAPI, React, Syscalls, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 版权保护, 自动化分类, 逆向工具, 钓鱼邮件分析