发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种识别SSR流量的方法、系统以及计算机可读存储介质。
本发明解决其技术问题所采用的技术方案是:构造一种识别SSR流量的方法,所述方法包括:
搭建所有配置的SSR服务,通过抓包工具抓取不同配置的SSR流量,以及采集普通流量;
计算抓取到的不同配置的SSR流量与普通流量的带有负载的数据包的信息熵,并将计算出的信息熵作为样本数据输入决策树模型进行二分类训练以提取出流量识别规则,将提取出的流量识别规则作为判定规则用于后续的流量识别操作;
将未知流量作为识别对象,执行流量识别操作;
其中,流量识别操作包括:计算识别对象的带有负载的数据包的信息熵,依次匹配判定规则,命中则疑似度增加,否则疑似度减小,当疑似度等于阈值时,则判定识别对象为SSR流量。
优选地,所述方法还包括,在提取出流量识别规则之后、将未知流量作为识别对象执行流量识别操作之前,通过以下操作对流量识别规则进行优化:将相似度较高的流量识别规则进行去重、合并,并统一采取大于/小于某一熵值为标准,生成最终的判定规则。
优选地,所述方法还包括,在提取出流量识别规则之后、将未知流量作为识别对象执行流量识别操作之前,通过以下操作对阈值进行优化:
不断的调整阈值,针对每一个阈值:将SSR流量与普通流量混合作为识别对象,执行流量识别操作,根据流量识别操作的结果,分析识别的准确率;
当阈值调整到某数值时识别的准确率保持稳定,则不再调整阈值,将该某数值作为最佳的阈值用于后续的流量识别操作。
优选地,所述的带有负载的数据包的信息熵,通过如下方式计算得到:将流量以TCP流为单位进行拆分,保留具备完整的三次握手的单流,计算每条单流的前四个带有负载的数据包的信息熵。
本发明另一方面还构造了一种识别SSR流量的系统,所述系统包括:
流量采集模块:用于搭建所有配置的SSR服务,通过抓包工具抓取不同配置的SSR流量,以及采集普通流量;
规则提取模块,用于计算抓取到的不同配置的SSR流量与普通流量的带有负载的数据包的信息熵,并将计算出的信息熵作为样本数据输入决策树模型进行二分类训练以提取出流量识别规则,将提取出的流量识别规则作为判定规则用于后续的流量识别操作;
未知流量识别模块,用于将未知流量作为识别对象,执行流量识别操作;
其中,流量识别操作包括:计算识别对象的带有负载的数据包的信息熵,依次匹配判定规则,命中则疑似度增加,否则疑似度减小,当疑似度等于阈值时,则判定识别对象为SSR流量。
优选地,所述规则提取模块还用于在提取出流量识别规则之后,通过以下操作对流量识别规则进行优化:将相似度较高的流量识别规则进行去重、合并,并统一采取大于/小于某一熵值为标准,生成最终的判定规则。
优选地,所述系统还包括阈值优化模块,用于不断的调整阈值,针对每一个阈值:将SSR流量与普通流量混合作为识别对象,执行所述识别操作,根据所述识别操作的结果,分析识别的准确率;以及当阈值调整到某数值时识别的准确率保持稳定,则不再调整阈值,将该某数值作为最佳的阈值用于后续的识别操作。
优选地,所述的带有负载的数据包的信息熵,通过如下方式计算得到:将流量以TCP流为单位进行拆分,保留具备完整的三次握手的单流,计算每条单流的前四个带有负载的数据包的信息熵。
本发明另一方面还构造了一种识别SSR流量的系统,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如前任一项所述的方法的步骤。
本发明另一方面还构造了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如权前任一项所述的方法的步骤。
本发明的识别SSR流量的方法、系统以及计算机可读存储介质,具有以下有益效果:本发明针对SSR流量本身特性,通过其带有负载的数据包的信息熵的分布提取规则,采用多规则匹配生成疑似度,将疑似度与阈值比较判定SSR服务,本发明输入对象是连续流量或者多个流量,由于输入的多样性,在现网中有效提高了准确率,适用于各种组合配置的SSR服务识别。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
本发明总的思路是:首先,搭建所有配置的SSR服务,通过抓包工具抓取不同配置的SSR流量,以及从现网环境中采集普通流量,计算抓取到的不同配置的SSR流量与普通流量的带有负载的数据包的信息熵,并将计算出的信息熵作为样本数据输入决策树模型进行二分类训练以提取出流量识别规则,将提取出的流量识别规则作为判定规则用于后续的流量识别操作;其次,在得到判定规则后,结合预先设置的阈值,将未知流量作为识别对象,执行流量识别操作,流量识别操作包括:计算识别对象的带有负载的数据包的信息熵,依次匹配判定规则,命中则疑似度增加,否则疑似度减小,当疑似度等于阈值时,则判定识别对象为SSR流量。如此,输入对象是连续流量或者多个流量,由于输入的多样性,在现网中有效提高了准确率,适用于各种组合配置的SSR服务识别。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
实施例一
参考图1,本发明的识别SSR流量的方法包括:
S101)搭建所有配置的SSR服务,通过抓包工具抓取不同配置的SSR流量,以及从现网环境中采集普通流量;
其中,从现网环境中采集的普通流量是指的不包括SSR数据的流量。本步骤中,所有SSR流量中每种配置流量大于100MB,包含的单流数量大于1000条,现网普通流量需大于10GB。
S102)计算抓取到的不同配置的SSR流量与普通流量的带有负载的数据包的信息熵;
优选的,带有负载的数据包的信息熵是通过如下方式计算得到:
1)将流量以TCP流为单位进行拆分,保留具备完整的三次握手的单流,具体来说,以TCP流为单位进行拆分是指双方TCP链接的发起到结束作为一个流,根据TCP的标志位进行筛选,去掉没有完整握手的单流;
2)计算每条单流的前M个(M为正整数,建议M取4)带有负载的数据包的信息熵。
S103)将计算出的信息熵作为样本数据输入决策树模型进行二分类训练以提取出流量识别规则,将提取出的流量识别规则作为判定规则用于后续的流量识别操作;
优选地,参考图2,所述方法还包括,步骤S102中,在提取出流量识别规则之后,还通过以下操作对流量识别规则进行优化:将相似度较高的流量识别规则进行去重、合并,并统一采取大于/小于某一熵值为标准,生成最终的判定规则。
比如说,两个流量识别规则的基准值的差值波动较小(比如差值比例小于10%)则可以认为相似度较高。比如说有两个规则:规则1是第一个包的信息熵大于4.0,第三个包的信息熵大于5.0;规则2是第一个包的信息熵大于3.8,第三个包的信息熵大于4.8,则该两个规则中第一个包的信息熵的基准值的差值比例是(4-3.8)/4<10%,第二个包的信息熵的基准值的差值比例是(5-4.8)/5<10%,因此可以认为这两个规则是高度相似的,可以进行去重。
在具体实施例中,为了方便决策树规则提取,决策树模型深度设置为4层。由于是二分类模型,规则中有正、反判定规则,这里只需要提取正向判定规则(也即统一采取大于某一熵值为标准),因此可以减少数据的处理量,提高识别的效率。比如说,假设初步提取出来的流量识别规则有:第一个信息熵大于3,第一个信息熵小于5,第二个信息熵大于2,第二个信息熵小于8……,则可以将其中“小于”的规则去除,即去除第一个信息熵小于5,第二个信息熵小于8之类的规则,仅保留“大于”的规则。
其中,关于决策树的生成,可以采用ID3算法、C4.5生成算法、CART算法等。比如说,假设有N个样本数据,每个样本数据包含的信息熵有M个,分别记为Xi,1≤i≤M。以CART算法为例,CART是一棵二叉树,采用二元切分法,每次把数据切成两份,分别进入左子树、右子树。而且每个非叶子节点都有两个孩子,所以CART的叶子节点比非叶子多1。CART分类时,使用基尼指数(Gini)来选择最好的数据分割的特征,Gini描述的是纯度。CART中每一次迭代都会降低GINI系数。基尼系数的计算公式如下:
下面以一个例子说明。
表1
如上表1,假设有5个样本,流量标签取1表示是SSR流量,0表示不是SSR流量。下面首先确认根节点。
根节点的基尼系数是1-(2/5)2-(3/5)2=0.48。对于第一个包的信息熵,五个样本提供了五个取值:2.6、3.2、3.5、3.6、3.8,我们以相邻两个熵值的平均值(2.9、3.35、3.55、3.7)为分割点计算基尼系数增益如下:
Δ(2.9)=0.48-1/5*0-4/5*(1-(2/4)2-(2/4)2))=0.08;
Δ(3.35)=0.48-2/5*0-3/5*(1-(2/3)2-(1/3)2)=0.21;
Δ(3.55)=0.48-3/5*(1-(2/3)2-(1/3)2)-2/5*(1-(1/2)2-(1/2)2)=0.01;
Δ(3.7)=0.48-1/5*0-4/5*(1-(2/4)2-(2/4)2))=0.08;
同理,对于第二个包的信息熵,五个样本提供了五个取值:2、3.2、4.1、4.9、5.4,我们以相邻两个熵值的平均值(2.6、3.65、4.5、5.15)为分割点计算基尼系数增益如下:
Δ(2.6)=0.48-1/5*0-4/5*(1-(2/4)2-(2/4)2))=0.08;
Δ(3.65)=0.48-3/5*(1-(2/3)2-(1/3)2)-2/5*(1-(1/2)2-(1/2)2)=0.01;
Δ(4.5)=0.48-3/5*(1-(2/3)2-(1/3)2)-2/5*(1-(1/2)2-(1/2)2)=0.01;
Δ(5.15)=0.48-1/3*0-2/3*(1-(1/2)2-(1/2)2))=0.08;
同理,计算第三个、第四个包的信息熵的基尼系数增益,此处不再赘述,最终计算发现最大的是基尼系数增益是第一个包的信息熵对应的Δ(3.35)=0.21,因此可以确定根节点的判断逻辑是第一个包的信息熵大于3.35,根节点的基尼系数修正是1-(1/3)2-(2/3)2=0.44。在确定根节点之后,计算其它包的信息熵的基尼系数,在上述五个样本中,满足根节点下的为真的叶子节点(即满足第一个包的信息熵大于3.35)的样本是3、4、5号样本,他们的第二个包的信息熵是2、3.2、4.9,相同的方法,我们以相邻两个熵值的平均值(2.6、4.05)为分割点计算基尼系数增益如下:
Δ(2.6)=0.44-1/3*0-2/3*0=0.44;
Δ(4.05)0.44-1/3*0-2/3*(1-(1/2)2-(1/2)2)=0.11;
同理,计算第三个包、第四个包的信息熵的基尼系数增益,最终发现基尼系数增益最大的是第二个包的信息熵对应的Δ(2.6),因此根节点下的为真的叶子节点的判断逻辑是第二个包的信息熵大于2.6。其他节点的确定过程以此类推,此处不再赘述,最终会形成一个二叉树,二叉树的所有节点的判断逻辑共同组成一个流量识别规则。通过将样本批量输入模型进行训练,最终找到的流量识别规则也比较多,因此可以将相似度较高的流量识别规则进行去重、合并。
S104)将未知流量作为识别对象,执行流量识别操作。
其中,流量识别操作包括:计算识别对象的带有负载的数据包的信息熵,依次匹配判定规则,命中则疑似度增加,否则疑似度减小,当疑似度等于阈值时,则判定识别对象为SSR流量。
比如,参考图2,以ip、port为键,计算TCP握手后前4个有效载荷包的信息熵,依次匹配各个判定规则,命中一个判定规则疑似度加1,否则疑似度减1,当疑似度等于阈值时,则结束匹配,判定该ip、port为SSR服务;当疑似度小于阈值,则持续匹配,直至ip、port下的所有单流匹配结束。
以上的阈值需要预先设置,优选地,所述方法还包括,在提取出流量识别规则之后、将未知流量作为识别对象执行流量识别操作之前,即在步骤S103与S104之间,通过以下操作对阈值进行优化:不断的调整阈值,针对每一个阈值:将SSR流量与普通流量混合作为识别对象(可以将步骤S101采集的流量分成两部分,一部分用于步骤S102、S103训练决策树模型,一部分用于此处调整阈值),执行流量识别操作,根据流量识别操作的结果,分析识别的准确率;当阈值调整到某数值时识别的准确率保持稳定,则不再调整阈值,将该某数值作为最佳的阈值用于后续的流量识别操作。
其中,准确率保持稳定,是指的准确率不再提高或者提高不显著的最小阈值。比如,设定一个阈值的初始值,在调整阈值时每次增大1,可以计算不同的阈值时对应的准确率,以阈值为横坐标,准确率为纵坐标,则最终的整体趋势接近对数曲线,则找到该曲线上斜率小于预设值的坐标点中横坐标最小的那个坐标点,该坐标点的横纵标即代表最佳的阈值,此可以通过对曲线求导计算得到。
本实施例中,基于SSR流量的本身特性,不同配置的加密混淆具有层级关系,其报文前几个数据包的随机性、均匀性是具备一定规律的,而信息熵是反应能量分布均匀程度的测度,因此基于熵的识别原理是可行的,由于训练样本覆盖全面,本发明相比现有技术可涵盖所有配置的SSR流量,同时采用输入样本的多样性,通过疑似度的权重计算进行判定,在现网环境中识别效果较好。
实施例二
基于同一发明构思,本实施例公开了一种识别SSR流量的系统,系统包括:
流量采集模块:用于搭建所有配置的SSR服务,通过抓包工具抓取不同配置的SSR流量,以及从现网环境中采集普通流量;
规则提取模块,用于计算抓取到的不同配置的SSR流量与普通流量的带有负载的数据包的信息熵,并将计算出的信息熵作为样本数据输入决策树模型进行二分类训练以提取出流量识别规则,将提取出的流量识别规则作为判定规则用于后续的流量识别操作;
未知流量识别模块,用于将未知流量作为识别对象,执行流量识别操作。
其中,流量识别操作包括:计算识别对象的带有负载的数据包的信息熵,依次匹配判定规则,命中则疑似度增加,否则疑似度减小,当疑似度等于阈值时,则判定识别对象为SSR流量。
优选地,所述规则提取模块还用于在提取出流量识别规则之后,通过以下操作对流量识别规则进行优化:将相似度较高的流量识别规则进行去重、合并,并统一采取大于/小于某一熵值为标准,生成最终的判定规则。
优选地,所述系统还包括阈值优化模块,用于不断的调整阈值,针对每一个阈值:将SSR流量与普通流量混合作为识别对象,执行所述识别操作,根据所述识别操作的结果,分析识别的准确率;以及当阈值调整到某数值时识别的准确率保持稳定,则不再调整阈值,将该某数值作为最佳的阈值用于后续的识别操作。
其中,所述的带有负载的数据包的信息熵,通过如下方式计算得到:将流量以TCP流为单位进行拆分,保留具备完整的三次握手的单流,计算每条单流的前四个带有负载的数据包的信息熵。
本发明实施例所述装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
上述描述涉及各种模块。这些模块通常包括硬件和/或硬件与软件的组合(例如固化软件)。这些模块还可以包括包含指令(例如,软件指令)的计算机可读介质(例如,永久性介质),当处理器执行这些指令时,就可以执行本发明的各种功能性特点。相应地,除非明确要求,本发明的范围不受实施例中明确提到的模块中的特定硬件和/或软件特性的限制。作为非限制性例子,本发明在实施例中可以由一种或多种处理器执行软件指令。需要指出的是,上文对各种模块的描述中,分割成这些模块,是为了说明清楚。然而,在实际实施中,各种模块的界限可以是模糊的。例如,本文中的任意或所有功能性模块可以共享各种硬件和/或软件元件。又例如,本文中的任何和/或所有功能模块可以由共有的处理器执行软件指令来全部或部分实施。另外,由一个或多个处理器执行的各种软件子模块可以在各种软件模块间共享。相应地,除非明确要求,本发明的范围不受各种硬件和/或软件元件间强制性界限的限制。
实施例三
基于同一发明构思,本实施例公开了一种识别SSR流量的系统,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一所述的方法的步骤,具体实现过程可参阅上述方法实施例的描述,此处不再赘述。
实施例四
基于同一发明构思,本实施例公开了一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一所述的方法的步骤,具体实现过程可参阅上述方法实施例的描述,此处不再赘述。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。