基于周期性通讯行为分析的P2P僵尸网络检测方法、系统与流程

文档序号:15062070发布日期:2018-07-31 22:02阅读:329来源:国知局

本发明涉及计算机网络安全技术领域,特别是涉及基于周期性通讯行为分析的p2p僵尸网络检测方法、系统。



背景技术:

僵尸网络是由大量被病毒感染并由攻击者远程控制的机器组成的网络。受感染的机器被称为僵尸机。近年来,僵尸网络对互联网安全的威胁不断增加。僵尸网络构成了一个可以有效地发起各种各样攻击的攻击平台,这些网络攻击包括发送垃圾邮件,启动分布式拒绝服务攻击,执行点击欺诈和身份盗用。高度协调和大规模的攻击使得僵尸网络难以发现并屏蔽。

检测僵尸网络十分重要,因为它们已经成为网络世界的严重威胁。但是,设计一个有效的p2p僵尸网络检测系统面临着许多挑战。首先,一些僵尸机可能偷偷地进行恶意活动,其行为不易被发现。其次,受感染的主机可能同时运行合法的p2p应用程序,这导致了合法的流量和僵尸网络流量的混合。第三,网络流量的增长速度很快,这就要求检测系统能有效地处理大量的信息。

p2p僵尸网络越来越流行,导致大量的研究尝试追踪和屏蔽它们。p2p僵尸网络的检测机制可以分为两类:基于主机的方法和基于网络的方法。基于主机的方法操作类似于反病毒系统,检测主机系统中僵尸主机的活动,并且要求对所有主机单独进行监控,这在实际网络环境中是不切实际的,而基于网络的方法则依赖于被动监控网络流量。

基于网络的方法可以分为两类:基于流量特征的方法和基于组行为的方法。基于网络的方法由于相对容易部署而最受欢迎。

coskun[b.coskun,s.dietrich,andn.memon,“friendsofanenemy:identifyinglocalmembersofpeer-to-peerbotnetsusingmutualcontacts,”in26thannualcomputersecurityapplicationsconference,acsac10,pages131140,2010]等人提出了一种方法来识别僵尸机。该方法从已知的僵尸机开始逐步寻找网络中的非结构p2p僵尸网络的潜在成员。方该法的弱点在于它需要在检测之前知道网络中的一台僵尸机。

文献[g.gu,v.yegneswaran,p.porras,etal.activebotnetprobingtoidentifyobscurecommandandcontrolchannels[c].computersecurityapplicationsconference,2009.acsac'09.annual.ieee,2009:241-253]提了一种名为botprobe的主动探测方法,作者认为僵尸机在与c&c服务器通信时有与众不同的特有的命令-响应模式,因此该方法会主动向被检测的主机发送特定的探测包来检测该主机是否为僵尸机。基于主动探测的僵尸网络检测方法能够有效并及时地检测网络中存在的僵尸机,但是该方法会增加网络链路的负担,造成网络拥堵,并且容易引起botmaster的注意从而更换僵尸网络的响应方式来绕过检测。

botmine[g.gu,r.perdisci,j.zhang,andw.lee,“botminer:clusteringanalysisofnetworktrafficforprotocol-andstructure-independentbotnetdetection,”ss08proc.17thconf.secur.symp.,pp.139154,2008]方法主机的组行为检测僵尸主机。如果多台主机共享相似的通信模式并同时执行类似的恶意行为,如扫描,垃圾邮件,攻击等,则将该组主机标识为属于同一僵尸网络的僵尸机。然而,有些恶意活动可能是隐藏的,不可被观察到,从而使botminer无效。另外,botminer的可扩展性受到很大限制。

roberto等人[j.zhang,r.perdisci,w.lee,etal.buildingascalablesystemforstealthyp2p-botnetdetection[j].informationforensicsandsecurity,ieeetransactionson,2014,9(1):27-38.]中采用了两段式的检测的方法来来检测p2p僵尸网络。第一阶段dns查询信息筛选出p2p数据流量。然后第二阶段对该主机之间的流量特征进行聚类分析,将密度较大的聚类结果识别为p2p僵尸网络类。

yan[q.yan,y.zheng,t.jiang,w.lou,andy.t.hou,“peerclean:unveilingpeer-to-peerbotnetsthroughdynamicgroupbehavioranalysis,”proc.-ieeeinfocom,vol.26,pp.316324,2015]等人提出了一个基于群体行为分析的p2p僵尸网络检测方法。但是,他们只考虑使用统计流量特征来对p2p主机进行聚类,如果p2p僵尸网络具有动态或随机流量模式,该方法将很难发挥效果。此外,他们的方法无法应对未知的p2p僵尸网络。

综上所述,现有技术中对于未知的p2p僵尸网络检测问题,尚缺乏有效的解决方案。



技术实现要素:

为了解决现有技术的不足,本发明提供了基于周期性通讯行为分析的p2p僵尸网络检测方法,本发明能够检测出未知的p2p僵尸网络中的僵尸机。

基于周期性通讯行为分析的p2p僵尸网络检测方法,包括:

获取局域网内所有主机的网络流量并根据采集的网络流量识别出与p2p相关的网络流量;

针对识别出的与p2p相关的网络流量,识别出数据流在线时间接近于底层操作系统运行时间的数据流,将上述数据进行周期性通讯行为检测识别出有周期性的数据流,所述有周期性的数据流所属的网络即为p2p僵尸网络。

进一步优选的技术方案,产生上述有周期性的数据流的主机为p2p僵尸机。

进一步优选的技术方案,所述识别与p2p相关的网络流量时:

将网络流量按照五元组进行分类,五元组相同的归入同一个流;

过滤与dns相关的数据流;

对于每个分组,根据每条数据流的时间戳对数据流进行分段;

对于每个时间段,计算数据流的目的ip地址所属的不同自治域号的个数;

删除不同自治域号的个数小于阈值的时间段内的所有数据流;

剩余的数据流被认为是p2p相关的网络流量。

进一步优选的技术方案,所述五元组具体指:源ip地址、目的ip地址、源端口、目的端口、协议号。

进一步优选的技术方案,过滤与dns相关的数据流时,将数据流中目的端口号为53或者目的ip地址出现在dns相应数据中的数据流删除。

进一步优选的技术方案,识别出数据流在线时间接近于底层操作系统运行时间的数据流时:

计算每台主机的运行时间;

计算每个数据分组的在线时间:计算根据每台主机产生的数据流进行分组中输出的每个分组所包含的时间段的个数作为该分组的在线时间;

对于每个数据分组,用其在线时间除以所属主机的运行时间得到的商值作为该数据分组的在线率,若在线率小于阈值,则删除该分组包含的所有数据流;

对于剩下的数据组,用其发送字节数除以发送包个数得到商值,若商值大于阈值,则删除该分组包含的所有数据流。

进一步优选的技术方案,确定每台主机的运行时间时:

对于每台主机,取其产生的每条数据流的时间戳,用时间戳的最大值减去最小值;

将上述时间戳的差值以设定时间为界限划分成若干个时间段;

计算有数据流分布的时间段的个数为该主机的运行时间。

进一步优选的技术方案,所述进行周期性通讯行为检测识别出有周期性的数据流时,具体为:

对于在线时长满足识别出数据流在线时间接近于底层操作系统运行时间的数据流对应的数据组,根据其数据流的目的ip地址对数据流进行分组;

对于每个目的ip地址对应的所有数据流,提取它们的时间戳,并根据从小到大的顺序组成访问序列;

对于每个目的ip地址对应的访问序列,计算其一阶差分序列;

对于每个目的ip地址对应的一阶差分序列,计算其序列的大小以及变异系数,若序列大小小于阈值或变异系数大于阈值,则删除该目的ip地址对应的所有数据流;

剩余的数据流被认为是有周期性的数据流。

本申请还公开了基于周期性通讯行为分析的p2p僵尸网络检测系统,所述检测系统执行基于周期性通讯行为分析的p2p僵尸网络检测方法所对应的程序流程。

本申请还公开了一种检测服务器,所述检测服务器被配置为执行上述基于周期性通讯行为分析的p2p僵尸网络检测方法对应的程序流程。

与现有技术相比,本发明的有益效果是:

本发明不需要使用训练集。训练集通常很难获取,本发明只需将网络流量输入即可得到结果,并不需要使用标签数据进行训练。

本发明检测多种情况下的p2p僵尸网络数据。即使一台主机既在运行正常的p2p应用程序,又在运行的p2p僵尸网络程序,它们产生的流量混在一起,该发明也能检测出该主机。

本发明中,即使被检测的网络中只有一台僵尸机,该发明也能将其检测出,因为该发明并没有使用多态僵尸机之间的共有行为相关的特征。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为本发明的网络部署图;

图2为本发明的方法流程图。

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

一种基于周期性通讯行为分析的p2p僵尸网络检测方法,它的步骤为:

1)在路由器上采集该局域网内所有主机的网络流量;

2)根据采集的网络流量识别与p2p相关的网络流量;

2.1)将网络流量按照五元组进行分类,五元组相同的归入同一个流。其中五元组为:<源ip地址、目的ip地址、源端口、目的端口、协议号>;

2.2)过滤与dns相关的数据流。由于p2p网络中的各个主机在进行相互通讯时,直接通过ip地址进行连接,而不需要使用到dns服务。因此,可以将与dns服务相关的流量视为非p2p主机产生的流量,因此,将数据流中目的端口号为53或者目的ip地址出现在dns相应数据中的数据流删除;上述流量就是跟dns相关的流量。

其中,dns全称domainnamesystem,即“域名系统”。万维网上作为域名和ip地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的ip数串。

2.3)使用p2p检测模块处理过滤后的数据流,识别出与p2p相关的网络流量;

3)将与p2p相关的网络流量传入p2p僵尸网络检测模块,检测p2p僵尸机;

3.1)使用在线时长检测模块,识别出数据流在线时间接近于底层操作系统运行时间的数据流;

3.2)将上述数据流传入周期性通讯行为检测模块,识别出有周期性的数据流;

3.3)由于p2p僵尸网络试图减少网络的波动性,并保持客户端彼此之间的持续通信,以尽可能接收和执行命令。相反,合法的p2p网络的更加动态,它们更倾向于联系更多的新客户端来请求他们所需的资源。也就是说,p2p僵尸机更有可能持续和周期性地联系相同的目标主机,而合法p2p应用程序联系的目标主机则更加不同。因此,将产生上述周期性的数据流的主机被报告为p2p僵尸机。

具体的,步骤2.3)p2p检测模块的处理流程为:

(1)对于每台主机产生的数据流,按照五元组特征进行分组,五元组相同的流归入同一组。其中五元组为<发送包个数,发送字节数,接收包个数,接收字节数,协议>;

(2)对于每个分组,根据每条数据流的时间戳对数据流进行分段,每3分钟为一段;对于每个时间段,计算数据流的目的ip地址所属的不同自治域号的个数;

该步骤的目的在于检测p2p相关的网络流量。由于p2p网络的特征之一是分布性,因此,网络中的各个主机可能会分布在世界各地,也可以理解为p2p网络中的主机会分布在多个不同的自治域中。当一个p2p网络中的主机与其他主机进行通讯时,该主机所连接到的目的ip地址会分布在许多不同的自治域中,每个自治域都有自己的自治域号。相反,非p2p网络中的主机所连接的目的ip地址并不分散,因此可以用不同自治域号的个数来区分它们。

(3)删除不同自治域号的个数小于阈值的时间段内的所有数据流;

(4)剩余的数据流被认为是p2p相关的网络流量;

步骤3.1)在线时长检测模块的处理流程为:

(1)计算每台主机的运行时间;

(1.1)对于每台主机,取其产生的每条数据流的时间戳,用时间戳的最大值减去最小值;

(1.2)将上述时间戳的差值以3分钟为界限划分成若干个时间段;

(1.3)计算有数据流分布的时间段的个数为该主机的运行时间;

(2)计算每个数据分组的在线时间。计算所述步骤2.3)输出的每个分组所包含的时间段的个数作为该分组的在线时间;

(3)对于每个数据分组,用其在线时间除以所属主机的运行时间得到的商值作为该数据分组的在线率。若在线率小于阈值,则删除该分组包含的所有数据流;

(4)对于剩下的数据组,用其发送字节数除以发送包个数得到商值,若商值大于阈值,则删除该分组包含的所有数据流;

所述步骤3.2)周期性通讯行为检测模块的处理流程为:

(1)对于所述步骤3.1)中得到的数据组,根据其数据流的目的ip地址对数据流进行分组;

(2)对于每个目的ip地址对应的所有数据流,提取它们的时间戳,并根据从小到大的顺序组成访问序列;

(3)对于每个目的ip地址对应的访问序列,计算其一阶差分序列;

(4)对于每个目的ip地址对应的一阶差分序列,计算其一阶差分序列的大小以及变异系数。若序列大小小于阈值或变异系数大于阈值,则删除该目的ip地址对应的所有数据流;

该步骤中在于判断(3)中的访问序列是否具有周期性。当序列具有周期性时,序列中的各个相邻两个元素的差值会相差不大。举例说明,对于序列x={x1,x2,x3,x4,x5,x6},若x具有周期性,则x2-x1,x3-x2,x4-x3……的数值差异不大。一阶差分序列就是原序列相邻两项差值所组成的序列。即x的一阶差分序列为:x’={x2-x1,x3-x2,x4-x3,x5-x4,x6-x5}.要判断x是否具有周期性,就可以判断x’序列是否稳定,即波动性不大。而变异系数则可以用来表示一个序列的波动性。一阶差分序列的变异系数越小,则说明一阶差分序列趋于稳定,则说明原序列更具有周期性。

(5)剩余的数据流被认为是有周期性的数据流。

基于周期性通讯行为分析的p2p僵尸网络检测模块,利用p2p僵尸机需要持久的周期性的与其他僵尸机进行通讯以保持僵尸网络的畅通这一特点,首先利用计数方法统计每台主机的p2p活动的持续时间,然后使用变异系数表示每个活动的产生时间的周期性,检测出所有持续时间长且存在周期性的p2p活动,并标记为p2p僵尸网络活动,最后将产生该活动的主机标记为p2p僵尸机。利用该方法,可以有效的检测出p2p僵尸网络,同时,即使p2p僵尸机将网络流量隐藏在合法的p2p流量当中,或者网络中只有一台僵尸机,该方法都能将其检测出。

为了更好地说明本申请的具体构思,下面给出了本申请更为详细的实施例子:

为了更有效应对僵尸网络,设计了一种僵尸网络检测方法。该检测方法的应用场景如图1所示:在网络边界路由器上采集流量;将流量传入p2p主机检测模块,提取出所有p2p主机;将上一步流量传入p2p僵尸机检测模块,提取出所有p2p僵尸机;报告检测出的僵尸机。

首先本申请检测p2p主机,详细内容如下:

为了保持p2p网络的有效性和健壮性,p2p网络中的每个客户端将与其他客户端交换大量的数据包。同一个p2p网络的同一网络活动产生的流量往往具有相同的特征。而且同一个p2p网络活动产生的一组数据流的目的ip将分布在大量不同的网络中。我们可以使用bgp前缀数量来识别属于p2p网络活动的流量组。

p2p主机监测模型的具体步骤如下:

(1)将数据流分组。我们提取一个特征向量v(f)=<spkt,sbyte,rpkt,rbyte,proto>,其中spkt和sbyte分别表示发送的数据包个数和字节数,rpkt和rbyte分别表示接收到的数据包个数和字节数。然后将具有相同特征向量的数据流分到同一个数据组中,该数据组可以被认为某一个网络活动产生的一组数据。主机h产生的网络流量会被划分为多个不同的数据组,其流量集合也可以被表示为g(h)={g1(h),g2(h),...,gn(h)},其中gi(h)表示第i个数据组。

(2)划分时间段。我们设时间窗口t为3分钟。对于每个数据组gi(h),提取其中每条数据流的结束时间戳tend,根据该时间戳将数据流划分到各自对应的时间段内。这样,数据组gi(h)可以进一步的被表示为gi(h)={gi(h)j},其中j表示第j个时间段。

(3)计算bgp前缀个数。对于每个gi(h)j,我们提取其中每条数据流的目的ip地址,并计算它们的bgp前缀。然后我们对这些bgp前缀去重,然后统计剩余的bgp前缀的个数,记为bgpij。此处bgp个数,可以理解为自治域号的个数。

(4)过滤。我们设定一个bgp前缀个数的阈值θbgp。对于每个gi(h)j,如果其bgpij<θbgp,则删除该时间段以及该时间段内的所有数据流。剩余的时间段被认为是p2p相关的时间段并且被标记为pgi(h)j。

(5)识别p2p主机。经过上一步的过滤,主机h产生的所有数据流中的与p2p不相关的流就被删除掉了。这时每个数据流组gi(h)现在可以被描述为pgi(h)={pgi(h)1,pgi(h)2,…,pgi(h)m’}。如果某个数据流组pgi(h)为空集,删除该数据流组。同样的,每个主机h产生的数据可以被表示为pg(h)={pg1(h),pg2(h),…,pgn’(h)}。如果pg(h)为空集,删除该主机及其对应的数据流。最后,剩余的主机被认为是产生p2p行为的主机,剩余的数据流被认为是p2p相关的数据流。

然后,检测p2p僵尸机,具体内容如下:

botmaster为了最大化僵尸网络的利用率,会使足够多数量的僵尸机始终处于在线状态以维持p2p僵尸网络的运行,然而,合法的p2p应用的在线时间是由用户决定的。因此,可以使用在线率的特性区分在线时间长的p2p僵尸机和在线时间短合法p2p应用程序。

在线率可以使用tp2p/thost来表示,其中tp2p表示某一个p2p相关活动的在线时间,thost表示底层操作系统的在线时间。该功能只能识别持久性p2p客户端。

由于在下载或共享文件时使用大量带宽,合法的p2p应用程序(例如emule和bittorrent)通常具有较大的数据包。相反,p2p僵尸网络流量不会占用大量带宽。我们还可以使用数据包大小的特点来区分合法的p2p应用程序数据和p2p僵尸网络数据。

在线率的计算步骤如下:

(1)计算thost。thost表示底层操作系统的在线时间,我们提取每个主机h生成的每条数据流f的时间戳tf。然后我们将所有tf中的最小值ts作为主机h的开始时间,将最大值te作为主机h的结束时间。然后我们将整个时间段te-ts划分为k个小时间段,其中之后我们生成一个向量vact(h)=<v1,v2,v3,…,vk>,如果主机h在第i个时间段内至少出现一个数据流,则将vi设置为1,否则置为0。thost的公式为

(2)计算tp2p。对于每个p2p相关的数据流组pgi(h)={pgi(h)1,pgi(h)2,…,pgi(h)m’},计算pgi(h)中元素的个数即为pgi(h)对应的tp2p;

(3)计算在线率。对于主机h的某个数据组pgi(h),它的在线率计算公式为r(pgi(h))=tp2p/thost。

每个数据组pgi(h)的包大小计算步骤如下:

(1)提取pgi(h)的特征向量v(gi(h))=<spkt,sbyte,rpkt,rbyte,proto>。

(2)计算平均数据包大小为aps(pgi(h))=sbyte/spkt。

本申请中设定r(pgi(h))和aps(pgi(h))的阈值分别是θact和θsize。然后,我们将满足以下条件的数据组删除。

r(pgi(h))≤θact||aps(pgi(h))≥θsize

将剩余的数据组视为持久性数据组,属于主机h的所有持久性数据组的集合可以表示为psg(h)={psg1(h),psg2(h),…,psgn”(h)}。得到的持久性数据组包含了p2p僵尸网络的数据组,和一小部分的合法的开机自动启动的p2p应用程序的数据组。

p2p僵尸机更有可能持续和周期性地联系相同的目标主机,而合法p2p应用程序联系的目标主机则更加不同。对于每个持久性数据组psgi(h),提取所有目标ip并将数据组转换为对目标ip的连接时间序列。例如,持久性数据组psgi(h)中的目的ip地址ipj的连接时间序列可以被表示为ctih(ipj)={time1,time2,…,timeq},其中ctih(ipj)是一个递增序列,并且timei表示在第i个时间窗口内主机h与目的ip地址为ipj的主机有过通信。之后,我们计算ctih(ipj)的一阶差分序列,并表示为ct’ih(ipj)。我们分别计算每个ct’ih(ipj)的元素个数和变异系数分别记作sihj,cvihj。然后分别设定元素个数阈值θs和变异系数阈值θcv,如果ct’ih(ipj)的sihj<θs或着cvihj>θcv,则删除该目的ip地址。剩余的目的ip地址被视为p2p僵尸网络相关的ip,并且连接到这些目的ip的所有主机都被视为p2p僵尸机。

本申请利用该方法,可以有效的检测出p2p僵尸网络,同时,即使p2p僵尸机将网络流量隐藏在合法的p2p流量当中,或者网络中只有一台僵尸机,该方法都能将其检测出。

如图2所述,在执行时,一种基于周期性通讯行为分析的p2p僵尸网络检测方法:

捕获网络中的数据包并将其转换成数据流;

判断数据流是否与dns相关,若相关则丢弃数据流,否则将数据流分组;

判断分组后的数据流的bgp个数是否大于设定的第一阈值,若是,则丢弃该数据流组及所包含的所有数据流,否则计算数据流组的在线率和平均数据包的大小;

判断在线率大于第二阈值且平均数据包大小小于第三阈值是否成立,若成立,则丢弃该数据流组及所包含的所有数据流,否则将数据流组转换成目的地址连接序列,计算连接序列的一阶差分序列,计算一阶差分序列的元素个数以及变异系数,若元素个数及变异系数均在所限定的范围内,则数据流组所包含的所有数据流为p2p僵尸网络数据流。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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