mrx87547/PhishGuard-AI-Phishing-Investigation-Threat-Attribution-Platform
GitHub: mrx87547/PhishGuard-AI-Phishing-Investigation-Threat-Attribution-Platform
一个面向 SOC 分析师的 AI 驱动全栈钓鱼邮件调查平台,通过编排 TheHive、Cortex 和 MISP 实现从邮件解析、IOC 提取、多引擎威胁分析到自动判定与归因导出的端到端自动化流程。
Stars: 0 | Forks: 0
# 🛡️ PhishIntel — AI 驱动的钓鱼邮件调查与威胁归因平台
[](https://www.linux.org/)
[](https://www.python.org/)
[](https://flask.palletsprojects.com/)
[](./docker/)
[](https://thehive-project.org/)
[](https://www.misp-project.org/)
[](https://github.com/TheHive-Project/Cortex)
[](./LICENSE)
[]()
[]()
| 步骤 | 角色 | 操作 |
|------|-------|--------|
| 1 | 攻击者 | 发起针对终端用户的钓鱼活动 |
| 2 | 用户 | 将可疑邮件作为 `.eml` 附件转发到 PhishIntel 收件箱 |
| 3 | 分析人员 | 打开 PhishIntel 仪表板,选择该邮件进行调查 |
| 4 | 平台 | 解析邮件,提取可观察量,在 TheHive 中创建结构化案例 |
| 5 | Cortex | 对所有提取的 IOC 并行运行 40 多个分析器 |
| 6 | 平台 | 汇总分析器结果并计算出最终的恶意判定 |
| 7 | 平台/分析人员 | 结案,通知用户,并在确认为恶意时导出至 MISP |
## 🚀 核心功能
### 🔬 核心调查能力
- **自动邮件解析** — 无需人工干预即可从原始 `.eml` 文件中提取标头、正文、嵌入的 URL、附件和哈希值
- **多维度 IOC 提取** — 识别并规范化 IP 地址、域名、URL、电子邮件地址、文件名、MIME 类型和加密哈希值
- **并行威胁分析** — 同时对每个提取的可观察量分派 40 多个 Cortex 分析器,以实现快速分诊
- **智能判定引擎** — 通过使用可配置的评分模型汇总加权的分析器结果,计算出 `malicious` / `suspicious` / `safe` (恶意/可疑/安全)的判定
- **IOC 标记** — 在 TheHive 案例中自动将确认恶意的可观察量标记为妥协指标 (IOC)
### 🗂️ 案例管理与工作流
- **自动化案例生命周期** — 端到端地创建、管理和关闭 TheHive 案例,包括结构化的任务分配和解决标记
- **结构化任务流水线** — 每项调查遵循一个明确的三任务工作流:用户通知 → 可观察量分析 → 结果交付
- **分析人员干预** — 当判定为 `suspicious`(非确定性)时,平台会通过 TheHive 的完整案例界面升级交由分析人员手动审查
- **案例导出至 MISP** — 确认恶意的案例将自动作为结构化威胁事件导出至 MISP,用于跨活动归因
### 🌐 威胁情报关联
- **MISP 集成** — 将提取的 IOC 与历史 MISP 事件进行交叉比对,以检测重复出现的攻击者基础设施
- **威胁归因支持** — 跨过往事件关联域名、IP 和邮件标头,用于攻击者画像
- **URL 还原(解短)** — 在分析之前自动展开缩短的 URL,以揭示真实的目标基础设施
- **YARA 规则扫描** — 对邮件附件应用自定义 YARA 规则,进行基于模式的恶意软件检测
### 🖥️ 平台与用户体验 (UX)
- **实时分析仪表板** — 通过 WebSocket (Socket.IO) 向分析人员实时推送分析进度,无需重新加载页面
- **可配置的分析器级别** — 允许通过 `analyzers_level_conf.json` 精细控制如何解释每个分析器的输出
- **动态白名单** — 通过正则表达式或精确匹配将已知安全的 IP、域名、哈希值和模式列入白名单,以防止误报
- **自动用户通知** — 在分析开始和判定结果就绪时,通过 Mailer responder 向用户发送电子邮件警报
- **Docker 就绪部署** — 使用 Docker Compose 进行全容器化部署,实现快速、可复现的环境搭建
## 🏗️ 系统架构
PhishIntel 遵循 **面向微服务的架构**,其中不同的安全工具通过 REST API 和 Python 编排层进行松耦合。
```
┌──────────────────────────────────────────────────────────────────┐
│ ANALYST INTERFACE │
│ Flask Web App (HTML + Bootstrap + JS) │
│ Real-time updates via Socket.IO (WebSocket) │
└─────────────────────────────┬────────────────────────────────────┘
│ AJAX / HTTP / WebSocket
┌─────────────────────────────▼────────────────────────────────────┐
│ PHISHINTEL CORE (Python 3) │
│ │
│ ┌─────────────┐ ┌──────────────────┐ ┌────────────────────┐ │
│ │ list_emails │ │ case_from_email │ │ run_analysis │ │
│ │ .py │ │ .py │ │ .py │ │
│ │ │ │ │ │ │ │
│ │ IMAP Fetch │ │ Header Parsing │ │ Analyzer Dispatch │ │
│ │ Email List │ │ IOC Extraction │ │ Verdict Engine │ │
│ │ Dedup Check │ │ Case Creation │ │ IOC Flagging │ │
│ └──────┬──────┘ └────────┬─────────┘ └────────┬───────────┘ │
└──────────┼──────────────────┼─────────────────────┼──────────────┘
│ │ │
┌──────▼──────┐ ┌───────▼───────┐ ┌─────────▼──────────┐
│ IMAP Mail │ │ TheHive │ │ Cortex │
│ Server │ │ (Case Mgmt) │ │ (Analysis Engine) │
│ (Gmail) │ │ TheHive4py │ │ Cortex4py │
└─────────────┘ └───────┬───────┘ └─────────┬──────────┘
│ │
┌───────▼───────┐ ┌─────────▼──────────┐
│ MISP │ │ 40+ Analyzers │
│ (Threat Intel │ │ VirusTotal, Shodan │
│ Sharing) │ │ OTX, PhishTank... │
└───────────────┘ └────────────────────┘
```
### 核心 Python 模块
| 模块 | 职责 |
|--------|---------------|
| `thephish_app.py` | Flask 应用程序入口;路由和 Socket.IO 事件处理器 |
| `list_emails.py` | IMAP 连接、邮件枚举、去重和元数据提取 |
| `case_from_email.py` | 邮件解析、可观察量提取、TheHive 案例和任务创建 |
| `run_analysis.py` | Cortex 分析器编排、结果汇总、判定计算、MISP 导出 |
| `ws_logger.py` | 用于前端仪表板的基于 WebSocket 的实时日志处理器 |
## 🔄 调查工作流
下面的 Mermaid 图说明了完整的端到端调查流水线:
```
flowchart TD
A([👤 End User\nReceives Phishing Email]) -->|Forwards as .eml attachment| B[📬 PhishIntel Mailbox\nGmail / IMAP]
B --> C{📋 Analyst Dashboard\nList Emails}
C -->|Click Analyze| D[⚙️ Email Parsing Engine\ncase_from_email.py]
D --> D1[Extract: URLs]
D --> D2[Extract: IP Addresses]
D --> D3[Extract: Domains]
D --> D4[Extract: Email Addresses]
D --> D5[Extract: Attachments & Hashes]
D1 & D2 & D3 & D4 & D5 --> E[🗂️ TheHive\nCreate Case + Observables]
E --> F[📧 Notify User\nAnalysis Started — Mailer Responder]
E --> G[🔬 Cortex\nDispatch 40+ Analyzers in Parallel]
G --> G1[VirusTotal]
G --> G2[Shodan]
G --> G3[PhishTank]
G --> G4[OTX / AbuseIPDB]
G --> G5[MISP Lookup]
G --> G6[YARA / FileInfo]
G1 & G2 & G3 & G4 & G5 & G6 --> H[📊 Verdict Engine\nrun_analysis.py]
H -->|Malicious| I[🔴 VERDICT: MALICIOUS\nFlag IOCs in TheHive\nExport Case → MISP\nNotify User]
H -->|Safe| J[🟢 VERDICT: SAFE\nClose Case\nNotify User]
H -->|Suspicious| K[🟡 VERDICT: SUSPICIOUS\nEscalate to Analyst\nManual Review Required]
K -->|Analyst Concludes| L[✅ Analyst Closes Case\nOptional MISP Export\nUser Notification]
I & J & L --> M([🏁 Investigation Complete])
```
## 🧰 使用的技术
### 后端
| 技术 | 版本 | 用途 |
|------------|---------|---------|
| **Python** | 3.8+ | 核心应用程序语言 |
| **Flask** | 2.0.1 | Web 框架和 REST API 服务器 |
| **Flask-SocketIO** | 5.1.1 | 实时双向 WebSocket 通信 |
| **eventlet** | 0.31.1 | 支持 WebSocket 的异步 WSGI 服务器 |
| **TheHive4py** | 1.8.1 | TheHive REST API 的 Python 客户端 |
| **Cortex4py** | 2.1.0 | Cortex REST API 的 Python 客户端 |
| **ioc-finder** | 6.0.1 | 从非结构化文本中提取 IOC |
| **python-magic** | 0.4.24 | 附件的 MIME 类型检测 |
| **BeautifulSoup4** | 4.9.3 | HTML 正文解析 |
| **dnspython** | 1.16.0 | DNS 解析工具 |
### 前端
| 技术 | 用途 |
|------------|---------|
| **Bootstrap 4** | 响应式 UI 框架 |
| **Socket.IO (JS)** | 实时分析进度流推送 |
| **Font Awesome** | 安全主题图标 |
| **jQuery / AJAX** | 异步服务器通信 |
### 基础设施与集成
| 工具 | 角色 |
|------|------|
| **TheHive** | 安全事件案例管理平台 |
| **Cortex** | 可观察量分析和威胁情报引擎(40 多个分析器) |
| **MISP** | 威胁情报共享和 IOC 关联 |
| **Docker / Docker Compose** | 容器化部署编排 |
| **Gmail / IMAP** | 安全的邮件获取通道 |
## 📦 安装说明
### 前置条件
在继续之前,请确保您的环境中具备以下条件:
- 基于 Linux 的操作系统(推荐使用 Ubuntu 20.04 LTS)
- Python 3.8+
- Docker 和 Docker Compose(适用于选项 A)
- 运行中的 TheHive、Cortex 和 MISP 实例
- 专用的 Gmail 地址(或任何兼容 IMAP 的邮箱)
### 选项 A — Docker(推荐)
启动整个平台的最快方法。提供的 Docker Compose 模板可以通过单个命令引导启动 TheHive、Cortex、MISP 和 PhishIntel 应用程序。
```
# 1. 导航至 docker 文件夹
cd docker/
# 2. 启动所有服务
docker-compose up -d
# 3. 验证所有容器是否正在运行
docker ps
```
### 选项 B — 从头开始手动安装
如果您想完全控制部署环境,或者要与现有的 TheHive/Cortex/MISP 基础设施集成,请使用此方法。
**要求:**
- 一个可运行的 TheHive 实例
- 一个可运行的 Cortex 实例
- 一个可运行的 MISP 实例
- 一个已配置的 IMAP 邮箱
#### 步骤 1 — 下载项目
```
git clone https://github.com/your-username/PhishIntel.git
cd PhishIntel/app
```
#### 步骤 2 — 创建并激活 Python 虚拟环境
```
sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate
```
#### 步骤 3 — 安装 Python 依赖
```
pip install -r requirements.txt
```
#### 步骤 4 — 修补 TheHive4py(Mailer Responder 支持)
Mailer responder 需要在 TheHive4py 中提供一个 `run_responder()` 函数。使用以下命令应用补丁(如果需要,请调整 Python 版本路径):
```
(cat << _EOF_
def run_responder(self, responder_id, object_type, object_id):
req = self.url + "/api/connector/cortex/action"
try:
data = json.dumps({ "responderId": responder_id, "objectType": object_type, "objectId": object_id})
return requests.post(req, headers={"Content-Type": "application/json"}, data=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
raise TheHiveException("Responder run error: {}".format(e))
_EOF_
) | tee -a venv/lib/python3.8/site-packages/thehive4py/api.py > /dev/null
```
#### 步骤 5 — 配置应用程序
使用您环境的凭证和端点编辑 `configuration.json`(参见下方的[配置说明](#-configuration))。
#### 步骤 6 — 更新前端 URL
在 `templates/index.html` 中,将侧边栏导航中的默认 `href` 值替换为您实际的 TheHive、Cortex 和 MISP 实例的 URL:
```
## 🖱️ 使用指南
### 步骤 1 — 用户提交可疑邮件
用户将可疑邮件**以 EML 格式的附件**转发到 PhishIntel 收件箱。使用 EML 格式可以防止标头污染。
### 步骤 2 — 分析人员列出并选择邮件
分析人员导航至 PhishIntel 仪表板并点击 **List Emails**(列出邮件)以检索所有待处理的提交。
### 步骤 3 — 发起分析
点击 **Analyze**(分析)将触发完整的调查流水线。进度将实时推送到仪表板。
### 步骤 5 — 发送用户通知
用户会收到一封自动生成的电子邮件,确认他们的提交正在接受积极调查。
### 步骤 6 — 分析器并行运行
Cortex 会对每个可观察量同时分派所有已配置的分析器。进度可在 PhishIntel 仪表板和 TheHive 的实时流中看到。
### 步骤 7 — 交付判定
计算并显示判定结果。可能有三种结果:
**🔴 Malicious (恶意)** — 标记 IOC,案例导出至 MISP,通知用户:
**🟢 Safe (安全)** — 案例关闭,通知用户:
**🟡 Suspicious (可疑)** — 需要分析人员升级审查;案例和最终任务保持打开状态:
## 🔬 调查流水线
平台通过三个连续阶段执行调查:
### 阶段 1 — 摄取与解析 (`case_from_email.py`)
```
Raw .eml File
│
├─► Parse MIME structure (headers, body, attachments)
├─► Extract observables via ioc-finder + custom regex
│ ├─ URLs (with UnshortenLink pre-processing)
│ ├─ IP Addresses
│ ├─ Domain names
│ ├─ Email addresses (To, From, Reply-To, CC)
│ ├─ Attachment filenames and MIME types
│ └─ MD5 / SHA1 / SHA256 hashes of attachments
├─► Apply whitelist filters (exact + regex matching)
└─► Create TheHive case with observables + 3 tasks
```
### 阶段 2 — 分析 (`run_analysis.py`)
```
TheHive Case (observables ready)
│
├─► Task 1 OPEN: Send "analysis started" notification (Mailer)
├─► Task 1 CLOSE
├─► Task 2 OPEN: Dispatch all enabled Cortex analyzers
│ ├─ IP observables → AbuseIPDB, Shodan, MaxMind, OTX...
│ ├─ Domain observ. → Robtex, PassiveTotal, PhishTank, Fortiguard...
│ ├─ URL observables → URLhaus, Urlscan.io, VirusTotal...
│ ├─ Hash observ. → VirusTotal, MetaDefender, FileInfo...
│ └─ EML attachment → Yara_2_0
├─► Collect all analyzer reports
├─► Apply level mappings from analyzers_level_conf.json
└─► Task 2 CLOSE
```
### 阶段 3 — 判定与归因 (`run_analysis.py` 继续)
```
Aggregated Analyzer Results
│
├─► Compute verdict: MAX(all observable levels)
│ malicious > suspicious > safe > info
│
├─► If MALICIOUS:
│ ├─ Mark malicious observables as IOCs in TheHive
│ ├─ Export case to MISP (structured threat event)
│ └─ Task 3: Send verdict email → Close case (True Positive)
│
├─► If SAFE:
│ └─ Task 3: Send verdict email → Close case (True Positive / No Impact)
│
└─► If SUSPICIOUS:
└─ Task 3 OPEN: Notify analyst → Await manual review
```
## 🧪 示例调查场景
**提交的邮件特征:**
- **发件人:** `it-support@university-helpdesk.net`(伪造)
- **主题:** `[URGENT] Verify Your University Account`
- **正文:** 包含指向 `http://bit.ly/3xUniversityLogin` 的超链接
- **附件:** `account_verification_form.pdf`
**PhishIntel 调查输出:**
| 可观察量 | 类型 | 判定 | 分析器 |
|-----------|------|---------|---------|
| `it-support@university-helpdesk.net` | 邮件 | 🟡 Suspicious (可疑) | EmailRep, DomainMailSPFDMARC |
| `university-helpdesk.net` | 域名 | 🔴 Malicious (恶意) | PhishTank, Threatcrowd |
| `http://login.phishsite.ru/verify` | URL (已解短) | 🔴 Malicious (恶意) | VirusTotal, URLhaus, Urlscan.io |
| `185.220.101.45` | IP | 🔴 Malicious (恶意) | AbuseIPDB, Shodan (Tor 出口节点) |
| `account_verification_form.pdf` | 文件 | 🟡 Suspicious (可疑) | FileInfo, YARA (检测到宏) |
**平台采取的行动:**
1. ✅ 在 TheHive 中将恶意可观察量标记为 IOC
2. ✅ 案例已连同完整属性集导出至 MISP
3. ✅ 通知工作人员:邮件确认为**钓鱼邮件**
4. ✅ 案例已关闭:`True Positive — No Impact`
5. ✅ 记录攻击者基础设施以供未来归因
## 🔧 分析器配置
### 配置分析器级别 — `analyzers_level_conf.json`
每个分析器都会返回 `info`、`safe`、`suspicious` 或 `malicious` 的判定。此配置文件允许您重新映射这些级别,以更好地反映真实世界的准确性:
```
{
"DomainMailSPFDMARC_Analyzer_1_1" : {
"dataType" : ["url", "ip", "domain", "mail"],
"levelMapping" : {
"malicious" : "suspicious",
"suspicious" : "suspicious",
"safe" : "safe",
"info" : "info"
}
},
"MISP_2_1" : {
"dataType" : ["url", "ip", "domain", "mail"],
"levelMapping" : {
"malicious" : "malicious",
"suspicious" : "malicious",
"safe" : "safe",
"info" : "info"
}
}
}
```
### 支持和测试过的分析器
点击展开已测试的 40 多个分析器的完整列表
| 分析器 | 可观察量类型 | 备注 | |----------|-----------------|-------| | AbuseIPDB_1_0 | IP | | | AnyRun_Sandbox_Analysis_1_0 | URL, hash | | | CyberCrime-Tracker_1_0 | URL, domain | | | Cyberprotect_ThreatScore_3_0 | IP, domain | | | *DomainMailSPFDMARC_Analyzer_1_1* | domain | 仅在发送邮件的域上启动 | | DShield_lookup_1_0 | IP | | | EmailRep_1_0 | email | | | FileInfo_8_0 | hash | | | Fortiguard_URLCategory_2_1 | URL | | | IPinfo_Details_1_0 | IP | | | **IPVoid_1_0** | IP | 自定义结果处理 | | KasperskyThreatIntelligencePortal_1_0 | hash, IP, domain | | | Maltiverse_Report_1_0 | IP, URL, hash | | | *MISP_2_1* | all | 跨案例 IOC 关联 | | MaxMind_GeoIP_4_0 | IP | | | MetaDefenderCloud_GetReport_1_0 | hash | | | OTXQuery_2_0 | IP, domain, hash | | | *Onyphe_Summary_1_0* | IP | | | PassiveTotal_* (7 analyzers) | IP, domain | | | PhishTank_CheckURL_2_1 | URL | | | **Pulsedive_GetIndicator_1_0** | IP, domain | 自定义结果处理 | | *Robtex_* (3 analyzers) | IP, domain | | | **Shodan_Host_1_0 / History** | IP | 自定义结果处理 | | Shodan_DNSResolve_1_0 | domain | | | **SpamhausDBL_1_0** | domain | 自定义结果处理 | | StopForumSpam_1_0 | IP, email | | | *Threatcrowd_1_0* | IP, domain | | | **UnshortenLink_1_2** | URL | 优先运行;结果作为新的可观察量添加 | | **URLhaus_2_0** | URL | 自定义结果处理 | | Urlscan_io_Scan_0_1_0 / *Search* | URL | | | VirusTotal_GetReport_3_1 / Scan | hash, URL | | | **Yara_2_0** | EML file | 自定义 YARA 规则;在附件上运行 | *斜体* = 已应用级别重映射。**粗体** = 核心代码中的自定义处理。
### 为网络安全研究社区而建 🛡️
*旨在赋能分析人员。为阻止攻击者而生。*
[](https://thehive-project.org/)
[](https://github.com/TheHive-Project/Cortex)
[](https://www.misp-project.org/)
[](https://python.org)
标签:AI钓鱼分析, CIDR查询, Cortex, DAST, Docker, Flask, Go语言工具, IOC提取, IP 地址批量处理, PhishIntel, Python, SOAR, TheHive, 参数枚举, 威胁情报, 学术研究, 安全编排与自动化响应, 安全运营, 安全防御评估, 开发者工具, 恶意URL检测, 恶意软件分析, 扫描框架, 搜索语句(dork), 攻击归因, 无后门, 电子邮件安全, 网络安全, 请求拦截, 逆向工具, 钓鱼攻击调查, 附件分析, 隐私保护