linaodh25/Malicious-URL-Detection-System

GitHub: linaodh25/Malicious-URL-Detection-System

基于 Playwright 浏览器沙箱和多层威胁情报的恶意 URL 动态检测系统,可对任意链接进行行为分析并输出量化风险评分。

Stars: 0 | Forks: 0

# 🛡️ 恶意 URL 检测沙箱: ![Python](https://img.shields.io/badge/Python-3.12+-1a1a2e?style=for-the-badge&logo=python&logoColor=f5a623) ![Docker](https://img.shields.io/badge/Docker-Required-1a1a2e?style=for-the-badge&logo=docker&logoColor=f5a623) ![Flask](https://img.shields.io/badge/Flask-Web%20Server-1a1a2e?style=for-the-badge&logo=flask&logoColor=f5a623) ![Security](https://img.shields.io/badge/Security-URL%20Scanner-1a1a2e?style=for-the-badge&logo=shield&logoColor=f5a623) | 🟢 安全 (CLEAN) | 🟠 可疑 (SUSPICIOUS) | 🔴 恶意 (MALICIOUS) | |:---:|:---:|:---:| | 评分 0 – 30 | 评分 31 – 69 | 评分 70 – 100 | ## 演示视频 [▶ 观看完整演示](https://www.youtube.com/watch?v=DAkPTsAi1RQ) ## 📄 报告 [阅读完整报告](./REPORT.pdf) ## 预览 Website
🟢 Clean Case 🔴 Malicious Case 🔴 Malicious Case (Detail)
## 环境要求 - Python 3.12+ - Docker Desktop — 必须处于运行状态 - `requirements.txt` 中列出的依赖项 ## 安装说明 ``` # 安装 dependencies python -m pip install -r requirements.txt python -m pip install docker # 安装 Playwright 浏览器 playwright install chromium # 构建 Docker 镜像(一次性) docker build -t malicious-url-scanner . # 创建输出文件夹 mkdir output ``` ## 运行说明 ``` python app.py ``` 在浏览器中打开 **http://127.0.0.1:5000**。 ## 工作原理 系统运行一个由两部分组成的 pipeline: ``` URL Input ──► Browser (Playwright) ──► evidence.json ──► Analysis Pipeline ──► Verdict ``` **Pipeline 1 — 证据收集** 在无头 Chromium 浏览器中访问 URL,Hook JavaScript 函数(`eval`、`document.write`、表单提交),记录所有网络请求,验证 TLS,并记录任何文件下载行为。 **Pipeline 2 — 威胁分析** 查询 VirusTotal、AbuseIPDB 和 URLhaus,应用 16 条启发式检测规则,并生成最终风险评分。 **每次扫描都在全新的 Docker 容器中运行 —— 宿主机永远不会被暴露。** ## 使用方法 1. 将任意 URL 粘贴到输入框中 2. 点击 **Scan URL** 3. 等待 20 – 60 秒,沙箱运行期间请耐心等待 4. 阅读结果 | 字段 | 描述 | |---|---| | **Score** | 0 到 100 的风险等级 | | **Verdict** | CLEAN / SUSPICIOUS / MALICIOUS | | **Signals** | 导致分数上升的具体原因 | | **Technical Details** | 重定向、请求、TLS、cookies、持续时间 | | **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` | 提取 IPs、domains、hashes | | `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 |
标签:Chromium, DAST, Docker, Flask, Go语言工具, IP 地址批量处理, JavaScript行为分析, Playwright, Python, URL扫描器, Web安全, 威胁情报API, 安全沙箱, 安全防御评估, 恶意URL检测, 恶意软件分析, 无后门, 浏览器沙箱, 特征检测, 网络安全, 网络请求分析, 蓝队分析, 请求拦截, 逆向工具, 钓鱼检测, 隐私保护, 风险评分