一种基于特征片段自发现的可疑隧道检测方法与系统与流程

文档序号:16973195发布日期:2019-02-26 18:44阅读:169来源:国知局
一种基于特征片段自发现的可疑隧道检测方法与系统与流程

本发明涉及网络安全领域,尤其涉及一种基于特征片段自发现的可疑隧道检测方法与系统。



背景技术:

通信行为的隐藏与检测是在网络安全领域中的永恒话题之一,攻击方往往千方百计把传送的命令与数据隐藏起来,使其通信行为与正常通信行为没有明显区别,而安全产品则力图通过统计特征、指纹特征,圈定可疑通信行为,并加以告警或阻断。

隧道泛指以一个特定协议承载数据实现传输的技术手段,如二层隧道协议PPTP(点对点隧道协议)、L2TP(第二层隧道协议),三层隧道协议IPIP(互联网协议)与IPSec(互联网协议安全)等,它们将载荷数据作为自身的数据帧,以自身的协议为基础利用互联网络设施在网络之间传递载荷数据。

但在本文中讨论的是一种特殊的隧道,它们由黑客搭建用以控制目标主机(肉鸡),窃取数据,建立后门,为了达到隐藏通信行为的目的,这种隧道往往采用http、dns、icmp等常见的通信协议来传输命令与数据,一方面这些协议本身非常常见,使用频度极高,这就使得安全产品难以从大量的通信行为中分离出隧道行为,另一方面,在很多业务或家庭网络环境下这些协议往往是必须的,网络管理员一般不得不将相应的端口开放,这使得这项技术具有很高的普遍适用性,相关的软件如httptunnel、pingtunnel与dnstunnel等,是网络黑客使用频率极高的工具,下文将这种用于恶意目的的隧道技术称为可疑隧道。

由于恶意利用隧道的实现机理并不复杂,且使用简单,目前用于建立可疑隧道的现成工具已有数十种,鉴于其应用的普遍性和危害性,可疑隧道的检测具有非常重要的现实意义。然而可疑隧道的检测却不是一个容易解决的问题,这是因为从协议标准的角度看,可疑隧道的构建工具往往严格依照宿主协议的标准,因此从协议的执行来看,它们是非常合法地在应用宿主协议,进而检测只有两个入手点,其一是载荷内容,这是以载荷未加密为前提的,假设一个可疑隧道构建工具伪装过程中有注入特定内容的习惯,则其经常注入的特定内容即可成为特征指纹,如httptunnel的GET请求具有特定格式“GET/index.html?crap=xxxxxxxxx HTTP/1.1”,另一个入手点是通信行为,比如单包传输数据量较正常包明显更大,单方向传输数据包数量明显更多等。

从目前已知的可疑隧道检测手段来看,一般采取两种思路,一方面从特征指纹入手构造检测规则,利用现有的误用检测手段,对可疑隧道进行检测,其具有高效执行的优点,但对每一种可疑隧道构建工具,专业人员需要投入大量精力单独分析,在对比大量数据后,才能够建立一条可用的指纹;另一方面,以通信行为为基础,构建统计特征,利用机器学习、统计建模等技术,建立异常检测模型,用以构建异常检测策略,这种方法学术界研究较多,其具有一定的发现未知可疑隧道的能力,投入的专业人员的精力也比较少,但其应用效果一般不会非常令人满意,这是因为统计特征的建立过程中,无法回避统计值被大数据淹没,一个通信特征往往只出现在时间上临近的几个包的范围内,如果控制不好统计的范围大小,其特征统计值很容易因周围大量无关数据的加入而被平均化,除此之外这类方法还有两项短板,其一是判别基线不好确定,其二自解释能力不强,一般其检测结果只能给出一个概率值,而不能给出易于理解的判别依据。



技术实现要素:

为了解决上述问题,本发明提出了一种基于特征片段自发现的可疑隧道检测方法与系统,能够同时具备了误用检测技术的自解释能力强和异常检测技术的可以发现未知可疑隧道的优点,避免了专业人员的大量精力,回避了统计特征被平均化的问题。

为了达到上述目的,本发明提出了一种基于特征片段自发现的可疑隧道检测方法,该方法包括:

S1、构建特定的可疑隧道,基于该可疑隧道建立对应于可疑隧道流量的多个可疑隧道样本。

S2、建立对应于正常的宿主协议流量的正常隧道样本。

S3、基于特征片段锁定算法从多个可疑隧道样本中锁定可疑隧道的特征片段集合,并找出正常隧道样本中与特征片段集合对应的最邻近片段集合。

S4、从实时通信流量中提取元数据片段。

S5、基于片段间最小距离搜索算法分别计算元数据片段与特征片段集合之间的最小距离,以及元数据片段和最邻近片段之间的最小距离,基于该最小距离和可疑隧道检测算法,计算可疑元数据片段的判定参数,当判定参数的结果小于零时,判定元数据片段为可疑片段并报警;当判定参数的结果大于或等于零时,判定元数据片段为非可疑片段。

优选地,正常隧道样本中与特征片段集合对应的最邻近片段集合是基于片段间最小距离搜索算法,将正常隧道样本中的每个片段与可疑隧道的特征片段集合进行比较得出的。

优选地,步骤S3包括:

31、配置片段宽度、单元权值、逆序惩罚量、特征片段起始点。

32、加载可疑隧道样本和正常隧道样本;以第一个可疑隧道样本中的第一个片段作为当前处理的片段。

33、判断当前处理的片段是否为第一个可疑隧道样本的最后一个片段,如果是,则退出特征片段锁定算法的锁定流程;如果不是,则以当前处理的片段作为假定特征片段,遍历除第一可疑隧道样本以外可疑隧道样本的片段,找到与假定特征片段距离最小的片段作为各个可疑隧道样本与该假定特征片段对应的假定特征片段,当前处理的片段与这些假定特征片段共同构成当前特征片段集合。

34、从正常隧道样本中寻找与当前特征片段集合距离均值最小的片段,作为各个正常隧道与该当前特征片段集合对应的当前最近邻片段,并计算当前特征片段集合的分值,该分值为当前特征片段集合中元素间最大距离,和当前特征片段与当前最近邻片段间最大距离的比值,并记录该分值与相应的特征片段集合及其最近邻片段集合。

35、判断第一个可疑隧道样本中是否有未处理片段,如果没有则进行步骤36;如果有则以所述第一个可疑隧道样本中下一个未处理片段作为当前处理的片段,返回步骤33。

36、选取分值最大的一组特征片段集合及其最近邻片段集合作为算法输出。

优选地,片段间最小距离搜索算法包括以下步骤:

41、初始化需要计算距离的宽度相同的两个片段。

42、形成所述两个片段的原始顺序对应关系,并以其作为当前对应关系;并计算原始顺序对应关系的片段间距离作为当前最小片段距离。

43、在所述片段间距离中找出最小片段距离,并根据该最小片段距离的对应关系,遍历所有潜在的交换操作。

44、对于新的交换操作,生成变换后的对应关系,计算新的对应关系的片段间距离,将新的片段间距离与上述的最小片段距离对比,当所述新的片段间距离小于上述的最小片段距离时,将所述新的片段间距离作为最小片段距离,并记录当前两个片段的对应关系,进行步骤45。

45、判断是否还有未处理的所述潜在的交换操作,如果没有,进行步骤46;如果有,则返回步骤43。

46、判断步骤43中是否获得新的对应关系,如果有,则以新的对应关系返回步骤43;如果没有,则退出片段间最小距离搜索算法流程。

优选地,潜在的交换操作是指:两个片段依原始的顺序一一对应,选择两片段中的任意一个,对其中的任意两个数据包行序号做交换,生成一个新的对应关系。

优选地,可疑隧道检测算法包括:

基于以下等式完成判定参数的计算:

其中,与,分别表示特征片段与最近邻片段;wg为待判定的元数据片段,sig(x)为取符号算子,当x≥0时sig(x)=1,否则sig(x)=-1;

为判定参数;

为基于片段间最小距离搜索算法,计算出的元数据片段与特征片段集合之间的距离中的最小值;

为基于片段间最小距离搜索算法,计算出的元数据片段与最邻近片段之间的距离中最小值的二分之一。

本发明还提出一种基于特征片段自发现的可疑隧道检测系统,该系统包括:可疑隧道样本建立模块、正常隧道样本建立模块、特征片段锁定算法模块、元数据片段提取模块、可疑片段检测模块、片段间最小距离搜索模块。

可疑隧道样本建立模块,用于构建特定的可疑隧道,基于可疑隧道建立对应于可疑隧道流量的多个可疑隧道样本。

正常隧道样本建立模块,用于建立对应于正常的宿主协议流量的正常隧道样本。

特征片段锁定算法模块,用于基于特征片段锁定算法从多个可疑隧道样本中锁定可疑隧道的特征片段集合;并找出正常隧道样本中与特征片段集合对应的最邻近片段集合。

元数据片段提取模块,用于从实时通信流量中提取元数据片段。

可疑片段检测模块,用于基于片段间最小距离搜索算法分别计算元数据片段与特征片段集合之间的最小距离,以及元数据片段和最邻近片段之间的最小距离,基于最小距离和可疑隧道检测算法,计算可疑元数据片段的判定参数,当判定参数的结果小于零时,判定元数据片段为可疑片段并报警;当判定参数的结果大于或等于零时,判定元数据片段为非可疑片段;

所述片段间最小距离搜索模块,用于对给定两个元数据片段,搜索两片段的最佳对应顺序,以获得两片段的局部最小距离。

优选地,特征片段锁定算法模块还用于通过下述步骤锁定可疑隧道的特征片段集合并找出最邻近片段集合:

81、配置片段宽度、单元权值、逆序惩罚量、特征片段起始点。

82、加载可疑隧道样本和正常隧道样本;以第一个可疑隧道中的第一个片段作为当前处理的片段。

83、判断当前处理的片段是否为第一个可疑隧道样本的最后一个片段,如果是,则退出特征片段锁定算法的锁定流程;如果不是,则以当前处理的片段作为假定特征片段,遍历除第一可疑隧道样本以外可疑隧道样本的片段,找到与假定特征片段距离最小的片段作为各个可疑隧道与之对应的假定特征片段,当前处理的片段与这些假定特征片段共同构成当前特征片段集合。

84、从正常隧道样本中寻找与当前特征片段集合距离均值最小的片段,作为各个正常隧道与该集合对应的当前最近邻片段,并计算当前特征片段集合的分值,该分值为当前特征片段集合中元素间最大距离,和当前特征片段与当前最近邻片段间最大距离的比值,并记录该分值与相应的特征片段集合及其最近邻片段集合。

85、判断第一个可疑隧道样本中是否有未处理片段,如果没有则进行步骤86;如果有则返回步骤83。

86、选取分值最大的一组特征片段集合及其最近邻片段集合作为算法输出。

9、如权利要求7或8所述的系统,其特征在于,所属系统还包括片段间最小距离搜索模块:用于通过下述片段间最小距离搜索算法找出最邻近片段:

91、初始化需要计算距离的宽度相同的两个片段。

92、形成所述两个片段的原始顺序对应关系,并以其作为当前对应关系;并计算原始顺序对应关系的片段间距离作为当前最小片段距离。

93、在所述片段间距离中找出最小片段距离,并根据该最小片段距离的对应关系,遍历所有潜在的交换操作。

94、对于新的交换操作,生成变换后的对应关系,计算新的对应关系的片段间距离,将新的片段间距离与上述的最小片段距离对比,当所述新的片段间距离小于上述的最小片段距离时,将所述新的片段间距离作为最小片段距离,并记录当前两个片段的对应关系,进行步骤95。

95、判断是否还有未处理的所述潜在的交换操作所述遍历是否完成,如果没有,则进行步骤96;如果有,则返回步骤93。

96、判断步骤93中是否获得新的对应关系,如果有,则以新的对应关系返回步骤93;如果没有,则退出最小距离搜索算法流程。

优选地,片段间最小距离搜索模块还用于,完成潜在的的交换操作:两个片段依原始的顺序一一对应,选择两片段中的任意一个,对其中的任意两个数据包行序号做交换,生成一个新的对应关系。

优选地,可疑片段检测模块还用于:

基于以下可疑隧道检测算法的检测等式完成判定参数的计算:

其中,与,分别表示特征片段与最近邻片段;wg为待判定的元数据片段,sig(x)为取符号算子,当x≥0时sig(x)=1,否则sig(x)=-1;

为判定参数。

为基于片段间最小距离搜索算法,计算出的元数据片段与特征片段集合之间的距离中的最小值。

为基于片段间最小距离搜索算法,计算出的元数据片段与最邻近片段之间的距离最小值的二分之一。

与现有技术相比,本发明包括:构建特定的可疑隧道,基于该可疑隧道建立对应于可疑隧道流量的多个可疑隧道样本;建立对应于正常的宿主协议流量的正常隧道样本;基于特征片段锁定算法从多个可疑隧道样本中锁定可疑隧道的特征片段集合并找出正常隧道样本中与特征片段集合对应的最邻近片段集合;从实时通信流量中提取元数据片段;基于片段间最小距离搜索算法分别计算元数据片段与特征片段集合之间的最小距离,以及元数据片段和最邻近片段之间的最小距离,基于该最小距离和可疑隧道检测算法,计算可疑元数据片段的判定参数,当判定参数的结果小于零时,判定元数据片段为可疑片段并报警;当判定参数的结果大于或等于零时,判定元数据片段为非可疑片段。通过本发明的方案,能够同时具备误用检测技术较强的自解释能力和异常检测技术的可以发现未知可疑隧道的优点,避免了专业人员大量精力的投入,回避了统计特征被平均化的问题。

附图说明

下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。

图1为本发明的基于特征片段自发现的可疑隧道检测方法流程图;

图2为本发明的基于特征片段自发现的可疑隧道检测方法示意图;

图3为本发明的特征片段锁定算法流程图;

图4为本发明的片段间最小距离搜索算法流程图;

图5为本发明的对应关系派生示意图;

图6为本发明的基于特征片段自发现的可疑隧道检测系统框图;

图7为本发明实施例的隧道元数据样本示意图;

图8为本发明实施例的正常隧道样本示意图;

图9为本发明实施例的特征片段样本示意图;

图10为本发明实施例的邻近片段样本示意图;

图11为本发明实施例的检测过程截图。

具体实施方式

为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。

为了使该问题得以更好的解决,本文提出一种基于特征片段自发现的可疑隧道检测技术,其假设对于一种特定的可疑隧道构建工具,其可能存在载荷或通信行为特征,并且这种特征只出现于传输流量中的一个局部,其工作思路正是围绕这一局部展开,首先建立两类样本集合,分别对应可疑隧道流量(由相应的可疑隧道构建工具产生),与正常的宿主协议流量,利用其中的特征片段锁定算法,锁定特征片段集合,以及与特征片段集合最为相近的、正常流量中存在的正常相似片段集合,利用上述两大集合构造出检测策略。本方法是一种介于误用检测与异常检测之间的方法,较以往方法,同时具备了误用检测技术自解释强(通过检测后给出相近的特征片段的方式),异常检测技术发现未知可疑隧道(通过距离的判别策略对程序的变形有一定的检测能力)的优点,同时避免了专业人员大量精力的投入,回避了统计特征被平均化的问题。

为了准确表述本文所述方法,这里首先对涉及的概念加以定义。本问题环境中涉及如下概念:

1、流量样本

一个流量(无论是否隧道工具产生)是由两个ip地址间发生的n个有序网络数据包组成的,因此可以定义为:

Flow=P1,P2,…,Pn

其中这两个ip中,发起连接的一个作为客户端,响应连接的一个作为服务器端,Pn为数据包。

2、元数据(Document)

元数据是从网络数据包中提取出的特征属性,在本方法中至少包括以下属性:

a)数据包大小(整数型)

b)网络层协议类型(类别型,通常为IP协议,由数据包固定偏移地址的数据确定)

c)传输层协议类型(类别型,通常为tcp、udp协议,由数据包固定偏移地址的数据确定)

d)应用层协议类型(类别型,由数据包载荷内容中关键词确定,如第一行第5个字节处出现”GET”可认为http协议)

e)载荷头部内容(文本型,只取前64字节)

f)传输方向(类别型,客户端发出的为上行方向,服务器发出的为下行流量)

3、元数据中的行(Line)

根据一个数据包可提取相应的一行元数据,即:

元数据的行,是一个数组,其由元数据中的特征属性(以下称为单元)组成,表示第i个数据包的、特征属性a的值。

4、元数据样本

一个流量样本经过特征提取处理后,即产生一个元数据样本(也是流的形式),其由连续的元数据行组成,后者与流量中的包一一对应

这里只是借鉴线性代数的方式表达元数据的形态,事实上,每个单元的数据类型并不一样,有些是有理数,有些是文本类型。

5、片段

片段指元数据样本中连续的一个部分

Window=[Lineb,Lineb+1,…,Linee],1≤b<e≤n

6、单元间的距离

行中的每个元素被称为单元,行间各个单元一一对应,对于不同类型的单元,可分别定义距离:

整数型——整数间绝对值;

类别型——类别相同为0,相异为1;

文本型——自起始位置起相等长度,除以两文本长度之中的最大值。

7、行间距离

通过为行中每个单元设置权值,可以定义行间的线性加权距离

weights=[wta,wtb,…,wtf,…]

其中distance(·,·)负责单元间距离的计算。

8、片段间距离

两个等宽度(宽度指包含行的数量)的片段间可定义距离,两个片段中的行不必须依原始顺序一一对应,允许片段重新排序之后,再以新顺序对齐(一一对应两片段中的行),因此对于具有宽度为N的两个片段,它们之间行与行的对应关系总体上存在N!×N!种可能,相应产生的距离可能有多个,这里“片段间距离”指两个重新排序后片段的距离。

允许片段重新排序,是因为数据包到达的先后顺序受网络设施影响,一般是不确定的,但数据包到达的顺序本身也体现了重要的行为特征,因此重新排序引起的逆序应该被惩罚,对于一个原始位置为s,新位置为t的行,其对距离引起的惩罚为

punishment(s,t)=|s-t|×order_penaltiy

其中order_penaltiy为“逆序惩罚量”,由使用者预设。

一个片段w的所有重新排列组成一个片段集合W。

基于上述定义,片段间距离可定义为

设w1、w2为两个等宽度片段,原行序号为1至N,即si=ti=i,1≤i≤N,重新排序后有w1’、w2’,原顺序变为S’=s1’,s2’,s3’,…sN’与T’=t1’,t2’,t3’,…tN’,此时w1’、w2’间的距离定义为:

即片段的距离由两部分构成,重新排序后的行间距离,与逆序引起的惩罚量。

当取到合适的S’=s1’,s2’,s3’,…sN’与T’=t1’,t2’,t3’,…tN’时,windowdistance(w1’,w2’)将达到最小值,称该值为“片段最小距离”,但其计算是NP难问题,本方法以下所述方法,以局部最小距离替代之。在本方法中,只有片段局部最小距离具有应用意义,因此下文中“片段间距离”皆特指片段间的局部最小距离。

片段局部最小距离定义为:

window_local_min_distance(w1,w2)=windowdistance(w′1,w′2)

s.t.S′=s′1,s′2,…,s′N,T′=t′1,t′2…,t′

其中S’=s1’,s2’,s3’,...sN’、T’=t1’,t2’,t3’,...tN’是由所述“片段间最小距离搜索算法”所确定的一组行序号,w1o与w2o分别为w1与w2的原始顺序片段。

9、特征片段

特征片段的物理意义是,隧道工具产生的元数据样本中所存在,且其他(正常)元数据样本中所没有的片段,一组特征片段的性质是,特征片段之间的距离很小,且与其他元数据样本中的任一片段的距离都较大,参见图2。

经所述特征片段组锁定算法,每个隧道元数据样本产生一个特征片段,组成特征片段集合。设有F个隧道元数据样本,G个正常隧道样本,TD1,2…,F、ND1,2…,G为相应的样本,每个样本存在多个片段,那么已知片段宽度,对于一个样本,片段的起始行序号可唯一确定一个片段,在TD1,2…,F中每个样本中取一个片段,分别产生隧道片段集合1≤k≤F,其中上标TDk表示该片段属于第k个隧道样本,下标表示该片段起始于该隧道样本的第pk行,则存在一组参数使得以下评价分数达到最小。

其中为在正常样本中的特征片段的邻近片段,它们由确定,其定义于10。

当[p1,p2,…,pF]被算法确定为时,隧道片段集合即为特征片段集合。

10、特征片段的近邻片段

每个正常隧道样本中存在一个片段,其较该样本的其他片段,可获得与特征片段集合中元素距离均值的最小值,即

其中pk∈[p1,p2,…,pF]是当前确定的特征片段的起始行序号,通过上式可以确定ql,即G为正常样本个数,即为所求的与特征片段集合相对应的近邻片段集合。

本发明涉及参数:

逆序惩罚量;

单元权值;

片段宽度;

特征片段之起始点;

特征片段的近邻片段之起始点。

一旦确定以上参数,本方法就完成了建模过程,因此本方法的建模过程实际上是一个最优化过程,原则上,以上参数均可采用最优化算法来确定,但考虑到计算复杂度,实际应用中,逆序惩罚量、单元权值、片段宽度由领域专家指定更加合适,本方法只用于确定特征片段之起始点与特征片段的最近邻片段之起始点。

具体地,本发明提出一种基于特征片段自发现的可疑隧道检测方法,如图1、图2所示,该方法包括:

S101,构建特定的可疑隧道,基于可疑隧道建立对应于可疑隧道流量的多个可疑隧道样本。

S102,建立对应于正常的宿主协议流量的正常隧道样本。

S103,基于特征片段锁定算法从多个可疑隧道样本中锁定可疑隧道的特征片段集合及其对应的最近邻片段集合。

优选地,特征片段锁定算法包括以下步骤,如图3所示:

31、配置片段宽度、单元权值、逆序惩罚量、特征片段起始点。

32、加载可疑隧道样本和正常隧道样本;以第一个可疑隧道中的第一个片段作为当前处理的片段。

33、判断所述当前处理的片段是否为第一个可疑隧道样本的最后一个片段,如果是,则退出所述特征片段锁定算法的锁定流程;如果不是,则以当前处理的片段作为假定特征片段,遍历除第一可疑隧道样本以外可疑隧道样本的片段,找到与所述假定特征片段距离最小的片段作为各个可疑隧道样本与该假定特征片段对应的假定特征片段,当前处理的片段与这些假定特征片段共同构成当前特征片段集合。

34、从正常隧道样本中寻找与当前特征片段集合距离均值最小的片段,作为各个正常隧道与该当前特征片段集合对应的当前最近邻片段,并计算当前特征片段集合的分值,该分值为当前特征片段集合中元素间最大距离,和当前特征片段与当前最近邻片段间最大距离的比值,并记录该分值与相应的特征片段集合及其最近邻片段集合。

35、判断第一个可疑隧道样本中是否有未处理片段,如果没有则进行步骤36;如果有则以所述第一个可疑隧道样本中下一个未处理片段作为当前处理的片段,返回步骤33。

36、选取分值最大的一组特征片段集合及其最近邻片段集合作为算法输出。

该算法由内外两层循环完成,外层循环遍历第一个隧道样本,假定其中的每个片段是一个特征片段,内层循环参照这个被假定的特征片段,在每个隧道样本中寻找与其距离最小的片段作为假定特征片段,形成一个假定的特征片段集合,最后求出这个特征片段结合的最近邻片段,并给出这组片段的评价分数值。两层遍历过程中,记录下最小分值,以及与其对应的特征片段及其最近邻片段。

这里简单说明最近邻片段的定位算法,在确定一组特征片段后,遍历一个正常样本的每个片段,计算该片段与特征片段组的距离平均值,取最小的距离平均值对应的片段,作为该正常样本的最近邻片段。下面会对最邻近片段做详细描述。

优选地,片段间最小距离搜索算法包括以下步骤,如图4所示:

41、初始化需要计算距离的宽度相同的两个片段。

42、形成所述两个片段的原始顺序对应关系,并以其作为当前对应关系;并计算原始顺序对应关系的片段间距离作为当前最小片段距离。

43、在所述片段间距离中找出最小片段距离,并根据该最小片段距离的对应关系,遍历所有潜在的交换操作。

44、对于新的交换操作,生成变换后的对应关系,计算新的对应关系的片段间距离,将新的片段间距离与上述的最小片段距离对比,当所述新的片段间距离小于上述的最小片段距离时,将所述新的片段间距离作为最小片段距离,并记录当前两个片段的对应关系,进行步骤45。

45、判断是否还有未处理的所述潜在的交换操作所述遍历是否完成,如果没有,则进行步骤46;如果有,则返回步骤43。

46、判断步骤43中是否获得新的对应关系,如果有,则以新的对应关系返回步骤43;如果没有,则退出片段间最小距离搜索算法流程。

优选地,潜在的交换操作是指:两个片段依原始的顺序一一对应,选择两片段中的任意一个,对其中的任意两个数据包行序号做交换,生成一个新的对应关系。

片段间最小距离是一个搜索问题,即从一起点向周围点进行探索,取周围最小值点作为新的起点,迭代前进,直到不存在比已知点更小值的点,算法终止。这一算法假设起始点本身的值已经很小,并接近全局最小的位置(该算法不能保证求到全局最小)。

就本算法而言,起始点为两片段的原始对应关系,如图5所示,即两个片段依原始的顺序一一对应,对其进行一次变换操作,可生成一个新的对应关系(即搜索中与起始点邻近的一个点,由于只做了一次变换,可以抽象地认为只前进了一步),这里的一次变换只是选择两片段中的任意一个,并对其中的任意两个数据包行序号做交换。

之后迭代地,以当前最小值所对应的对应关系为中心,探测周围是否存在更小的片段距离,若有则前进至该点(相应的对应关系),否则结束算法。

S104,从实时通信流量中提取元数据片段。

从实时通信流量中提取元数据流,即连续的元数据行,从元数据行中截取元数据片段。

S105,基于片段间最小距离搜索算法分别计算元数据片段与特征片段集合之间的最小距离,以及元数据片段和最邻近片段之间的最小距离,基于最小距离和可疑隧道检测算法,计算可疑元数据片段的判定参数,当判定参数的结果小于零时,判定元数据片段为可疑片段并报警;当判定参数的结果大于或等于零时,判定元数据片段为非可疑片段。

在前面描述的算法及流程中解决了学习过程中的主要问题,在学习过程之后,来自隧道元数据样本的特征片段,以及与此对应的来自正常隧道样本的最邻近片段已经被产生出来,基于这两组片段,可以依下述的可疑隧道检测算法对提取的元数据片段进行判断。

可疑隧道检测算法实际上只是简单地计算流入系统的元数据片段,与特征片段及其邻近片段之间的距离,并利用这些距离建立判别边界。

优选地,可疑隧道检测算法包括:

基于以下等式完成判定参数的计算:

其中,与,分别表示特征片段与最近邻片段;wg为待判定的元数据片段,sig(x)为取符号算子,当x≥0时sig(x)=1,否则sig(x)=-1;

为判定参数。

为基于片段间最小距离搜索算法,计算出的元数据片段与特征片段集合之间的距离中的最小值。

为基于片段间最小距离搜索算法,计算出的元数据片段与最邻近片段之间的距离中最小值二分之一。

报警时可提供与wg距离最近的作为参考,使使用者不仅知道判定结果,同时还可得知判定依据。

虽然上述检测算法是基于距离的,仍属于异常检测算法,但较以往基于统计特征的异常检测算法而言,本检索算法在检测的同时可以给出与待检测片段距离最近的特征片段,如果待检测片段被判定为可疑,那么通过两者的比较,不难发现算法判断的依据(在待检测片段中一定存在某些行与特征片段中的一些行非常相似),其自解释性是传统基于统计特征的异常检测方法无法提供的,接近于基于规则的误用检测方法。

本发明还提出一种基于特征片段自发现的可疑隧道检测系统01,如图6所示,该系统包括:可疑隧道样本建立模块02、正常隧道样本建立模块03、特征片段锁定算法模块04、元数据片段提取模块05、可疑片段检测模块06、片段间最小距离搜索模块07。

可疑隧道样本建立模块02,用于构建特定的可疑隧道,基于所述可疑隧道建立对应于可疑隧道流量的多个可疑隧道样本。

正常隧道样本建立模块03,用于建立对应于正常的宿主协议流量的正常隧道样本。

特征片段锁定算法模块04,用于基于特征片段锁定算法从多个可疑隧道样本中锁定可疑隧道的特征片段集合并找出正常隧道样本中与特征片段集合对应的最邻近片段集合。

优选地,特征片段锁定算法模块04还用于通过下述特征片段锁定算法锁定可疑隧道的特征片段集合并找出所述最邻近片段集合:

81、配置片段宽度、单元权值、逆序惩罚量、特征片段起始点。

82、加载可疑隧道样本和正常隧道样本;以第一个可疑隧道中的第一个片段作为当前处理的片段。

83、判断所述当前处理的片段是否为第一个可疑隧道样本的最后一个片段,如果是,则退出所述特征片段锁定算法的锁定流程;如果不是,则以当前处理的片段作为假定特征片段,遍历所述除第一可疑隧道样本以外可疑隧道样本的片段,找到与所述假定特征片段距离最小的片段作为各个可疑隧道与之对应的假定特征片段,当前处理的片段与这些假定特征片段共同构成当前特征片段集合。

84、从正常隧道样本中寻找与当前特征片段集合距离均值最小的片段,作为各个正常隧道与该集合对应的当前最近邻片段,并计算当前特征片段集合的分值,该分值为当前特征片段集合中元素间最大距离,和当前特征片段与当前最近邻片段间最大距离的比值,并记录该分值与相应的特征片段集合及其最近邻片段集合。

85、判断第一个可疑隧道样本中是否有未处理片段,如果没有则进行步骤86;如果有则返回步骤83。

86、选取分值最大的一组特征片段集合及其最近邻片段集合作为算法输出。

优选地,片段间最小距离搜索模块07用于通过下述片段间最小距离搜索算法找出最邻近片段集合:

91、初始化需要计算距离的宽度相同的两个片段。

92、形成所述两个片段的原始顺序对应关系,并以其作为当前对应关系;并计算原始顺序对应关系的片段间距离作为当前最小片段距离。

93、在所述片段间距离中找出最小片段距离,并根据该最小片段距离的对应关系,遍历所有潜在的交换操作。

94、对于新的交换操作,生成变换后的对应关系,计算新的对应关系的片段间距离,将新的片段间距离与上述的最小片段距离对比,当所述新的片段间距离小于上述的最小片段距离时,将所述新的片段间距离作为最小片段距离,并记录当前两个片段的对应关系,进行步骤95。

95、判断是否还有未处理的所述潜在的交换操作所述遍历是否完成,如果没有,则进行步骤96;如果有,则返回步骤93。

96、判断步骤93中是否获得新的对应关系,如果有,则以新的对应关系返回步骤93;如果没有,则退出最小距离搜索算法流程。

优选地,片段间最小距离搜索模块07还用于,完成潜在的交换操作:两个片段依原始的顺序一一对应,选择两片段中的任意一个,对其中的任意两个数据包行序号做交换,生成一个新的对应关系。

元数据片段提取模块05,用于从实时通信流量中提取元数据片段。

可疑片段检测模块06,用于基于片段间最小距离搜索算法分别计算元数据片段与特征片段集合之间的最小距离,以及元数据片段和最邻近片段之间的最小距离,基于最小距离和可疑隧道检测算法,计算可疑元数据片段的判定参数,当判定参数的结果小于零时,判定元数据片段为可疑片段并报警;当判定参数的结果大于或等于零时,判定元数据片段为非可疑片段。

优选地,可疑片段检测模块06还用于:

基于以下所述可疑隧道检测算法的检测等式完成所述判定参数的计算:

其中,与,分别表示特征片段与所述最近邻片段;wg为待判定的所述元数据片段,sig(x)为取符号算子,当x≥0时sig(x)=1,否则sig(x)=-1。

为所述判定参数。

为基于所述片段间最小距离搜索算法,计算出的所述元数据片段与所述特征片段集合之间的距离中的最小值。

为基于所述片段间最小距离搜索算法,计算出的所述元数据片段与所述最邻近片段之间的距离最小值的二分之一。

隧道检测作为网络安全领域的一个持续关注点,在产业界及学术界已经存在了一些较为有效的检测技术,然而从目前已存在方法来看,基本受限于两种解决思路,误用检测与异常检测,前者需要专业人员来归纳特征指纹,后者误报率难以降低且自解释性不高。本方法,通过在隧道样本及正常样本中,圈定出最显著的特征片段,及尤其确定的近邻片段,并基于两个片段集合,构建出基于距离的检测算法。这一算法虽属于异常检测一类,但其检测结果却具备良好的自解释性,提升了用户体验。

本方法可归纳出具备特征的几个创新点:

1)片段最小距离的定义及其搜索策略;

2)特征片段的定位策略;

3)基于特征片段及其邻近片段的隧道检测策略。

为了表达地更为形象,这里简单说明一下实验中该方法的实际应用情况,我们以http-tunnel(一种基于http协议的隧道工具)作为研究对象,构造了7个隧道连接,并提取了相应的元数据(原始流量通过tshark监听获得),如图7所示,其中每个隧道承载的命令是黑客常用的命令,如查询系统用户whois、uname–a,窃取数据命令cat、scp等,以及创建后门脚本等。

同时采集正常的http流量(一般的网站浏览行为),形成10个正常的元数据样本,如图8所示。

通过学习过程,锁定特征片段及其邻近片段,特征片段如图9所示,同时也可看到具体的元数据行的格式,各个单元以逗号分割,每个单元由类型与值组成,两者由冒号分开,i类型表示整数,t表示标签类型,x表示字符串,如第一项为数据包大小,而最后一个单元区分上下行,t:1为下行,t:0为上行。不难看出锁定出的、来自不同隧道元数据样本的特征片段极为相似,都具有一个标准的Http Get包,请求的格式也非常相似,其上下文中的一些包的体积也非常相关。

由特征片段决定的邻近片段,由图10所示,由于受限于空间,只选取其中几个来说明情况。可以看出近邻片段与特征片段存在一定的相似性,有一些是从包大小的方面相似,另一些可能从请求包的内容方面,这些近邻片段印证了特征片段是真是存在的,它们只存在于隧道样本,彼此极为相似,而正常样本中虽然存在一些尽力片段,但从距离的度量上,它们与特征片段的距离要比特征片段间的距离大很多。

最后来看检测的过程,其截图可见图11。图11由左右两部分组成,左侧是正常数据流流入系统的输出,可以看出基本上,待判定的片段与特征片段的最小距离,并不比其与近邻片段的最小距离小,然而当流入系统的是隧道样本时(右侧),可以看到许多这样的报警,此时待判定的片段与特征片段的最小距离,较其与近邻片段的最小距离的差异非常明显,由此可以判断该通信为可疑隧道。

通过以上算法策略,在实验样本集上做交叉验证,可以使准确率与召回率都达到100%,当然这只是实验室中的结果,但能从侧面反映该方法具备较强的普适性,可以通过调整相关参数,处理好较复杂的情况。

为了更全面地评估本方法,对dns-tunnel、icmp-tunnel分别做了类似的测试。在针对dns-tunnel的实验中,采用iodined作为工具,服务器端执行

./iodined–c–f 10.0.0.1–P 12345test.test.com

客户端执行

./iodined–f–P 12345 192.168.4.5test.test.com

服务器端执行

Ssh 10.0.0.1

即完成基于dns的连接隧道,实验中采用与http-tunnel检测的相同参数,正常的dns连接共4组样本,3组dns隧道样本,经学习后圈定出特征片段,基于该组片段及其最近邻片段,同样可以使准确率与召回率都达到100%。

对icmp-tunnel的检测,情况稍微有些复杂,因为icmp协议是网络层协议,因此没有端口的概念,不能以端口区分上下行流量,处理方式是将端口从元数据行中去掉。Icmp-tunnel的搭建工具采用ptunnel,服务器端简单调用./ptunnel,同时nc.traditional–l–p 222–e/bin/bash,客户端./ptunnel–p192.168.4.5–lp 1234–da 127.0.0.1–dp 222,之后利用nc.traditionallocalhost1234打开对方的反弹端口。

正常的icmp样本2组(只是ping命令引起的往来数据,没有什么明显差异),icmp-tunnel元数据3组,如果不调整权值与判别参数,会发生一个icmp-tunnel样本漏报的情况,但简单调整参数后,仍能比较容易地获得100%的准确率与召回率。

需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1