发明内容
有鉴于此,本申请的目的在于提供一种僵尸网络的检测方法及装置,以提高对多样化的僵尸网络的检测效果。
第一方面,本申请实施例提供了一种僵尸网络的检测方法,包括:
从网络上抓取第一待测网络数据包;
按照预先训练的随机森林条件熵模型,对所述第一待测网络数据包进行检验,滤掉由所述随机森林条件熵模型检测出的僵尸网络第一疑似数据包;
按照预先训练的四元组模型和二元组模型,对滤掉所述僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,按照以下方式得到所述随机森林条件熵模型:
按照时间顺序对网络流量进行采样获取第一网络数据包,并按照预定个数,对依次采样得到的第一网络数据包进行分组,得到若干第一网络数据包组;
针对任一第一网络数据包组,确定该任一第一网络数据包组中所有第一网络数据包的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵;
确定所述任一第一网络数据包组中的正常数据包与异常数据包的比值,根据所述比值与预设阈值确定所述任一第一网络数据包组的属性,所述属性包括异常和正常;
将各个第一网络数据包组中的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵以及目的端口关于目的IP地址的条件熵组成的特征向量作为输入端,将各个第一网络数据包组的属性作为为输出端,对随机森林模型进行训练后得到所述随机森林条件熵模型。
结合第一方面,本申请实施例提供了第一方面的第二种可能的实施方式,按照以下方式训练所述四元组模型:
对网络流量进行采样获取第二网络数据包,将获取的第二网数据包分组后得到多个第二网络数据包组;
对每个第二网络数据包组,按照源IP地址、目标IP地址、目标端口和传输层协议提取设定维度的特征值,组成该第二网络数据包组的特征向量;
以各第二网络数据包组的特征向量作为输入端,以相应各第二网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到所述四元组模型,所述第二网络数据包组的属性包括异常和正常。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第三种可能的实施方式,按照以下方式确定所述第二网络数据包组的属性:
依次提取所述第二网络数据包组中的第二网络数据包的源IP地址和目的IP地址;
按照预先建立的僵尸样本库,对提取的所述源IP地址和所述目的IP地址进行比对;
若确定存在至少一个源IP地址或目标IP地址与所述僵尸样本库中的任一IP地址相同,则确定所述第二网络数据包组的属性为异常,否则为正常。
结合第一方面,本申请实施例提供了第一方面的第四种可能的实施方式,按照以下方式训练所述二元组模型:
对网络流量进行采样获取第三网络数据包,将获取的第三网数据包分组后得到多个第三网络数据包组;
对每个第三网络数据包组,按照源IP地址和源端口、目标IP地址和目标端口提取设定维度的特征值,组成该第三网络数据包组的特征向量;
以各第三网络数据包组的特征向量作为输入端,以相应各第三网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到所述二元组模型,所述第三网络数据包组的属性为正常和异常。
结合第一方面,本申请实施例提供了第一方面的第五种可能的实施方式,所述按照预先训练的随机森林条件熵模型,对所述第一待测网络数据包进行检验,滤掉由所述随机森林条件熵模型检测出的僵尸网络第一疑似数据包,包括:
按照第一设定个数,对所述第一待测网络数据包进行分组,得到若干个第一待测网络数据包组;
确定任一第一待测网络数据包组中源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵,并组成三维条件熵特征向量;
将任一所述第一待测网络数据包组的所述三维条件熵特征向量输入所述随机森林条件熵模型,确定该任一第一待测网络数据包组的属性是否异常;
若是,确定所述任一第一待测网络数据包组为所述僵尸网络第一疑似数据包,并将所述任一第一待测网络数据包组进行过滤。
结合第一方面,本申请实施例提供了第一方面的第六种可能的实施试方式,所述按照预先训练的四元组模型和二元组模型,对滤掉所述僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包,包括:
按照第二设定个数,对所述第二待测网络数据包进行分组,得到多个第二待测网络数据包组;
确定每个第二待测网络包组的四元特征向量和二元特征向量;
将每个所述第二待测网络包组的四元特征向量输入所述四元组模型,得到僵尸网络第三疑似数据包;
将每个所述第二待测网络包组的二元特征向量输入所述二元组模型,得到僵尸网络第四疑似数据包;
提取出所述僵尸网络第三疑似数据包和所述僵尸网络第四疑似数据包,得到所述僵尸网络第二疑似数据包。
第二方面,本申请实施例提供了一种僵尸网络的检测装置,包括:
抓取模块,用于从网络上抓取第一待测网络数据包;
第一检验模块,用于按照预先训练的随机森林条件熵模型,对所述第一待测网络数据包进行检验,滤掉由所述随机森林条件熵模型检测出的僵尸网络第一疑似数据包;
第二检验模块,用于按照预先训练的四元组模型和二元组模型,对滤掉所述僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包。
结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,还包括第一训练模块,所述第一训练模块按照以下方式得到所述随机森林条件熵模型:
按照时间顺序对网络流量进行采样获取第一网络数据包,并按照预定个数,对依次采样得到的第一网络数据包进行分组,得到若干第一网络数据包组;
针对任一第一网络数据包组,确定该任一第一网络数据包组中所有第一网络数据包的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵;
确定所述任一第一网络数据包组中的正常数据包与异常数据包的比值,根据所述比值与预设阈值确定所述任一第一网络数据包组的属性,所述属性包括异常和正常;
将各个第一网络数据包组中的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵以及目的端口关于目的IP地址的条件熵组成的特征向量作为输入端,将各个第一网络数据包组的属性作为为输出端,对随机森林模型进行训练后得到所述随机森林条件熵模型。
结合第二方面,本申请实施例提供了第二方面的第二种可能的实施方式,还包括第二训练模块,所述第二训练模块按照以下方式训练所述四元组模型:
对网络流量进行采样获取第二网络数据包,将获取的第二网数据包分组后得到多个第二网络数据包组;
对每个第二网络数据包组,按照源IP地址、目标IP地址、目标端口和传输层协议提取设定维度的特征值,组成该第二网络数据包组的特征向量;
以各第二网络数据包组的特征向量作为输入端,以相应各第二网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到所述四元组模型,所述第二网络数据包组的属性包括异常和正常。
与现有技术相比,本申请实施例将从网络上抓取第一待测网络数据包;按照预先训练的随机森林条件熵模型,对所述第一待测网络数据包进行检验,滤掉由所述随机森林条件熵模型检测出的僵尸网络第一疑似数据包;按照预先训练的四元组模型和二元组模型,对滤掉所述僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包。
这样对于第一待测网络数据包,可以先通过随机森林条件熵模型对其进行检验,确定出该第一待测数据包中的僵尸网络第一疑似数据包,进而通过四元组模型和二元组模型对剩余的待测网络数据包进行僵尸网络监测,得到僵尸网络第二疑似数据包,这样能够通过不同的僵尸网络检测模型对待测数据包进行检测,从而检测出不同攻击手段的僵尸网络。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例1
本申请实施例1提供了一种僵尸网络的检测方法,如图1所示,为该方法的流程示意图,具体步骤包括S100~S130:
S100,从网络上抓取第一待测网络数据包。
这里的网络是指需要进行僵尸网络检测的网络,通过抓取网络中通过的第一待测网络数据包,检测该第一待测网络数据包的属性从而确定第一待测网络数据包是否为僵尸网络数据包,以及存在几种僵尸网络数据包。
单位时间内通过的数据包可以表示流量,本申请实施例中,通过网络数据包来衡量网络流量情况,如果确定网络中存在僵尸网络数据包,则可以确定网络中存在攻击流量,通过分析僵尸网络数据包携带的信息,则可以确定网络中的攻击流量的攻击方,这里的信息包括源IP地址、目的IP地址和目的端口等。
S110,按照预先训练的随机森林条件熵模型,对第一待测网络数据包进行检验,滤掉由随机森林条件熵模型检测出的僵尸网络第一疑似数据包。
其中,按照以下方式得到随机森林条件熵模型,如图2所示,具体包括以下步骤S200~S230:
S200,按照时间顺序对网络流量进行采样获取第一网络数据包,并按照预定个数,对依次采样得到的第一网络数据包进行分组,得到若干第一网络数据包组。
随机森林条件熵模型能够识别分布式拒绝服务攻击,首先按照时间顺序对网络流量进行采样,这里的网络流量是指第一网络数据包,这些第一网络数据包包括正常数据包和异常数据包,在采样过程中,每个第一网络数据包的属性是提前已知的。
这里对依次采样得到的第一网络数据包进行分组,得到若干第一网络数据包组,在经过多次试验后,发现以100个第一网络数据包为一组进行分组效果最佳,规定100为第一网络数据包的单位窗长。
S210,针对任一第一网络数据包组,确定该任一第一网络数据包组中所有第一网络数据包的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵。
首先引入定义一:变量Y关于变量X的条件熵通过以下公式(1)进行定义:
H(Y|X)=∑ip(xj)∑ip(yi|xj)log2(p(yi|xj) (1)
其中,p(yi|xj)为yi关于xj的后验概率。
令sip,dip,dport分别表示源IP地址、目的IP地址和目的端口,使用H(sip|dip),H(sip|dport),H(dport|dip)这3个条件熵来分别表征分布式拒绝服务攻击的3中多对一映射的特点,这三个条件熵所组成的熵称为流特征条件熵(FCE),FCE直观地度量了sip相对于dip、sip相对于dport、dport相对于dip的发散性,即不确定程度。
下面以H(sip|dip)为例,FCE的计算方法如下:
设一次采样的第一网络数据包总数为s,这些第一网络数据包中不同的源IP地址集合为{sipi|i=1,2,...,N},不同的目的地址集合为{dipj|j=1,2,...M},定义M维矩阵A[M],其中A[j]表示目的IP地址为dipj的报文个数。定义N×M维的矩阵B[N][M],其中B[i][j]表示源IP地址为sipi、目的地址为dipj的报文个数,则有公式(2)可以得到:
其中,p[dipj]表示目的IP地址为dipj的报文集合在报文总数中所占的比率,p[sipi|dipj]表示目的IP地址为dipj的报文集合中,源IP地址为sipi的报文所占比率,同理可以计算得到H(sip|dport)和H(dport|dip],在此不再赘述。
下面仍然以H(sip|dip)为例,进行接收FCE能够有效地反应分布式拒绝服务攻击:
由公式(2)可以得到以下公式(3):
其中,
因此,H(sip|dip)可以表示为H(sip|dipj)的加权和,设被攻击主机的IP地址为dip
k。一方面,攻击者采用的源IP地址越多,在目的IP地址为dip
k的报文集合中,源IP地址的分布就越分散,进一步,公式(3)中的项H(sip|dip
k)越大,H(sip|dip)就越大,因此条件熵能够描述分布式拒绝服务攻击多对一映射的特点,另一方面,攻击流量越大,
就越大,即项H(sip|dip
k)的权值w
k越大,由于大多数分布式拒绝服务攻击中的数据包的源IP地址比正常数据包中的源IP地址更趋向分散,有H(sip|dip
k)>H(sip|dip
t),t≠k,从而可以推算出H(sip|dip)越大,因此条件熵能够反映分布式拒绝服务攻击流量的增长,其中,正常主机的IP地址为dip
t,则H(sip|dip
t)表示正常网络情况下源IP地址关于目的IP地址的条件熵。
通过对正常流量、分布式拒绝服务攻击的异常流量的不同类别的条件熵值进行对比发现,相对于正常流量,分布式拒绝服务攻击会使用大量的僵尸主机,或产生大量虚假源IP地址实施攻击,所以分布式拒绝服务攻击中异常流量的目的IP地址熵值较小,原IP地址熵值较大;分布式拒绝服务攻击针对系统资源攻击时,会向目标机请求多项服务,随机产生不同的目的端口号,同时向多个端口进行洪水攻击,这使得目的端口更分散,目的IP地址更集中,所以异常流量的目的IP熵值较小,目的端口熵值较大。分布式拒绝服务攻击针对目标机的某个服务进行攻击时,将向目标机的固定端口发送大量数据包,这使得目标端口更加集中,源IP地址更加分散,所以异常流量的目的端口熵值较小,源IP地址熵值较大。
所以鉴于正常流量和异常流量的不同属性在分布特征上的明显差异,可以将异常流量的检测问题转换为一个基于流量属性熵值的分类问题。
这里的流量可以用数据包个数进行说明,数据包即第一网络数据包,在以100个第一网络数据包为单位进行分组时,记为Si={s1,s2,...,s100},然后针对每个第一网络数据包组,分别计算该第一网络数据包组中源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵,并将每个第一网络数据包组表示为一个包含3个条件熵的向量,记为公式(4):
Vi=(α1,α2,α3) (4)
其中,α1到α3分别表示H(sip|dip),H(sip|dport),H(dport|dip)的条件熵值,Vi表示第i个第一网络数据包组的流特征条件熵值向量。
S220,确定任一第一网络数据包组中的正常数据包与异常数据包的比值,根据比值与预设阈值确定任一第一网络数据包组的属性,该属性包括异常和正常。
通过第一个第一网络数据包组为例进行说明,因为第一个第一网络数据包组中的正常数据包与异常数据包是提前知道的,则可以确定正常数据包与异常数据包的比值,假如提前确定设定正常数据包与异常数据包比值的预设阈值为0.5,则当第一个第一网络数据包组中正常的第一网络数据包与异常的第一网络数据包的比值大于或等于0.5时,记为第一网络数据包组的属性为正常Y1,当第一个第一网络数据包组中正常的第一网络数据包与异常的第一网络数据包的比值小于0.5时,记为第一网络数据包组的属性为异常Y0。
S230,将各个第一网络数据包组中的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵以及目的端口关于目的IP地址的条件熵组成的特征向量作为输入端,将各个第一网络数据包组的属性作为为输出端,对随机森林模型进行训练后得到随机森林条件熵模型。
以上述采集的样本为例,比如第一个第一网络数据包组中的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵以及目的端口关于目的IP地址的条件熵组成的特征向量为V1=(α1,α2,α3),且第一个第一网络数据包组的属性为Y1,同理一直确定出第二个第一网络数据包组的特征特征向量V2=(α1,α2,α3),以及对应的属性直至确定出全部的第一网络数据包组的特征向量以及对应的属性。
至此,当确定出全部的第一网络数据包组的特征向量以及对应的属性后,引入随机森林模型,并以各个第一网络数据包组中的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵以及目的端口关于目的IP地址的条件熵组成的特征向量作为输入端,以各个第一网络数据包组的属性作为为输出端,对该随机森林模型进行训练后得到随机森林条件熵模型。
此外,在训练得到随机森林条件熵模型后,可以另外选取多组已知属性的第一网络数据包组,将这些第一网络数据包组的三维条件熵特征向量代入该随机森林条件熵模型,得到这些第一网络数据包组的测试属性,将这些测试属性与真实的属性相比,确定该随机森林条件熵模型的准确率,当准确率较低时,比如准确率低于设定阈值时,重新训练随机森林条件熵模型,直到获取到较高准确率的随机森林条件熵模型。
众多的第一网络数据包组的特征向量以及对应的属性构成随机森林模型的样本集,其中已知属性的样本通可以用来构造随机森林条件熵模型的训练集,未知类型的样本则可以构成测试集,其中,随机森林模型训练过程如下:
随机森林模型中随机树的每个节点可以看成一个弱分类器,对到达该节点的训练样本集Ω计算得到一个分类准则h(x,θ)∈{0,1},x∈RM表示一个训练样本,θ={φ,ψ}为这个弱分类器的参数,其中φ(.)为筛选函数,ψ为参数列向量或者参数矩阵,θ决定了弱分类器的分类超平面的样式。
当样本满足h(x,θ)=1,落入左子树,为异常流量,反之落入右子树,为正常流量,递归下去直至落入节点的样本个数低于阈值,或者达到规定的最大深度,递归结束后,这个节点称作叶子节点。在每个节点处找到“最优”的系数θ*,使得训练样本取得最佳效果,如式(5)所示:
θ*=argmaxIG(θj|Ω),θj∈Γsub; (5)
其中,Γsub为完整参数空间Γ的子集,对于每个节点Γsub都是从Γ中随机选择,从而体现节点分裂过程中的随机性,IG(.)表示信息增益,衡量分裂后样本不纯度的下降幅度。
定义如式(6)所示如下:
其中,
表示落入该节点的所有样本的集合,|Ω|=N,Ω
l(θ)和Ω
r(θ)分别表示在参数θ下落如左右子节点的样本集,H(Ω)表示落入一个节点的样本集的不纯度,用信息熵来表示,如式(6)所示。
其中,NC为样本类别个数,p(c|Ω)表示的样本集Ω中类别c所占的比例。
当两个类别的比例越接近,信息熵就越大,即表明此时节点的不纯度高,由式(7)可知,每个节点的“最优”参数θ*应使及节点的分裂后不纯度下降度最大,这个参数是从Γsub中选取。
随机森林模型预测过程如下:
随机森林模型训练结束后,测试样本x经过每棵树到达某个叶子节点,那么样本x属于c的概率如式(8)所示:
其中,T为随机森林模型中树的数量,pt(c|x)为叶子节点的类别分布,那么对于x类别的决策如式(9)所示:
c=argmaxp(c|x),c∈{1,...Nc}; (9)
随机森林模型的分类过程是一种多数投票过程,分类结果由分类器投票决定。
步骤S110中,按照预先训练的随机森林条件熵模型,对第一待测网络数据包进行检验,滤掉由随机森林条件熵模型检测出的僵尸网络第一疑似数据包,如图3所示,具体包括如下步骤S300~S330:
S300,按照第一设定个数,对第一待测网络数据包进行分组,得到若干个第一待测网络数据包组。
比如,将24小时内获得的第一待测网络数据包按照100个为一组进行分组,得到确定个数的第一待测网络数据包组。
S310,确定任一第一待测网络数据包组中源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵,并组成三维条件熵特征向量。
根据公式(1)确定出每一个第一待测网络数据包中源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵,并将这三个条件熵组成三维条件熵特征向量,如Vi=(α1,α2,α3),这里Vi表示第i个第一待测网络数据包组的三维条件熵特征向量。
S320,将任一第一待测网络数据包组的三维条件熵特征向量输入随机森林条件熵模型,确定该任一第一待测网络数据包组的属性是否异常。
将每个第一待测网络数据包组的三维条件熵特征向量依次输入到随机森林条件熵模型后,根据随机森林条件熵模型能够依次确定出对应的一待测网络数据包组的属性,比如是Y1还是Y0。
S330,若是,确定任一第一待测网络数据包组为僵尸网络第一疑似数据包,并将任一第一待测网络数据包组进行过滤。
因为规定了Y1对应的第一待测网络数据包组的属性为正常,Y0对应的第一待测网络数据包组的属性为异常,则将属性为异常的第一待测网络数据包组确定为僵尸网络第一疑似数据包,将确定为僵尸网络第一疑似数据包过滤掉,留下根据随机森林条件熵模型确定的属性为正常的第一待测网络数据包组。
根据随机森林条件熵模型确定的属性为正常的第一待测网络数据包组也许并不一定是正常的网络数据包,接下来根据其他模型对滤掉所述僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测。
S120,按照预先训练的四元组模型和二元组模型,对滤掉僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包。
具体地,如图4所示,按照以下方式训练四元组模型,具体包括步骤S400~S420:
S400,对网络流量进行采样获取第二网络数据包,将获取的第二网数据包分组后得到多个第二网络数据包组。
这里的网络流量也指网络中流通的数据包个数,这里将获取的第二网络数据包分组是指简单的将采集的第二网络数据包分成若干个样本集,为了便于通过多个样本集训练四元组模型,从而得到较为准确的四元组模型,比如采集了一周的第二网络数据包,那么可以按照每24小时采集的第二网络数据包为一组进行分组,将一周采集的第二网络数据包分成7个第二网络数据包组。
S410,对每个第二网络数据包组,按照源IP地址、目标IP地址、目标端口和传输层协议提取设定维度的特征值,组成该第二网络数据包组的特征向量。
基于四元组模型的僵尸网络分类模型是将第二网络数据包组中的第二网络数据包按照源IP地址、目标IP地址、目标端口和传输层协议作为四元组,利用统计学原理和信息检测技术分别提取组内的41个特征,每个四元组即可用1个41维的特征向量M=(β1,β2,...,β41)表示,特征向量的每一维表示四元组模型的一个特征,利用以上特征构成的样本集训练分类模型,具体特征表述如下:
定义二,平稳度:
设一组样本数据为x1,x2,...,xn,其均值为μ,标准差为σ,则称公式(10)中的S为该向量的平稳度:
以下是41维的特征向量中的41个特征值:
1.平稳度特征(Smoothness):由定义二求得基于四元组数据时间间隔子序列的平稳度S。
2.行为内包大小均值(AvgFlowSize):基于四元组内流的数据包大小平均值。
3.平均每包字节大小(AvgPktSize):基于四元组内流的数据包大小的总和与组内数据包个数的总和的商,计算得到每个数据包的大小均值,计算方法如公式(11):
其中,Sum(pkg_size)表示四元组内流的数据包大小的总和;Sum(pkg_num)表示四元组内数据包个数。
4.行为内不同数据包大小个数(DftFlowSize):四元组内不同数据包大小个数。
DftFlowSize=count(distinct(pkg_size))
5.流行为个数(FlowNumber):基于四元组的数据流个数。
6.正向序列与反向序列长度差(Diff):正向序列是指以源IP地址、目标IP地址、目标端口和传输层协议作为四元组,统计组内行为个数作为正向序列长度。反向序列是指将目标IP地址作为四元组的源IP地址,将源IP地址作为四元组的目标IP地址,将源端口作为四元组的目标端口,传输层协议不变重新构造四元组数据,统计新的四元组组内行为个数作为反向序列长度,求出正反序列长度的差值,以此作为特征值。
7.平均包个数(AvgPkgnum):基于四元组内数据包个数的平均值。
8.每包大小均值(AvgPerPktSize):基于四元组流的数据包大小与流的数据包个数商的平均值。
9:每包大小标准差(StdPerPktSize):基于四元组流的数据包大小与流的数据包个数商的标准差。
10:平均持续时间(AvgDuration):四元组内流的持续时间平均值。
11:平均每毫秒包大小(AvgPkgSizeOfPerMis):基于四元组流数据包大小在毫秒单位时间内的平均值。
12.平均每毫秒包个数(AvgPkgnumOfPerMis):基于四元组流数据包个数在毫秒单位时间内的平均值。
13.支持度(Support):基于四元组内流的个数占所有的待检测流的比例。
14.置信度(confidence):基于四元组内流的个数与源IP地址流的个数的商。
15:每包大小变异系数(cv):每包大小标准差StdPerPktSize与每包大小均值avgPerPktSize的商。
16:行为间全体包大小的偏度值(Skew):基于四元组内流的数据包大小的偏度,其公式为如下公式(12):
其中,X是随机变量,均值为μ,标准差为σ,k2和k3分别表示X的二阶和三阶中心矩。
17.24维小时流量特征:基于四元组统计每个小时内流个数综合占四元组流总数的百分比。
18.组内流量依小时分布最大值(Kurtosis):基于四元组计算24维小时流量特征的最大值。
S420,以各第二网络数据包组的特征向量作为输入端,以相应各第二网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到四元组模型,第二网络数据包组的属性包括异常和正常。
以24小时内采集的第二网络数据包为例,将采集的第二网络数据包分成若干个第二网络数据包组后,确定每个第二网络数据包组的41维特征向量以及相应的属性。
具体地,如图5所示,按照以下方式确定第二网络数据包组的属性,具体步骤包括S500~S520:
S500,依次提取第二网络数据包组中的第二网络数据包的源IP地址和目的IP地址。
S510,按照预先建立的僵尸样本库,对提取的源IP地址和目的IP地址进行比对。
其中僵尸样本库中记录有僵尸网络数据包的信息,如僵尸网络数据包的源IP地址和目的IP地址,将提取的第二网络数据包组中的第二网络数据包的源IP地址和目的IP地址和僵尸样本库中记录的IP地址进行比对,可以确定第二网络数据包是否为僵尸网络数据包。
S520,若确定存在至少一个源IP地址或目标IP地址与僵尸样本库中的任一IP地址相同,则确定第二网络数据包组的属性为异常,否则为正常。
本申请实施例中,若第二网络数据包组中存在至少一个第二网络数据包的源IP地址或目标IP地址与僵尸样本库中的任一IP地址相同,则确定该第二网络数据包组的属性为异常。
其中,XGBoost(eXtreme Gradient Boosting)算法是一种基于梯度Boosting的集成学习算法,其原理是通过弱分类器的迭代计算实现准确的分类效果。
其中,Boosting算法是常用的一种高效的集成学习算法,该算法可以将弱分类器转化为强分类器,具体训练过程如下:
1.对训练集分配权重值,默认情况以相同权重赋值。
2.设定m次数据迭代训练,通过公式(13)得到每次迭代错误率:
其中,wi代表第i个样本的权重,Gm表示第m个弱分类器,yi为第i个样本真实标签,I为指示函数布尔表达式为真时等于1,否则为0,em第m次迭代错误率。
4.将训练集特征传入分类器模型Gm,在训练过程中使算法损失函数沿其梯度方向下降,提升其泛华能力,Gm表示第m个弱分类器。
利用Boosting迭代构造弱学习器的方式可以进一步训练传统GBDT算法模型,传统GBTD算法其本质为累加回归模型,以使决策函数的期望损失最小为目标。给定当前模型fm-1(xi),则需要解以下参数模型:
其中
为第m颗树的参数,T(x
i;θ
m)表示决策树,θ
m为决策树参数。
具体训练算法如下:
1.给定训练数集S={(X1,Y1),(X2,Y2),...,(Xn,Yn)};
2.迭代生成回归树模型:
(1)计算残差rmi=yi-fm-1(xi),i=1,2,...,N
其中,yi为样本的真实标签,fm-1(xi)为当前模型预测标签。
(2)拟合残差学习一个回归树,得到T(xi;θm)
(3)更新fm(x)=fm-1(x)+T(x;θm)
3.得到提升树模型fM(x)=T(x;θm)
XGBoost算法则是Gradient Boosting的快速实现算法,在GBDT(GradientBoosting Decision Tree,梯度提升决策树)的基础上对损失函数做了二阶的泰勒展开,并在目标函数之外加入正则项整体求最优解,即:
其中,yi (t-1)为前t-1轮的模型预测值,ft(xi)为决策树,Ω(ft)为正则项,
用该种方法可以有效衡量目标函数的下降率和模型的复杂程度。
具体地,如图6所示,按照以下方式训练二元组模型,具体包括步骤S600~S620:
S600,对网络流量进行采样获取第三网络数据包,将获取的第三网数据包分组后得到多个第三网络数据包组。
这里的网络流量也指网络中流通的数据包个数,这里将获取的第三网络数据包分组是指简单的将采集的第三网络数据包分成若干个样本集,为了便于通过多个样本集训练二元组模型,从而得到较为准确的二元组模型,比如采集了一周的第三网络数据包,那么可以按照每24小时采集的第三网络数据包为一组进行分组,将一周采集的第三网络数据包分成7个第二网络数据包组
S610,对每个第三网络数据包组,按照源IP地址和源端口、目标IP地址和目标端口提取设定维度的特征值,组成该第三网络数据包组的特征向量。
以源IP地址和源端口、源IP地址和目标端口分别组成二元组,采用交互通信的方式定义通信行为。
定义三:源IP地址和源端口到目标IP地址和目标端口的通信行为称为正向序列。
定义四:目标IP地址和目标端口到源IP地址和源端口的通信行为称为反向序列。
对每组通信行为各提取5个特征,每组二元组即可用1个10维的特征向量N=(γ1,γ2,...,γ10)表示,特征向量的每一维表示二元组的一个特征,利用众多特征向量组成的样本集训练分类模型,具体特征如下:
1.正向访问次数(SrcToDst_N):基于二元组(源IP地址和源端口)访问不同目标IP的行为次数。
2.正向通信包大小均值(SrcToDst_AvgPkgSize):基于二元组(源IP地址和源端口)访问不同目标IP的通信包大小的平均值。
3.正向访问主机数(SrcToDst_S):基于二元组(源IP地址和源端口)访问不同主机数。
4.正向访问主机累计数(SrcToMulDst_N):源IP地址访问所有目标IP地址总和。(源IP地址和源端口)
5.正向序列平稳度(SrcToDstSmoothness):由定义二,计算基于二元组(源IP地址和源端口)数据时间间隔子序列的平稳度。
6.反向访问次数(DstToSrc_N):基于二元组(目标IP地址和目标端口)访问不同源IP地址的行为次数。
7.反向通信包大小均值(DstToSrc_AvgPkgSize):基于二元组(目标IP地址和目标端口)访问不同源IP地址的通信包大小的平均值。
8.反向访问主机数(DstToSrc_S):基于二元组(目标IP地址和目标端口)访问不同主机数。
9.反向访问主机累积数(DstToMulSrc_N):目标IP地址访问所有源IP地址次数总和。
10.反向序列平稳度(DstToSrcSmoothness):由定义二计算基于二元组(目标IP地址和目标端口)数据时间间隔子序列的平稳度。
S620,以各第三网络数据包组的特征向量作为输入端,以相应各第三网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到所述二元组模型,第三网络数据包组的属性为正常和异常。
以24小时内采集的第三网络数据包为例,将采集的第三网络数据包分成若干个第三网络数据包组后,确定每个第三网络数据包组的10维特征向量以及相应的属性。
第三网络数据包组的属性确定方法与第二网络数据包组的属性确定方法类似,在此不再赘述。
此外,训练的二元组模型和四元组模型也需要确定准确率,确定准确率的方法与随机森林条件熵模型类似,在此不再赘述。
具体地,步骤S120中的按照预先训练的四元组模型和二元组模型,对滤掉僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包,具体包括如下步骤,流程图如图7所示:
S700,按照第二设定个数,对第二待测网络数据包进行分组,得到多个第二待测网络数据包组。
S710,确定每个第二待测网络包组的四元特征向量和二元特征向量。
S720,将每个第二待测网络包组的四元特征向量输入四元组模型,得到僵尸网络第三疑似数据包。
S730,将每个第二待测网络包组的二元特征向量输入二元组模型,得到僵尸网络第四疑似数据包。
S740,提取出僵尸网络第三疑似数据包和僵尸网络第四疑似数据包,得到僵尸网络第二疑似数据包。
其中,步骤S720与步骤S730可以依次执行也可以并列执行,本申请实施例以两者并列执行为例进行阐述:
因为第二待测网络数据包是通过随机森林条件熵模型未确认的待测网络数据包,本申请实施例引入了四元组模型和二元组模型再对这部分第二待测网络数据包进行检测,通过将第二待测网络数据包分组,然后分别确定每个第二待测网络包组的四元特征向量和二元特征向量,将所有的第二待测网络数据包组的四元特征向量输入四元组模型后,将输出属性为异常的第二待测网络数据包组标记为僵尸网络第三疑似数据包,同时将所有的第二待测网络数据包组的二元特征向量输入二元组模型后,将输出属性为异常的第二待测网络数据包组标记为僵尸网络第四疑似数据包。
提取僵尸网络第三疑似数据包和僵尸网络第四疑似数据包,将同时被标记为僵尸网络第三疑似数据包和僵尸网络第四疑似数据包确定为僵尸网络第二疑似数据包。
至此,通过随机森林条件熵模型、四元组模型和二元组模型对待测数据包进行检测,通过检测出僵尸网络的疑似数据包,进而通过分析这些僵尸网络的疑似数据包检测出不同攻击手段的僵尸网络。
下面以一个具体实施例对上述随机森林条件熵模型、四元组模型和二元组模型的准确率测试方法进行阐述:
在某实验中采集了连续7天的实际网络流量数据作为训练集,采集第8天的数据作为测试集,并对该原始数据做白名单过滤、数据清洗、缺失值填补等数据预处理,提取条件熵特征、四元组特征和二元组特征,按照单位窗长的三维条件熵特征向量、每个四元组的41维特征向量和二元组的10维特征向量各自构成一组样本,分别构建训练集TRD={(X1,Y1),(X2,Y2),...,(XN,YN)}和测试集TED={(X1',Y1'),(X2',Y2'),...,(XM',YM')},样本统计如下表1所示:
表1
记G={G1,G2,G3},λ={λ1,λ2,λ3}。将条件熵特征训练集TRD传入随机森林模型,通过训练得到良好分类效果的模型之后确定分类参数集合λ1=Φi,从而得到最终分类器模型G1。
在模型训练前对四元组和二元组特征做了归一化处理工作,将四元组和二元组训练数据集TRD分别传入XGBoost模型,通过训练得到良好分类效果的模型之后确定分类参数集合λ2=Ψi和λ3=Θi,从而得到最终分类器模型G2和G3。
利用测试集原始分类标签Ytest={Y′1,Y′2,...,Y′M}作为模型是否优良的判断依据,将测试集和分类参数集合λ传入模型G,对测试集TED做分类测试。对于僵尸网络检测,我们更关注对于阳性样本(即疑似僵尸网络样本)的预测是否准确,因此采用阳性样本预测的准确率(precision)、召回率(recall)作为评价指标,其定义如下:
其中,P为阳性样本总数,TP为正确预测的阳性样本数量,NP为错误预测的阳性样本数量,recall值越大,表明模型训练效果越好,漏报的僵尸网络样本越少。
最终通过检测,对于基于条件熵特征的随机森林模型召回率为95.03%,基于二元组和四元组的Xgboost模型召回率分别达到96.62%和92.85%。
与现有技术相比,本申请实施例通过构建准确性较高的多种机器学习模型,比如随机森林条件熵模型、四元组模型和二元组模型,来检测在网络中获取的网络数据包,从而能够检测出这些网络数据包中存在的不同类型的僵尸网络,检测全面,适用于检测存在多样性特性的僵尸网络攻击。
实施例2
本申请实施例2提供了一种僵尸网络的检测装置,如图8所示,包括:
抓取模块801,用于从网络上抓取第一待测网络数据包。
第一检验模块802,用于按照预先训练的随机森林条件熵模型,对第一待测网络数据包进行检验,滤掉由随机森林条件熵模型检测出的僵尸网络第一疑似数据包。
第二检验模块803,用于按照预先训练的四元组模型和二元组模型,对滤掉僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包。
可选地,还包括第一训练模块,第一训练模块按照以下方式得到随机森林条件熵模型:
按照时间顺序对网络流量进行采样获取第一网络数据包,并按照预定个数,对依次采样得到的第一网络数据包进行分组,得到若干第一网络数据包组。
针对任一第一网络数据包组,确定该任一第一网络数据包组中所有第一网络数据包的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵。
确定任一第一网络数据包组中的正常数据包与异常数据包的比值,根据比值与预设阈值确定任一第一网络数据包组的属性,属性包括异常和正常。
将各个第一网络数据包组中的源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵以及目的端口关于目的IP地址的条件熵组成的特征向量作为输入端,将各个第一网络数据包组的属性作为为输出端,对随机森林模型进行训练后得到随机森林条件熵模型。
可选地,还包括第二训练模块,第二训练模块按照以下方式训练四元组模型:
对网络流量进行采样获取第二网络数据包,将获取的第二网数据包分组后得到多个第二网络数据包组。
对每个第二网络数据包组,按照源IP地址、目标IP地址、目标端口和传输层协议提取设定维度的特征值,组成该第二网络数据包组的特征向量。
以各第二网络数据包组的特征向量作为输入端,以相应各第二网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到四元组模型,第二网络数据包组的属性包括异常和正常。
可选地,第二训练模块按照以下方式确定第二网络数据包组的属性:
依次提取第二网络数据包组中的第二网络数据包的源IP地址和目的IP地址。
按照预先建立的僵尸样本库,对提取的源IP地址和所述目的IP地址进行比对。
若确定存在至少一个源IP地址或目标IP地址与僵尸样本库中的任一IP地址相同,则确定第二网络数据包组的属性为异常,否则为正常。
可选地,还包括第三训练模块,第三训练模块按照以下方式训练二元组模型。
对网络流量进行采样获取第三网络数据包,将获取的第三网数据包分组后得到多个第三网络数据包组。
对每个第三网络数据包组,按照源IP地址和源端口、目标IP地址和目标端口提取设定维度的特征值,组成该第三网络数据包组的特征向量。
以各第三网络数据包组的特征向量作为输入端,以相应各第三网络数据包组的属性作为输出端,利用XGBoost算法进行训练后得到所述二元组模型,第三网络数据包组的属性为正常和异常。
可选地,第一检验模块,具体用于:
按照第一设定个数,对第一待测网络数据包进行分组,得到若干个第一待测网络数据包组。
确定任一第一待测网络数据包组中源IP地址关于目的IP地址的条件熵、源IP地址关于目的端口的条件熵和目的端口关于目的IP地址的条件熵,并组成三维条件熵特征向量。
将任一第一待测网络数据包组的三维条件熵特征向量代入随机森林条件熵模型,确定该任一第一待测网络数据包组的属性是否异常。
若是,确定任一第一待测网络数据包组为僵尸网络第一疑似数据包,并将任一第一待测网络数据包组进行过滤。
可选地,第二检验模块,具体用于:
按照第二设定个数,对第二待测网络数据包进行分组,得到多个第二待测网络数据包组。
确定每个第二待测网络包组的四元特征向量和二元特征向量;
将每个第二待测网络包组的四元特征向量输入所述四元组模型,得到僵尸网络第三疑似数据包。
将每个第二待测网络包组的二元特征向量输入二元组模型,得到僵尸网络第四疑似数据包。
提取出僵尸网络第三疑似数据包和僵尸网络第四疑似数据包,得到僵尸网络第二疑似数据包。
与现有技术相比,本申请实施例将从网络上抓取第一待测网络数据包;按照预先训练的随机森林条件熵模型,对所述第一待测网络数据包进行检验,滤掉由所述随机森林条件熵模型检测出的僵尸网络第一疑似数据包;按照预先训练的四元组模型和二元组模型,对滤掉所述僵尸网络第一疑似数据包后剩余的第二待测网络数据包进行检测,得到僵尸网络第二疑似数据包。
这样对于第一待测网络数据包,可以先通过随机森林条件熵模型对其进行检验,确定出该第一待测数据包中的僵尸网络第一疑似数据包,进而通过四元组模型和二元组模型对剩余的待测网络数据包进行僵尸网络监测,得到僵尸网络第二疑似数据包,这样能够通过不同的僵尸网络检测模型对待测数据包进行检测,从而检测出不同攻击手段的僵尸网络。
本申请实施例所提供的进行僵尸网络的检测方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
本申请实施例所提供的僵尸网络的检测装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。