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, 威胁情报, 开发者工具, 机器学习, 网络测绘, 逆向工具, 钓鱼检测