neelamobaid/CipherLens
GitHub: neelamobaid/CipherLens
结合机器学习、实时 DOM 分析和威胁情报的 AI 钓鱼检测平台,通过 Chrome 扩展实现浏览器端即时防护。
Stars: 0 | Forks: 0
# CipherLens 🔍
### AI 驱动的实时钓鱼检测系统
CipherLens 是一个端到端的钓鱼检测平台,它结合了机器学习、
实时 DOM 分析和威胁情报 API,以实时识别恶意 URL。
它由用于实时浏览器防护的 Chrome 扩展程序、用于
ML 推理的 FastAPI 后端,以及用于分析和可解释性的 Streamlit 仪表板组成。
## 系统架构
## **用户访问 URL**
↓ Chrome 扩展程序提取 URL + DOM 特征(链接、表单、脚本、图标)
↓ FastAPI 后端接收特征 → 运行 ML 模型 + VirusTotal API
↓ 扩展程序即时显示判定结果
↓ Streamlit 仪表板显示详细分析 + SHAP 可解释性图表
## 核心功能
- **Chrome 扩展程序** — 在您浏览时进行实时钓鱼检测,并带有即时判定弹窗
- **基于 ML 的检测** — 在 11,430 个现代钓鱼/合法 URL 上训练的 Random Forest 分类器,准确率高达 94.95%
- **实时 DOM 特征提取** — 扩展程序读取完全加载的页面内容,以确保特征计算的准确性
- **VirusTotal 集成** — 与 60 多个安全引擎交叉验证每一个 URL
- **SHAP 可解释性** — 直观展示具体是哪些特征驱动了每次预测
- **FastAPI 后端** — 提供 ML 预测的 REST API,专为扩展程序和仪表板集成而设计
- **Streamlit 仪表板** — 用于详细 URL 分析及特征分解的 Web 界面
## 技术栈
| 组件 | 技术 |
|---|---|
| ML 模型 | Random Forest (scikit-learn) |
| 可解释性 | SHAP |
| 后端 API | FastAPI + Uvicorn |
| 仪表板 | Streamlit |
| 浏览器扩展 | Chrome Manifest V3 |
| 威胁情报 | VirusTotal API v3 |
| 特征提取 | Python (requests, BeautifulSoup, python-whois) |
| 数据集 | Web Page Phishing Detection Dataset (11,430 样本) |
## 项目结构
```
CipherLens/
├── chrome_extension/ # Chrome extension (Manifest V3)
│ ├── manifest.json
│ ├── popup.html # Extension UI
│ ├── popup.js # Handles API calls and UI updates
│ └── content.js # DOM feature extraction
├── model/
│ ├── phishing_model.pkl # Trained Random Forest model
│ └── feature_names.pkl # Feature names for inference
├── api.py # FastAPI backend
├── app.py # Streamlit dashboard
├── feature_extractor.py # URL feature extraction
├── explainer.py # SHAP explainability
├── predict.py # ML inference engine
├── virustotal.py # VirusTotal API integration
├── dataset_phishing.csv # Training dataset
├── .env.example # Environment variable template
└── requirements.txt # Python dependencies
```
## 设置说明
### 1. 克隆仓库
```
git clone https://github.com/neelamobaid/CipherLens.git
cd CipherLens
```
### 2. 创建虚拟环境
```
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Mac/Linux
```
### 3. 安装依赖
```
pip install -r requirements.txt
```
### 4. 设置环境变量
```
cp .env.example .env
# 将你的 VirusTotal API key 添加到 .env
```
### 5. 启动 FastAPI 后端
```
uvicorn api:app --reload --port 8000
```
### 6. 启动 Streamlit 仪表板(可选)
```
streamlit run app.py
```
### 7. 加载 Chrome 扩展程序
- 打开 Chrome → `chrome://extensions/`
- 启用开发者模式
- 点击“加载已解压的扩展程序” → 选择 `chrome_extension/` 文件夹
## 工作原理
### 特征工程
CipherLens 从每个 URL 中提取 83 个特征,分为三个类别:
- **URL 结构**(43 个特征) — 长度、特殊字符、子域名、TLD 分析、数字比率、钓鱼关键词提示、已知品牌冒充检测
- **页面内容**(30 个特征) — 超链接比率、表单分析、iframe 检测、favicon 来源、脚本来源、弹窗检测、禁用右键点击
- **域名情报**(10 个特征) — WHOIS 注册时长、域名年龄、DNS 记录是否存在
### 为什么选择基于 DOM 的提取?
大多数钓鱼检测器使用 HTTP 请求抓取页面,但这在严重依赖 JavaScript 的网站上会失效,且容易被机器人检测所拦截。CipherLens 使用 Chrome 扩展程序直接读取完全渲染的 DOM —— 即浏览器看到的相同数据 —— 从而使特征提取准确可靠。
### 模型性能
| 指标 | 分数 |
|---|---|
| 准确率 | 94.95% |
| 精确率 (钓鱼) | 0.95 |
| 召回率 (钓鱼) | 0.95 |
| F1-Score | 0.95 |
在包含 11,430 个 URL(5,715 个合法,5,715 个钓鱼)的均衡数据集上进行训练。
## 已知限制
- VirusTotal 免费套餐的速率限制为每分钟 4 个请求
- 合法网站上的非主流 TLD(.college、.xyz)可能会产生误报
- 对于某些域,WHOIS 查询可能会失败或超时
- 必须在本地运行后端,Chrome 扩展程序才能工作(尚未部署到云端)
## 未来改进
- 实现云端部署,使扩展程序无需本地后端即可工作
- 使用来自 PhishTank 的持续更新的钓鱼数据源构建重训练流水线
- 基于自然语言处理(NLP)的电子邮件内容社交工程检测
- 支持 Firefox 扩展
## 数据集
本项目使用了来自 Kaggle 的
[Web Page Phishing Detection Dataset](https://www.kaggle.com/datasets/shashwatwork/web-page-phishing-detection-dataset)
— 包含 11,430 个 URL 和 87 个工程化特征,钓鱼与合法样本数量均衡。
## 作者
**Neelam Obaid**
网络安全爱好者 | AI 课程项目
[GitHub](https://github.com/neelamobaid)
标签:AI, Apex, Ask搜索, AV绕过, BeautifulSoup, DNS枚举, FastAPI, Kubernetes, Manifest V3, ML, Object Callbacks, Python, Random Forest, REST API, scikit-learn, SHAP, Splunk, Streamlit, URL分析, Uvicorn, VirusTotal, Web安全, WHOIS, XAI, 人工智能, 仪表盘, 分类模型, 可解释性AI, 后端开发, 威胁情报, 实时检测, 开发者工具, 恶意URL检测, 搜索语句(dork), 无后门, 机器学习, 浏览器插件, 特征提取, 用户模式Hook绕过, 端点保护, 网络安全, 网络安全工具, 网络钓鱼, 自动化代码审查, 蓝队分析, 访问控制, 逆向工具, 钓鱼检测, 随机森林, 隐私保护