检测传输流量中的 OpenVPN 会话

密歇根大学的一组研究人员发布了一项研究结果,该研究涉及在监控传输流量时识别(VPN 指纹)与基于 OpenVPN 的服务器的连接的可能性。结果,确定了三种方法来识别其他网络数据包中的 OpenVPN 协议,这些数据包可用于流量检查系统以阻止基于 OpenVPN 的虚拟网络。

在拥有超过 85 万用户的互联网提供商 Merit 的网络上对所提出的方法进行的测试表明,该方法能够以较低的误报率识别 20% 的 OpenVPN 会话。为了进行测试,我们准备了一个工具包,首先以被动模式动态检测 OpenVPN 流量,然后通过主动服务器检查来验证结果的正确性。强度约为 XNUMX Gbps 的流量被镜像到研究人员创建的分析器上。

检测传输流量中的 OpenVPN 会话

在实验过程中,分析器能够成功识别出由恶意客户端建立的 1718 个测试 OpenVPN 连接中的 2000 个,这些连接使用了 40 种不同的典型 OpenVPN 配置(该方法成功地用于 39 种配置中的 40 种)。此外,在八天的实验中,在中转流量中识别出 3638 个 OpenVPN 会话,其中 3245 个会话得到确认。值得注意的是,所提出的方法中的误报上限比之前提出的基于机器学习的方法低三个数量级。

另外,还评估了商业服务中 OpenVPN 流量跟踪保护方法的性能 - 在使用 OpenVPN 流量隐藏方法的 41 个测试 VPN 服务中,在 34 个案例中识别出了流量。无法检测到的服务使用 OpenVPN 之外的附加层来隐藏流量(例如,通过附加加密隧道转发 OpenVPN 流量)。大多数成功识别的服务都使用了 XOR 流量失真、没有适当随机流量填充的额外混淆层,或者同一服务器上存在非混淆的 OpenVPN 服务。

所涉及的识别方法基于与未加密数据包标头、ACK 数据包大小和服务器响应中 OpenVPN 特定模式的绑定。第一种情况,与数据包头中“opcode”字段的绑定可以作为连接协商阶段识别的对象,它采用固定范围的值,并根据连接以某种方式变化设置阶段。识别归结为识别流的前 N ​​个数据包中操作码变化的特定序列。

第二种方法是基于OpenVPN中ACK数据包仅在连接协商阶段使用并且同时具有特定大小的事实。识别基于以下事实:给定大小的 ACK 数据包仅出现在会话的某些部分(例如,使用 OpenVPN 时,第一个 ACK​​ 数据包通常是会话中发送的第三个数据包)。

检测传输流量中的 OpenVPN 会话

第三种方法是主动检查,是由于OpenVPN服务器响应连接重置请求时发送特定的RST数据包(使用“tls-auth”模式时该检查不起作用,因为OpenVPN服务器忽略来自未通过 TLS 验证的客户端的请求)。

检测传输流量中的 OpenVPN 会话


来源: opennet.ru

添加评论