背景技术
互联网技术的不断突破和高速发展给人们的生活带来了极大的便利,但却有一些不法分子为了自身利益利用网络漏洞发起网络攻击,如DoS,Probing,R2l,U2R,trojan,virus和worm等,这些网络攻击轻者会侵犯个人隐私,给人们的生活带来不便,重者甚至会破坏和盗取个人的财产并威胁人身安全。网络攻击的发生通常会伴随着异常流量的产生。而流量异常检测技术可根据当前的检测结果尽早发现网络中是否有攻击行为从而及时响应以减小或避免攻击带来的威害。
虽然网络攻击无时无刻不在发生,但网络中的正常流量仍然占绝大多数。攻击者会将异常流量的特征伪造,达到与正常流量相似的目的,从而使得网络设备无法正确地对其区分,且由于通过设备采集的流量数量极大,人工区分并不现实,因此我们无法通过网络设备收集到均衡的数据集。此外,随着因特网的发展网络流量的数据类型越来越多元化,不同种类的设备和协议产生流量的模式区别较大,这使得网络的总体流量模式随着时间发生迁移,从而导致检测模型过时而误报新流量模式或无法检测出新流量模式中的异常流量;这些问题使得异常检测问题困难重重且始终无法彻底解决。
传统网络流量异常检测方法通常为基于统计的方法,这些方法通过计数网络包的简单特征或对特征的计数结果进行计算转换再与给定阈值对比从而判定具有该特征的包是否异常,该方法通常需要领域专家选择具有代表性的特征并给定合适的阈值。随着机器学习的发展基于特征提取与机器学习算法结合的方法逐渐成为检测的主流方法;该方法通常通过机器学习或深度学习算法自动选择特征或对原始特征编码,并用这些新特征训练机器学习分类器,再使用训练好的分类器对网络流量进行异常检测。然而当前流量数据集中对异常流量标记困难的问题使得我们无法获得均衡的训练数据集。而不均衡的训练数据集会导致训练得到的分类器的高检测误报率和低检测正确率。
发明内容
在考虑流量模式迁移和训练数据集不平衡而导致的低正确率和高误报率的情况下,本发明提供了于只具有正常训练数据或异常训练数据不足的情形下的一种面向入侵和攻击防御的实时流量异常检测方法。这种方法在训练检测模型时不需要异常流量数据和领域专家的知识且可以在流量模式迁移时快速地更新检测模型从而依据当前的网络流量模式做出更准确的判断,提高检测的正确率并且降低检测的误报率。
本发明提供了一种面向入侵和攻击防御的实时流量异常检测方法;因为从网络中直接获取的流量原始信息为序列信息,这种信息不适合直接用于异常检测,因此在特征提取模型中处理这些原始信息并将其表示成适用于异常检测模型处理的形式,深度学习技术使得从原始流量信息中提取出流量特征的过程变得简单易操作。在特征抽取模块中获得特征后由异常检测模块对该特征进行异常打分,异常检测模块使用基于深度学习的单类异常检测方法,在只有单类训练数据的情况下进行模型训练。
本发明的技术方案如下:
一种面向入侵和攻击防御的实时流量异常检测方法,包括流量特征抽取模型、异常流量检测模型和优化训练;
具体步骤如下:
(一)流量特征抽取模型,用于从网络中抽取流量的原始特征并将该特征编码;
1.1原始流量特征序列提取,从当前网络拓扑中抽取网络的特征序列:s=(x1,x2,…,xK);
1.2编码网络,一种对序列信息进行编码的神经网络,对抽取的特征序列编码并获得编码结果,编码过程如下:
编码网络对序列s中的每一个元素xt的具体处理过程如下:
ct=zf⊙ct-1+zi⊙zc
ht=zi⊙tanh(ct)
其中h
t-1为前一时刻的隐藏层输出,
b
f分别为控制前一次输入的元素保留程度的神经网络权重参数和偏置参数,
b
i为控制本次输入元素信息保留程度的神经网络权重参数和偏置参数,
b
c为将控制本次输入元素信息保留到下一次输入程度的神经网络权重参数和偏置参数,
b
f,b
i,b
c被统称为编码网的参数
⊙为元素乘运算,[·,·]为向量的拼接运算,h
t为处理每个元素时获得的输出;序列s中的元素依次传入编码网络,最后一个元素x
K被处理后所得的输出h
K即为编码结果c。
1.3解码网络,根据给定的特征向量重构特征序列的神经网络,利用编码网络的编码结果重构原始输入序列并计算重构结果和原始输入的误差,重构原始输入的计算表达式为:
其中φ
De为解码网络,
为解码网络的参数;解码过程与编码过程类似,区别为解码网络的输出被用于计算误差;误差的计算表达式为:
其中s为原始流量特征序列,
为对原始流量特征序列的重构结果,x
i为序列s中的元素向量,
为序列
中的元素。
(二)异常流量检测模型,用于对特征抽取模型的编码结果进行异常打分并依据打分结果判定该特征是否异常;
2.1映射网络,对给定的向量进行降维的神经网络,用于选定映射中心a,将编码网络的编码结果c映射到超空间,映射结果为mc,从而计算它异常打分score,并依打分结果判定该特征是否异常,映射过程为:
其中φ
M为映射网络,
为映射网络的参数;映射网络误差L
M的计算公式为:
上式中φ
En为编码网络,s
i为流量特征序列样本,
为映射网络的第l层向量参数,
为Frobenius正则化计算符号,λ为正化则项系数,取值范围为[0,1],a为所选定的映射中心;选映射中心时需要一定数量的编码结果,假设当前有n个编码结果{c
1,c
2,…,c
n},则映射中心的选择方法如下:
2.2异常打分,利用映射网络的映射结果进行异常打分并利用打分结果判定是否异常,打分表达式为:
最后将获得的打分与阈值δa比较,若打分高于阈值则判定当前的网络状态为异常,判定函数f(s)的表达式为:
当判定函数结果为1时则表明当前网络状态异常,即存在着异常流量。
(三)优化训练,用于优化异常检测的效果,提高检测正确率。
3.1编码网络和解码网络训练,使得编码结果尽量保留原始输入的重要信息;利用已有训练数据集训练编码网络和解码网络参数,编码网络将数据集中的样本编码,该编码结果再被解码网络重构并与原输入比较从而计算重构损失,最后利用损失更新网络参数;将编码网络参数WEn和解码网络参数WDe统称为WAE,网络参数更新过程为:
其中ηAE为重构网络的学习率;
3.2在线训练,假设在冷启动时间内所有的流量均为正常流量,将在线抽取的原始流量特征s
i输入到编码网络获得编码结果c
i以供异常检测模型使用;与此同时,还将c
i输入解码网络并获得它的重构序列
和重构误差L
AE,当L
AE>ε
1时更新编码网络和解码的参数,当L
AE<ε
2时更新异常检测器的映射网络参数,其中ε
1和ε
2分别为劣质重构和优秀重构阈值;
3.3映射网络的训练,使映射网络可将编码结果映射到靠近所选定的中心点;首先使用已训练好的编码网络对训练数据集中的样本编码并获得训练数据编码集,映射网络利用编码集计算映射中心点并对编码集中的元素映射从而计算映射损失,最后利用映射损失更新网络参数;
映射损失更新网络参数的更新过程为:
其中η
M为更新映射网络时的学习率,
为映射网络的参数。
3.4联合训练,调整编码网络和映射网络参数,使异常检测效果进一步提高;该过程中使用重构误差与映射误差的加权来训练编码网络,因此训练过程中的联合损失函数表达式为:
L=LAE+αLM
其中α为重构网络和映射网络的误差权重的均衡参数,在[0,1]内取值,训练时权重更新表达式:
所述实时流量异常检测方法,包括以下步骤:
步骤一:从网络中抽取状态特征序列s=(x1,x2,…,xK);
步骤三:将编码结果c输入解码网络并获得重构结果
并计算误差L
AE;
步骤四:处于冷启动阶段时,若LAE>ε1则更新编码网络和解码网络参数,若LAE<ε2则更新映射网络参数;
步骤五:利用异常检测模型判定编码结果是否异常并返回判定结果。
所述特征抽取模型从网络中获取当前网络的状态特征序列并将该序列转换为一个固定长度的向量,特征抽取模型由编码网络和解码网络组合而成,该模型采用离线初始化、实时特征抽取和在线训练的策略。特征抽取过程根据是否有训练数据分为两种方式:
1)当有训练数据时,先进行离线初始化,即利用训练数据集和解码网络对编码网络作初始训练使得特征抽取模型具有更好的初始效果。对于训练数据集中的所有训练样本s
i将其输入编码网络以获得编码结果c
i,其中
再利用解码网络构建原始输入
即:
最后计算重构误差L
AE并用该误差更新网络参数。初始训练指定当L
AE≤ε时则停止训练,完成初始训练后则执行在线训练策略。
2)无训练数据集时则执行在线训练策略,假设在冷启动阶段网络流量均为正常流量,则将在线抽取的原始流量特征s
i输入到编码网络获得编码结果c
i,此时c
i作为当前网络中抽取的状态向量以供分类器使用;与此同时,还将c
i输入解码网络并获得它的重构序列
和重构误差L
AE,当L
AE>ε
1时更新编码网络和解码网络的参数;当L
AE<ε
2时更新分类器的映射网络参数。
在无离线初始化步骤的情况下特征抽取模型有冷启动时间,该期间抽取的特征向量c不能保留原始输入序列的重要特征,因此只有当满足重构误差LAE≤ε1时或冷启动时间结束才将c输入异常检测模型。
本发明的有益效果是:针对当前无法获得均衡网络流量训练数据集和网络流量模式迁移而导致检测器的高误报率和低正确率的问题,本发明提出一种面向入侵和攻击防御的实时流量异常检测方法,其在训练时不需要异常流量数据样本和领域专家的知识,且在流量模式迁移时仍可保证高检测正确率和低检测误报率。
附图说明
图1本发明检测模型的架构图;
图2(a)为测试流量中不同种类DoS攻击时本方法与其他方法在AUC指标上的对比图;
图2(b)为测试流量中不同种类DoS攻击时本方法与其他方法在F1-score指标上的对比图;
图2(c)为测试流量中不同种类DoS攻击时本方法与其他方法在MCC指标上的对比图;
图2(d)为测试流量中不同种类DoS攻击时本方法与其他方法在检测时间time上的对比图;
图3(a)为测试流量中有DoS攻击的基础上再添加不同种类其他攻击时本方法与其他方法在AUC指标上的对比图;
图3(b)为测试流量中有DoS攻击的基础上再添加不同种类其他攻击时本方法与其他方法在F1-score指标上的对比图;
图3(c)为测试流量中有DoS攻击的基础上再添加不同种类其他攻击时本方法与其他方法在MCC指标上的对比图;
图3(d)为测试流量中有DoS攻击的基础上再添加不同种类其他攻击时本方法与其他方法在检测时间time上的对比图;
图4(a)为本发明中的方法和其他对比方法的检测ROC曲线(查全率-误报率)对比图;
图4(b)为使用和未使用联合训练优化时本方法自身检测结果的ROC(查全率-误报率)对比图;
图5在三维空间中本检测模型的检测原理可视化流程图。图中标记:○正样本;△异常样本。
具体实施方式
本发明的算法1的伪代码如下所示:
算法2的伪代码如下所示:
本发明仿真实现基于PyTorch平台,在仿真场景中使用KDD99为数据源来评估本发明的特征抽取模型和异常检测模型,该数据集以流为单位统计网络流量,符合实际应用中的网络流的特征。数据集中每个流样本有41个特征属性和1个标签属性,本发明使用9个在实际网络环境中实时获取的特征作为我们算法的检测特征。为避免训练过拟合,我们使用KDD99中10%的数据子集中的正常数据样本作为训练集,检测算法运行环境为Intel(R)Core(TM)i7-6500U@2.50Hz 2.50GHz和16GB内存。本发明中的检测机制由两部分组成:特征抽取模型和异常检测模型,特征抽取模型由编码网络和解码网络组成,编码网络的参数设置为:输入层单元个数为9,隐藏层单元个数为64,输出层单元数8,使用一层LSTM单元,优化器使用RMSprop,学习率ηAE=0.001,权重衰减为0.0001,当有训练数据集时初始训练的迭代次数为10,而解码网络的输入层单元数为8,输出层单元数为9,其他参数设置与编码网络相同。异常检测模型中输入层节点数为8,输入层节点数为32,使用adam优化器,学习率ηM=0.001,权重衰减设为10-6,若有训练集,则初始训练迭代次数为5,使用的激活函数为leakyrelu。
同时在本发明的仿真验证时设置了对比算法。为了检测AUC,准确率与召回率的调和平均数F1-score,分类算法综合衡量指标MCC和检测时间time四种性能指标,分别对AE+K-Means(无监督编码与K-Means分类结合的方法),RBM+SVM(无监督编码与SVM结合的方法)和DSVDD(未使用特征提取的单类异常检测方法)以及本发明提出的方法DLDM(基于深度学习的特征抽取和单类异常检测结合且经过联合优化训练的流量异常检测算法)在PyTorch中实现并进行对比实验。
图2显示了当DoS攻击种类增多时不同的检测算法的检测性能变化。图2(a)显示随攻击种类增加各检测算法检测AUC指标值的变化,本发明中提出的方法检测结果最优。图2(b)和图2(c)显示不同算法检测的F1-score和MCC指标的变化,本发明提出的方法也近似最优。图2(d)中为检测时间的对比,所有算法检测时间都为稳定,本发明的检测时间满足实际应用的需要,且通过牺牲少量的时间而获得较大检测效果的提高。
图3显示了检测除DoS攻击外再次额外增加攻击各类时用于比较的检测算法在AUC,F1-score,MCC和检测时间这四个指标上检测性能的变化,与图2效果近似,表明本发明中提出的检测算法鲁棒性良好。
图4显示了检测算法检测结果的ROC图。图4(a)为不同比较算法的ROC图形比较,本发明中的算法ROC效果最好,而RBM+SVM检测算法效果最差,SVM因为流量数据集中的异常样本不足,使得其无法被很好的训练而导致未能获得理想的检测效果。图4(b)为本发明中算法的有无优化时自身检测结果的对比,分别记为joint training和non-joint training;由图4可知优化后检测结果得到进一步提高。
图5中为原始特征被特征抽取模型处理并将处理后的结果异常打分的过程在三维空间中的可视化说明,由原始样本处理为编码结果后得到映射结果的可视化表示。编码结果将原始样本中的正样本和负样本略微分开,因为训练过程中只使用正样例,因此得到的正样本的编码结果空间位置相对靠近。而映射结果中表明经过映射后所有的正样本的编码被映射后的位置十分靠近于所选的中心点,而异常样本的编码结果被映射后的位置相对较分散且远离所选择的中心点,能够较容易地被区分。
表1中展示了各种异常检测算法的不同检测指标的定量对比。
表1各检测算法对比结果
对比算法 |
F1-Score |
MCC |
AUC |
Time(s) |
RBM+SVM(S) |
0.1567 |
0.0955 |
0.5612 |
3.2604 |
RBM+SVM |
0.9543 |
0.8616 |
0.9405 |
3.2854 |
AE+K-Means |
0.9870 |
0.9377 |
0.9527 |
6.3679 |
DSVDD |
0.9819 |
0.9160 |
0.9806 |
2.2807 |
DLDM |
0.9881 |
0.9437 |
0.9916 |
5.2387 |
表中的RBM+SVM(S)指的是使用单类数据样本训练该算法所得到的结果,结果表明单类数据样本训练得到的RBM+SVM模型在F1-Score、MCC和AUC指标上均为最差,说明二分类器无法有效处理单类数据。相比之下,使用两类数据对RBM+SVM进行训练,虽然检测的准确性有所提升,但是仍然不及DLDM。而DLDM在各项检测指标上,包括检测时间,明显优于AE+K-Means。对于DSVDD而言,虽然DLDM在F1-Score、MCC和AUC显著优于该模型,但是DLDM的平均检测时间较长,其主要原因在于提取时序特征的LSTM网络结构复杂,计算量大,但通过提取特征后使得DLDM获得原始流量特征的编码从而取得了更高的检测准确率,在时间上的少量牺牲完全值得。
针对于当前网络流量的标记困难和流量模式迁移而导致的流量异常检测困难的问题,本发明提出一种面向入侵和攻击防御的实时流量异常检测方法,该检测方法基于深度学习的单类分类器机制,相较于传统的二分类机器学习算法本方法只需要单类数据样本即完成训练,很好地解决了当前所面临的问题。此外,本发明提出联合训练的方式让编码网络与映射网络联合训练从而既可以使编码结果重构原始输入,又可以使编码结果被映射网络映射后的位置更加紧凑从而进一步提高分类效果。本发明提出的方法在公共数据集上进行流量异常检测测试并在各个指标上均取得了较好的效果。