linaodh25/Malicious-URL-Detection-System-

GitHub: linaodh25/Malicious-URL-Detection-System-

一个基于浏览器沙箱的恶意 URL 检测系统,通过动态执行 JavaScript 并结合威胁情报与启发式规则,对可疑链接进行风险评分和判定。

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) ## 🖼️ 预览 ![仪表盘预览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/317ff7d40d042504.png) | 🟢 安全案例 | 🔴 恶意案例 | 🔴 恶意案例 (详情) | |:---:|:---:|:---:| | Clean | Malicious | Malicious Detail | ## ⚙️ 工作原理 系统运行由两部分组成的 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检测, 恶意软件分析, 无后门, 沙箱, 特征检测, 网址安全扫描仪, 网络安全, 网络请求分析, 蓝队分析, 请求拦截, 逆向工具, 钓鱼检测, 隐私保护, 风险评分