一种基于机器学习的DDoS攻击流量峰值预测方法转让专利

申请号 : CN201710141001.1

文献号 : CN108574668B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韩心慧魏爽武新逢丁怡婧黎桐辛

申请人 : 北京大学

摘要 :

本发明公开了一种基于机器学习的DDoS攻击流量峰值预测方法,利用已有的DDoS数据集,对于每次攻击,抽取可以描述这次攻击行为的特征集,结合受害系统本身的特征集合,利用机器学习方法对此次攻击的流量峰值进行预测,从而可以参照预测结果根据机群部署情况选取适当的路由策略,从而最大的降低攻击带来的损失。

权利要求 :

1.一种基于机器学习的DDoS攻击流量峰值预测方法,包括:

1)利用DDoS攻击数据集抽取每次攻击对应的用于描述当次攻击的特征集合,并在对应受害系统所接收到的流量中提取每次攻击的流量峰值,利用机器学习方法训练模型;

2)检测到新的DDoS攻击时,抽取其对应特征集合并将其输入到已训练好的模型中,预测得到本次攻击流量峰值;

其中的步骤1)包括:

1-1)针对DDoS攻击数据集中的每次攻击,在对应受害系统所接收到的流量中提取从检测时刻到攻击开始的时间内发往受害系统的流量作为攻击时刻流量,并在对应受害系统所接收到的流量中抽取出攻击前设定时间段内该受害系统接收的流量作为正常时刻流量;

1-2)对于每次攻击,分别计算攻击时刻流量和正常时刻流量对应的攻击流量特征和正常流量特征;

1-3)将攻击时刻流量按照时间戳等分,并将攻击时刻流量中包含的数据包按照时间戳分入对应的时间区间,计算每一份中的数据包数量,得到攻击时刻流量所在的时间段内的流量增长模式特征,计算出每次攻击的全部流量中的流量峰值作为预测结果;

1-4)将DDoS攻击数据集每个攻击的攻击流量特征、正常流量特征和流量增长模式特征拼接,形成对应每个攻击的特征集合,将步骤1-3)得到的预测结果利用机器学习方法训练,得到训练模型。

2.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,还包括:在每一次新的DDoS攻击结束后,将当次攻击的特征集合和本次的攻击实际流量峰值添加到DDoS攻击数据集中迭代训练。

3.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,步骤

1-1)中根据检测算法得到检测时刻到攻击开始的时间。

4.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,步骤

1-1)中,所述攻击前设定时间段是指在攻击时刻之前,不包括其他攻击流量且能刻画受害系统在无攻击状态下的流量特征的一段时间,若在此时间段内有攻击发生,则将攻击流量剔除。

5.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,所述攻击流量特征为:A.srcIP.entropy,A.dstPort.entropy,A.traffic.avg,A.pktSize.avg,A.pktSize.entropy,A.port.proportion,A.withoutPort.proportion;所述正常流量特征为:N.srcIP.entropy,N.dstPort.entropy,N.traffic.avg,N.pktSize.avg,N.pktSize.entropy,N.port.proportion,N.withoutPort.proprotion;其中,A代表攻击时刻流量对应的攻击流量特征,N来代表正常时刻流量对应的正常流量特征,srcIP.entropy表示系统在受攻击时所接收到的数据包的源地址IP组成的集合的熵值,dstPort.entropy表示系统在受攻击时所接收到的数据包对应的目的地址端口组成集合的熵值,traffic.avg表示系统在受攻击时所接收到的流量的平均大小,pktSize.avg表示系统在受攻击时所接收到的数据包的平均大小,pktSize.entropy表示系统在受攻击时所接收到的数据包大小的熵值,port.proportion表示系统在受攻击时所接收到的数据包中,包含端口信息部分所占总体的比例,withoutPort.proportion表示系统在受攻击时所接收道的数据包中,不包含端口信息部分所占总体的比例。

6.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,步骤

1-3)中计算每次攻击的全部流量中的流量峰值时使用的是该次攻击从攻击开始到攻击结束的全部流量,流量大小根据每秒接收到的数据包数量来衡量,找到从攻击开始到攻击结束的整个阶段中的流量峰值作为结果。

7.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,步骤

1-4)中所述机器学习方法包括集成学习算法或神经网络深度学习算法。

8.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,步骤

2)包括以下步骤:

2-1)从数据库中提取攻击前设定时间段内的正常流量特征,并抽取从检测时刻到攻击开始的时间内的流量作为攻击时刻流量并计算攻击流量特征;

2-2)将攻击时刻流量按照时间戳等分,并将攻击时刻流量中包含的数据包按照时间戳分入对应的时间区间,计算每一份中的数据包的数量,得到攻击时刻流量所在的时间段内的流量增长模式特征;

2-3)将步骤2-1)和2-2)得到的特征拼接后输入到已经训练好的模型中,输出预测得到的本次攻击流量峰值。

9.如权利要求1所述的基于机器学习的DDoS攻击流量峰值预测方法,其特征在于,步骤

2)中抽取新的DDoS攻击对应特征集合与步骤1)中利用DDoS攻击数据集抽取每次攻击对应的用于描述当次攻击的特征集合的方法是一致的。

说明书 :

一种基于机器学习的DDoS攻击流量峰值预测方法

技术领域

[0001] 本发明涉及一种DDoS攻击中的流量峰值预测方法,具体涉及一种基于机器学习的DDoS攻击流量峰值预测方法,属于计算机应用技术领域。

背景技术

[0002] DDoS攻击的目的是通过一定手段阻止系统服务于其他正常用户。往往可采用两种形式,一种是利用系统和软件漏洞,将精心构造的数据包发送给系统,造成系统异常崩溃或重启,另一种就是洪范攻击,通过操控被攻击者控制的机器发送大量数据包给目标系统,利用无用的信息去耗尽系统的服务器资源或者带宽,使得正常用户的数据包无法被处理甚至接收。最终导致系统无法响应正常用户。对于第一种利用系统漏洞的攻击方式,我们可以找出系统漏洞并修复从而做到防护。但是第二种攻击涉及方面很多,有多种攻击方法,因此目前对于洪范式攻击并没有十分有效的解决措施。
[0003] DDoS攻击很早之前就被提出,但是如今仍然给互联网造成了十分严重的安全威胁。一次典型的DDoS攻击中包含四个方面的要素:1.攻击者;2.跳板机(为了隐藏攻击者的身份可能会有好几级跳板机),该类型的机器一般用于控制僵尸网络(实际发起攻击的机器群),向僵尸网络发起攻击命令;3.实际用来攻击的机器群,一般属于僵尸网络;4.被攻击的受害系统。对DDoS攻击应急响应的关键是及时发现攻击并加以防护。目前,现有的检测算法已十分成熟,但对于DDoS的防护措施却并不完善。主要的防护方案有以下两种:
[0004] 1.区分正常流量和攻击流量,可根据用户的不同行为、统计特征等进行区分,但是该方式由于用户行为的多样性,结果并不可靠,也可以通过认证的方式来让所有用户付出一定代价,例如计算,验证码等方式,但是这种方式会影响用户的使用体验。而且目前已经有很多可以自动识别验证码的算法,该种方式也就随之失效。
[0005] 2.在固定的地点部署昂贵的机群,通过一定的路由策略来分散攻击流量从而减小甚至消除攻击带来的损失。但是如何快速且有效的选取路由策略暂时没有好的解决办法。并且随着路由策略的变化,攻击者也会调整自己的攻击模式从而使得路由策略失效,或者选取了较差的路径,从而使得防护效果降低甚至失效。

发明内容

[0006] 针对上述问题,本发明提供了一种基于机器学习的DDoS攻击流量峰值预测方法,通过对DDoS攻击流量最大值的预测,从而可以参照预测结果根据机群部署情况选取适当的路由策略,从而最大的降低攻击带来的损失。
[0007] 为了实现上述目的,本发明采用以下技术方案:
[0008] 一种基于机器学习的DDoS攻击流量峰值预测方法,包括:
[0009] 1)利用现有的DDoS攻击数据集抽取每次攻击对应的用于描述当次攻击的特征集合,并在对应受害系统所接收到的流量中提取每次攻击的流量峰值,利用机器学习方法训练模型;
[0010] 2)检测到新的DDoS攻击时,抽取其对应特征集合并将其输入到已训练好的模型中,预测得到本次攻击流量峰值。
[0011] 进一步,上述方法还包括:在每一次新的DDoS攻击结束后,将当次攻击的特征集合和本次的攻击实际流量峰值添加到现有的DDoS攻击数据集中迭代训练,从而使得用于预测的训练模型能不断适应新的攻击类型。
[0012] 进一步,步骤1)具体包括:
[0013] 1‐1)针对DDoS攻击数据集中的每次攻击,在对应受害系统所接收到的流量中提取从检测时刻到攻击开始的时间内发往受害系统的流量作为攻击时刻流量,并在对应受害系统所接收到的流量中抽取出攻击前设定时间段内该受害系统接收的流量作为正常时刻流量。
[0014] 1‐2)对于每次攻击,分别计算攻击时刻流量和正常时刻流量对应的攻击流量特征和正常流量特征。
[0015] 1‐3)将攻击时刻流量按照时间戳等分,并将攻击时刻流量中包含的数据包按照时间戳分入对应的时间区间,计算每一份中的数据包数量,得到该段时间内的流量增长模式特征,计算出每次攻击的全部流量中的峰值作为预测结果。
[0016] 1‐4)将DDoS攻击数据集每个攻击的上述三组特征(即攻击流量特征,正常流量特征和流量增长模式特征)拼接,形成对应每个攻击的特征集合,将步骤1-3)得到的预测结果利用机器学习方法训练,得到训练模型。
[0017] 进一步,步骤1-1)中根据现有的检测算法得到检测时刻到攻击开始的时间,检测算法可以根据系统的实际情况去选择对于该系统而言检测率最高且最快的算法。根据选择的算法不同,检测点距离攻击开始的时间也不尽相同。我们假设对于攻击A,该检测算法可以在t秒内检测到攻击,且攻击开始的时刻为Ts,我们取Ts到Ts+t的时间内的流量作为攻击时刻流量来进行接下来的特征抽取和训练。
[0018] 进一步地,步骤1-1)中,攻击前设定时间段是指在攻击时刻之前,不包括其他攻击流量且能刻画受害系统在无攻击状态下的流量特征的一段时间,若在此时间段内有攻击发生,则将攻击流量剔除,且需保证和实际检测时抽取方式对应,例如都为攻击前一天。
[0019] 为了区分正常时刻流量对应的特征,我们用A来代表攻击流量特征,具体特征为:
[0020] a)A.srcIP.entropy:系统在受攻击时所接收到的数据包的源地址IP组成的集合的熵值。该值用以描述攻击者控制的机器的规模,以及是否使用源地址欺骗。
[0021] b)A.dstPort.entropy:系统在受攻击时所接收到的数据包对应的目的地址端口组成集合的熵值。该值用以描述攻击者的攻击策略,是耗尽系统带宽(端口无需固定,或者不包括服务开放端口)还是系统服务器的资源(攻击服务开放端口)。
[0022] c)A.traffic.avg:系统在受攻击时所接收到的流量的平均大小,用平均每秒的包数来粗略刻画本次攻击的流量大小。
[0023] d)A.pktSize.avg:系统在受攻击时所接收到的数据包的平均大小,用来协助判断本次攻击类型是基于网络传输协议类型攻击还是应用层的攻击。
[0024] e)A.pktSize.entropy:系统在受攻击时所接收到的数据包大小的熵值。
[0025] f)A.port.proportion:系统在受攻击时所接收到的数据包中,包含端口信息部分所占总体的比例。
[0026] g)A.withoutPort.proportion:系统在受攻击时所接收到的数据包中,不包含端口信息部分所占总体的比例。
[0027] 正常流量特征为:N.srcIP.entropy,N.dstPort.entropy,N.traffic.avg,N.pktSize.avg,N.pktSize.entropy,N.port.proportion,N.withoutPort.proprotion。我们用N来代表利用正常时刻流量计算出的特征,对应的特征描述以及计算方法与攻击时刻流量对应的特征相一致,只是所使用流量数据为正常时刻流量。
[0028] 进一步,步骤1-2)中计算攻击流量特征时,在实际训练模型的时候可以直接在DDoS攻击数据集中存储特征以及其对应流量峰值,而不用存储实际的流量,这样可以节省大量的存储空间,同样,计算正常流量特征时,在实际使用的时候也可以不存储流量,在数据集中只将当天对应的特征向量存储即可。
[0029] 进一步,步骤1-3)中计算每次攻击的全部流量中的流量峰值时使用的是该次攻击从攻击开始到攻击结束的全部流量,流量大小根据每秒接收到的数据包数量来衡量,找到从攻击开始到攻击结束的整个阶段中的流量峰值作为结果。
[0030] 进一步,步骤1-4)中的机器学习方法可以是集成学习算法或其他算法,例如使用神经网络等深度学习算法。
[0031] 进一步,步骤2)包括以下步骤:
[0032] 2‐1)从数据库中提取攻击前设定时间段内的正常流量特征(即7维特征向量:N.srcIP.entropy,N.dstPort.entropy,N.traffic.avg,N.pktSize.avg,
N.pktSize.entropy,N.port.proportion,N.withoutPort.proprotion),并抽取从检测时刻到攻击开始的时间内的流量作为攻击时刻流量并计算攻击流量特征(即7维特征向量:
A.srcIP.entropy,A.dstPort.entropy,A.traffic.avg,A.pktSize.avg,
A.pktSize.entropy,A.port.proportion,A.withoutPort.proprotion)。
[0033] 2‐2)将攻击时刻流量按照时间戳等分,并将攻击时刻流量中包含的数据包按照时间戳分入对应的时间区间,计算每一份中的数据包的数量,得到该段时间内的流量增长模式特征。
[0034] 2‐3)将步骤2-1)和2-2)得到的特征拼接后输入到已经训练好的模型中,输出预测得到的本次攻击流量峰值。
[0035] 进一步,在步骤2-1)中攻击前设定时间段内的流量特征可以在设定时间结束时进行计算并存储好,从而避免存储过多的流量数据。由于该组特征用于描述本系统在无攻击时的正常状态,访问量等,因此如果在设定时间段内就有DDoS攻击发生则需要把该次攻击的攻击时间内的流量都排除掉作为正常的流量来计算该组特征从而避免上次攻击对本次攻击预测产生影响。
[0036] 进一步,步骤2-1)中的攻击开始时间是根据检测算法而变化的,使用不同的检测算法会导致检测时间距离攻击开始的时间变化。因此根据系统实际使用的DDoS检测算法和本次攻击的情况可以估算检测点距离攻击开始的时间t,假设检测到的时间为Td,则Ts=Td–t,我们取得Ts到Td的时间作为攻击时间,然后利用这段时间的流量去计算我们需要的特征。
[0037] 进一步,对于步骤2-3),在本次攻击结束之后,我们可以把本次攻击特征及其实际流量峰值作为新的一条训练集插入到原有训练集中,重新训练,建立模型,这样我们的模型可以不断适应新类型的DDoS攻击,有更好的适应性。
[0038] 进一步,步骤2)中抽取新的DDoS攻击对应特征集合与步骤1)中利用现有的DDoS攻击数据集抽取每次攻击对应的用于描述当次攻击的特征集合的方法是一致的。例如,步骤2-1)中所述攻击前设定时间段与步骤1-1)中所述攻击前设定时间段是相同的(如都设为攻击前一天);步骤2-2)中的时间区间和每个区间对应的数据包数量的计算与步骤1-3)中也是相对应的。
[0039] 本发明的有益效果如下:
[0040] 如上所述,本发明利用已有的DDoS数据集,对于每次攻击,抽取可以描述这次攻击行为的特征集,结合受害系统本身的特征集合,利用机器学习方法对此次攻击的流量峰值进行预测。

附图说明

[0041] 图1本发明的系统结构图
[0042] 图2本发明的模型训练流程图
[0043] 图3本发明的预测流程图

具体实施方式

[0044] 下面结合实施例和附图进一步阐述本发明所述的技术方案。
[0045] 实施例
[0046] 如图1所示本系统主要分为两个部分,第一部分为模型训练第二部分为流量预测。在模型训练部分,本系统利用已有的DDoS数据集进行特征抽取并利用集成学习的方法进行训练。在流量预测部分,当检测到DDoS攻击后,将对应攻击流量输入特征提取模块抽取攻击时刻特征集合,并将正常的流量特征集合与攻击特征集合拼接,共同输入到已训练好的模型中,最终模型根据特征集合输出预测结果。
[0047] 在训练阶段,根据图2,首先找取公开的现有DDoS攻击流量数据集,在本实施例中采用的是MIT DARPA1998DataSet。抽取90%数据作为训练数据,针对训练数据中的每一次攻击i抽取从攻击开始到检测到攻击的时间T(i)秒的流量作为攻击时刻流量,T(i)的计算取决于所使用的检测DDoS的算法。并在数据集中抽取该次攻击对应的受害系统在一天之前(例如2008.4.5日晚上20点发生DDoS攻击,我们使用的是2008.4.4日的全部正常流量,而非2008.4.420:00至2008.4.520:00的流量)的流量作为正常时刻流量。
[0048] 处理攻击时刻流量抽取攻击阶段的7维特征向量:
[0049] a)A.srcIP.entropy:系统在受攻击时所接收到的数据包的源地址IP组成的集合的熵值。
[0050] b)A.dstPort.entropy:系统在受攻击时所接收到的数据包对应的目的地址端口组成集合的熵值。
[0051] c)A.traffic.avg:系统在受攻击时所接收到的流量的平均大小,用(包/秒)刻画。
[0052] d)A.pktSize.avg:系统在受攻击时所接收到的数据包的平均大小。
[0053] e)A.pktSize.entropy:系统在受攻击时所接收到的数据包大小组成集合的的熵值。
[0054] f)A.port.proportion:系统在受攻击时所接收到的数据包中,包含端口信息部分所占总体的比例。
[0055] g)A.withoutPort.proportion:系统在受攻击时所接收道的数据包中,不包含端口信息部分所占总体的比例。
[0056] 根据攻击开始时间和结束时间,将整个时间段平均分成10份,计算每一份中的数据包数量,形成一个10维行向量,用来粗略描述在这段时间内的流量增长模式。例如:攻击从00:00:00开始,到00:10:00检测到,按照时间戳平均分成以下十份00:00:00~00:01:00,00:01:00~00:02:00,00:02:00~00:03:00,00:03:00~00:04:00,00:04:00~00:05:00,
00:05:00~00:06:00,00:06:00~00:07:00,00:07:00~00:08:00,00:08:00~00:09:00,
00:09:00~00:10:00。将攻击流量中的数据包,按照时间戳分配到对应的时间段内,例如
00:00:45的时间戳的数据包要分入00:00:00~00:01:00段中,如是共形成一个10维向量,第i维代表在第i个时间段发来的数据包的数量。
[0057] 利用正常时刻的流量,抽取正常时刻的7维特征向量:
[0058] a)N.srcIP.entropy:系统在未受到攻击时所接收到的数据包的源地址IP组成的集合的熵值。
[0059] b)N.dstPort.entropy:系统在未受到攻击时所接收到的数据包对应的目的地址端口组成集合的熵值。
[0060] c)N.traffic.avg:系统在未受到攻击时所接收到的流量的平均大小,用(包/秒)刻画。
[0061] d)N.pktSize.avg:系统在未受到攻击时所接收到的数据包的平均大小。
[0062] e)N.pktSize.entropy:系统在未受到攻击时所接收到的数据包大小组成集合的的熵值。
[0063] f)N.port.proportion:系统在未受到攻击时所接收到的数据包中,包含端口信息部分所占总体的比例。
[0064] g)N.withoutPort.proportion:系统在未受到攻击时所接收道的数据包中,不包含端口信息部分所占总体的比例。
[0065] 在计算完所有特征(包括7维攻击时刻特征,10维流量增长模式特征,7维正常时刻特征)之后,根据对应攻击的全部流量计算出该次攻击的实际流量峰值作为预测结果,然后将特征集合和预测结果输入到基于SMOreg的AdditiveRegression模型中进行训练。保存训练好的模型。
[0066] 首先从数据集抽取剩余10%数据作为测试数据,根据图3,在数据集中中将测试数据集中的对应受害系统前一天对应的正常流量取出,用于计算正常时刻的特征向量(N.srcIP.entropy,N.dstPort.entropy,N.traffic.avg,N.pktSize.avg,N.pktSize.entropy,N.port.proportion,N.withoutPort.proprotion)。然后根据攻击检测到DDoS攻击的时间Td和检测算法,推测攻击开始时间Ts,取得Ts到Td的流量作为攻击时刻流量,根据攻击时刻流量计算如下特征:
[0067] a)A.srcIP.entropy:系统在受攻击时所接收到的数据包的源地址IP组成的集合的熵值。
[0068] b)A.dstPort.entropy:系统在受攻击时所接收到的数据包对应的目的地址端口组成集合的熵值。
[0069] c)A.traffic.avg:系统在受攻击时所接收到的流量的平均大小,用(包/秒)刻画。
[0070] d)A.pktSize.avg:系统在受攻击时所接收到的数据包的平均大小。
[0071] e)A.pktSize.entropy:系统在受攻击时所接收到的数据包大小组成集合的的熵值。
[0072] f)A.port.proportion:系统在受攻击时所接收到的数据包中,包含端口信息部分所占总体的比例。
[0073] g)A.withoutPort.proportion:系统在受攻击时所接收道的数据包中,不包含端口信息部分所占总体的比例。
[0074] h)根据攻击开始时间和结束时间,将整个时间段平均分成10份,将攻击流量中的数据包,按照时间戳分配到对应的时间段内,如是共形成一个10维向量,第i维代表在第i个时间段发来的数据包的数量。
[0075] 在特征都计算完成之后,按照训练时使用顺序将计算好的特征拼接好,输入到已经训练好的模型当中,输出预测结果,根据预测结果选择合适的防护策略。
[0076] 在DDoS攻击结束之后,将计算好的流量和本次攻击的实际流量峰值保存到DDoS数据集中,迭代训练,从而可以使得本算法有更好的适应性。
[0077] 以上便完成了DDoS攻击流量最大值的预测任务。
[0078] 尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。