BHARATH5059/phishing-detection-system
GitHub: BHARATH5059/phishing-detection-system
基于 NLP、URL 情报与集成机器学习的钓鱼邮件检测系统,提供可解释的威胁评分和 SOC 风格的可视化仪表盘。
Stars: 0 | Forks: 0
# 🛡️ 基于 AI 的钓鱼邮件检测与威胁情报系统
## 📋 问题陈述
钓鱼邮件是最危险的网络安全威胁之一,导致了超过 90% 的数据泄露。传统的基于规则的过滤器会漏掉复杂的钓鱼攻击。该系统结合使用**机器学习与可解释 AI**,以高准确率检测钓鱼行为,并提供可操作的威胁情报——其功能类似于一个微型的安全运营中心 (SOC) 工具。
## 🎯 目标
- 使用 NLP 和 ML 检测钓鱼邮件,准确率 >95%
- 提取并分析基于 URL 的威胁指标
- 生成带有可解释推理的 0–100 威胁评分
- 提供包含图表和分析数据的实时网络安全仪表板
- 存储检测历史,并通过 REST API 支持完整的 CRUD 操作
## 🏗️ 架构
```
Email Input
│
▼
Email Preprocessing Engine
└─ HTML/special char removal, lowercasing, tokenization, stemming
│
▼
NLP Feature Extraction Layer
└─ TF-IDF (3000 features, bigrams), urgency words, suspicious phrases,
credential keywords, banking keywords
│
▼
URL Analysis Engine
└─ URL count, IP detection, shortener detection, TLD analysis,
blacklist check, subdomain count
│
▼
Cyber Threat Intelligence Engine
└─ Credential theft, fake verification, account scams,
banking scams, crypto scams, gift card scams
│
▼
ML Models (LR · RF · NB · XGBoost) → Best model auto-selected
│
▼
Threat Scoring Engine (URL 30% · Text 40% · Keywords 20% · Confidence 10%)
│
▼
Explainable AI Result (Score + Indicators + Natural language reasoning)
│
▼
React Dashboard (5 pages: Dashboard · Scanner · Analytics · History · Metrics)
```
## 📁 项目结构
```
AI_Phishing_Detection_System/
├── backend/
│ ├── app.py # Flask REST API (5 endpoints)
│ ├── train_model.py # ML training pipeline
│ ├── predict.py # Prediction engine
│ ├── feature_extractor.py# NLP features + threat indicators
│ ├── url_analyzer.py # URL intelligence engine
│ ├── threat_engine.py # Threat scoring + reasoning
│ ├── database.py # SQLite CRUD layer
│ └── phishing.db # SQLite database (auto-created)
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ │ ├── Dashboard.js # Overview + charts
│ │ │ ├── EmailScanner.js # Real-time scanner
│ │ │ ├── Analytics.js # Threat analytics
│ │ │ ├── History.js # Scan history + delete
│ │ │ └── ModelMetrics.js # ML model comparison
│ │ ├── utils/api.js # Axios API calls
│ │ ├── App.js # Router + sidebar
│ │ └── index.css # Dark cybersecurity theme
│ └── package.json
├── datasets/
│ ├── generate_dataset.py # Synthetic dataset generator
│ └── phishing_emails.csv # Training dataset
├── models/
│ ├── best_model.pkl # Saved best ML model (joblib)
│ ├── tfidf.pkl # TF-IDF vectorizer
│ └── metrics.json # Model performance metrics
├── reports/
│ ├── confusion_matrix.png
│ ├── roc_curve.png
│ ├── model_comparison.png
│ └── feature_importance.png
├── requirements.txt
└── README.md
```
## 🔬 机器学习模型
| 模型 | 准确率 | 精确率 | 召回率 | F1 分数 |
|-------|----------|-----------|--------|----------|
| 逻辑回归 (Logistic Regression) | ~98% | ~98% | ~98% | ~98% |
| 随机森林 (Random Forest) | ~99% | ~99% | ~99% | ~99% |
| 朴素贝叶斯 (Naive Bayes) | ~97% | ~97% | ~97% | ~97% |
| XGBoost | ~99% | ~99% | ~99% | ~99% |
## 🧮 威胁评分公式
```
Threat Score = (Text Features × 40%) + (URL Features × 30%) +
(Threat Keywords × 20%) + (Model Confidence × 10%)
Score 0–30 → SAFE (green)
Score 31–60 → SUSPICIOUS (yellow)
Score 61–100 → HIGH RISK (red)
```
## 🌐 API Endpoints
| 方法 | Endpoint | 描述 |
|--------|----------|-------------|
| GET | `/` | 健康检查 |
| POST | `/predict` | 分析邮件 |
| POST | `/train` | 触发模型重新训练 |
| GET | `/train/status` | 检查训练进度 |
| GET | `/history` | 获取扫描历史 |
| DELETE | `/history/` | 删除记录 |
| GET | `/stats` | 仪表板统计数据 |
| GET | `/metrics` | ML 模型指标 |
### 请求示例
```
POST /predict
{
"email_text": "URGENT: Your account has been suspended. Click: http://phishing.xyz/verify"
}
```
### 响应示例
```
{
"prediction": "PHISHING",
"confidence": 98.3,
"threat_score": 87,
"risk_level": "HIGH RISK",
"indicators": [
{"name": "Credential Theft Pattern", "severity": "HIGH"},
{"name": "Urgency Language Detected", "severity": "MEDIUM"},
{"name": "Suspicious Phishing Phrase", "severity": "HIGH"}
],
"reasoning": "This email is classified as PHISHING. The system detected...",
"score_breakdown": {
"text_score": 32, "url_score": 28, "keyword_score": 18, "confidence_score": 9
}
}
```
## ⚙️ 安装与设置
### 前置条件
- Python 3.9+
- Node.js 16+
- npm 8+
### 1. 克隆/解压项目
```
cd AI_Phishing_Detection_System
```
### 2. 后端设置
```
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 下载 NLTK 数据
python -c "import nltk; nltk.download('stopwords'); nltk.download('punkt')"
# 生成数据集
python datasets/generate_dataset.py
# 训练模型(生成所有 ML artifacts 和报告)
python backend/train_model.py
# 启动 Flask API
python backend/app.py
# → 运行在 http://localhost:5000
```
### 3. 前端设置
```
cd frontend
npm install --legacy-peer-deps
npm start
# → 运行在 http://localhost:3000
```
## 🧪 测试
```
# 使用 curl 测试 API
curl -X POST http://localhost:5000/predict \
-H "Content-Type: application/json" \
-d '{"email_text": "URGENT: Your PayPal account is locked. Verify: http://paypal-secure.ru/login"}'
# 检查系统健康状态
curl http://localhost:5000/
# 获取统计数据
curl http://localhost:5000/stats
```
## 🔒 网络安全功能
| 功能 | 描述 |
|---------|-------------|
| 黑名单检测 | 18+ 个已知的钓鱼域名 |
| URL 情报 | IP URL、短链接、可疑 TLD |
| NLP 威胁模式 | 6 种诈骗类别(凭据窃取、银行、加密货币等) |
| 可解释 AI | 为每次预测提供自然语言推理 |
| 威胁评分 | 带有详细分解的加权 0–100 评分 |
| CRUD API | 完整的历史记录管理 |
| 模型自动选择 | 自动挑选 F1 分数最高的模型 |
## 📊 生成的可视化图表
- `confusion_matrix.png` — 真假阳性分解图
- `roc_curve.png` — 所有模型的 AUC 对比图
- `model_comparison.png` — 准确率/精确率/召回率/F1 柱状图
- `feature_importance.png` — 前 20 个钓鱼特征 (RF/LR)
## 🚀 未来范围
- [ ] 真实邮件头解析 (DKIM, SPF, DMARC)
- [ ] 接入实时的 VirusTotal API 进行 URL 扫描
- [ ] 用于实时收件箱扫描的浏览器扩展
- [ ] 基于 BERT/transformer 的分类
- [ ] 发件人欺骗检测模块
- [ ] 多语言钓鱼支持
- [ ] 附件扫描(PDF、Office 宏)
- [ ] SIEM 集成 (Splunk, ELK Stack)
## 👨💻 技术栈
**前端:** React 18、React Router、Chart.js、Axios、CSS Variables
**后端:** Python 3、Flask 3、Flask-CORS、SQLite
**ML:** Scikit-learn、XGBoost、NLTK、TF-IDF、Joblib、SciPy
**可视化:** Matplotlib、Seaborn
## 📄 许可证
MIT License — 可免费用于教育和作品集展示目的。
标签:Apex, React, Syscalls, 威胁情报, 开发者工具, 机器学习, 网络测绘, 逆向工具, 钓鱼检测