arunsakthi2802-star/-Intelligence-Phishing-Detection-System
GitHub: arunsakthi2802-star/-Intelligence-Phishing-Detection-System
一个基于机器学习的全栈钓鱼检测平台,通过对 URL、网页内容和电子邮件进行多向量安全分析来识别和评分恶意威胁。
Stars: 0 | Forks: 0
# 🛡️ 智能钓鱼检测系统
一个从头构建的企业级、AI 驱动的网络安全威胁情报平台。该系统从 URL、动态网页抓取内容和原始电子邮件资产中提取并分析安全向量,利用机器学习来识别、评分和诊断恶意的钓鱼向量。
## 🏗️ 架构与系统图表
### 1. 统一架构流程
```
graph TD
Client[Next.js 15 Client App] <-->|JSON / JWT Auth| FastAPI[FastAPI Backend Server]
FastAPI <-->|Async Motor| DB[MongoDB Database]
FastAPI -->|Extracts Features| URL[URL Analyzer]
FastAPI -->|Extracts HTML/CSS/JS| Scrap[Website Scraper]
FastAPI -->|Parses Headers & Links| Email[Email Analyzer]
URL & Scrap & Email -->|Vector Matrix| ML[ML Prediction Inference Engine]
ML <-->|Load / Retrain| SavedModel[phishing_detector.joblib]
```
### 2. 实体关系图 (ERD)
```
erDiagram
User {
string email PK
string password
boolean is_active
boolean is_admin
datetime created_at
}
OTP {
string email FK
string code
datetime expires_at
boolean is_verified
}
ScanReport {
string id PK
string target
string scan_type
string status
integer score
float confidence
json details
string created_by FK
datetime created_at
}
BlockedDomain {
string domain PK
string reason
datetime created_at
}
ThreatIntel {
string indicator PK
string type
string severity
string source
datetime created_at
}
AuditLog {
string id PK
string user_id FK
string action
string ip_address
datetime created_at
}
User ||--o{ ScanReport : creates
User ||--o{ AuditLog : triggers
User ||--o{ OTP : requests
```
### 3. 验证扫描流程图
```
flowchart TD
Start[User Submits Target URL/Email] --> Type{Scan Type?}
Type -->|URL| A[Run Lexical Checks] --> B[Resolve DNS & SSL Cert] --> C[Query WHOIS age]
Type -->|Website| A --> B --> C --> D[Scrape HTML Forms, iFrames & brand indicators]
Type -->|Email| E[Parse Headers, DKIM, SPF] --> F[Extract Attachments & Urgency Keywords] --> G[Inspect Embedded Links via URL Engine]
C --> H[Assemble Feature Vector]
D --> H
G --> H
H --> I[Execute ML Classifier Prediction]
I --> J[Check Admin Blocked List]
J --> K[Generate Risk Score & Confidence]
K --> Save[Save ScanReport to MongoDB]
Save --> End[Return Diagnostics to Client]
```
## 🌟 核心功能与特性
### 🔍 1. 多向量安全检测引擎
- **URL 词法与网络分析器**:扫描 URL 的结构异常(长度、子域名、特殊字符比例、Punycode 编码、域名抢注向量),并执行实时 DNS 查询、SSL 证书有效性检查以及基于 Socket 的 WHOIS 域名年龄查询。
- **动态网站抓取器**:安全获取目标网页的 HTML,通过分析文档布局和脚本来发现密码收集表单、iframe 重定向结构、不安全的表单 endpoint(`action="http://..."`)以及品牌伪造页面。
- **深度电子邮件解析器**:检查原始电子邮件内容(`.eml` 格式或正文文本),解析 header 中的 SPF、DKIM 和 DMARC 安全标记,标记高紧急性关键词,并提取嵌入的超链接重新输入到 URL 扫描引擎中。
### 🤖 2. 机器学习威胁推断
- 结合多个分类器的预测结果:**Logistic Regression、Decision Trees、Random Forests、XGBoost 和 LightGBM**。
- 提供对 **CatBoost** 的动态支持(已安装且完全兼容)。
- 基于 F1-score 评估指标,自动选择并保存表现绝对最佳的模型。
- 完全具备自动化的后台重训 pipeline,可汇总性能统计数据并对 ROC 曲线坐标进行降采样,以实现最佳的渲染速度。
### 📊 3. 现代安全仪表盘与分析
- 响应式 Next.js 应用程序,采用高级网络情报暗色玻璃拟态设计构建。
- 交互式 SVG 风险仪表、指标报告、被拦截域名过滤器以及实时扫描日志。
### 🛡️ 4. 管理控制与审计事件记录
- **被拦截域名列表**:立即拦截特定的高风险域名通过安全扫描。
- **审计日志**:保留分析师操作(登录、切换管理员状态、拉黑域名、触发 ML 训练)的不可变追踪记录。
- **ML 重训中心**:允许管理员在后台触发重训任务,以生成全新的分类器模型。
## 📁 仓库目录映射
```
PROJECT ROOT/
├── docker-compose.yml # Multi-container Orchestrator (FastAPI, Next.js, Mongo, Redis)
├── README.md # Comprehensive Project Documentation
│
├── backend/ # FastAPI Backend Application Directory
│ ├── Dockerfile # Container instructions (Python 3.11 base)
│ ├── requirements.txt # Python dependencies (includes scikit-learn, xgboost, lightgbm, etc.)
│ ├── test_backend.py # Integration testing suite
│ └── app/ # Main Application Code
│ ├── main.py # FastAPI Application configurations & Routers
│ ├── database.py # MongoDB connection with asynchronous fallback database
│ ├── schemas.py # Pydantic schemas for data validation
│ │
│ ├── core/
│ │ └── security.py # JWT Tokens & Cryptographic utilities (Bcrypt)
│ │
│ ├── ml/
│ │ ├── train.py # Pipelines to train and serialize the ML classifiers
│ │ ├── model_metrics.json # Cached metrics and ROC data (JSON-safe formatted)
│ │ └── phishing_detector.joblib # Saved best model binaries
│ │
│ ├── routes/
│ │ ├── auth.py # User authentication, OTP verification, and JWT signup routes
│ │ ├── scan.py # Scans URLs, websites, and emails; saves results
│ │ ├── dashboard.py # Fetches platform analytics statistics
│ │ └── admin.py # User management, blocklists, audit logs, and metrics routes
│ │
│ └── services/
│ ├── url_analyzer.py # URL lexical and network scanner logic
│ ├── website_analyzer.py # HTML scraping and form scanner logic
│ ├── email_analyzer.py # EML parsing and authentication header checks
│ └── ml_service.py # Heuristics + ML Model inference router
│
└── frontend/ # Next.js Frontend Application Directory
├── Dockerfile # Production Next.js container instructions
├── package.json # Project dependencies and script endpoints
├── next.config.ts # Next.js configurations
├── tailwind.config.ts # Styling tokens
└── src/
└── app/
├── layout.tsx # Main application page layout
├── globals.css # Custom animations & glassmorphic grid stylings
└── page.tsx # Phishing Scanner Dashboard (Scanner, Analytics, Admin)
```
## ⚡ 设置与执行指南
### 选项 1:本地设置(推荐用于开发)
#### 1. 设置并运行后端
1. 打开终端并导航至 `backend` 文件夹:
cd backend
2. 安装 Python 包:
pip install -r requirements.txt
3. 运行初始训练脚本以生成 ML 分类器二进制文件:
python app/ml/train.py
4. 启动 FastAPI 开发服务器:
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
*注意:如果 MongoDB 未在您的主机上运行,后端将自动初始化**内存数据库回退**,允许您无需配置 MongoDB 即可立即测试登录、注册、扫描和管理功能!*
#### 2. 设置并运行前端
1. 打开一个新的终端并导航至 `frontend` 文件夹:
cd frontend
2. 安装 Node 包:
npm install --legacy-peer-deps
3. 启动 Next.js 开发服务器:
npm run dev
4. 打开浏览器并导航至 `http://localhost:3000`。
### 选项 2:完全 Docker 编排
要在 Docker 中独立运行整个技术栈(FastAPI、Next.js、MongoDB、Redis):
1. 在根目录中构建并启动所有服务:
docker-compose up --build
2. 启动完成后:
- 访问 Next.js 前端:`http://localhost:3000`
- 访问 FastAPI Swagger 文档:`http://localhost:8000/docs`
## 📖 管理员与操作手册
### 🧑💻 默认账户与凭证
- **默认管理员账户**:当在干净的数据库上首次启动后端时,系统会注册一个默认管理员:
- **电子邮件地址**:`admin@phishdetect.ai`
- **密码**:`admin123`
- **分析师注册**:如果您注册了一名新分析师,请检查正在运行后端的终端/控制台;您将在日志中看到打印出的生成的 6 位 OTP 代码,以完成注册。
### 🧪 API Endpoint 参考
| 方法 | Endpoint | 描述 | 认证 |
| :--- | :--- | :--- | :--- |
| **POST** | `/api/auth/register` | 注册新的安全分析师 | 无 |
| **POST** | `/api/auth/login` | 登录并获取 JWT 访问令牌 | 无 |
| **POST** | `/api/auth/verify-otp` | 验证注册或密码重置 OTP | 无 |
| **POST** | `/api/scan/url` | 提交目标 URL 进行词法/网络扫描 | User JWT |
| **POST** | `/api/scan/website` | 抓取并检查网站布局的安全性 | User JWT |
| **POST** | `/api/scan/email` | 上传 `.eml` 文件或原始文本以检查 header/链接 | User JWT |
| **GET** | `/api/dashboard/stats` | 获取实时仪表盘分析计数器 | User JWT |
| **GET** | `/api/admin/users` | 列出所有已注册的分析师资料 | Admin JWT |
| **GET** | `/api/admin/model-metrics` | 获取 ML 性能指标和 ROC 曲线 | Admin JWT |
| **POST** | `/api/admin/model-retrain` | 触发 ML 模型的后台训练任务 | Admin JWT |
## 🛠️ 维护与故障排除
### 1. 本地编辑器中出现 "Cannot find module 'catboost'"
该项目构建为在运行时动态检查 `catboost` 导入,因此即使缺少该包也能运行。但是,您编辑器的静态类型检查 linter 可能会标记此导入。
- **解决方法**:在您的 Python 环境中安装 `catboost`:
pip install catboost
### 2. "ValueError: 超出范围的浮点数值不符合 JSON 规范: inf"
当模型达到 100% 的准确率时,scikit-learn 的 `roc_curve` 会返回 `Infinity` 作为第一个阈值。Python 的标准 `json` 模块会将其保存在 `model_metrics.json` 中,但 Starlette 的 `JSONResponse` 会拒绝它并抛出 `500 Server Error`。
- **解决方法**:系统现在在 `admin.py` 和 `train.py` 中包含了自动清理处理器,可以递归清理加载的指标文件,并将无限值替换为符合 JSON 标准的 `null` 值。
标签:Apex, AV绕过, FastAPI, MongoDB, 威胁情报, 开发者工具, 搜索引擎查询, 搜索语句(dork), 机器学习, 网络安全, 请求拦截, 逆向工具, 配置审计, 钓鱼检测, 隐私保护