基于序列模式识别的木马通信行为检测方法转让专利

申请号 : CN201710747392.1

文献号 : CN107360190A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘胜利吴双林伟赵幸陈石肖达丁岚

申请人 : 刘胜利

摘要 :

本发明公开一种基于序列模式识别的木马通信行为检测方法,其特征在于,将木马产生的网络通信会话流按照时间进行对切片,通过时间聚合分离出应用程序的交互行为,将频繁序列挖掘算法应用于心跳检测,滤除心跳后,序列模式统计识别木马。本发明针对会话流序列性进行检测,分析窃密木马的网络行为,提出用模式序列挖掘过滤心跳,模式匹配检测外部控制,再利用统计方法判断会话流是否为木马。方法轻量、简洁、有效,检测结果的物理可解释性很强。

权利要求 :

1.一种基于序列模式识别的木马通信行为检测方法,其特征在于,将木马产生的网络通信会话流按照时间进行对切片,通过时间聚合分离出应用程序的交互行为,将频繁序列挖掘算法应用于心跳检测,滤除心跳后,序列模式统计识别木马。

2.根据权利要求1所述的基于序列模式识别的木马通信行为检测方法,其特征在于,木马产生的网络通信会话流的检测方法:当下述条件满足时,认为数据包属于同一条会话流:P1.srcip=P2.srcip∩P1.dstip=P2.dstip∩P1.proto=P2.proto∩|P1.t-P2.t|≤t*其中,srcip表示源IP地址,dstip表示目的IP地址,proto代表协议类型,t代表数据包* *到达时间,t代表时间阈值,此处设置为t=300s,a∩b代表a和b同时成立。

对于每一个数据包,定义数据包特征向量:

P=

其中,IDF代表数据包所属流的编号,t代表到达时间,l代表应用层载荷长度,u代表该数据包是否由内网向外网发送,hash代表数据包的哈希值。数据包构成了会话流,每条会话流为F,存在:F={P1,P2,P3,...,Pi,...,Pn}

3.根据权利要求2所述的基于序列模式识别的木马通信行为检测方法,其特征在于,对会话流按照时间进行对切片的方法:对会话流F,按时间戳,其存在密集交换数据的快速交换片段和较少交换数据的空白片段,经过切片的会话流表示为Fs:Fs={S1,S2,S3,...Si,...,Sn}}

其中,Fs代表聚簇后的会话流,每一个会话流都被聚簇为多个快速交换片段,使用Si代表第i个快速交换片段。对于Fs,一种可能的情形是S1={P1,P2},S2={P3,...}……依此类推。

4.根据权利要求3所述的基于序列模式识别的木马通信行为检测方法,其特征在于,在会话流切片的基础上,使用频繁序列挖掘算法,针对会话流中的心跳进行检测和过滤:定义支持度阈值Support,最小频数阈值为 其中,Ns为一条会话流的总切片数。

定义会话流切片序列的频繁i项序列集为Li,定义NL为频繁1项序列集的序列个数。

检测算法过程如下:

(1)根据最小频数阈值Supmin计算出会话流Fs中的频繁1项集L1。如果不等式NL×Supmin≥4NS成立,说明该流的切片序列是完全重复序列,则跳出检测;否则,进入下一步骤;

(2)对L1两两进行连接,生成频繁2项序列候选集,在会话流Fs中进行检索生成频繁2项序列集,若该集不为空,则进入下一步骤;若不存在频繁2项序列,则定义新的支持度频数阈值Supmin2=Supmin+1,使用新的阈值计算频繁1项集,如果该频繁1项仍存在,取频次最高的成员作为心跳,否则,跳出检测;

(3)对L2两两进行连接,生成频繁3项序列候选集,在会话流Fs中进行检索,保留频繁3项序列集L3,进入第四步骤;若不存在频繁3项集,取频次最高的频繁2项序列作为心跳,结束检测;

(4)两两连接L3,生成频繁4项序列候选集,在会话流Fs中进行检索,保留频繁4成员序列集L4,若不存在频繁4项序列,心跳检测有效;若存在频繁4项序列,心跳检测无效,结束检测。

5.根据权利要求4所述的基于序列模式识别的木马通信行为检测方法,其特征在于,在检测出心跳之后,要将心跳模式从切片中去除。在每个切片中滤除最先出现的心跳,从而得到只包含正常数据传输的会话流Fpure。且:Fpure={Sp1,Sp2,...,Spi,..}

其中,Spi是会话流Fpure中的第i个快速交换片段。

6.根据权利要求1所述的基于序列模式识别的木马通信行为检测方法,其特征在于,在滤除噪声的序列的基础上,存在如下关系:其中 为会话流Fpure中第i个切片的首包方向,out-to-in表示方向由互联网流向内网,Spi是会话流Fpure中第i个快速交换片段,该式含义为,当第i个快速交换片段的首包由外网流量内网时,认为该片段为可疑木马片段。

当会话流Fpure中的可疑木马片段达到一定的比例时,我们就认为该会话为木马会话。存在:N{Spi∈Trojan∩Spi∈Fpure}/N{Spi∈Fpure}>RTrojan其中,N{A}代表A的数量,Spi是会话流Fpure中第i个快速交换片段,RTrojan是一个比例阈值,此处设置RTrojan=0.7。

如果会话流表现出外部人为控制的特点,系统发出报警信息,这意味着一个包含外部人为控制的入侵已经进行或者正要进行。

说明书 :

基于序列模式识别的木马通信行为检测方法

技术领域:

[0001] 本发明涉及一种木马通信行为的检测方法,特别是涉及一种基于序列模式识别的木马通信行为检测方法。背景技术:
[0002] 近年,APT攻击威胁着企业的数据安全。APT攻击过程可分为七个阶段:侦查、武器化、投放、利用、安装、命令&控制、收割。窃密木马在APT攻击的命令&控制阶段和收割阶段起着窃取核心资料的重要作用。由于其用途和经济价值,地下产业更是导致了技术垄断,木马曝光的时间较漫长,样本缺乏,研究水平滞后于开发水平。目前,在网络攻击中发挥重要作用的远程控制木马,其样本发现的时间往往滞后于木马被投入使用的时间。无论木马在主机中如何隐蔽自己的行踪,最后都要用通过网络将自己所窃取的信息传送出来。基于网络的检测方法,一直是异常检测的研究热点。基于网络的检测建立在业务流量的基础上,包括端口识别、深度报文检测、行为特征分析等。由于网络地址端口转换技术的广泛采用,大量终端用户使用非默认端口,端口识别技术的鉴别能力逐渐下降。基于深度包的检测通过提取应用层负载的特征值实现对木马的检测,准确率较高,但是只能检测已知的木马实例,识别能力依赖于特征库的完备程度。基于网络行为分析的检测技术对木马网络行为进行识别,具有抗加密混淆,跨平台,可检测未知木马的优点,然而在准确率方面存在一定的局限性,在工业部署中,基于特征签名的检测方法仍是主流。相较于基于特征码匹配的检测技术,网络流量分析是检测新样本的重要手段,其中多使用机器学习方法。常见的机器学习方法,由于不考虑数据流时序序列,单纯使用集合属性的特征,对于木马的识别率还存在提高空间。
[0003] Sicong Li等对传输层连接进行了近似重组,从流量、访问、IP数统计、周期性四个方面对网络窃密行为进行了分析,提出了一个基于阈值法和朴素可信度模型的检测系统。首先基于K-means聚类算法对流进行分类,检测TCP连接的木马C&C通信行为,采用朴素贝叶斯分类器建立了一个通用的检测模型。这种检测方法实时性较差,只能对完整的流量会话进行分析,这也是很多基于网络流量的木马通信检测方法存在的问题。
[0004] Dan Jiang等分析了10款远控木马和10款正常应用产生的通信会话流,发现木马倾向于在会话建立的早期发送较少的数据包以隐藏自己,提出在会话开始的初期使用5种机器学习算法对流的六种特征进行分类,从而可在会话早期发现木马。同一机构的Adachi等研究了24款木马,通过在主机上将网络会话与进程进行关联,应用6种机器学习算法,得到了更好的结果。在这篇研究中,作者同样提到了样本不足的缺陷。发明内容:
[0005] 本发明要解决的技术问题是:克服现有研究的不足,提出了一种基于序列模式匹配的木马通信检测方法,将木马程序一次完整的网络活动中产生的流按时间进行切片,通过模式匹配分析每个切片的特点,从而从根本上检测木马网络交互行为,其方法具有一定的稳定性和高准确性,符合普遍的木马通信规律。
[0006] 本发明的技术方案:设计一个检测木马通信的引擎。其基本思路是通过时间聚合分离出应用程序的交互行为,将频繁模式挖掘算法应用于心跳检测,最后通过序列模式匹配识别木马。该方法在一定的时间尺度内具有稳定性,可在交互行为的初期检测出木马。将该方法应用于现实网络数据集,可有效检测木马的外部控制行为,且具有较低的误报。
[0007] 本发明基于序列模式识别的木马通信行为检测方法是将木马产生的网络通信会话流按照时间进行对切片,通过时间聚合分离出应用程序的交互行为,将频繁序列挖掘算法应用于心跳检测,滤除心跳后,序列模式统计识别木马。本方法检测的对象是会话流量。使用流量捕获模块接收流量和存储流量,流量捕获器部署于网络地址转换设备之前,获取内部地址与外部地址之间进行交互的流量。将捕获流量按三元组(源IP地址,目的IP地址,协议类型)进行存储,每个具有相同三元组,且时间间隔较小的数据包被认为属于同一条会话流。
[0008] 木马产生的网络通信会话流的检测方法:用F表示一条会话流,P代表一个数据包。P1和P2表示前后到达的两个数据包,当下述条件满足时,认为数据包属于同一条会话流:
[0009] P1.srcip=P2.srcip∩P1.dstip=P2.dstip∩P1.proto=P2.proto∩|P1.t-P2.t|*≤t
[0010] 其中,srcip表示源IP地址,dstip表示目的IP地址,proto代表协议类型,t代表数据包到达时间,t*代表时间阈值,此处设置为t*=300s,a∩b代表a和b同时成立。
[0011] 窃密型木马由其隐蔽性,从内部向外部发起反弹连接。针对此特性,流量捕获模块只捕获从内部主机主动向外部主机发起连接的会话流。定义会话F的srcip为会话中的内网IP地址,定义dstip为外网IP地址。
[0012] 在会话控制中存在一些不包含应用层载荷的数据包,认为是协议控制类型的数据包,不用于传输数据,在分析时进行滤除,其满足:
[0013] P.payload=Null
[0014] 其中,payload代表的应用层载荷,Null代表不存在。现在我们得到包含数据包序列的会话流,将其进行分析。对于每个数据包我们仅提取一部分属性特征形成特征向量用于分析,定义数据包特征向量:
[0015] P=
[0016] 其中,IDF代表数据包所属流的编号,t代表到达时间,l代表应用层载荷长度,u代表该数据包是否由内网向外网发送,hash代表数据包的哈希值。数据包构成了会话流,每条会话流:
[0017] F={P1,P2,P3,...,Pi,...,Pn}
[0018] 对会话流按照时间进行对切片的方法:对于每一条捕获的会话流,按其数据包之间的时间间隔,其存在密集交换数据的快速交换片段和较少交换数据的空白片段,可针对时间将其进行聚簇,将时间相近的数据包看作是同一个快速交换片段。经过聚簇的会话流可表示为:
[0019] Fs={S1,S2,S3,...Si,...,Sn}}
[0020] 其中,Fs代表聚簇后的会话流,每一个会话流都被聚簇为多个快速交换片段,使用S代表一个快速交换片段。对于Fs,存在S1={P1,P2},S2={P3,...}……依此类推。
[0021] 每条会话流的快速交换片段的数量、间隔、频率、模式和初始包的方向可以用于分析该会话流是否为外部控制的会话流。同时,对于现今的应用程序来说,应用程序心跳的设计也是一个常见的特点。在分析快速交换片段时,首先要找出其中的心跳等自动化行为,并进行过滤。心跳包呈现出载荷长度序列模式化的规律,在快速交换片段构成的载荷长度序列中进行模式识别。由于握手包为3个,所以我们认为每次心跳不会超过三个。
[0022] 模式识别的过程就是频繁序列挖掘的过程。在会话流切片的基础上,使用频繁序列挖掘算法,针对会话流中的心跳进行检测和过滤:
[0023] 设置支持度阈值Support,最小频数阈值为 其中,Ns为一条会话流的总切片数。
[0024] 定义会话流切片序列的频繁i项序列集为Li,定义NL为频繁1项序列集的序列个数。检测算法过程如下:
[0025] (1)根据最小频数阈值Supmin计算出会话流Fs中的频繁1项集L1。如果不等式NL×Supmin≥4NS成立,说明该流的切片序列是完全重复序列,则跳出检测;否则,进入下一步骤;
[0026] (2)对L1两两进行连接,生成频繁2项序列候选集,在会话流Fs中进行检索生成频繁2项序列集,若该集不为空,则进入下一步骤;若不存在频繁2项序列,则定义新的支持度频数阈值Supmin2=Supmin+1,使用新的阈值计算频繁1项集,如果该频繁1项仍存在,取频次最高的成员作为心跳,否则,跳出检测;
[0027] (3)对L2两两进行连接,生成频繁3项序列候选集,在会话流Fs中进行检索,保留频繁3项序列集L3,进入第四步骤;若不存在频繁3项集,取频次最高的频繁2项序列作为心跳,结束检测;
[0028] (4)两两连接L3,生成频繁4项序列候选集,在会话流Fs中进行检索,保留频繁4成员序列集L4,若不存在频繁4项序列,心跳检测有效;若存在频繁4项序列,心跳检测无效,结束检测。
[0029] 从频繁1项序列开始,依次在会话流的多条载荷长度序列中找出频繁n项序列Seqn,保证其出现的频率在Support阈值之上。并连接生成候选频繁n+1序列,通过同样的操作,生成频繁n+1项序列Seqn+1,直到无法生成更高的频繁序列为止,生成的最长的频繁序列长度为N,若存在N≤3,则认为生成的频繁序列SeqN就是心跳模式,滤除会话Fs中的该模式。在检测出心跳之后,要将心跳模式从切片中去除。在每个切片中滤除最先出现的心跳,从而得到只包含正常数据传输的会话流Fpure。且:
[0030] Fpure={Sp1,Sp2,...,Spi,..}
[0031] 其中,Spi是会话流Fpure中的第i个快速交换片段。
[0032] 对于窃密型木马,其在受害主机上具有隐蔽性,由外部的控制端去控制内部的主机,因此只会在外部显示出人为的操作,而在内部显示出机器的自动响应的特性。
[0033] 人为的操作存在随机性,限于人的思考的速度和操作的速度,在网络操作行为之间具有一定的时间间隔。而机器只是单纯地接收和执行命令,其对命令的响应时间远远短于人的反应时间。所以将会话流按照时间切片之后,得到的包序列可以反映出人为的网络操作行为。因此其后的第一个数据包的方向显示会话流中的人为控制来自于内部还是外部。对于正常的网络应用,内部用户访问外部互联网,人为控制显然来自于内部。而对于窃密木马,其人为控制来自于外部。存在如下关系:
[0034]
[0035] 其中 为第i个快速交换片段的首包方向,out-to-in表示由互联网流向内网,Spi是会话流Fpure中第i个快速交换片段,该式含义为,当第i个快速交换片段的首包由外网流量内网时,认为该片段为可疑木马片段。
[0036] 当会话流Fpure中的可疑木马片段达到一定的比例时,我们就认为该会话为木马会话。
[0037] N{Spi∈Trojan∩Spi∈Fpure}/N{Spi∈Fpure}>RTrojan
[0038] 其中,N{A}代表A的数量,Spi是会话流Fpure中第i个快速交换片段,RTrojan是一个比例阈值,此处设置RTrojan=0.7。
[0039] 如果会话流表现出外部人为控制的特点,系统发出报警信息,这意味着一个包含外部人为控制的入侵已经进行或者正要进行。
[0040] 本发明的有益效果:本发明针对会话流序列性进行检测,分析窃密木马的网络行为,提出用模式序列挖掘过滤心跳,模式匹配检测外部控制,再利用统计方法判断会话流是否为木马。方法轻量、简洁、有效,检测结果的物理可解释性很强。附图说明:
[0041] 图1为区域网络中系统部署图。
[0042] 图2为会话流序列图。
[0043] 图3为窃密木马系统检测流程图。具体实施方式:
[0044] 实施例一:一种基于序列模式识别的木马通信检测方法,首先,在待检测网络出入口处部署系统捕获流量,如图一所示。根据流量三元组(源IP地址、目的IP地址、协议)存储为数据流,对于数据流中的数据包保存到达时间、载荷长度、传输方向、哈希值进行记录。对于每一条数据流基于时间戳进行切片处理;对于所得的会话流切片序列,使用频繁序列挖掘算法计算其心跳并进行过滤;最后在所生成序列的基础上,统计会话流中包含疑似木马序列的比例,对木马流量进行检测。
[0045] 1、根据三元组记录和处理流
[0046] 根据三元组记录数据流,以数据流为分析对象。记录流中的每个数据包的特征,以特征向量形式记录。
[0047] 有如下定义:
[0048] 定义1:分类模型定义为(F,isTrojan),F为模型输入,isTrojan为判别器。存在如下关系:isTrojan:F→{1,0},其中1为木马流,0为正常流。
[0049] 定义2:定义会话流F={P1,P2,P3,...,Pi,...,Pn}。
[0050] 其中任意相邻两个数据包,如P1.和P2,满足:
[0051] P1.srcip=P2.srcip∩P1.dstip=P2.dstip∩P1.proto=P2.proto∩|P1.t-P2.t|≤t*
[0052] 其中数据包srcip表示源IP地址,dstip表示目的IP地址,proto代表协议类型,t代表数据包到达时间,t*代表时间阈值,此处设置为t*=300s,a∩b代表a和b同时成立。
[0053] 定义3:定义每个数据包特征向量为P=
[0054] 其中,IDF代表数据包所属流的编号,t代表到达时间,l代表应用层载荷长度,u代表该数据包是否由内网向外网发送,hash代表数据包的哈希值。以时间为横轴、应用层载荷长度为纵轴的会话流序列图如图二所示。
[0055] 2、对会话流包序列按时间进行切片
[0056] 切片的目的是将密集的数据包交换段和稀疏的空白时间段分开,每个密集数据交换段被认为是一次操作。在切片时,数据包到达时间是切片的重要依据。
[0057] 有如下定义:
[0058] 定义4:定义攻击者的反应时间阈值为thr,攻击者的思考时间为tht。
[0059] 对于单线程的木马,其命令只能在上一个命令完全执行完成后再进行发送,因此后一个命令与上一个任务之间的数据包的到达时间间隔最短取决于攻击者的反应时间,反应时间阈值thr作为进一步分片的最基本条件。攻击者也可能在下一步执行之前,进行一定时间的思考,攻击者思考时间tht阈值作为切片的充分条件。
[0060] 定义5:定义切片内尺度阈值SCALE。
[0061] 切片内的数据包的到达时间具有泊松过程的特点,其中一个重要的干扰因素是网络环境,由于网络环境的变化,包到达时间可能会出现一定的波动,但通常波动不会太大。当在一个分片中突然出现了SCALE级的时间间隔,并且到达时间间隔超过阈值thr,就将该数据包分至下一个切片。
[0062] 经过切片的会话流可表示为:
[0063] Fs={{P1,P2},{P3,...},{Pi},...{...,Pn}}
[0064] 其中,Fs代表聚簇后的会话流,每一个会话流都被切片为多个快速交换片段,使用S代表一个快速交换片段。对于Fs,存在S1={P1,P2},S2={P3,...}……依此类推。
[0065] 3、心跳检测
[0066] 在对流量序列进行切片的基础上,使用频繁序列挖掘算法,针对会话流中的心跳进行检测和过滤。
[0067] 定义6:定义支持度阈值Support,最小频数阈值为 其中,Ns为一条会话流的总切片数。
[0068] 定义7:定义会话流切片序列的频繁i项序列集为Li,定义NL为频繁1项序列集的序列个数。
[0069] 检测算法过程如下:
[0070] (1)根据最小频数阈值Supmin计算出会话流Fs中的频繁1项集L1。如果不等式NL×Supmin≥4NS成立,说明该流的切片序列是完全重复序列,则跳出检测;否则,进入下一步骤;
[0071] (2)对L1两两进行连接,生成频繁2项序列候选集,在会话流Fs中进行检索生成频繁2项序列集,若该集不为空,则进入下一步骤;若不存在频繁2项序列,则定义新的支持度频数阈值Supmin2=Supmin+1,使用新的阈值计算频繁1项集,如果该频繁1项仍存在,取频次最高的成员作为心跳,否则,跳出检测;
[0072] (3)对L2两两进行连接,生成频繁3项序列候选集,在会话流Fs中进行检索,保留频繁3项序列集L3,进入第四步骤;若不存在频繁3项集,取频次最高的频繁2项序列作为心跳,结束检测;
[0073] (4)两两连接L3,生成频繁4项序列候选集,在会话流Fs中进行检索,保留频繁4成员序列集L4,若不存在频繁4项序列,心跳检测有效;若存在频繁4项序列,心跳检测无效,结束检测。
[0074] 在检测出心跳之后,要将心跳模式从切片中去除。在每个切片中滤除最先出现的心跳,从而得到只包含正常数据传输的会话流Fpure。且:
[0075] Fpure={Sp1,Sp2,...,Spi,..}
[0076] 其中,Spi是会话流Fpure中的第i个快速交换片段。
[0077] 4、木马检测
[0078] 对于正常的网络应用,内部用户访问外部互联网,人为控制显然来自于内部。而对于窃密木马,其人为控制来自于外部。
[0079] 存在如下关系:
[0080]
[0081] 其中 为会话流Fpure中第i个切片的首包方向,out-to-in表示方向由互联网流向内网,Spi是会话流Fpure中第i个快速交换片段,该式含义为,当第i个快速交换片段的首包由外网流量内网时,认为该片段为可疑木马片段。
[0082] 当会话流Fpure中的可疑木马片段达到一定的比例时,我们就认为该会话为木马会话。存在:
[0083] N{Spi∈Trojan∩Spi∈Fpure}/N{Spi∈Fpure}>RTrojan
[0084] 其中,N{A}代表A的数量,Spi是会话流Fpure中第i个快速交换片段,RTrojan是一个比例阈值,此处设置RTrojan=0.7。
[0085] 如果会话流表现出外部人为控制的特点,系统发出报警信息,这意味着一个包含外部人为控制的入侵已经进行或者正要进行。
[0086] 综上,我们设计了一个基于模式识别的木马的通信检测系统:根据流量三元组(源IP地址、目的IP地址、协议)存储为数据流,对于数据流中的数据包保存到达时间、载荷长度、传输方向、哈希值进行记录。对于每一条数据流基于时间戳进行切片处理;对于所得的会话流切片序列,使用频繁序列挖掘算法计算其心跳并进行过滤;最后在所生成序列的基础上,统计会话流中包含疑似木马序列的比例,对木马流量进行检测,整体系统结构如图三所示。