密西根大学 | OpenVPN下的指纹识别

admin 2025年1月6日08:41:09评论9 views字数 2559阅读8分31秒阅读模式
密西根大学 | OpenVPN下的指纹识别

原文标题:OpenVPN is Open to VPN Fingerprinting
原文作者:Diwen Xue, Reethika Ramesh, Arham Jain, Michalis Kallitsis, J. Alex Halderman, Jedidiah R. Crandall and Roya Ensafi
原文链接:https://www.usenix.org/conference/usenixsecurity22/presentation/xue-diwen
视频链接:https://youtu.be/ZNVff1rH-vA
发表会议:USENIX Security '22
笔记作者:孙汉林@安全学术圈
主编:黄诚@安全学术圈

1、引言

本文分析了流行的VPN工具OpenVPN,并受GFW(Great Firewall)的启发,提出一种由被动分析主动探测相结合的两阶段识别框架,通过分析字节模式、数据包大小和服务器行为3种特征,在低误报率的情况下,识别了85%以上的OpenVPN流量。

2、威胁模型

密西根大学 | OpenVPN下的指纹识别与GFW的威胁模型类似,具体分为如下6个阶段:

  • 客户端通过ISP网络连接到VPN服务器;
  • 过滤器备份ISP网络中的流量;
  • 过滤器将可疑目标转发至探测系统;
  • 探测系统将目标分发至不同探测器;
  • 探测器发送探针获取探测结果;
  • 探测结果为VPN服务器的目标被存入数据库。

3、特征选取

在本文中,作者选取了3种特征来识别OpenVPN流量,即字节模式、数据包大小和服务器行为,其中前两个属于被动分析,最后一个属于主动探测。下图是OpenVPN的握手和数据交换过程,3种特征都基于此过程。

密西根大学 | OpenVPN下的指纹识别
3.1 字节模式

基于字节模式的指纹识别方法通过分析 OpenVPN 流量中的操作码(Opcode)字段来识别流量类型。OpenVPN 数据包包含一个操作码字段,用于指示消息类型,如客户端和服务器重置、TLS 加密数据等,完整字节模式如下图所示:

密西根大学 | OpenVPN下的指纹识别

本文通过捕获前 N 个数据包的操作码序列,若序列中的不同操作码数量≥4(至少需要4种不同的操作码来完成握手,协议一共定义了10种操作码。),并且Client和Server的Reset操作码分别只出现过1次,则将该流量标记为OpenVPN流。此外,OpenVPN 使用 XOR 混淆技术保护数据负载,但操作码数量不受影响,因此即使流量经过混淆,操作码仍能提供有效的识别特征。这种指纹识别方法无需精确匹配操作码值或数据包大小,鲁棒性高,并能有效应对多种 XOR 混淆技术,确保高效准确地识别 OpenVPN 流量。

3.2 数据包大小

在OpenVPN的控制通道中,P_ACK包用于确认P_Control包,这些ACK包具有固定大小,并且只在会话的初期握手阶段出现,在数据传输阶段则不再使用。因此,P_ACK包在OpenVPN流量中呈现出独特的时序模式,成为一个可被识别的特征。

具体来说,本文通过分析OpenVPN会话的初期包交换序列(C->S (Client-Reset), S->C (Server-Reset), C->S (ACK), C->S(Control)),定位出初始的P_ACK包(第3个),并计算在每10个数据包中的ACK包数量,看是否满足OpenVPN的ACK数据包指纹(初期多,后期少)。该指纹识别技术对于识别未经随机填充(不改变ACK数据包大小)的OpenVPN混淆流量非常有效,且容易在实际的流量监控中部署。

3.3 服务器行为
密西根大学 | OpenVPN下的指纹识别

本文讨论了通过主动探测识别OpenVPN服务器的可行性。许多OpenVPN服务器使用tls-auth或tls-crypt选项,增加了HMAC签名以提供完整性认证机制,使得未经认证的客户端探测请求被服务器丢弃,从而提高了抗探测能力。尽管如此,作者设计了针对OpenVPN的探测方法,通过利用TCP层的行为特征,如超时或重置行为,仍能有效识别OpenVPN服务器。OpenVPN处理TCP包的流程如上图。

3.3.1 基础探针

OpenVPN在处理TCP流时,会在内存中分配缓冲区,组装接收到的数据包片段,直到满足长度条件才开始解析和检查语法及加密错误。基于这一行为,作者设计了两种探针,以期望触发OpenVPN服务器的两种不同反应。作者根据OpenVPN服务器与非OpenVPN服务器对两种探针的不同反应识别OpenVPN服务器。

密西根大学 | OpenVPN下的指纹识别

第一个探针(BaseProbe 1)包含一个经典的16字节OpenVPN客户端重置包,第二个探针(BaseProbe 2)在前者基础上去掉末尾一个字节。大多数非OpenVPN服务器会以相似的方式响应这两种探针,而对于启用HMAC的OpenVPN服务器来说,因为验证HMAC失败,第一个探针会被立即丢掉;第二个探针因没有凑够有效的解析长度而等待至超时。

3.3.2 附加探针

为了进一步提高对OpenVPN服务器的探测精度,作者设计了基于Linux服务器关闭TCP连接方式的探针。当TCP连接在有未读字节时被终止,Linux服务器会发送RST包。大多数OpenVPN服务器的RST阈值(RST阈值定义为触发RST包所需的最小字节数)在1550-1660字节之间,而大部分非OpenVPN服务器的阈值低于500字节或高于4000字节。因此,作者构造了一个包含2000字节随机数据的探针,预计98%以上的OpenVPN服务器会回应RST包,而非OpenVPN服务器的回应率不到3%。

密西根大学 | OpenVPN下的指纹识别

此外,由于OpenVPN支持端口共享功能,探针可能被转发给共享端口的其他服务(HTTP、TLS和SSH)解析,因此在发送基础探针后(此时已经过滤了大部分非共享端口的HTTP、TLS、SSH等服务),会首先探测这些服务,若收到正常响应,则停止探测,并将该服务器标记为非OpenVPN服务器。

4、实验结果

为了验证方案的有效性,作者将该方案部署到真实的ISP网络中,并得到如下实验结果:

密西根大学 | OpenVPN下的指纹识别

总的来说,在控制流中,识别原版OpenVPN的召回率达到85.90%,识别具有混淆技术的OpenVPN的召回率达到72.67%。在所有流中,共识别出3245个能够被证实是OpenVPN流量的流,393个不能够被证实的流。

安全学术圈招募队友-ing 
有兴趣加入学术圈的请联系 secdr#qq.com

原文始发于微信公众号(安全学术圈):密西根大学 | OpenVPN下的指纹识别

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月6日08:41:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   密西根大学 | OpenVPN下的指纹识别http://cn-sec.com/archives/3592276.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息