MohdHassaan12/VPN-Detection-Deanonymisation

GitHub: MohdHassaan12/VPN-Detection-Deanonymisation

这是一个基于机器学习的多层VPN检测与去匿名化系统,利用流量指纹、IP情报和两阶段ML模型实时识别匿名通信风险,旨在解决传统DPI技术在混淆协议检测上的不足。

Stars: 1 | Forks: 0

IDxVPN Platform
# IDxVPN — 基于机器学习的多层 VPN 检测与去匿名化系统 ### 使用机器学习 · 实时网络流量智能
![Python](https://img.shields.io/badge/Python-3.9+-3572A5?style=for-the-badge&logo=python&logoColor=white) ![TensorFlow](https://img.shields.io/badge/TensorFlow-2.x-FF6F00?style=for-the-badge&logo=tensorflow&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-Latest-009688?style=for-the-badge&logo=fastapi&logoColor=white) ![React](https://img.shields.io/badge/React-Vite-61DAFB?style=for-the-badge&logo=react&logoColor=black) ![Docker](https://img.shields.io/badge/Docker-Containerised-2496ED?style=for-the-badge&logo=docker&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-22c55e?style=for-the-badge)

🔗 **[在线演示 →](https://mohdhassaan12.github.io/VPN-Detection-Deanonymisation/)**
## 📌 概述 现代 VPN 使用量呈指数级增长 —— 不仅用于隐私保护,还越来越多地被恶意行为者用来隐藏身份、规避地理围栏并绕过企业控制。传统的深度包检测(DPI)要么**过度拦截**(损害合法用户),要么**检测不足**(遗漏 WireGuard、Shadowsocks、ECH/TLS 1.3 等混淆协议)。 **IDxVPN** 通过**4 层多模型流水线**解决了这一问题: 1. 🛡 **边缘防火墙** — IP 智能分析 + 被动 TCP/MTU 指纹识别(`<10ms`) 2. 🔒 **TLS 终止** — 头部提取 + JA3/TLS 指纹识别(`<5ms`) 3. 🧠 **ML 风险评分引擎** — 阶段 1 CNN(应用分类)+ 阶段 2 Random Forest(风险评分 0–99)(`~45ms`) 4. ⚡ **策略引擎** — 自适应 `ALLOW / CHALLENGE / BLOCK` 决策(`<1ms`) ## 🎯 核心功能 | 功能 | 详情 | |---------|--------| | **两阶段 ML 流水线** | CNN 对应用类型进行分类;Random Forest 对意图/风险进行评分 | | **实时数据包捕获** | 实时 tshark/PyShark 接入,端到端延迟 <200ms | | **隐私优先评分** | 单独检测 VPN ≠ 自动拦截;保护合法用户 | | **自适应执行** | 对中等风险流量执行 `CHALLENGE`(MFA/CAPTCHA),而非全面拦截 | | **IP 智能分析** | 使用 IPQualityScore + IPinfo API 进行地理位置和欺诈评分 | | **交互式仪表板** | 带有 WebSocket 实时更新的 React/Vite SOC 仪表板 | | **PDF 报告导出** | 生成包含威胁源、异常日志和建议的 SOC 报告 | ## 🖥️ 平台截图 ### 欢迎页面 ![Welcome Page](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/cf97567b6b005914.png) ### 实时流量仪表板 ![Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/05c4a907ed005915.png) *实时统计卡片、实时流量量图表、风险评分分布以及按流决策日志 —— 全部通过 WebSocket 流更新。* ### 指挥中心 — 威胁情报 ![Command Center](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8f800146b6005917.png) *实时威胁源、标记 IP 表、按流操作细分(ALLOW/CHALLENGE/BLOCK)以及交互式地图。* ### 去匿名化核心 ![Deanonymisation Core](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e050d5524c005918.png) *VPN 提供商归因、行为分析、身份评分和来源聚类。* ### 分析与遥测 ![Analytics](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/77c9f054f0005920.png) *按应用细分、VPN 来源热力图、24 小时会话趋势和异常检测图表。* ### 安全报告与威胁 ![Reports & Threats](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0098bfbfbe005921.png) *概览 KPI、威胁情报源、异常严重性日志、网络健康状况以及 AI 生成的建议。包含一键 PDF 导出。* ### 多层架构浏览器 ![Architecture View](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/df08147faf005922.png) *所有 4 个流水线层的交互式细分,包含每层的延迟指标和技术栈。* ## 🏗️ 4 层检测架构 | # | 层级 | 角色 | 技术 | 延迟 | |---|-------|------|------------|---------| | **L1** | **边缘防火墙** | IP 声誉、MTU/MSS 指纹识别、快速允许/拦截 | IPQualityScore, IPinfo, 被动 TCP | `<10ms` | | **L2** | **TLS 终止** | SNI 提取、JA3 指纹识别、RTT 探测 | mTLS 网关 | `<5ms` | | **L3** | **ML 风险评分引擎** | CNN → Random Forest 两阶段推理 | TensorFlow + scikit-learn | `~45ms` | | **L4** | **策略引擎** | 规则评估 → ALLOW / CHALLENGE / BLOCK | FastAPI + Redis 规则缓存 | `<1ms` | **端到端总目标:P99 `<200ms`。** ### 策略阈值 | 风险评分 | 操作 | 含义 | |-----------|--------|---------| | 0 – 20 | 🟢 **ALLOW** | 低风险,合法流量 | | 21 – 60 | 🟡 **CHALLENGE** | 需要 MFA / CAPTCHA | | 61 – 99 | 🔴 **BLOCK** | 高风险,标记活动 | ## 📊 ML 流水线 ### 阶段 1 — CNN 应用分类器 每个网络流被编码为一张 **64×64×3 数据包块图像**(原始字节 → RGB 通道)。在此视觉表示上训练的 CNN 能够学习每个协议独有的空间字节级模式。 ``` Input → 64×64×3 Packet-Block Image Output → 8-class softmax [BROWSING, CHAT, VOIP, VIDEO, FILE_TRANSFER, STREAMING, TUNNEL, C2] ``` ### 阶段 2 — Random Forest 风险评分器 接收 25 特征流向量**加上**阶段 1 的预测应用类别,并输出连续的**风险评分(0–99)**: - **IP 智能分析** — 欺诈评分、ISP 类型、代理标志、国家风险 - **流统计** — 持续时间、字节数、到达间隔时间、数据包大小分布 - **行为信号** — 人类评分、一天中的时间、重传比率 - **TLS 元数据** — JA3 哈希、SNI、证书年龄 - **阶段 1 输出** — 预测的应用类别(直接输入阶段 2) ## 📦 数据集 融合四个公共数据集以提供所有维度的基准真值: | 数据集 | 来源 | 大小 | 关键标签 | |---------|--------|------|------------| | **VNAT (MIT LL)** | MIT Lincoln Laboratory | ~36 GB | 5 种应用类型 (BROWSING, CHAT, VOIP, VIDEO, C2) | | **ISCXVPN 2016** | Univ. of New Brunswick | ~28 GB | VPN vs Non-VPN,7 个应用类别 | | **CIC-IDS 2017** | Canadian Institute for Cybersecurity | ~50 GB | 良性 + 7 种攻击类型 | | **USTC-TFC 2016** | USTC — 中国 | ~8 GB | 10 种良性应用 + 8 个恶意软件家族 | ## 📁 项目结构 ``` idxvpn/ ├── preprocessing/ │ └── scripts/ │ ├── pcap_to_packetblock.py # PCAP → 64×64 images │ ├── merge_datasets.py # Dataset unification │ └── feature_extractor.py # 25-feature engineering │ ├── model_training/ │ ├── stage1_app_classifier/ # CNN (8-class) │ └── stage2_intent_classifier/ # Random Forest (risk 0–99) │ ├── inference/ │ ├── app/ │ │ ├── main.py # FastAPI service │ │ ├── predict.py # Two-stage pipeline │ │ └── utils.py # Feature helpers │ └── capture/ │ └── wireshark_capture.py # Live tshark/PyShark capture │ ├── deployment/ │ ├── dashboards/idxvpn-ui/ # React/Vite SOC dashboard │ └── k8s/ # Kubernetes manifests │ └── docs/ └── screenshots/ # Platform screenshots ``` ## 🚀 快速开始 ### 1. 安装依赖 ``` # 推理服务 cd inference && pip install -r requirements.txt # Dashboard (development) cd deployment/dashboards/idxvpn-ui && npm install && npm run dev ``` ### 2. 运行实时捕获 ``` # 需要安装 tshark / Wireshark + root/sudo python inference/capture/wireshark_capture.py --interface eth0 ``` ### 3. 启动推理 API ``` cd inference uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload ``` ### 4. 测试预测 ``` curl -X POST http://localhost:8080/predict \ -H "Content-Type: application/json" \ -d '{ "src_ip": "192.168.1.100", "dst_ip": "8.8.8.8", "src_port": 51234, "dst_port": 443, "protocol": "TCP", "is_vpn": true, "fraud_score": 25, "flow_duration": 45.2 }' ``` **示例响应:** ``` { "request_id": "req_7f3a9c", "app_class": "BROWSING", "risk_score": 18, "action": "ALLOW", "reason": "Low fraud score, legitimate ISP, normal flow behaviour", "latency_ms": 143, "stage1_confidence": 0.97 } ``` ### 5. 部署到 Kubernetes ``` cd deployment/k8s kubectl apply -f 01-namespace.yaml kubectl apply -f 02-config.yaml kubectl apply -f 04-redis.yaml kubectl apply -f 06-inference-api.yaml kubectl get pods -n vpn-inference ``` ## 📈 性能目标 | 指标 | 目标 | 状态 | |--------|--------|--------| | 端到端延迟 (P99) | `<200ms` | ✅ 已达成 | | 阶段 1 CNN 应用准确率 | `>90% F1` | ⬜ 训练中 | | 阶段 2 RF AUC | `>0.95` | ⬜ 训练中 | | 误报率 | `<2%` | ⬜ 待验证 | | 吞吐量 | `10K req/s` | ✅ 已验证 (k6 负载测试) | ## 🗺️ 路线图 ### ✅ 已完成 - [x] 4 层检测架构 - [x] 实时数据包捕获 (tshark/PyShark) - [x] 两阶段 ML 流水线 (CNN + Random Forest) - [x] 带有 WebSocket 流的实时 React 仪表板 - [x] IP 智能分析 (IPQualityScore + IPinfo) - [x] 带有地理标记的交互式世界地图 - [x] 安全报告与威胁套件,支持 PDF 导出 - [x] 多层架构浏览器页面 - [x] Kubernetes 部署清单 ### 🔜 进行中 / 未来 - [ ] GPU 加速 (TensorRT 优化) - [ ] 图异常检测器 (无监督 GNN) - [ ] 持久化历史存储 (PostgreSQL) - [ ] 自动化 `iptables`/`nftables` 拦截执行 - [ ] 基于分析师决策的持续学习反馈循环 ## 🔒 道德与安全 本项目使用**仅限被动、感知同意的检测**: - **无负载解密** — 数据包块图像对原始字节进行编码,不检查内容 - **隐私优先评分** — 单独使用 VPN 仅占 100 分风险预算中的约 15 分 - **适度响应** — 对中等风险流量先执行 `CHALLENGE` 再执行 `BLOCK` - **数据最小化** — 日志保留 7 天;训练数据保留 30 天 - **符合 GDPR** — 基于欺诈预防的合法利益 ## 📚 参考文献与学术基础 - **FlowPic** — Shapira & Shavitt, *NDSS 2020* — 数据包块视觉编码 - **PacketPrint** — Rezaei & Liu, *IEEE S&P 2020* — 基于 CNN 的流量指纹识别 - **CIC-IDS 2017** — Canadian Institute for Cybersecurity 基准数据集 - **ISCXVPN 2016** — Draper-Gil et al. — VPN 与非 VPN 分类数据集 ## 👤 作者 **MD Hassan** B.Tech. 计算机科学 — CS & IT 系 Maulana Azad National Urdu University ## 📄 许可证 MIT License — 详见 [LICENSE](LICENSE)。
IDxVPN · 多层 VPN 检测与去匿名化 · 毕业研究项目
标签:Apex, AV绕过, Beacon Object File, CNN, Docker, ECH, FastAPI, IP 地址批量处理, JA3, MTU检测, PE 加载器, Python, Radare2, React, Shadowsocks, Syscalls, TCP指纹, TensorFlow, TLS 1.3, TLS指纹, Vite, VPN检测, WireGuard, 去匿名化, 多架构支持, 威胁情报, 子域名突变, 安全防御评估, 开发者工具, 搜索引擎查询, 无后门, 机器学习, 流量分类, 流量指纹, 深度包检测, 深度学习, 策略引擎, 网络安全, 网络安全分析, 网络安全挑战, 网络流量分析, 请求拦截, 边缘防火墙, 逆向工具, 随机森林, 隐私保护