ThE-Old-MaNl/SOAR-Phishing-Pipeline

GitHub: ThE-Old-MaNl/SOAR-Phishing-Pipeline

基于 n8n 构建的企业级自动化钓鱼邮件分流流水线,结合多源威胁情报与 AI 分析实现秒级安全响应。

Stars: 0 | Forks: 0

# 🛡️ SOAR 钓鱼流水线 ### 企业级自动化钓鱼分流与威胁情报 **减少 SOC 警报疲劳 · 加速 MTTR · AI 驱动的威胁分析** [![n8n](https://img.shields.io/badge/n8n-Workflow%20Automation-EA4B71?style=for-the-badge&logo=n8n&logoColor=white)](https://n8n.io) [![Google Gemini](https://img.shields.io/badge/Google%20Gemini-GenAI%20Triage-4285F4?style=for-the-badge&logo=google&logoColor=white)](https://ai.google.dev) [![VirusTotal](https://img.shields.io/badge/VirusTotal-Threat%20Intel-394EFF?style=for-the-badge&logo=virustotal&logoColor=white)](https://www.virustotal.com) [![AbuseIPDB](https://img.shields.io/badge/AbuseIPDB-IP%20Reputation-FF0000?style=for-the-badge&logoColor=white)](https://www.abuseipdb.com) [![Discord](https://img.shields.io/badge/Discord-SOC%20Alerting-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com) [![License: MIT](https://img.shields.io/badge/License-MIT-10B981?style=for-the-badge)](LICENSE) [![SOAR](https://img.shields.io/badge/SOAR-Automation-F59E0B?style=for-the-badge)]() [![SecOps](https://img.shields.io/badge/SecOps-Pipeline-8B5CF6?style=for-the-badge)]()
n8n Workflow Screenshot
*一个完全自动化的安全编排、自动化与响应 (SOAR) 流水线,能够接收可疑的钓鱼邮件,提取 IOC,通过多源威胁情报进行富化,执行 AI 驱动的分流,并向您的 SOC 团队提供实时关键警报——所有这些都在 10 秒内完成。*
## 📋 目录 - [执行摘要](#-executive-summary) - [架构](#-architecture) - [流水线深度解析](#-pipeline-deep-dive) - [仓库结构](#-repository-structure) - [前置条件](#-prerequisites) - [设置与安装](#-setup--installation) - [使用与测试](#-usage--testing) - [Discord 警报输出](#-discord-alert-output) - [路线图](#-roadmap) - [贡献](#-contributing) - [许可证](#-license) ## 🎯 执行摘要 现代安全运营中心 (SOC) 正不堪重负。普通企业的 SOC 每天会收到 **11,000+ 条警报**,其中 **超过 45% 为误报**——这造成了灾难性的警报疲劳问题,不仅会让 L1/L2 分析师精疲力竭,还会让真正的威胁漏网。 **本流水线旨在解决这一问题。** **SOAR 钓鱼流水线**是一个基于 [n8n](https://n8n.io) 构建的端到端自动化安全编排工作流,它将手动、耗时 15-30 分钟的钓鱼分流流程转化为**不到 10 秒的完全自动化响应**——从接收邮件到边界执行。 ### 💡 价值主张 | 指标 | 之前 (手动) | 之后 (自动化) | |---|---|---| | **平均响应时间 (MTTR)** | 15-30 分钟 | < 10 秒 | | **每条警报的分析师工作量** | 约 20 分钟的手动 IOC 查询 | 零——完全自动化 | | **检查的威胁情报源** | 1-2 个 (手动浏览器标签页) | 并行查询 2+ 个 API (AbuseIPDB + VirusTotal) | | **分流报告质量** | 取决于分析师的经验 | 一致、AI 生成的 L2 级别分析 | | **SOC 通知延迟** | 数分钟 (邮件/工单) | 实时 (Discord webhook) | ## 🏗️ 架构 ### 高层工作流 ``` flowchart LR A["📧 Webhook\n(Email Ingestion)"] -->|"Raw Email\nMetadata"| B["⚙️ JavaScript\n(IOC Parser)"] B -->|"Extracted IPs\n& Domains"| C["🔍 AbuseIPDB\n(IP Reputation)"] C -->|"Abuse Score\n& Tor Status"| D["🦠 VirusTotal\n(Multi-Engine Scan)"] D -->|"Malicious\nDetections"| E{"🔀 Switch\n(Rules Engine)"} E -->|"⚠️ Threat\nConfirmed"| F["🧠 Google Gemini\n(AI SOC Analyst)"] E -.->|"✅ Benign"| G["📁 No Action\n(Log & Close)"] F -->|"Triage\nReport"| H["🚨 Discord\n(SOC Alert)"] style A fill:#EA4B71,stroke:#EA4B71,color:#fff style B fill:#F59E0B,stroke:#F59E0B,color:#fff style C fill:#EF4444,stroke:#EF4444,color:#fff style D fill:#394EFF,stroke:#394EFF,color:#fff style E fill:#8B5CF6,stroke:#8B5CF6,color:#fff style F fill:#4285F4,stroke:#4285F4,color:#fff style G fill:#6B7280,stroke:#6B7280,color:#fff style H fill:#5865F2,stroke:#5865F2,color:#fff ``` ### 数据流摘要 ``` Employee Reports Phishing Email │ ▼ ┌─────────────────────────────────────────────────────────┐ │ n8n Workflow Engine │ │ │ │ Webhook ─► IOC Parser ─► AbuseIPDB ─► VirusTotal │ │ │ │ │ Switch (Rules Engine) │ │ ╱ ╲ │ │ Malicious Benign │ │ │ │ │ │ Gemini AI Triage Log & Close │ │ │ │ │ Discord Alert │ └─────────────────────────────────────────────────────────┘ ``` ## 🔬 流水线深度解析 ### 步骤 1 · 📧 摄取 —— Webhook 接收器 流水线从一个 **n8n Webhook 节点**开始,该节点暴露一个 `POST` endpoint,模拟与邮件报告工具(例如 PhishMe/Cofense、Microsoft Report Message 或 SIEM 转发器)的集成。 **接受的 Payload Schema:** ``` { "sender": "attacker@fake-domain.com", "subject": "Urgent: Account Suspended", "body": "Click here to verify: http:///login/malware.exe", "timestamp": "2026-07-21T02:00:00Z" } ``` ### 步骤 2 · ⚙️ IOC 提取 —— JavaScript 解析器 定制的 **n8n Code 节点**在服务端执行 JavaScript,解析原始邮件正文,并使用正则表达式模式匹配提取入侵指标 (IOC): | IOC 类型 | 正则表达式模式 | 匹配示例 | |---|---|---| | **IPv4 地址** | `\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b` | `185.220.101.5` | | **URL** | `https?://[^\s/$.?#].[^\s"]*` | `http://185.220.101.5/login/malware.exe` | 解析器会对结果进行去重,并输出一个结构化的 JSON 对象,其中包含发件人、主题、目标 IP、提取的 URL 以及所有发现的 IOC 产出物,供下游丰富使用。 ### 步骤 3 · 🔍 威胁情报富化 提取出的 IOC 将依次通过两个业界领先的威胁情报 API 进行富化:
🔴 AbuseIPDB —— IP 信誉查询 - **Endpoint:** `GET https://api.abuseipdb.com/api/v2/check` - **查询窗口:** 过去 90 天内的滥用报告 - **返回:** - `abuseConfidenceScore` —— 该 IP 为恶意 IP 的可能性百分比 (0–100%) - `isTor` —— 布尔值标记,指示该 IP 是否为已知的 **Tor Exit Node** - `totalReports` —— 针对该 IP 提交的滥用报告数量 - `usageType` & `isp` —— 基础设施分类元数据
🦠 VirusTotal —— 多引擎威胁扫描 - **Endpoint:** `GET https://www.virustotal.com/api/v3/ip_addresses/{ip}` - **引擎覆盖率:** 70+ 家安全厂商 (CrowdStrike、Fortinet、Kaspersky 等) - **返回:** - `last_analysis_stats.malicious` —— 将该 IP 标记为恶意的引擎数量 - `last_analysis_stats.suspicious` —— 将其标记为可疑的引擎数量 - 信誉评分、WHOIS 数据以及相关的域名历史记录
### 步骤 4 · 🔀 智能条件分流 —— 规则引擎 **n8n Switch 节点**充当决策网关,通过评估风险阈值来决定流水线的响应路径: ``` IF VirusTotal malicious detections ≥ 3 engines → Route to AI Triage (malicious branch) ELSE → Route to log-only (benign/low-confidence branch) ``` ### 步骤 5 · 🧠 GenAI SOC 分析师 —— Google Gemini 分流 当 Switch 节点确认存在威胁时,流水线会调用 **Google Gemini**(通过 n8n LangChain Gemini 节点)来充当**自动化的高级 SOC L2 分析师**。 **AI 接收:** - 原始邮件文本(发件人、主题、正文) - 富化后的威胁情报指标(AbuseIPDB 评分、VirusTotal 检测结果) - 目标 IP 和提取的 IOC **AI 会生成严格的 3 点 Markdown 分流摘要:** | 序号 | 字段 | 描述 | |---|---|---| | 1 | **攻击媒介** | 识别社会工程策略——紧迫感、恐惧、冒充、虚构借口 | | 2 | **IOC 评估** | 评估基础设施信誉——滥用评分、VT 检测结果、Tor 确认情况 | | 3 | **分析师建议** | 规定立即采取的边界缓解措施——黑名单、防火墙规则、SIEM 查询 | ### 步骤 6 · 🚨 实时 SOC 警报 —— Discord Webhook 最后一个节点会通过 webhook 向指定的 Discord SOC 频道推送**格式化、带颜色编码的关键警报**: ``` 🚨 CRITICAL SOC ALERT: MALICIOUS PHISHING DETECTED 🚨 Sender: attacker@fake-cih.com Subject: Urgent: Account Suspended Target IP: 185.220.101.5 --- 🧠 AI Threat Triage Summary: 1. Attack Vector: High-urgency social engineering via fraudulent account suspension pretext... 2. IOC Assessment: Target IP confirmed malicious — 100% AbuseIPDB score, 9 VirusTotal detections... 3. Analyst Recommendation: Block sender domain, IP, and payload domain across all email gateways... --- 🔴 AbuseIPDB Score: 100% 🦠 VirusTotal Detections: 9 Engines 🕵️ Tor Exit Node: true Action Taken: 🛑 IP Blocked & Email Quarantined. ``` ## 📂 仓库结构 ``` SOAR-Phishing-Pipeline/ │ ├── 📄 README.md # You are here ├── 📄 n8n-workflow-export.json # Complete n8n workflow (importable) │ ├── 📁 assets/ │ ├── 🖼️ n8n-workflow.png # n8n workflow editor screenshot │ └── 🖼️ discord-alert.png # Live Discord alert output screenshot │ └── 📁 samples/ └── 📄 phishing-payload.json # Sample phishing email payload for testing ``` | 文件 | 用途 | |---|---| | `n8n-workflow-export.json` | 完整、可导入的 n8n 工作流,所有节点均已预配置 | | `samples/phishing-payload.json` | 用于立即进行流水线测试的真实钓鱼邮件 payload | | `assets/n8n-workflow.png` | n8n 工作流画布的可视化参考 | | `assets/discord-alert.png` | 流水线生成的真实 Discord SOC 警报截图 | ## ✅ 前置条件 在部署此流水线之前,请确保您具备: | 要求 | 详情 | |---|---| | **n8n** | 自托管 ([Docker](https://docs.n8n.io/hosting/installation/docker/) / [npm](https://docs.n8n.io/hosting/installation/npm/)) 或 [n8n Cloud](https://n8n.io/cloud/) | | **AbuseIPDB API Key** | 提供免费层 —— [点击此处注册](https://www.abuseipdb.com/account/api) | | **VirusTotal API Key** | 提供免费层 —— [点击此处注册](https://www.virustotal.com/gui/join-us) | | **Google Gemini API Key** | 提供免费层 —— [获取 API key](https://aistudio.google.com/apikey) | | **Discord Webhook URL** | 在您的 SOC 频道中[创建 webhook](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks) | | **curl** 或 **Postman** | 用于测试 webhook endpoint | ## 🚀 设置与安装 ### 1. 克隆仓库 ``` git clone https://github.com/ThE-Old-MaNl/SOAR-Phishing-Pipeline.git cd SOAR-Phishing-Pipeline ``` ### 2. 将工作流导入 n8n
选项 A:通过 n8n UI (推荐) 1. 打开您的 n8n 实例 (例如 `http://localhost:5678`) 2. 点击 **"Add workflow"** → 选择 **"Import from File"** 3. 上传 `n8n-workflow-export.json` 4. 完整的 6 节点流水线将加载到工作流编辑器中
选项 B:通过 n8n CLI ``` n8n import:workflow --input=n8n-workflow-export.json ```
### 3. 配置 API 凭据 打开导入的工作流中的每个节点,并替换占位符 key: | 节点 | 凭据字段 | 值 | |---|---|---| | **AbuseIPDB** | `Key` header | 您的 AbuseIPDB API key | | **VirusTotal** | `x-apikey` header | 您的 VirusTotal API key | | **Message a model** (Gemini) | Google Gemini (PaLM) 凭据 | 您的 Google Gemini API key | | **Discord** | Webhook URL 凭据 | 您的 Discord 频道 webhook URL | ### 4. 激活工作流 1. 将工作流切换为 **Active** (n8n 编辑器右上角的开关) 2. 记下 Webhook 节点中显示的 **Webhook URL** (例如 `https:///webhook/`) 3. 流水线现已上线并正在监听传入的钓鱼报告 ## 🧪 使用与测试 ### 发送测试钓鱼报告 使用包含的示例 payload 触发整个流水线: ``` curl -X POST https:///webhook/ \ -H "Content-Type: application/json" \ -d @samples/phishing-payload.json ``` **或者内联:** ``` curl -X POST https:///webhook/ \ -H "Content-Type: application/json" \ -d '{ "sender": "attacker@fake-cih.com", "subject": "Urgent: Account Suspended", "body": "Your online banking account has been locked due to suspicious activity. Click here immediately to verify your credentials: http://185.220.101.5/login/malware.exe", "timestamp": "2026-07-21T02:00:00Z" }' ``` ### 预期的流水线执行过程 | 步骤 | 节点 | 预期结果 | |---|---|---| | 1 | Webhook | 接收 payload,返回 `200 OK` | | 2 | JavaScript Parser | 提取 IP `185.220.101.5` 和 URL | | 3 | AbuseIPDB | 返回高滥用置信度评分 (例如 `100%`) | | 4 | VirusTotal | 返回多个引擎的恶意检测记录 | | 5 | Switch | 路由至恶意分支 (检测数 ≥ 3) | | 6 | Google Gemini | 生成 3 点分流摘要 | | 7 | Discord | 向频道发布格式化的 `🚨 CRITICAL SOC ALERT` | ## 📸 Discord 警报输出 以下是本流水线在 Discord SOC 频道中生成的警报的**实时截图**:
Discord SOC Alert - Phishing Triage Output

## 🗺️ 路线图 计划推出以下增强功能,将本流水线从检测和警报工具演进为**全方位自动化响应平台**: | 优先级 | 增强功能 | 描述 | |---|---|---| | 🔴 高 | **自动化工单 (Jira / ServiceNow)** | 自动创建附带严重性分类和 AI 分流报告的事件工单 | | 🔴 高 | **SIEM 自动封锁 (Cortex XSOAR / Palo Alto)** | 通过 API 将确认的恶意 IP 直接推送到防火墙黑名单 | | 🟡 中 | **发件人域名 DNS 分析** | 自动化 WHOIS + SPF/DKIM/DMARC 验证和域名年龄检查 | | 🟡 中 | **URL 沙箱引爆** | 与 ANY.RUN 或 Joe Sandbox 集成,进行动态 URL/附件分析 | | 🟢 低 | **邮件自动隔离** | 与 Microsoft Graph API 或 Google Admin SDK 集成,从所有收件箱中自动清除钓鱼邮件 | | 🟢 低 | **指标仪表盘** | 构建 Grafana/n8n 仪表盘,追踪 MTTR、威胁量、误报率和 IOC 趋势 | | 🟢 低 **多 LLM 故障转移** | 添加 Groq (Llama-3) 或 Anthropic Claude 作为故障转移模型,实现 AI 分流冗余 | ## 🤝 贡献 欢迎任何贡献!如果您想扩展此流水线: 1. **Fork** 该仓库 2. **创建** 功能分支 (`git checkout -b feature/jira-integration`) 3. **提交** 更改 (`git commit -m 'feat: add Jira ticket creation node'`) 4. **推送** 至该分支 (`git push origin feature/jira-integration`) 5. **发起** Pull Request ## 📄 许可证 本项目基于 **MIT License** 授权 —— 详情请参阅 [LICENSE](LICENSE) 文件。
**由一位厌倦了手动分流钓鱼邮件的安全工程师用 🛡️ 构建。** *如果这个流水线拯救了你 SOC 团队的理智,请考虑给它一个 ⭐*
标签:Ask搜索, n8n, VirusTotal, 威胁情报, 安全告警, 安全运营自动化, 开发者工具, 数据可视化, 钓鱼邮件分析