本发明属于网络安全领域,尤其涉及一种APT攻击检测方法。
背景技术:
高级持续性威胁是一种有组织、有特定目标、持续时间极长的新型攻击。随着震网(Stuxnet)、Duqu、火焰(Flame)以及2015年针对乌克兰电厂的Killdisk攻击的曝光,可以看出,APT攻击会对各类工控网络和关键信息基础设施的安全造成巨大的威胁。APT攻击的主要目标是窃取军事机构、政府机关、国家基础设施以及高新技术企业等机密信息或造成指定的破坏。其特点主要有以下两点:(1)攻击手段高级。攻击者多利用0day漏洞等未知攻击进行入侵,如对伊朗核电站发起的攻击,攻击者在6年时间里分别利用了Flame病毒、Stuxnet病毒以及Duqu病毒等多种未知漏洞进行攻击。然而,当前对未知网络攻击的检测具有很大的挑战性。(2)攻击持续时间长。攻击者为了完成攻击目标可能潜伏数月甚至数年,如从2006年开始的“暗鼠行动”渗透并攻击了全球多达72家公司和组织的网络,直到2011年才被McAfee和Symantec公司发现并报告。再如从2007年开始针对5家西方跨国能源公司的油田操作机密信息窃取的“夜龙攻击”,4年后才由McAfee报告并发现。正是由于该特性,使得本发明需要从大量的网络流量/主机行为数据中对APT攻击进行检测。APT攻击虽然采取的手段不同方式各异,但最终均会在网络底层原始数据流上反应。由于机器学习(Machine Learning,ML)在处理大数据及攻击检测方面具有明显的优势,共同使得它在APT攻击检测领域极具研究前景。当前基于机器学习的APT攻击检测方案均采用监督学习的方法,其基本思想是通过提取当前网络流量数据或主机行为数据的特征,将已知正常或异常的历史流量数据作为训练数据集,在此基础上利用分类算法对网络流量数据或主机行为进行标记分类,以区分正常和异常行为。然而,这些方法存在以下问题:(1)针对特定网络的训练数据集有限。在实际APT攻击场景下,训练数据往往需要通过专家知识进行人工标记而产生,因此准确的已标记数据集一般规模非常有限,大部分是未标记历史网络流量数据,不知道其为正常或异常。而监督学习本身需要大量的已标记数据作为训练数据集,训练数据集的规模及准确程度直接影响到模型的检测性能。因此,如何利用少量已标记数据生成准确的训练数据集以保证模型的检测精度是当前APT攻击检测面临的一大挑战。(2)网络流量特征难以选取。当前基于监督学习的APT攻击检测更多是基于传统入侵检测开展研究,对于已知攻击的检测具有一定的优势。然而APT攻击多利用0day漏洞等未知攻击,针对不同目标网络所采取的攻击可能各不相同,即使对于相同的目标网络攻击者利用的0day漏洞也可能是动态变化的,而不同的未知攻击所表现出来的底层网络流量特征也不尽相同。因此,如何针对特定目标网络动态选取合适的网络流量特征以检测所遭受的未知攻击是面临的另一挑战。网络级持续性威胁是一种新型的智能网络攻击,其主要特点为0day漏洞等未知攻击的利用以及持续时间长。
综上所述,当前基于机器学习的APT攻击检测中训练检测模型的人工标记数据过少、未知攻击的流量特征难以选取的问题。
技术实现要素:
本发明的目的在于提供一种APT攻击检测方法,旨在解决当前基于机器学习的APT攻击检测中训练检测模型的人工标记数据过少、未知攻击的流量特征难以选取的问题。
本发明是这样实现的,提出一种APT攻击检测方法,所述APT环境下基于信息增益率的半监督学习攻击检测方法利用半监督学习算法来标记特征相似的数据,以少量已标记数据生成大规模的训练数据集,实现对历史数据的自动标记并获得更大规模且准确标记的训练数据集;并引入信息增益率来确定不同特征对检测的影响程度,采用信息增益率对检测模型中划分的每个子数据集进行特征提取,针对不同目标网络选取最有助于划分数据样本的特征,以实现对未知攻击的准确识别;最后采用基于信息增益的加权多数算法优化模型APT攻击检测性能。
进一步,所述半监督学习算法具体步骤如下:
(1)在已标记的正常和异常数据中分别随机选取一条数据作为簇的中心,选取N1,N5作为已标记数据簇和已标记数据簇的簇心c1,c2;
(2)利用公式计算每条数据Ni分别与簇心c1,c2的距离d(Ni,ck),并将d(Ni,ck)值小的数据划分到一个簇内;
(3)利用公式分别计算两个簇中所有点的质心并将其作为新的簇心c1′,c′2;
(4)重复步骤(2)、(3)直至总的簇内离散度总和J达到最小时停止,其中离散度总和为每条数据Ni到其对应簇心ck的距离d(Ni,ck)的总和;
(5)计算每类已标记数据在每个簇中出现的概率Pl,k,并以Pl,k最大时的l标记簇k的类别,最终得到训练数据集D;
其中,Ni,m表示第i条数据的第m个特征值,ck,m表示第k个簇心的第m个特征值,m为网络流量特征的个数;I为数据集中样本总个数,I′为簇k中数据样本总个数。
进一步,所述基于信息增益率的随机森林检测方法,利用Bootstrap重采样算法,每次有放回地从集合D中抽取一个数据样本,一共抽取I次,除去重复的数据,得到一个子训练集S1,重复此步骤q次,得到q个子训练数据集{S1,S2,...,Sq}用于生成q个不同的决策树以构建随机森林。
进一步,生成每棵决策树Tq的具体步骤如下:
步骤一,选取信息增益率最大的流量特征作为决策树的根节点;
步骤二,找到选取的特征所对应数据集Sq中使该特征最快分裂到叶子节点的阈值,对该节点进行分裂;
步骤三,在每个非叶子节点选择特征前,以剩余特征作为当前节点的分裂特征集,选取信息增益率最大的流量特征作为根节点分裂的非叶子节点;
步骤四,重复步骤二和步骤三直至每个特征都对应有叶子节点为止,构建出Sq对应的决策树Tq。
进一步,具体计算公式如下:
其中,Sq为通过Bootstrap重采样随机选取的训练数据集D的子集;GainRatio(Sq,m)、Gain(Sq,m)、Split(Sq,m)分别表示子数据集Sq的信息增益率、信息增益和分裂信息,V(m)是特征m的值域;Sv是集合Sq中在特征m上值等于v的子集;A表示特征m的属性总数,特征Protocol_type,其属性有TCP、UDP、ICMP,所以其A=3;H(x)为数据集x的熵;pl为第l类样本数占总数据集的比例。
本发明提供的一种APT攻击检测方法,利用半监督学习算法来标记特征相似的数据,并引入信息增益率来确定不同特征对检测的影响程度。实验结果表明,提出的模型对未知攻击检测的准确率、检测率较传统随机森林模型相比分别提高了3.18%、4.5%,误报率和漏报率分别降低了53.54%和40.76%。本发明利用改进的k-means算法来标记特征相似的数据,在少量人工标记数据的基础上实现了大量训练数据集的准确标记,保证了模型的检测精度;通过在模型中引入信息增益率来确定不同特征对检测的影响程度,减少数据中冗余及噪声特征的影响,从而选取重要的流量特征,提高检测模型的泛化能力,以应对未知攻击的检测。
附图说明
图1是本发明实施例提供的一种APT攻击检测方法流程图。
图2是本发明实施例提供的网络流量特征示意图。
图3是本发明实施例提供的基于半监督学习的历史网络流量数据标记过程示意图。
图4是本发明实施例提供的基于信息增益率的流量特征提取示意图。
图5是本发明实施例提供的基于特征提取的决策树生成过程示意图。
图6是本发明实施例提供的基于信息增益的加权多数算法(WMA)攻击检测示意图。
图7是本发明实施例提供的本发明与传统随机森林(Random Forest,RF)、K-近邻(K-Nearest Neighbor,KNN)、支持向量机(Support Vector Machine,SVM)算法的检测性能对比示意图。
图8是本发明实施例提供的不同d值下的模型检测率与训练数据集D准确率示意图。
图9是本发明实施例提供的决策树个数q对检测准确率和模型检测时间的影响示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,本发明实施例提供的一种APT攻击检测方法包括以下步骤:
S101:基于半监督学习的方法利用少量已标记数据生成大规模的训练数据集;
S102:采用信息增益率对检测模型中划分的每个子数据集进行特征提取,以实现对未知攻击的准确识别。
下面结合具体附图对本发明的应用原理作进一步的描述。
为了应对APT攻击检测中训练数据集有限和网络流量特征难以选取两个挑战,首先基于半监督学习的方法利用少量已标记数据生成大规模的训练数据集,之后采用信息增益率对检测模型中划分的每个子数据集进行特征提取,以实现对未知攻击的准确识别。
APT攻击方式虽然各异,但其最终均可反应到底层网络流量数据中,因此本发明采用目前最常用的网络流量特征,其中包括Duration、Protocol、Count、Srv_count等,具体特征如表1所示。本发明将数据集中字符型特征转化成数值型以便测试。这里本发明以数据集中一条数据N1=(2,tcp,smtp,SF,1684,363,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,104,66,0.63,0.03,0.01,0.00,0.00,0.00,0.00,0.00)为例进行说明。对于字符型的Protocol_type特征,它包括TCP、UDP、ICMP三个属性值,本发明以0表示属性TCP,1表示属性UDP,2表示属性ICMP。同时,对数据集进行归一化处理,以减小特征之间量纲的影响,即保证每个特征的重要程度不受数值的影响。本发明利用min-max标准化法,将数据的大小范围缩小到[0,1]之间,具体计算公式如式(1):
其中,xNormalized是某一特征归一化后的值,xIntial为特征初始的属性值,xmin是该特征的最小值,xmax是该特征的最大值。则N1经过以上处理转化为(3.429×10-5,0,0.59,0,1.286×10-4,2.77×10-6,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,0.21,0.132,0.63,0.03,0.01,0.00,0.00,0.00,0.00,0.00)。
1.1基于半监督学习的训练集生成
由于在APT攻击检测中目标网络数据量巨大,依赖专家知识进行人工标记只能得到少量准确标记的数据作为训练样本,这使得训练出的模型无法准确检测异常[19]。半监督学习则是针对这类问题提出的,即利用少量具有先验知识的数据来辅助无监督学习。为了实现对历史数据的自动标记并获得更大规模且准确标记的训练数据集,本文提出改进的k-means半监督学习算法,本发明以图2为例进行说明。
(1)在已标记的正常和异常数据中分别随机选取一条数据作为簇的中心,图2中本发明选取N1,N5作为已标记数据(正常)簇和已标记数据(异常)簇的簇心c1,c2;
(2)利用公式(2)计算每条数据Ni分别与簇心c1,c2的距离(相似度)d(Ni,ck),并将d(Ni,ck)值小的数据划分到一个簇内;
(3)利用公式(3)分别计算两个簇中所有点的质心并将其作为新的簇心c1′,c′2;
(4)重复步骤2、3直至总的簇内离散度总和J达到最小时停止,其中离散度总和为每条数据Ni到其对应簇心ck的距离d(Ni,ck)的总和;
(5)计算每类已标记数据在每个簇中出现的概率Pl,k,并以Pl,k最大时的l标记簇k的类别,最终得到训练数据集D。
具体公式如下:
l=argmaxPl,k (6)
其中,Ni,m表示第i条数据的第m个特征值,如N1,1=3.429×10-5,ck,m表示第k个簇心的第m个特征值,m为网络流量特征的个数,本发明中m=28。I为数据集中样本总个数,I′为簇k中数据样本总个数,例如图2中I=20,训练数据集D的簇1中I′=15。d(Ni,ck)表示数据Ni到簇中心的欧式距离,用来描述其相似度的大小。由于本发明将数据集划分成两个簇,因此k=1或2。Pl,k表示第l类已标记类在第k个簇中出现的概率(l=0或1,0代表正常类,1代表异常类),nl,k表示第l类已标记样本在第k个簇中的数量,nl表示第l类已标记样本的总数量,因此当Pl,k最大时用l标记簇k的类别,arg max f(x)表示取满足函数f(x)最大时自变量x的值。例如在图2中,正常已标记类在簇1中出现的概率P0,1=1,异常已标记类在簇1中出现的概率P1,1=0.33,P0,1>P1,1,因此将簇1标记为0,即簇1为正常类。同理,在簇2中P1,2=0.67,P0,2=0,因此簇2标记为1,即簇2为异常类。
1.2基于信息增益率的流量特征提取
在基于机器学习的入侵检测系统(IDS)中,随机森林算法由于具有优良的泛化性能,相对于其他分类算法对攻击的检测更有优势,使得其成为当前攻击检测普遍选取的基准算法。然而,对于APT攻击,不同的目标网络所遭受的攻击可能不同,而不同的攻击所体现的特征也是不同的。因此本发明需要针对不同目标网络选取最有助于划分数据样本的特征。
一个特征能够为分类模型带来的信息越多,该特征越重要,模型中它的有无将导致信息量发生较大的变化,而前后信息量的差值就是这个特征给模型带来的信息增益。为了在构造决策树的过程中选取更具有代表的特征,本发明在本发明中引入信息增益的概念并用信息增益率(Gain Ratio)来衡量给定的特征区分训练样例的能力,具体过程如图4所示。
本发明设上节中生成的训练数据集D中含有I个不同的数据样本{N1,N2,...,NI}。首先利用Bootstrap重采样算法,每次有放回地从集合D中抽取一个数据样本,一共抽取I次,除去重复的数据,得到一个子训练集S1,重复此步骤q次,得到q个子训练数据集{S1,S2,...,Sq}用于生成q个不同的决策树以构建随机森林。其中,生成每棵决策树Tq的具体步骤如下:
1.选取信息增益率最大的流量特征作为决策树的根节点;
2.找到选取的特征所对应数据集Sq中使该特征最快分裂到叶子节点的阈值,对该节点进行分裂;
3.在每个非叶子节点(包括根节点)选择特征前,以剩余特征作为当前节点的分裂特征集,选取信息增益率最大的流量特征作为根节点分裂的非叶子节点;
4.重复步骤2、3直至每个特征都对应有叶子节点为止,构建出Sq对应的决策树Tq。
具体计算公式如下:
其中,Sq为通过Bootstrap重采样随机选取的训练数据集D的子集;GainRatio(Sq,m)、Gain(Sq,m)、Split(Sq,m)分别表示子数据集Sq的信息增益率、信息增益和分裂信息,V(m)是特征m的值域;Sv是集合Sq中在特征m上值等于v的子集;A表示特征m的属性总数,例如特征Protocol_type,其属性有TCP、UDP、ICMP,所以其A=3;H(x)为数据集x的熵;pl为第l类样本数占总数据集的比例。
下面本发明以图5为例来说明上述过程,本发明首先利用Bootstrap重采样算法从训练数据集中随机抽取了一个数据集Sq,计算数据集Sq中28个特征的信息增益率,假定得到特征count的信息增益率最大,将特征count作为根节点开始构建决策树Tq;根据数据集Sq中特征count的属性值分布进行分裂,即找出合适的阈值划分数据集Sq。这里假定在数据集Sq中特征count的分裂阈值为64,即在数据集Sq中的数据若其特征count≤64,即划分为异常,若当count>64,则进一步提取特征;当count>64,选取剩余特征中信息增益率最大的特征Dst_bytes第二个特征,同理找出分裂阈值;重复上述步骤,直到将数据集完全划分为止,图4中,当特征选取到Protocol_type时,数据集完全划分,此时决策树Tq构建完成。
在上述方法中,采用信息增益率而不是信息增益来进行特征选取,是由于以信息增益度量存在一个内在偏置,它偏袒具有较多属性的特征,即当某一特征具有大量的属性值时(如特征Duration,根据表1本发明知道其取值范围为[0,58329],因此本发明认为其有58329个属性值),由公式(8)可以计算得知趋近于0,由于数据集Sq的熵H(Sq)是固定的,从而信息增益Gain(Sq,m)变大,并趋近于H(Sq),因此决策树在特征选取的过程中,偏向于选择该特征。但这又会导致过拟合,即选取的特征仅能反应已知训练数据集中的数据分布,使得模型仅具有对已知流量数据的分类能力,而对于未知流量数据的分类效果(未知攻击的检测能力)却非常差。而特征的分裂信息(Split Information)指其对应的数据集关于该特征的各个属性值的熵,当信息增益确定时,特征的重要性将随着分裂信息的增大而减小。
例如,当一个含有I个流量数据的集合被特征A彻底分割(即分成I组,I>2),此时分裂信息为log2I;同时,存在一个布尔特征B分割同样的集合,如果恰好平分(I=2),则其分裂信息为1。此时,若仅采用信息增益而不是信息增益率来选取特征,则本发明可以利用公式(8)知道Gain(Sq,A)>Gain(Sq,B),从而选取特征A作为构建决策树的非叶子节点(根节点)。然而,在实际中由于特征A具有较多属性值,将数据集划分为多个小空间,即每片叶子节点有可能仅包含单纯的正常和异常,此时决策树可以完美的拟合训练数据,然而,当测试数据集中出现有不属于特征A的属性值的数据时,所构建的决策树仍然仅通过特征A对测试数据进行分类,而不考虑其他特征,这必然导致模型的检测性能将大幅度下降。因此,本发明引入了信息增益率来解决上述问题。根据公式(6),显然特征B信息增益率更高,即优先选取特征B作为非叶子节点(根节点)构建决策树,从而避免了选取属性值多的特征A而导致模型对未知攻击检测能力的降低。因此,本发明利用则特征Protocol_type的信息增益率计算如下:
则信息增益率作为一种补偿措施来解决信息增益存在的问题,引入分裂信息来惩罚上述属性值多的特征,以提高模型对未知流量检测的精度。
下面本发明以图3为例,说明特征提取和决策树生成的过程。设Sq为通过Bootstrap算法从训练数据集D={N1,N2,...,N20}抽取的子数据集,Sq={N1,N2,N3,N4,N5,N6,N7,N8,N9,N10},为了方便计算本发明选Protocol_type、Service 2个特征进行对比,其特征的属性值如表1所示,其中数据类别正常/异常用数字0/1表示,则sq中正常和异常数据的个数分别为7和3。
表1 N1到N10特征Protocol_type、Service属性值及类别
同理计算GainRatio(Sq,Service)=18.4%,可知特征Service比Protocol_type有更大的信息增益率,因此,本发明优先选取特征Service作为构建决策树模型T1的非叶子节点。
1.3基于加权多数算法(Weighted Majority Algorithm,WMA)的攻击检测
由于每棵决策树都是利用Bootstrap算法去重后随机生成的子数据集构建,子数据集规模以及正常/异常数据分布较训练数据集D相比均发生变化,子数据集Sq的信息熵H(Sq)也随之改变,从而导致每个子数据集Sq所对应构建的决策树Tq对最终分类结果的影响程度也各不相同,传统RF中简单的将最多数决策树的分类结果确定为最终分类结果显然是不合适的。同时,在检测过程中测试数据是逐条通过模型进行检测的,若采用基于半监督学习的方法对数据进行检测标记会由于每次检测都需要通过多次迭代对全部数据进行聚类而导致模型检测效率极低,无法满足实际环境中实时检测的需求,并且仅采用基于半监督学习的方法进行检测会由于其自身划分精度与分类算法相比较低而导致模型整体检测精度下降。
因此,如图6所示,本发明引入加权多数算法给每棵决策树分配权值wq对网络流量数据进行检测,并分析子数据集Sq较训练数据集D在通过Bootstrap重采样算法去重后的集合规模以及数据分布的变化程度,以子数据集Sq较训练数据集D的信息增益Gain(Sq,l)衡量其对应生成的每棵决策树Tq对最终检测结果的影响程度。由于l只有0、1两类,根据上节中对信息增益的定义,不存在由于特征属性值过多引起的过拟合问题,因此本发明采用信息增益Gain(Sq,l)而不是信息增
益率来衡量每棵决策树对最终检测结果的影响程度,具体公式如下:
为了方便计算,将每个决策树的结果分为正常和异常,并用1和-1表示,得到q个分类结果(y1,y2,...,yq),即yq={1,-1},其中,-1代表决策树输出结果为异常,1代表决策树输出结果为正常。Sq,l表示在子数据集Sq中类别为l的数据集合,Q为决策树的总个数,sgn为符号函数,即当时,y=1,即被检测流量数据为正常流量;当时,y=-1,即被检测流量数据为异常流量。
例如当随机森林中有T1、T2两棵决策树,其权值通过公式(11)计算分别为w1=41%、w2=33%,对测试数据集E中一条数据E1检测时得到的分类结果分别为1、-1,则利用公式(12)可以得到y=1,即流量数据E1的检测结果为正常流量。
由于APT攻击随时间的推移,攻击方式可能动态变化,使得反映在底层的网络流量数据以及体现攻击的特征也随之改变。为了应对动态变化的攻击方式,本发明将检测完成的数据加入训练数据集中,并去除较早的数据,动态更新训练数据集以应对动态变化的攻击方式。
如图7所示,本发明的准确率(Accuracy)、检测率(Detection Rate)、误报率(False Alarm)和漏报率(False negative rate)分别达到了80.77%、77.51%、0.92%和2.79%,较传统RF相比,漏报率、误报率分别降低了53.54%和40.76%,这主要是由于与传统RF算法不同,本发明利用半监督学习算法使得模型具有足够的标记样本进行训练,保证了训练出的模型的有效性,使其具有较高的检测精度。另一方面,结合图7,本发明通过计算可以知道,本发明较KNN算法和SVM算法相比,准确率和检测率分别提高了14.86%、14.20%和7.58%和7.07%,这是由于本发明通过引入信息增益率选取了最能体现当前目标网络的流量特征,使得检测模型能够针对不同目标网络中存在的不同异常行为进行检测,适用于不同APT攻击场景。同时,本发明利用信息增益对不同决策树赋予权重并基于WMA得到最终检测结果,保证了不同决策树对模型检测性能的影响程度不同,使得模型不再单单依赖于标准随机森林算法中树的棵数的选取,大大提高了模型的检测精度。
不同规模训练数据集对检测性能的影响
图8为训练数据集D的准确率和模型的检测率随未标记历史数据规模变化的曲线,这里本发明设已标记准确数据与未标记历史数据的比例为1:d,其中d表示未标记历史数据的规模。从图中本发明可以看出,训练数据集D的准确率随d值的增大逐渐下降,而模型检测的准确率随d值的增大呈先增大后下降的趋势,在d=9时达到最大值80.77%。这是由于当d值过小时,用于训练模型的数据不足而导致模型检测精度不高,而当d值过大时,由于生成的训练数据集D已经不够准确,而导致训练出的模型自身准确率过低。因此实验选取d=9构建训练数据集D。
决策树个数对检测性能的影响
从图9中本发明可以知道,当决策树个数q=300时,检测的准确率达到最高80.77%,此时模型检测花费的时间为112s,当q值大于300时,检测精度趋于稳定,而检测花费时间大幅度上升,使得模型无法保证APT攻击检测的实时性。其中,决策树个数q是影响模型性能和效率的一大主要因素,当决策树个数q较小时,模型的检测精度较差。另一方面,由于随机森林具有不过拟合性质,因此可以使q尽量大,以保证模型的检测精度。但是模型的复杂度与q成正比,即q过大,模型检测时间花费过大。因此实验选取q=300。
综上所述,本发明在利用少量已标记准确数据集生成大规模准确标记训练数据集的同时,提取了最能体现目标网络流量的特征,保证了模型对未知攻击的检测精度。本发明针对APT环境下训练数据集少和网络流量特征难以选取的问题,基于半监督学习算法,利用少量已标记数据,生成大规模训练数据集,以此对检测模型进行训练,并通过信息增益率的引入实现对APT目标网络流量数据的特征提取以检测目标网络中的未知攻击。通过实验与RF、KNN和SVM算法的检测结果对比验证了本发明的有效性,并分别分析了不同规模训练数据集和决策树个数的选取对检测性能的影响。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。