suriyaSEnthilkumarSD/phising_detection
GitHub: suriyaSEnthilkumarSD/phising_detection
一款结合机器学习词法分析与 OCR 视觉识别的多模态钓鱼检测威胁情报平台,用于检测传统黑名单无法覆盖的 zero-day 钓鱼攻击。
Stars: 0 | Forks: 0
# Phish-Chaser: 多模态威胁情报系统

## 概述
**Phish-Chaser** 是一款先进的端到端威胁情报 Web 应用程序,旨在检测并拦截 zero-day 钓鱼攻击。传统的钓鱼检测器仅依赖于黑名单或基础的 URL 分析,这在应对现代“无上下文”攻击(例如,托管窃取的品牌 Logo 的一次性随机 URL)时显得无能为力。
本项目通过采用**多模态“纵深防御”架构**来解决这一漏洞:
1. **词法引擎 (机器学习):** 利用 XGBoost 和 Random Forest 模型的集成,分析 URL 的数学结构。
2. **视觉引擎 (深度学习):** 对网页截图使用光学字符识别 (OCR) 来提取品牌特征,从而捕获未经授权域名上的视觉伪装。
## 核心功能
* **Zero-Day 检测:** 通过识别窃取的 Logo 这一视觉“谎言,在任何安全数据库中出现之前,即可识别出恶意的凭据收集网站。
* **实时 SOC 仪表盘:** 使用 Streamlit 和 Plotly 构建,具有动态的主威胁指标和历史实时扫描指标。
* **数据规范化引擎:** 包含自定义的正则表达式和 URL 解析器,可动态剔除良性前缀(如 `www.`),以防止训练偏差和误报。
* **可解释 AI (XAI):** 在 UI 中具有取证下拉菜单,可显示驱动算法决策的精确数学特征。
## 技术栈
* **前端/UI:** Streamlit, Plotly
* **机器学习:** XGBoost, Scikit-Learn (Random Forest), Joblib
* **计算机视觉:** EasyOCR (PyTorch)
* **数据处理:** Pandas, NumPy, Regex, Urllib
## 工作原理:Pipeline
1. **输入:** 用户提供可疑的 URL 并上传目标着陆页的截图。
2. **词法提取:** 后端在数学上将 URL 解构为 28 个离散特征(例如,字符频率、子域名计数、连字符、熵)。
3. **ML 分类:** 由预训练的 XGBoost 和 Random Forest 模型评估这些特征,以确定基准的结构性风险评分。
4. **空间 OCR 分析:** EasyOCR 扫描截图以读取文本并识别品牌名称(例如,“PayPal”、“Amazon”)。
5. **上下文验证:** 系统检查识别出的品牌是否被合法授权托管在该 URL 的 True Hostname 上。
6. **最终判定:** 如果词法评分表现出高度异常,或者 OCR 检测到未经授权的品牌冒充,该站点将被标记为 **CRITICAL THREAT(严重威胁)**。
## 可解释 AI 与特征重要性
为了确保我们的机器学习模型是透明的,我们分析了 XGBoost 和 Random Forest 分类器的特征重要性。
**核心洞察:**
* **首要威胁指标:** 两个模型一致认为 `num_special_chars_url` 是检测恶意链接的最关键特征。攻击者经常使用过多的特殊字符(`@`、`-`、`_`)来混淆真实目的地或嵌入窃取的 API 密钥。
* **XGBoost 行为:** XGBoost 模型高度侧重于特殊字符计数,在其决策树中赋予其超过 90% 的相对重要性,这使其在捕获混淆行为方面极为高效。
* **Random Forest 行为:** Random Forest 模型利用了更加均衡的 Gini 重要性分布。虽然它也优先考虑特殊字符,但它同时严重依赖于 `num_slashes_url`、`path_length` 和 `num_dots_url` 来评估路由路径的整体结构异常。
### XGBoost 特征重要性

### Random Forest 特征重要性
## 
## 安装与设置
### 前置条件
确保您已安装 Python 3.8+。
### 1. 克隆仓库
```
git clone https://github.com/suriyaSEnthilkumarSD/phising_detection
cd phish-chaser
```
### 2. 安装依赖项
```
pip install streamlit pandas plotly xgboost scikit-learn easyocr joblib pillow
```
### 3. 模型设置
确保您的预训练模型文件和配置字典已放置在正确的目录中:
* `xgboost_lexical_stage1.pkl`
* `random_forest_lexical_stage1.pkl`
* `brand_config.py`
* `ocr_chaser.py`
### 4. 数据集配置(本地设置)
由于 GitHub 的文件大小限制以及自动化安全协议(会阻止上传包含暴露的 API 密钥的真实、活跃钓鱼 URL),本仓库不包含原始数据集和图像库。
要在本地训练模型或运行批量扫描程序,您必须重新创建 `datasets/` 目录并从官方来源下载原始数据:
**A. 创建目录:**
在项目的根目录下创建一个名为 `datasets` 的文件夹。
**B. 下载恶意 URL 数据集:**
* 访问 [PhishTank](https://www.google.com/search?q=https://phishtank.org/developer_info.php) 并下载 CSV 格式的活跃钓鱼 URL 数据集。
* 将文件保存为 `datasets/phishtank.csv`。
**C. 下载良性 URL 数据集:**
* 访问 [Tranco List](https://tranco-list.eu/) 并下载最新的排名前 100 万的域名列表。
* 将文件保存为 `datasets/tranco.csv`。
**E. 下载网页截图数据集(用于 OCR Pipeline):**
* 下载用于训练和评估 OCR 引擎的 **Phish30k** 数据集(30,000 张恶意网页截图)和 **Benign_30k** 数据集(30,000 张安全网页截图):[链接到您的截图数据集]
* 将文件夹解压到 `datasets/phish30k/` 和 `datasets/benign_30k/`。
**预期的文件夹结构:**
```
phish-chaser/
├── datasets/
│ ├── benign_30k/ # 30,000 safe webpage screenshots for OCR
│ ├── phish30k/ # 30,000 malicious webpage screenshots for OCR
│ ├── phishtank.csv
│ └── tranco.csv
├── app.py
└── ...
```
### 5. 运行应用程序
```
streamlit run app.py
```
## 未来增强功能
* **自动截图:** 集成 Selenium 或 Playwright,仅需提供 URL 即可在后台自动捕获网页截图。
* **高级 NLP:** 实施 BERT 以分析抓取的网页文本的自然语言,检测社会工程学中常见的紧急/威胁性语言。
* **云端部署:** 使用 Docker 容器化应用程序,并通过 AWS EC2 或 Google Cloud Run 进行部署。
```
```

## 概述
**Phish-Chaser** 是一款先进的端到端威胁情报 Web 应用程序,旨在检测并拦截 zero-day 钓鱼攻击。传统的钓鱼检测器仅依赖于黑名单或基础的 URL 分析,这在应对现代“无上下文”攻击(例如,托管窃取的品牌 Logo 的一次性随机 URL)时显得无能为力。
本项目通过采用**多模态“纵深防御”架构**来解决这一漏洞:
1. **词法引擎 (机器学习):** 利用 XGBoost 和 Random Forest 模型的集成,分析 URL 的数学结构。
2. **视觉引擎 (深度学习):** 对网页截图使用光学字符识别 (OCR) 来提取品牌特征,从而捕获未经授权域名上的视觉伪装。
## 核心功能
* **Zero-Day 检测:** 通过识别窃取的 Logo 这一视觉“谎言,在任何安全数据库中出现之前,即可识别出恶意的凭据收集网站。
* **实时 SOC 仪表盘:** 使用 Streamlit 和 Plotly 构建,具有动态的主威胁指标和历史实时扫描指标。
* **数据规范化引擎:** 包含自定义的正则表达式和 URL 解析器,可动态剔除良性前缀(如 `www.`),以防止训练偏差和误报。
* **可解释 AI (XAI):** 在 UI 中具有取证下拉菜单,可显示驱动算法决策的精确数学特征。
## 技术栈
* **前端/UI:** Streamlit, Plotly
* **机器学习:** XGBoost, Scikit-Learn (Random Forest), Joblib
* **计算机视觉:** EasyOCR (PyTorch)
* **数据处理:** Pandas, NumPy, Regex, Urllib
## 工作原理:Pipeline
1. **输入:** 用户提供可疑的 URL 并上传目标着陆页的截图。
2. **词法提取:** 后端在数学上将 URL 解构为 28 个离散特征(例如,字符频率、子域名计数、连字符、熵)。
3. **ML 分类:** 由预训练的 XGBoost 和 Random Forest 模型评估这些特征,以确定基准的结构性风险评分。
4. **空间 OCR 分析:** EasyOCR 扫描截图以读取文本并识别品牌名称(例如,“PayPal”、“Amazon”)。
5. **上下文验证:** 系统检查识别出的品牌是否被合法授权托管在该 URL 的 True Hostname 上。
6. **最终判定:** 如果词法评分表现出高度异常,或者 OCR 检测到未经授权的品牌冒充,该站点将被标记为 **CRITICAL THREAT(严重威胁)**。
## 可解释 AI 与特征重要性
为了确保我们的机器学习模型是透明的,我们分析了 XGBoost 和 Random Forest 分类器的特征重要性。
**核心洞察:**
* **首要威胁指标:** 两个模型一致认为 `num_special_chars_url` 是检测恶意链接的最关键特征。攻击者经常使用过多的特殊字符(`@`、`-`、`_`)来混淆真实目的地或嵌入窃取的 API 密钥。
* **XGBoost 行为:** XGBoost 模型高度侧重于特殊字符计数,在其决策树中赋予其超过 90% 的相对重要性,这使其在捕获混淆行为方面极为高效。
* **Random Forest 行为:** Random Forest 模型利用了更加均衡的 Gini 重要性分布。虽然它也优先考虑特殊字符,但它同时严重依赖于 `num_slashes_url`、`path_length` 和 `num_dots_url` 来评估路由路径的整体结构异常。
### XGBoost 特征重要性

### Random Forest 特征重要性
## 
## 安装与设置
### 前置条件
确保您已安装 Python 3.8+。
### 1. 克隆仓库
```
git clone https://github.com/suriyaSEnthilkumarSD/phising_detection
cd phish-chaser
```
### 2. 安装依赖项
```
pip install streamlit pandas plotly xgboost scikit-learn easyocr joblib pillow
```
### 3. 模型设置
确保您的预训练模型文件和配置字典已放置在正确的目录中:
* `xgboost_lexical_stage1.pkl`
* `random_forest_lexical_stage1.pkl`
* `brand_config.py`
* `ocr_chaser.py`
### 4. 数据集配置(本地设置)
由于 GitHub 的文件大小限制以及自动化安全协议(会阻止上传包含暴露的 API 密钥的真实、活跃钓鱼 URL),本仓库不包含原始数据集和图像库。
要在本地训练模型或运行批量扫描程序,您必须重新创建 `datasets/` 目录并从官方来源下载原始数据:
**A. 创建目录:**
在项目的根目录下创建一个名为 `datasets` 的文件夹。
**B. 下载恶意 URL 数据集:**
* 访问 [PhishTank](https://www.google.com/search?q=https://phishtank.org/developer_info.php) 并下载 CSV 格式的活跃钓鱼 URL 数据集。
* 将文件保存为 `datasets/phishtank.csv`。
**C. 下载良性 URL 数据集:**
* 访问 [Tranco List](https://tranco-list.eu/) 并下载最新的排名前 100 万的域名列表。
* 将文件保存为 `datasets/tranco.csv`。
**E. 下载网页截图数据集(用于 OCR Pipeline):**
* 下载用于训练和评估 OCR 引擎的 **Phish30k** 数据集(30,000 张恶意网页截图)和 **Benign_30k** 数据集(30,000 张安全网页截图):[链接到您的截图数据集]
* 将文件夹解压到 `datasets/phish30k/` 和 `datasets/benign_30k/`。
**预期的文件夹结构:**
```
phish-chaser/
├── datasets/
│ ├── benign_30k/ # 30,000 safe webpage screenshots for OCR
│ ├── phish30k/ # 30,000 malicious webpage screenshots for OCR
│ ├── phishtank.csv
│ └── tranco.csv
├── app.py
└── ...
```
### 5. 运行应用程序
```
streamlit run app.py
```
## 未来增强功能
* **自动截图:** 集成 Selenium 或 Playwright,仅需提供 URL 即可在后台自动捕获网页截图。
* **高级 NLP:** 实施 BERT 以分析抓取的网页文本的自然语言,检测社会工程学中常见的紧急/威胁性语言。
* **云端部署:** 使用 Docker 容器化应用程序,并通过 AWS EC2 或 Google Cloud Run 进行部署。
```
```
标签:Apex, Kubernetes, Python, XGBoost, 光学字符识别(OCR), 凭据扫描, 威胁情报, 开发者工具, 无后门, 机器学习, 逆向工具, 钓鱼检测