aditya777-dev/phishing-analysis-lab
GitHub: aditya777-dev/phishing-analysis-lab
全栈自动化钓鱼邮件分析平台,提供从 .eml 摄取、沙箱引爆、威胁情报富化到风险评分与 STIX 导出的一站式流水线。
Stars: 1 | Forks: 0
# 钓鱼分析实验室
**自动化钓鱼邮件分类 —— 从原始 `.eml` 到评分威胁报告的一站式流水线。**
[](https://python.org)
[](https://fastapi.tiangolo.com)
[](https://react.dev)
[](https://docker.com)
[](LICENSE)
## 概述
本实验室项目构建了一个全栈钓鱼分析平台,该平台接收原始电子邮件文件,提取每一个可观测对象(邮件头、URL、附件),通过公开的威胁情报 API 对其进行丰富,在隔离的 CAPEv2 沙箱中引爆可疑文件,并生成综合风险评分以及可下载的 STIX 2.1 bundle。
所有功能均作为一组 Docker 服务运行 —— 除了 `.env` 文件外,无需任何手动设置。
架构
``` Browser (React) ──► FastAPI :9000 ──► Celery Workers ──► Analysis Modules │ │ │ ┌───────┴──────────┐ │ │ │ │ URL Analyzer Sandbox Detonator │ (Playwright + (CAPEv2 + YARA + │ VirusTotal / seccomp) │ URLScan / │ AbuseIPDB) │ PostgreSQL ◄── Alembic migrations Redis (task broker) ```| 服务 | 容器 | 角色 |
|---|---|---|
| FastAPI | pa-api :9000 |
REST 层 —— 上传、状态、报告、STIX endpoint |
| Celery Worker | pa-worker |
异步任务执行器(4 个并发 worker) |
| React Frontend | pa-frontend :3000 |
分析师仪表盘 —— 上传、监控、查看结果 |
| PostgreSQL 15 | pa-postgres :5432 |
用于提交记录、结果和报告的持久化存储 |
| Redis 7 | pa-redis :6379 |
Celery broker + 结果 backend |
功能
电子邮件解析与邮件头启发式分析
- 解析原始 `.eml` 文件 —— 邮件头、正文(HTML + 纯文本)以及附件 - 通过 `pyspf` 和 `dkimpy` 进行 SPF / DKIM / DMARC 验证 - 启发式标记:Reply-To 不匹配、显示名称欺骗、紧急性关键字、锚文本域名不匹配、可疑的 TLDURL 分析
- Headless Chromium (Playwright) 捕获最终的重定向链和屏幕截图 - VirusTotal URL 扫描 —— 阳性结果直接计入风险评分 - URLScan.io 判定查询 - AbuseIPDB 针对每个已解析 IP 的置信度评分 - WHOIS 域名年龄检查(对域名年龄 < 30 天的赋予较高权重)附件沙箱
- 将文件提交给运行在受 seccomp 限制的容器中的 CAPEv2 实例 - YARA 规则检测:可疑的 TLD URL、PowerShell 下载器、恶意宏 - 解析并对 CAPE 行为特征进行评分 - 引爆前进行 SHA-256 去重威胁评分
基于加权信号构建的复合整数评分: | 信号 | 分值 | |---|---| | SPF 失败 | 20 | | DKIM 失败 | 20 | | DMARC 失败 | 15 | | Reply-To / 显示名称欺骗 | 各 15 分 | | VirusTotal 阳性结果 | 25 – 50 | | 域名年龄 < 30 天 | 15 | | URLScan 恶意判定 | 35 | | AbuseIPDB 置信度 ≥ 25 | 最高 25 | | YARA 规则命中 | 每条规则 30 分 | | CAPE 行为特征 | 最高 40 | **判定结果:** `clean` (< 25) · `suspicious` (25 – 49) · `malicious` (≥ 50)IOC 导出
- IOC 收集器规范化所有指标(IP、URL、文件哈希、域名) - 通过 `stix2` 库序列化 STIX 2.1 bundle - 生成 HTML 和 PDF 报告 - 所有制品均作为静态文件由 API 提供快速开始
### 1. 克隆并配置 ``` git clone https://github.com/aditya777-dev/phishing-analysis-lab.git cd phishing-analysis-lab cp .env.example .env # fill in your API keys ``` ### 2. `.env` 变量 ``` DATABASE_URL=postgresql://pa:pa_secret@localhost:5432/phishing_analysis REDIS_URL=redis://localhost:6379/0 VT_API_KEY=API 参考
| 方法 | 路径 | 描述 |
|---|---|---|
POST |
/upload |
上传 .eml 文件。返回 submission_id 和排队的任务 ID。 |
GET |
/submissions |
列出所有提交记录及其评分和判定结果。 |
GET |
/submission/{id} |
获取单次提交的完整结果 —— URL 分析、标记、评分。 |
POST |
/report/{id} |
触发报告生成(异步 Celery 任务)。 |
GET |
/report/{id} |
获取报告元数据和下载路径(HTML、PDF、STIX)。 |
项目结构
``` phishing-analysis-lab/ ├── api/ # FastAPI app — routes, models, schemas ├── ingestion/ # Email loader, parser, Celery tasks, scoring ├── analysis/ # URL analyzer, IOC collector, STIX exporter, report builder ├── sandbox/ # CAPEv2 detonator + YARA rules ├── alembic/ # Database migrations (5 phases) ├── frontend/ # React 18 + TypeScript + Tailwind dashboard ├── tests/ # pytest suite — ingestion, URL, sandbox, scoring, reporting ├── docker-compose.yml ├── Dockerfile # API + worker image ├── Dockerfile.sandbox # Isolated sandbox image with seccomp profile ├── seccomp-default.json # Sandbox syscall allowlist └── requirements.txt ```测试
``` source venv/bin/activate pytest tests/ -v ``` 测试模块涵盖:电子邮件摄取、URL 分析、沙箱引爆、威胁评分以及报告生成。在 `tests/fixtures/test_phishing.eml` 中包含了一个真实的 `.eml` 测试 fixture,用于端到端冒烟测试。实验报告
完整的实现指南 —— 环境设置、设计决策、API 设计以及各阶段说明 —— 已记录在 [`Phishing_Analysis_Lab_Report.docx`](Phishing_Analysis_Lab_Report.docx) 中。流水线架构也可作为 SVG 流程图查看:[`phishing_analysis_project_flowchart.svg`](phishing_analysis_project_flowchart.svg)。
基于 Ubuntu 24.04 LTS · VMware Virtual Platform 构建 · 2026 年 6 月
标签:DAST, Go语言工具, PB级数据处理, 威胁情报, 安全运维, 开发者工具, 恶意软件分析, 搜索语句(dork), 沙箱检测, 版权保护, 特征检测, 网络信息收集, 自动化钓鱼分析