一种面向隧道封装的Tor流量识别方法

文档序号:33478929发布日期:2023-03-15 11:25阅读:105来源:国知局
一种面向隧道封装的Tor流量识别方法
一种面向隧道封装的tor流量识别方法
技术领域
1.本发明涉及一种tor流量识别技术,属于流量分析(traffic analysis)和匿名网络(anonymity network)技术领域,具体涉及一种面向隧道封装的tor流量识别方法。


背景技术:

2.随着互联网及移动通信技术的不断发展,个人隐私与上网安全问题越发受到重视,不少用户开始使用匿名通信系统来接入互联网。其中tor是使用最广泛的匿名通信系统,据统计显示,截至2022年10月整个tor网络中在线用户数已经达到约250万,其中包含大量带有非法目的的用户,因此针对tor的可识别性研究一直是流量识别领域的热点方向。当前已经有大量基于原始tor流量进行的流量识别研究,通过对原始的tor流量提取特征并训练对应的分类器可以从真实网络流量中以极高的准确率识别出tor流量。为了掩盖原始tor流量的特征以提高接入tor网络的安全性,近年来有不少用户开始使用shadowsocks、v2ray、openvpn、obfs4网桥等多种隧道工具将tor流量伪装成常见协议的流量。然而目前还缺乏相应的研究工作来探讨这些经过隧道伪装的tor流量与正常流量的可区分性,因此设计一种面向隧道封装的tor流量识别方法有重要作用。


技术实现要素:

3.发明目的:针对大量带有非法目的的用户通过shadowsocks、v2ray、openvpn、obfs4网桥等多种隧道工具将tor流量伪装成常见协议的流量来逃避审查的问题,本发明提出一种面向隧道封装的tor流量识别方法,该方法首先自动化大量采集tor流量,然后对采集的tor流量进行协议判断,进而分别从使用udp协议的tor流量、仅在代理工具场景下使用tcp协议的tor流量、在代理工具加网桥场景下使用tcp协议的tor流量中提取特征,最后训练模型自动化识别经隧道伪装后的tor流量。
4.本发明采用如下技术方案:一种面向隧道封装的tor流量识别方法,该方法包括如下步骤:s1.通过隧道封装的tor流量自动化采集:用tcpdump流量抓取工具捕获tor浏览器通过隧道工具访问流行站点的流量,所述隧道工具包括shadowsocks、v2ray、trojan、openvpn、obfs4网桥中的任意一个或多个;s2.tor流量的使用协议判断和特征提取:判断自动化采集的tor流量是否为udp协议,如果为udp协议,则从udp流单个方向上提取tor流量特征;如果为tcp协议,则进一步判断是否为代理工具加网桥下的流量,如果仅为代理工具下的流量,则分别在shadowsocks、v2ray、trojan三种应用层代理转发tor流量时提取tcp连接单个方向上包长数量占比、频率的tor流量特征,如果为代理工具加网桥混淆下的tor流量,则从一段时间窗口内一群tcp连接的状态信息中提取代理加网桥混淆的tor流量特征;s3.自动化识别tor流量:根据s2中提取的tor流量特征,利用机器学习训练svm分类器实现从真实网络流量中自动化识别tor流量。
5.进一步地,所述步骤s1具体包括:s11.tor浏览器及隧道工具的docker容器封装:将tor浏览器和shadowsock、v2ray、trojan、openvpn、obfs4网桥这些隧道工具封装在docker容器中,通过docker容器在进程上实行网络空间层面的隔离;s12.利用流量抓取工具tcpdump抓取tor流量:tor浏览器通过自搭建的shadowsock、v2ray、trojan、openvpn代理、vpn服务器同时结合tor网桥连入tor网络,并通过python脚本自动化访问alexa提供的top 100站点产生大量tor流量,tcpdump通过监听代理客户端与服务器之间的网络通信捕获这些流量。
6.进一步地,所述步骤s2具体包括:s21.提取使用udp协议的tor流量特征:从s12所采集的tor流量中识别出使用udp协议的流量,从使用udp协议的流量的单个方向上提取相关的tor流量特征;s22.提取仅在代理工具场景下使用tcp协议的tor流量特征:先从s12所采集的tor流量中识别出使用tcp协议的流量,在此基础上进一步识别出仅在代理工具场景下的tor流量,从中分别提取shadowsocks、v2ray、trojan三种应用层代理工具下的tor流量特征;s23.提取在代理工具加网桥场景下使用tcp协议的tor流量特征:先从s12所采集的tor流量中识别出使用tcp协议的流量,在此基础上进一步识别出在代理工具加网桥场景下的tor流量,从一段时间窗口内一群tcp连接的状态信息中提取代理加网桥混淆的tor流量特征。
7.进一步地,步骤s21提取使用udp协议的tor流量特征具体包括:s211.提取udp有效载荷长度列表:openvpn客户端转发tor流量会使用udp协议,该隧道工具将获取到的ip包加密和封装后生成的udp有效载荷长度满足以下公式:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其中,n是tor信元的数量,k是tls数据包的数量,h1是openvpn协议的头部长度再加上40字节长度的tcp和ip头部,m1是openvpn客户端与服务端链路之间的mss长度,m
1-h1为tor客户端到openvpn客户端之间虚拟网络链路的mss长度;对任意一个udp流中提取所有udp载荷统计包长可得该udp流单向udp有效载荷长度列表len_list;s212.删除不利于提取特征的数据包:从s211提取的len_list中删除包长最大为mss大小的包和包长最小为h1大小的包,删除这些包后生成新的len_list;s213.生成包长度频率映射关系:对s212中生成的新的len_list进行频率统计,以获得包长度频率映射关系freq_map,映射中元素的键是包长度,值是其出现频率;s214.计算特定包长数量占比:由s213的包长度频率映射关系freq_map计算出满足公式(1)的包长数量占比;s215.生成特征向量:由s214中计算的包长数量占比和s213包长度频率映射关系构成特征向量并返回。
8.进一步地,步骤s22提取仅在代理工具场景下使用tcp协议的tor流量特征具体包括:s221.提取tcp有效载荷长度列表:应用层代理转发tor流量时会使用tcp协议,对自身与tor客户端tcp连接中的数据包进行处理,对其中任意一个tcp连接中的所有tcp载荷
统计包长可得该tcp连接的单向tcp有效载荷长度列表len_list;s222.生成包长度频率映射关系:对s221中的len_list进行频率统计,以获得包长度频率映射关系freq_map,映射中元素的键是包长度,值是其出现频率;s223.计算特定包长数量占比:通过代理转发的tor流量所产生的tcp有效负载长度理应满足如下计算公式:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)其中,h2为代理协议的头部及填充长度,与代理的种类及加密算法有关;m2是代理客户端与代理服务器之间链路的mss的大小,由s222的包长度频率映射关系freq_map计算出满足公式(2)的包长数量占比;s224.生成特征向量:由s223中计算的包长数量占比和s222包长度频率映射关系构成特征向量并返回。
9.进一步地,步骤s23提取在代理工具加网桥场景下使用tcp协议的tor流量特征具体包括:s231.识别被网桥插件和代理工具封装的tor流量:启用obfs4网桥插件后,tor浏览器产生的流量被网桥插件修改并封装,之后通过代理工具选择最合适的网桥节点建立tcp连接后并发送封装后的数据,此时tor浏览器行为会表现为短时间内向同一个ip的同一个端口发起多个连接;s232.提取代理工具加网桥混淆下的tor流量特征:从一段时间窗口内一群tcp连接的状态信息中提取代理加网桥混淆的tor流量特征,代理加网桥混淆的tor流量特征包括:香农熵、相关tcp连接之间平均间隔、一条连接中数据包平均时间间隔、一条连接中非零数据包比例、一条连接中数据包数量与所有相关连接中总数据包的比值、相关连接的加权平均包长、一条连接中数据包长度平均值这七个特征。
10.进一步地,步骤s232所述计算香农熵,具体为:计算tor浏览器所处主机在一段时间窗口内,到目的地,即ip地址和端口号集合的香农熵,公式如下:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)其中,为所求香农熵,表示在这一段时间窗口内,该主机向第个目的地建立连接数占总对外连接数的比例,在使用代理工具连接网桥时基本只和代理通信,熵值等于0。
11.进一步地,步骤s232所述计算相关tcp连接之间平均间隔,具体为:定义tor浏览器所处主机在一段时间窗口内和相同ip地址的相同端口建立的多条tcp连接为相关连接,将tcp握手时发出syn消息的时间戳记为这条连接的开始时间,任意两条相关连接开始时间之差,取正值为这两条连接之间的时间间隔,由此计算出相关tcp连接之间平均间隔。
12.进一步地,步骤s232所述计算一条连接中数据包平均时间间隔、计算一条连接中非零数据包比例、计算一条连接中数据包数量与所有相关连接中总数据包的比值、计算相
关连接的加权平均包长、计算一条连接中数据包长度平均值,具体为:s241.计算一条连接中数据包平均时间间隔:根据一条tcp连接中所有数据包之间的时间间隔的求得平均值;s242.计算一条连接中非零数据包比例:首先统计一条tcp连接中非零数据包的个数再将其除以连接中总数据包个数求出其比例;s243.计算一条连接中数据包数量与所有相关连接中总数据包的比值:首先统计一条tcp连接中数据包个数,再统计所有相关连接中总数据包个数,由此可以计算出比值;s244.计算相关连接的加权平均包长:计算除本条tcp连接外所有相关连接的加权平均数据包长度,每条tcp连接的权重为该连接数据包数量与所有相关连接总数据包数量的比值;s245.计算一条连接中数据包长度平均值:由这条tcp连接中所有数据包的“length”字段值累加后再除以总数据包个数可得。
13.进一步地,所述步骤s3中具体包括:s31.将tor流量的识别问题建模为机器学习中的二分类问题,根据步骤s2中提取的各类特征向量学习训练一个svm分类器;s32.用s31中训练得到的svm分类器实现隧道伪装后tor流量的自动化识别,可以从中识别出tor流量以及其余非tor流量。
14.有益效果:本发明与现有技术相比,其显著优点是:1.本发明构建了一套部署在docker容器中的自动化的tor流量采集工具,只需要修改外部配置文件就能抓取到各种隧道工具转发的tor流量,并且没有任何背景流量干扰。
15.2.本发明根据对隧道工具封装并转发tor流量的包长分布等规律的分析和探究,针对三种不同协议场景分别设计tor流量特征提取方法,具体包括使用udp协议的tor流量特征提取方法、仅在代理工具场景下使用tcp协议的tor流量特征提取方法和在代理工具加网桥场景下使用tcp协议的tor流量特征提取方法。
16.3.本发明使用自己设计的算法提取出流量的包长分布等特征后,再配合简单的机器学习算法,就能以超高的准确率和极低的假阳率识别出各种隧道工具下的tor流量,并且特征向量的维度非常小,相比于以往的tor流量识别工作来说更简单、高效,需要的计算和存储资源更少。
附图说明
17.图1是本发明面向隧道封装的tor流量识别的总体方案设计图。
18.图2是本发明在隧道工具下的tor流量自动抓取系统图。
19.图3是本发明建模openvpn转发tor流量的流程图。
20.图4是本发明建模应用层代理转发tor流量的流程图。
21.图5是本发明openvpn场景下的tor流量识别效果图。
22.图6是本发明仅在代理工具场景下的tor流量识别效果图。
23.图7是本发明在代理工具和网桥混淆场景下的tor流量识别效果图。
具体实施方式
24.本发明设计并实现面向隧道封装的tor流量识别技术,从真实网络流量中识别出tor流量,该技术包括三个部分,分别是通过隧道封装的tor流量自动化采集、tor流量的使用协议判断和特征提取、自动化识别tor流量,总体方案设计如图1所示。具体包括:1、通过隧道封装的tor流量自动化采集隧道工具下的tor流量自动化采集包括tor浏览器及代理的docker容器封装和利用流量抓取工具tcpdump抓取tor流量两个步骤。
25.tor浏览器及隧道工具的docker容器封装:由于在正常实验环境中抓取的网络流量会包含大量非tor流量,因此将tor浏览器和shadowsock、v2ray、trojan、openvpn、obfs4网桥这些隧道工具封装在docker容器中,通过docker容器在进程上实行网络空间层面的隔离以避免其他背景流量干扰;利用流量抓取工具tcpdump抓取tor流量:位于docker容器中的tor浏览器通过自搭建的shadowsock、v2ray、trojan、openvpn代理和vpn服务器同时结合tor网桥连入tor网络,架构图如图2所示,可以在容器外通过修改代理配置文件的方式选择转发tor流量的代理并可选择是否启用obfs4网桥,接着通过python脚本自动化访问alexa提供的top 100站点产生大量tor流量,tcpdump通过监听代理客户端与服务器之间的网络通信捕获这些流量。本发明在不同时段使用不同隧道工具的不同配置模式自动化采集大量流量,同时通过常规方式收集大量真实的背景流量。
26.2、tor流量的使用协议判断和特征提取首先识别tor流量使用的协议,针对识别出的不同协议场景选择对应的tor流量特征提取算法提取特征,tor流量特征提取算法包括:使用udp协议的tor流量特征提取算法、仅在代理工具场景下使用tcp协议的tor流量特征提取算法和在代理工具加网桥场景下使用tcp协议的tor流量特征提取算法。
27.使用udp协议的tor流量特征提取算法:openvpn客户端转发tor流量会使用udp协议,openvpn运行在网络协议栈的较低层级,它对于tor客户端来说是一个透明的虚拟网卡。openvpn客户端处理的tor流量并不是一段完整的tcp有效载荷,而是一系列的ip数据包。openvpn对这些ip数据包进行封装后,再交由tcp/ip协议栈处理,具体流程如图3所示。
28.这些ip数据包经过openvpn加密及封装后的udp有效负载应满足下述计算公式(1):
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其中,n是tor信元的数量,k是tls数据包的数量,h1是openvpn协议的头部长度再加上40字节长度的tcp和ip头部,m1是openvpn客户端与服务端链路之间的mss长度,m
1-h1为tor客户端到openvpn客户端之间虚拟网络链路的mss长度;对任意一个udp流中提取所有udp载荷统计包长可得该udp流单向udp有效载荷长度列表len_list。
29.使用udp协议的tor流量特征提取算法具体步骤如下:s211.提取udp有效载荷长度列表:openvpn客户端转发tor流量时将获取到的ip包加密和封装后生成的udp有效载荷长度应该满足公式(1)。对任意一个udp流中提取所有udp载荷统计包长可得该udp流单向udp有效载荷长度列表len_list;
s212.删除不利于提取特征的数据包:从步骤s211提取的len_list中删除包长最大为mss大小的包和包长最小为h1大小的包,使统计特征更加明显,删除这些包后生成新的len_list;s213.生成包长度频率映射关系:对s212中的len_list进行频率统计,以获得频率映射freq_map,映射中元素的键是包长度,值是其出现频率;s214.计算特定包长数量占比:由s213的包长度频率映射关系freq_map计算出满足公式(2)的包长数量占比;s215.生成特征向量:由s214中计算的包长数量占比和s3包长度频率映射关系构成特征向量并返回;具体算法流程如下:程如下:程如下:程如下:程如下:程如下:程如下:
仅在代理工具场景下使用tcp协议的tor流量特征提取算法:应用层代理转发tor流量时会使用tcp协议,对自身与tor客户端tcp连接中的数据包进行处理。shadowsocks、v2ray、trojan这三个应用层代理的实现机制类似,使用这类代理来转发tor流量都可以描绘成图4所示的流程。代理的客户端会从自己与tor客户端的tcp连接中取出一段完整的、包含若干tls record(经过tls层加密的tor基本通信单元)的数据,之后再使用自己的协议对这段数据进行加密和封装,产生字节长度的tcp有效负载,其中h2为代理协议的头部及填充长度,与代理的种类、加密算法以及配置模式有关;n是tor信元的数量,k是tls数据包的数量。最后代理客户端会将这段tcp有效负载交由tcp/ip协议栈发送到代理的服务端。
30.经过上述理论分析可以推断出,通过代理转发的tor流量所产生的tcp有效负载长度理应满足如下计算公式(2),其中,h2为代理协议的头部及填充长度,与代理的种类及加密算法有关;m2是代理客户端与代理服务器之间链路的mss的大小;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)仅在代理工具场景下的tor流量特征提取算法具体步骤如下:s221.提取tcp有效载荷长度列表:应用层代理转发tor流量时会对自身与tor客户端的tcp连接中的数据包进行处理,对任意一个tcp连接中的所有tcp载荷统计包长可得该tcp连接的单向tcp有效载荷长度列表len_list;s222.生成包长度频率映射关系:对步骤s221中的len_list进行频率统计,以获得频率映射freq_map,映射中元素的键是包长度,值是其出现频率;s223.计算特定包长数量占比:通过代理转发的tor流量所产生的tcp有效负载长度理应满足公式(2),因此由步骤s222的包长度频率映射关系freq_map计算出满足公式(2)的包长数量占比;s224.生成特征向量:由步骤s223中计算的包长数量占比和步骤s222包长度频率映射关系构成特征向量并返回。
31.具体算法流程如下:
在代理工具加网桥场景下使用tcp协议的tor流量特征提取算法:tor浏览器在使用代理工具转发流量的同时还可以开启网桥插件来混淆流量,此时产生的流量其长度分布与只使用代理工具时有区别,并且频繁长度不满足上面的特殊包长度计算公式(1)或(2),因此要考虑通过其他特征来识别代理工具加网桥的混淆tor流量。启用obfs4网桥插件后,tor浏览器产生的流量被网桥插件修改并封装,之后通过代理工具选择最合适的网桥节点建立tcp连接后并发送封装后的数据,此时tor浏览器行为会表现为短时间内向同一个ip的
同一个端口发起多个连接,所以算法的核心是统计一段时间窗口内一群连接的状态信息,从中获取到特征。代理工具加网桥场景转发tor流程如图4所示,和仅用代理工具转发tor流量相同。
32.在代理工具加网桥场景下的tor流量特征提取算法具体步骤如下:从一段时间窗口内一群tcp连接的状态信息中提取代理加网桥混淆的tor流量特征,这些特征包括:香农熵、相关tcp连接之间平均间隔、一条连接中数据包平均时间间隔、一条连接中非零数据包比例、一条连接中数据包数量与所有相关连接中总数据包的比值、相关连接的加权平均包长、一条连接中数据包长度平均值。
33.计算香农熵:计算tor浏览器所处主机在一段时间窗口内,到目的地(ip地址和端口号)集合的香农熵,公式如下:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)其中,为所求香农熵,表示在这一段时间窗口内,该主机向第个目的地建立连接数占总对外连接数的比例,在使用代理工具连接网桥时基本只和代理通信,熵值等于0。
34.计算相关tcp连接之间平均间隔:定义tor浏览器所处主机在一段时间窗口内和相同ip地址的相同端口建立的多条tcp连接为相关连接,将tcp握手时发出syn消息的时间戳记为这条连接的开始时间,任意两条相关连接开始时间之差(正值)为这两条连接之间的时间间隔,由此计算出相关tcp连接之间平均间隔;计算一条连接中数据包平均时间间隔:根据一条tcp连接中所有数据包之间的时间间隔的求得平均值;计算一条连接中非零数据包比例:首先统计一条tcp连接中非零数据包的个数再将其除以连接中总数据包个数求出其比例;计算一条连接中数据包数量与所有相关连接中总数据包的比值:首先统计一条tcp连接中数据包个数,再统计所有相关连接中总数据包个数,由此可以计算出比值;计算相关连接的加权平均包长:计算除本条tcp连接外所有相关连接的加权平均数据包长度,每条tcp连接的权重为该连接数据包数量与所有相关连接总数据包数量的比值;计算一条连接中数据包长度平均值:由这条tcp连接中所有数据包的“length”字段值累加后再除以总数据包个数可得。
35.具体算法流程如下:
3、自动化识别tor流量自动化识别tor流量方案将根据2中提取的各类tor流量特征构建机器学习分类器,通过在1中采集的流量数据集上训练和分类,使得构建的分类器可以从真实网络流量中自动化识别tor流量,具体步骤如下:s31.将tor流量的识别问题建模为机器学习中的二分类问题,根据2中提取的各类特征向量学习训练一个svm分类器;s32.用s31中训练得到的svm分类器实现隧道伪装后tor流量的自动化识别,可以从中识别出tor流量以及其余非tor流量。
36.为了评估本发明的性能,本发明先使用自己构建的流量采集系统在真实环境下采集了30000条连接、超过10gb的通过隧道工具转发并封装的tor流量以及通过校园网交换机上的镜像端口总共收集到了约50gb的真实背景流量。之后,本发明构建了简单的svm分类器,对得到的数据集进行训练和分类,训练集和测试集的比例为1:10。图5展示了openvpn下的tor流量分类结果,在使用udp协议的场景下,使用50个有效上行数据包即可使f1分数达到99.7%并且假阳率低至0.3%。图6展示了仅在应用层代理场景下的tor流量分类结果,实验结果表明在仅使用50个有效上行数据包的情况下,f1 分数就能达到98%。随着使用的数据包增多,识别效果还有明显的提升,在使用200个数据包的情况下f1分数就能超过99%并且假阳率只有0.2%。图7展示了在应用层代理工具和网桥混淆场景下的tor流量分类结果,在使用50个有效上行数据包的情况下,f1分数能达到99%,当使用150个数据包时,f1分数将超过99.5%且此时假阳率低于0.5%。以上三个实验结果表明本发明设计的特征提取算法配合简单的机器学习算法,就能以超高的准确率和极低的假阳率识别出各种流量审查规避工具下的tor流量。
37.最后应当说明的是:以上实施例仅用于说明本技术的技术方案而非对其保护范围的限制,尽管参照上述实施例对本技术进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本技术后依然可对申请的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在申请待批的权利要求保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1