VPN相关研究

VPN攻防技术迭代

一点想法:现在的各种“翻墙工具”几乎都是为了对抗GFW而生的,这是一场不断迭代的攻防游戏。因此,为了更好的研究各类“翻墙工具”,我们有必要调研各种现代VPN技术,在已有相关研究的基础上开展研发

⚠️ 安全研究声明

  • 目的: 本文仅用于网络安全技术交流及企业内部流量审计研究。
  • 隐私: 实验所用 Pcap 数据已进行脱敏处理,不包含敏感个人信息。
  • 责任: 严禁利用文中所述方法从事任何违反《中华人民共和国网络安全法》及相关法律法规的行为。研究技术是为了更好地防护,请勿越界。

参考来源:

GFW Report

Censored Planet

V2Ray相关技术

Trojan相关技术

Hysteria2相关技术

Project X

加密协议

传统 VPN 旨在保护隐私(Privacy),而现代协议旨在实现隐匿(Stealth)

传统VPN协议

目的是在不安全的网络中建立安全的加密隧道,主要工作在网络层(L3)或数据链路层(L2)

OpenVPN

  • 基于 SSL/TLS,有非常明显的握手特征(Handshake packets)。
  • 默认使用 UDP 1194 或 TCP 443。
  • 特征码:pcapng 中可以识别出特定的 OpenVPN 头部,包长度分布有规律。

OpenVPN is Open to VPN Fingerprinting

WireGuard

  • 完全基于 UDP
  • 静默响应: 如果发往服务器的包不合法,服务器完全不回包(防止扫描)。
  • 指纹: 虽然它是加密的,但其 UDP 报文的固定大小(如 148 字节的握手包)和特定字段偏移,使得它在流量分析中具有很高的统计学辨识度。

早期抗封锁协议

设计目标是绕过防火墙,通过简单的混淆和加密让流量看起来像“随机垃圾”。

Shadowsocks (SS)

  • 技术特征: SOCKS5 代理 + 预共享密钥加密(如 AES-256-GCM)。
  • 无握手特征: 第一个包就开始发送加密数据。
  • 高熵值 (High Entropy): 整个 Payload 看起来完全随机。
  • 弱点:主动探测 —— GFW的做法

现代隐匿协议(重点)

让流量看起来像正常的 Web 流量

VMess (V2Ray 的核心)

Trojan

  • 将所有流量模仿成翻墙中最常见的协议 HTTPS ,诱使 GFW 误以为它是 HTTPS
  • 反检测机制:所有没有正确结构和密码的连接都将被重定向到预设的端点

REALITY(by Project X

  • XTLS协议的升级,关于XTLS
  • 若用 REALITY 取代 TLS,可消除服务端 TLS 指纹特征,仍有前向保密性等,且证书链攻击无效,安全性超越常规 TLS,且可以指向别人的网站,无需自己买域名、配置 TLS 服务端,更方便,实现向中间人呈现指定 SNI 的全程真实 TLS白话解释

Hysteria2

  • 一个基于 HTTP/3 QUIC 的 TCP 和 UDP(主要) 代理,得益于 QUIC 的全加密和填充,大大地增加中间防火墙嗅探的负担,且强制要求使用 TLS 1.3
  • 通过在数据包中加入随机长度的填充,来专门对抗流量分析

理解 TLS SNI——以及它为何在实际 API 代理中至关重要

GFW的相关手段

TLS 1.3, ESNI, DoH, interception… it’s not that complicated 😉

AnyTLS

  • 一个试图缓解 嵌套的TLS握手指纹(TLS in TLS) 问题的代理协议。

代理客户端

工具繁多,功能大同小异,但起核心作用的总是代理内核,以下是几款常见的内核

Xray-core (Project X)

目前技术演进最快、影响力最大的内核。它是从 V2Ray 衍生出来的分支(Fork),专注于高性能和新技术研发,包括REALITY,VLESS,XTLS

Sing-box

高性能,低内存占用

Mihomo (原 Clash Meta)

在原有的 Clash 项目(已停更)基础上发展而来的分支,是目前 Clash 生态中最强大的内核,继承了 Clash 极其灵活的规则分流引擎以及实现了全协议支持。

V2Ray-core

出现较早,是多协议代理工具的开创者,提出了著名的“路由-出口-入口”架构。

一些第三方客户端

  • V2RayN 是一个基于 V2Ray和Singbox等一系列内核的 Windows 客户端。
  • v2RayA:基于 web GUI 的跨平台 V2Ray 客户端,在 Linux 上支持全局透明代理,其他平台上支持系统代理。
  • clash-verge-rev:内置Clash.Meta(mihomo)内核,并支持切换 Alpha 版本内核,可视化节点和规则编辑。
  • FIClash:基于 ClashMeta 的多平台代理客户端,简洁易用,开源且无广告。
  • ······

检测方法相关研究

主动探测

  • 协议回放/重放攻击: 探测器会模拟客户端向你的服务器发送一段之前捕获的加密报文。如果你的服务器给予了“符合协议逻辑”的回包,则判定为代理。
  • 异常报文测试: 向目标端口发送不符合协议格式的随机数据。如果服务器选择了直接断开连接(这是很多代理软件的防探测机制,但本身也是一种特征),GFW 可能会通过侧信道(Side-channel)分析来确认。
  • 证书一致性检查: 如果你使用的是自签名证书,或者证书域名与实际访问的 SNI 不符,会触发立即阻断。

Examining How the Great Firewall Discovers Hidden Circumvention Servers

被动探测

深度包检测

  • 协议特征码匹配: 针对 OpenVPN、L2TP 等传统协议。即使开启了混淆,GFW 仍能识别出协议握手阶段的特定偏移字节。
  • TLS 指纹识别 (JA3/JA4+): 这是目前检测 V2Ray/Trojan 的核心手段。GFW 会记录 TLS 握手中的加密套件列表、扩展项顺序、ALPN 值等。
  • QUIC/HTTP3 审计: 通过解密 QUIC Initial 包,从而读取其中的 SNI 甚至部分握手参数。

某国外研究团队对GFW流量过滤规则的猜测

DNS劫持/污染

  • 劫持 (Hijacking): 强行获取 DNS 服务器的控制权,或直接在网关层面重定向请求。
  • 污染 (Pollution): 不控制服务器,而是通过“抢答”机制,将错误的解析结果抢在正确结果之前发送给用户。
  • 现代“翻墙工具”已经抛弃传统DNS查询方式,而是通过DoH,DoT,DoQ等手段处理

尚未调查的方面

  • 各类“一键直连”的“翻墙工具”(免费/付费)
  • 敏感/违规关键字审查机制

欢迎补充

最后:技术在不断迭代,上述的某些文章可能已经过时,目前的审查手段已经逐步转向基于机器学习对流量特征的识别,因此还需要大量的流量分析来辅佐研究