linaodh25/Malicious-URL-Detection-System-
GitHub: linaodh25/Malicious-URL-Detection-System-
一个基于浏览器沙箱的恶意 URL 检测系统,通过动态执行 JavaScript 并结合威胁情报与启发式规则,对可疑链接进行风险评分和判定。
Stars: 0 | Forks: 0
# 🛡️ 恶意 URL 检测沙箱




| 🟢 安全 (CLEAN) | 🟠 可疑 (SUSPICIOUS) | 🔴 恶意 (MALICIOUS) |
|:---:|:---:|:---:|
| 得分 0 – 30 | 得分 31 – 69 | 得分 70 – 100 |
## ▶️ 演示视频
[观看完整演示](https://www.youtube.com/watch?v=DAkPTsAi1RQ)
## 📄 报告
[阅读完整项目报告](./REPORT.pdf)
## 🖼️ 预览

| 🟢 安全案例 | 🔴 恶意案例 | 🔴 恶意案例 (详情) |
|:---:|:---:|:---:|
|
|
|
|
## ⚙️ 工作原理
系统运行由两部分组成的 pipeline:
```
URL Input ──► Browser (Playwright) ──► evidence.json ──► Analysis Pipeline ──► Verdict
```
**Pipeline 1 — 证据收集**
在无头 Chromium 浏览器中访问 URL,挂钩 JavaScript 函数(`eval`、`document.write`、表单提交),记录所有网络请求,验证 TLS,并记录任何文件下载。
**Pipeline 2 — 威胁分析**
查询 VirusTotal、AbuseIPDB 和 URLhaus,应用 16 条启发式检测规则,并生成最终风险评分。
## 📋 环境要求
- Python 3.12+
- Docker Desktop — 必须处于运行状态
- `requirements.txt` 中列出的依赖项
## 🚀 设置
```
# Install dependencies
python -m pip install -r requirements.txt
python -m pip install docker
# Install Playwright browser
playwright install chromium
# Build Docker image(一次性)
docker build -t malicious-url-scanner .
# Create output folder
mkdir output
```
## ▶️ 运行
```
python app.py
```
在浏览器中打开 **http://127.0.0.1:5000**。
## 🔍 使用方法
1. 将任意 URL 粘贴到输入框中
2. 点击 **Scan URL**
3. 等待 20 – 60 秒让沙箱运行
4. 查看结果
| 字段 | 描述 |
|---|---|
| **Score** | 0 到 100 的风险等级 |
| **Verdict** | CLEAN / SUSPICIOUS / MALICIOUS |
| **Signals** | 导致分数增加的具体原因 |
| **Technical Details** | 重定向、请求、TLS、Cookie、耗时 |
| **Screenshot** | 沙箱内部呈现的页面外观 |
## 🗂️ 项目结构
| 文件 | 作用 |
|---|---|
| `app.py` | Flask Web 服务器 |
| `main.py` | Pipeline 编排器 |
| `browser.py` | Playwright 浏览器 + JS 监视器 |
| `js_hooks.py` | JavaScript 插桩 |
| `network_capture.py` | TLS 验证 + 请求日志记录 |
| `evidence_builder.py` | 构建 `evidence.json` |
| `ioc_extractor.py` | 提取 IP、域名、哈希值 |
| `threat_intel.py` | VirusTotal · AbuseIPDB · URLhaus |
| `heuristics.py` | 16 条检测规则 |
| `scorer.py` | 风险评分 |
| `verdict.py` | 最终判定 |
| `sandbox.py` | Docker 容器管理 |
## 🧪 实时测试结果
在一个 Netflix 钓鱼克隆网站上进行了测试 —— 判定结果:**SUSPICIOUS 55/100**
| 指标 | 值 |
|---|---|
| 扫描耗时 | 14.72s |
| HTTP 请求 | 9 |
| 重定向 | 2 |
| TLS 颁发者 | Let's Encrypt |
| VirusTotal | 16 个引擎标记 |
| AbuseIPDB | 得分 32/100 |
|
|
|
## ⚙️ 工作原理
系统运行由两部分组成的 pipeline:
```
URL Input ──► Browser (Playwright) ──► evidence.json ──► Analysis Pipeline ──► Verdict
```
**Pipeline 1 — 证据收集**
在无头 Chromium 浏览器中访问 URL,挂钩 JavaScript 函数(`eval`、`document.write`、表单提交),记录所有网络请求,验证 TLS,并记录任何文件下载。
**Pipeline 2 — 威胁分析**
查询 VirusTotal、AbuseIPDB 和 URLhaus,应用 16 条启发式检测规则,并生成最终风险评分。
## 📋 环境要求
- Python 3.12+
- Docker Desktop — 必须处于运行状态
- `requirements.txt` 中列出的依赖项
## 🚀 设置
```
# Install dependencies
python -m pip install -r requirements.txt
python -m pip install docker
# Install Playwright browser
playwright install chromium
# Build Docker image(一次性)
docker build -t malicious-url-scanner .
# Create output folder
mkdir output
```
## ▶️ 运行
```
python app.py
```
在浏览器中打开 **http://127.0.0.1:5000**。
## 🔍 使用方法
1. 将任意 URL 粘贴到输入框中
2. 点击 **Scan URL**
3. 等待 20 – 60 秒让沙箱运行
4. 查看结果
| 字段 | 描述 |
|---|---|
| **Score** | 0 到 100 的风险等级 |
| **Verdict** | CLEAN / SUSPICIOUS / MALICIOUS |
| **Signals** | 导致分数增加的具体原因 |
| **Technical Details** | 重定向、请求、TLS、Cookie、耗时 |
| **Screenshot** | 沙箱内部呈现的页面外观 |
## 🗂️ 项目结构
| 文件 | 作用 |
|---|---|
| `app.py` | Flask Web 服务器 |
| `main.py` | Pipeline 编排器 |
| `browser.py` | Playwright 浏览器 + JS 监视器 |
| `js_hooks.py` | JavaScript 插桩 |
| `network_capture.py` | TLS 验证 + 请求日志记录 |
| `evidence_builder.py` | 构建 `evidence.json` |
| `ioc_extractor.py` | 提取 IP、域名、哈希值 |
| `threat_intel.py` | VirusTotal · AbuseIPDB · URLhaus |
| `heuristics.py` | 16 条检测规则 |
| `scorer.py` | 风险评分 |
| `verdict.py` | 最终判定 |
| `sandbox.py` | Docker 容器管理 |
## 🧪 实时测试结果
在一个 Netflix 钓鱼克隆网站上进行了测试 —— 判定结果:**SUSPICIOUS 55/100**
| 指标 | 值 |
|---|---|
| 扫描耗时 | 14.72s |
| HTTP 请求 | 9 |
| 重定向 | 2 |
| TLS 颁发者 | Let's Encrypt |
| VirusTotal | 16 个引擎标记 |
| AbuseIPDB | 得分 32/100 |标签:AbuseIPDB, Ask搜索, Chromium无头浏览器, DAST, Docker, Flask, Go语言工具, JavaScript行为分析, Playwright, Python, TLS验证, URLhaus, VirusTotal, Web安全, 启发式规则, 威胁情报, 安全防御评估, 开发者工具, 恶意URL检测, 恶意软件分析, 无后门, 沙箱, 特征检测, 网址安全扫描仪, 网络安全, 网络请求分析, 蓝队分析, 请求拦截, 逆向工具, 钓鱼检测, 隐私保护, 风险评分