网络未知攻击检测的深度学习方法
2020-11-18狄冲,李桐
狄 冲,李 桐
1.上海交通大学 网络空间安全学院,上海200240
2.国网辽宁省电力有限公司 电力科学研究院,沈阳110000
1 引言
入侵检测系统(Intrusion Detection System,IDS)作为抵抗网络攻击的重要防御手段,承担着保护计算机安全和保障工业企业网络平稳运行的任务,是信息安全领域的重要研究课题[1]。其中,异常检测通过对网络流量特征进行建模,来识别网络中的正常流量和异常流量,是网络入侵检测的重要手段[2]。
在入侵检测系统中,通过对所识别到的异常流量进行阻断,可实现面向网络攻击的被动防御。同时,对异常流量进行分类,分析不同的攻击行为,对攻击方式建模,持续完善攻击特征数据库,又可进一步提高系统防御水平。因此,对于网络异常检测的研究,可分为以下两部分内容:(1)异常流量的识别;(2)流量类型的分类,包括正常流量和攻击类型。网络异常检测本质上可归结为机器学习中的二分类和多分类问题。多年来,研究人员不断将各种机器学习算法(如支持向量机、决策树、K 近邻等)用于网络异常检测[3-4],并取得一定的成果。但是传统机器学习算法大多依赖于特征的提取与选择[5],分类的准确率和精度也存在进一步提升的空间。近年来,随着深度学习的不断发展,深层神经网络凭借其强大的表征学习能力,在计算机视觉、语音识别、自然语言处理等多个领域取得远超传统机器学习算法的效果[6],也为网络异常检测提供了新的解决方法。
目前,国内外均已出现一些基于深度学习的网络异常检测成果[7-11]。Alrawashdeh等[7]利用受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)对原始网络流量特征进行提取,并利用另一组RBM 所组成的深度信念网络(Deep Brief Network,DBN)对提取到的特征进行分类;Kim等[8]以ReLU(Rectified Linear Unit)作为激活函数,利用含两个隐含层的深度神经网络(Deep Neural Network,DNN)对网络流量进行检测;Vigneswaran 等[9]对比分析了不同深度的DNN 的算法性能以及网络异常检测效果;Vinayakumar 等[10]还进一步研究了多层感知机(Multi-Layer Perceptron,MLP)、卷积神经网络(Convolutional Neural Network,CNN)以及循环神经网络(Recurrent neural network,RNN)等网络结构在异常检测上的应用效果;张思聪等[11]利用数据填充的方式将原始的一维网络流量数据转换为二维的“图像数据”,而后以tanh作为激活函数,利用卷积神经网络进行异常检测。相较于传统机器学习算法,以上研究成果在相关数据集上均取得了一定程度的效果提升,表明深度学习方法是一种有效的异常检测工具。
前述研究存在以下两点局限性:第一,检测的精度仍存在提升的空间。入侵检测系统的性能对分类的精度十分敏感,分类错误的攻击数据会进一步影响对攻击的建模。第二,前述研究仅适用于网络流量类型已知的情况。入侵检测是一个与攻击者持续博弈的过程,在入侵检测系统不断完善的同时,攻击者也在更新其攻击方式[12]。在面向未知攻击威胁时,传统分类器由于不具备识别能力,会将其错误地标注为某已知类别,从而造成误判,导致分类精度的进一步降低和入侵检测系统性能的恶化。“知之为知之,不知为不知,是知也”。一个理想的异常检测方法应该具备识别未知攻击的能力,以及在无法做出准确判断时的感知能力。
对于未知攻击的识别,在本质上可将其归结为开集(Open Set)分类问题,即对于一个训练好的分类器,测试样本中存在训练样本中没有出现的未知类别,以期分类器能够在准确识别已知类别数据的同时,对未知类别数据具备感知能力,将其判断为未知类别。为了实现对未知攻击的识别,近年来,有少量基于机器学习的方法被提出[13-16],其中最为主流的是基于内容相似度的检测模型[17]。作为代表性工作,Song等[16]提出利用单分类支持向量机(One Class SVM),通过对已知流量类别进行单独建模,学习高维特征空间中用于区分各类别的超平面,判断网络流量是否属于某已知类型,从而识别未知攻击。由于正常网络流量行为多变,不易单独建模,且需要训练多个攻击模型,对特征选择也有着一定要求,上述方法仍存在准确率较低和误报率较高的问题,检测性能存在进一步提升空间。
对于开集分类问题,利用深度学习方法,在计算机视觉领域也有相关研究出现。Hendrycks等[18]提出一种基于神经网络中Softmax 分类层的置信度估计方法,将Softmax层的最大值作为分类结果的置信度,通过阈值判断样本是否属于训练数据中的已知样本类别。在该方法的基础上,DeVries等[19]提出脱离Softmax层,额外训练一个网络参数作为样本类别的置信度来进行已知类别图像和未知类别图像的区分。此外,Lee[20-21]、Hendrycks[22]、Nalisnick[23]等提出了数种基于生成模型的训练样本扩充方法来提高图像分类器的边界学习能力,从而提升对未知类别的检测效果。为了进一步提高网络异常检测系统性能,尤其对未知攻击的识别能力,受文献[19]工作启发,本文提出一种基于置信度神经网络(Confidence Neural Network,ConfNN)的异常检测方法,通过训练具备置信度参数的DNN,利用置信度对DNN的分类结果进行评估和校正,实现网络流量分类精度的提高和对未知类型网络攻击的检测。
2 相关理论方法
2.1 深度神经网络
鉴于本文所采用的ConfNN是传统DNN的变型,首先介绍DNN的网络结构和训练过程。
DNN 由包括输入层、隐含层和输出层在内的若干层组成,每一层包含若干个神经元[6]。一般而言,输入层神经元的数目与数据的特征维度,即预处理后网络流量的特征数相同;输出层神经元的数目与样本类别的数量,即网络流量已知标签的种类相同;隐含层的层数与各隐含层神经元的数量为网络的超参数,层数越多、神经元的数量越大意味着更强的特征处理和表达能力,但也带来了更高的模型复杂度、训练难度以及过拟合的风险。图1展示了一个仅有一个隐含层的DNN,其训练过程可概括为前向传播(Forward Propagation)评估模型效果和反向传播(Backward Propagation)调谐模型参数两个阶段。
在前向传播阶段,一组网络流量的原始特征经数值化编码、标准化处理后得到特征向量x,通过输入层与隐含层之间的连接关系传递到隐含层,实现特征的映射x →h:
图1 DNN基础结构
其中,w 为输入层神经元与隐含层神经元连接的权重值,b 为偏置值,f 为神经元激活函数。当有多个隐含层时,数据特征在隐含层间映射关系的作用下依次传递,实现原始特征的深度变换和提取。最后一个隐含层与输出层之间为全连接关系,在连接权值、偏置值以及激活函数的共同作用下,得到网络输出aL。利用Softmax函数,将输出层各神经元的激活值转化为具有统计意义的概率值:
通过计算当前网络对输入数据的预测结果y^ 与数据真实标签y 之间的交叉熵(Cross Entropy,CE),评估网络模型,得到网络预测损失L:
在反向传播阶段,根据网络损失L,利用网络参数优化算法(如随机梯度下降、ADAM 等)对网络参数进行调优,得到优化后的模型。迭代执行前向传播和反向传播算法,通过对网络参数的不断调整来提高模型的分类能力。
2.2 置信度神经网络
相较于DNN,ConfNN最大的特点在于网络输出层的不同。除了aL外,ConfNN的输出层还包含一个与最后一个隐含层直接连接的置信度神经元cL,经Sigmoid激活函数处理后得到置信度c:
图2展示了ConfNN的基本结构。
图2 ConfNN结构示意图
对于置信度c,期望其具有以下作用:当网络模型对当前输入的类别进行判定的准确率低时,输出较小的置信度;反之,则输出较大的置信度。进而,在对网络流量进行检测时,可通过置信度c 的大小来评估当前网络分类结果的可靠程度,实现分类精度的提高和对未知攻击的检测。在网络训练的前向传播阶段,设计以下规则更新网络输出的概率值[19]:
进而得到概率更新后的预测损失:
通过以上设定,鼓励网络在预测错误时,输出较低的置信度值,从而使得最终预测结果更接近于真实值,减少预测损失。为了防止出现网络将置信度值全部输出为0,从而使得Lp=0 以最小化预测损失的情况,额外定义置信度损失Lc,激励网络在具备正确的分类能力时输出较高的置信度值:
最终损失为预测损失和置信度损失之和,其中λ 作为超参数起平衡两类损失的作用:
3 基于置信度神经网络的异常检测方法
本文所提出的基于ConfNN 的未知攻击检测方法,主要包括两部分:(1)置信度神经网络训练;(2)已知流量类型的分类及未知攻击的检测。整体框架如图3 所示。对于网络流量特征,首先经过预处理模块对特征进行数值化编码和归一化,而后使用训练数据对ConfNN参数进行训练,得到训练好的ConfNN 模型;对于输入ConfNN 模型中的待测网络流量,利用网络输出的分类信息和置信度信息对其类别进行分析。
3.1 置信度神经网络实施细节
为提升网络模型异常检测效果,本文改进ConfNN训练过程,提出自适应的损失平衡策略和动态调整正则化项的方法。
3.1.1 自适应损失平衡
在ConfNN的损失函数中引入了置信度损失Lc,当平衡参数λ 为固定值时,在Lp≪λLc的情况下,往往会出现网络将所有置信度值c 无差别地输出为1 以使Lc→0,从而降低整体损失L 的结果,使得置信度值c无法发挥应有的作用。因此,在训练的过程中,需要动态地对平衡参数λ 进行调整,以达到对于正确分类的数据有置信度值c →1 和错误分类数据有置信度值c →0的理想训练效果。本文提出基于预测损失Lp和置信度损失Lc关系的平衡参数λ 调节方法:当Lp≥Lc时,适当减小平衡参数λ 的值,从而鼓励网络学习生成较低的置信度值给错误分类的数据以降低预测损失Lp;当Lp<Lc时,适当增大平衡参数λ 的值,以鼓励网络在对数据正确分类时生成较高的置信度值。
图3 基于ConfNN的异常检测方法框架
3.1.2 动态正则化
置信度损失Lc可以看作是网络损失函数中的正则化项,在一定程度上能够起到防止网络过拟合的作用。但是在训练网络生成置信度的过程中,由于利用了数据的真实标签,会导致网络在处理一些复杂的分类问题时,尤其是在处理分类边界数据时,往往会通过生成低置信度值以利用真实数据标签信息降低整体损失,从而失去学习分类边界的机会,造成模型能力的下降和分类准确率的降低。针对该问题,本文提出引入学习自动机理论(Learning Automata Theory)[24],在训练过程中,动态调整置信度模块发挥作用的概率。
考虑式(3)所定义的原始交叉熵,当它的值下降时,意味着网络正在学习训练样本的分类边界,需要降低引入置信度模块的概率,提高网络的分类能力;当原始交叉熵的值不变甚至升高时,提高置信度模块的利用率,防止网络过拟合并训练网络置信度值的生成参数。学习自动机作为一种经典的增强学习算法,能够根据外部反馈动态调整自身行为以适应环境需求,是一种较好的解决工具。
具体而言,定义一个学习自动机A:=<A,B,P >,其中A={a1,a2}对应学习自动机的两个行为,分别为激活置信度模块(a1)和冻结置信度模块(a2);B 为学习自动机所接收到的外部信息,此处为原始交叉熵的前后大小关系;P=[p1,p2]为概率向量,对应学习自动机选择各行为的概率。在网络训练过程中,根据原始交叉熵的前后大小关系,按如下规则更新概率向量P ,实现正则化项的动态调整:
其中,Δ 为更新步长。
3.2 未知攻击检测
对于一个训练好的ConfNN 模型,网络输出层包括aL和cL。其中,aL用于分类,cL用于对网络分类结果进行评估。如式(2)和式(4),分别利用Softmax 函数和Sigmoid函数对aL和cL进行处理,得到分类预测信息y^和置信度值c,分类的结果为arg maxi{y^}。
给定阈值δ,对于待测数据x:
当置信度值c 大于等于阈值δ 时判定x 为已知类型,接受网络分类结果;当置信度值c 小于阈值δ 时判定x 为疑似未知攻击。
相较于传统分类器,ConfNN 通过同步训练置信度c 使得模型具有对分类结果的自我评估能力,从而突破闭集分类的限制,适用于未知攻击检测这一开集分类问题。具体地,在对网络流量进行检测时,理想情况下模型表现为:(1)当对流量数据正确分类时,ConfNN 输出较高的置信度值c,接受模型分类结果;(2)当对流量数据错误分类时,ConfNN输出较低的置信度值c,拒绝模型的分类结果,判定为疑似未知攻击类型。在情况(2)中,ConfNN 所判定的疑似未知攻击中包括错误分类的已知类型数据和未知攻击数据。对于错误分类的已知类型数据,将其判定为疑似未知攻击,拒绝模型分类结果,有助于提高模型对已知类型数据的分类精度,从而降低模型误分类对异常检测系统的影响。
对于ConfNN,δ 的取值决定了模型的性能。在实际应用中,可以通过人工搜集大量未知攻击流量数据进行δ 取值的调优,但该方法费时费力,可行性低。对于一个训练好的ConfNN模型,考虑上述情况(2),在训练集上无法被正确分类的流量数据相当于ConfNN 模型所判定的疑似未知攻击。因此,在训练数据集上可将正确分类的数据和错误分类的数据分别作为已知类型和未知攻击,以检测错误率为标准,利用一维搜索的方法确定模型阈值δ 的取值。
4 实验
为了验证本文所提出的ConfNN 模型的实际效果,在UNSW-NB15、CICIDS 2017 等最新网络异常检测数据集上进行实验,分析模型效果,利用分类准确率、检测错误率、AUROC等多个指标评估算法性能。
4.1 数据集
UNSW-NB15数据集[25]是由澳大利亚网络安全中心2015年发布的网络异常检测通用数据集,该数据集弥补了传统异常检测数据集(如KDDCUP 99,NSLKDD等)所存在的信息缺失、冗余度高等缺陷,广泛应用于异常检测算法的性能评估。除正常网络流量外,UNSWNB15 数据集包含Fuzzers、Analysis 等9 种不同的网络攻击类型,每条流量数据包含49维特征。CICIDS 2017数据集[26]由加拿大网络安全研究所于2017年发布,该数据集囊括多种最新的网络攻击类型,记录了14 类不同的网络攻击,每条流量数据包含78维特征,并且更接近于真实的现代网络流量。由于CICIDS 2017 数据集存在样本数量分布不均衡的问题[26],本文在包含全部攻击类型的基础上,对部分攻击类型的数据进行随机采样,以形成样本数据分布较均衡的数据集。
表1和表2分别展示了两个数据集的统计信息。在训练过程中,选择部分类型的攻击作为已知流量类型进行训练得到ConfNN模型,剩余类型的攻击将作为未知攻击,用于评估ConfNN对未知攻击的检测效果。通过将数据集进行划分,保证用于模型训练的“已知类型”数据和用于模型评估的“未知攻击”数据享有相同的数据采集方法和处理方式,减少因采集方式不同所造成的数据差异,从而在流量特征的本质上评估模型对未知攻击的检测效果。
表1 UNSW-NB15数据集统计信息
表2 CICIDS 2017数据集统计信息
4.2 评价标准
本文采用以下性能指标对ConfNN 模型效果进行评估:
(1)准确率:对于已知类型数据,分类正确的样本数占全部样本数的比例。
(3)检测错误率:错误判断已知类型为未知攻击的样本数占总已知类型样本数的比例与错误判断未知攻击为已知类型的样本数占总未知攻击样本数的比例的均值,即0.5Pin(f(x)≤δ)+0.5Pout(f(x)>δ)。
(4)AUROC:受试者工作特征(Receiver Operating Characteristic,ROC)曲线下的面积,该性能指标不受阈值δ 的影响,综合地评估模型性能。AUROC值越大,说明模型正确区分已知流量类型和未知攻击的能力越强。
(5)AUPR:精度-查全率(Precision-Recall,PR)曲线下的面积,该性能指标不受阈值δ 的影响。AUPR值越大,说明模型识别未知类别数据的平均精度越高。
4.3 网络结构及参数设置
对于两种数据集,本文均采用相同的ConfNN 结构和训练方法。具体而言,ConfNN包含两个隐含层,输入层和输出层的神经元个数分别与数据特征数以及已知类别数相同,隐含层神经元的数量分别设置为128 和64。激活函数选择ReLU函数,反向传播阶段所采用的优化算法为基于动量(Momentum)的随机梯度下降算法[27],学习速率为0.01,动量参数为0.9。训练过程共经过10 次迭代,在迭代中每次利用32 条流量数据进行训练,权值衰减参数设置为10-4。为防止网络过拟合,采用插入Dropout层的方法,Dropout参数设置为0.1。
4.4 实验结果
4.4.1 模型效果分析
图4 和图5 分别展示了在UNSW-NB15 数据集和CICIDS 2017 数据集的测试集上,ConfNN 对于已知类型数据和未知攻击数据所产生的置信度值的分布直方图。从图中可以观察到以下信息:(1)对于正确分类的已知类型数据,ConfNN 生成接近于1 的置信度值;(2)对于错误分类的已知类型数据以及未知攻击数据,ConfNN生成较低的置信度值;(3)对于错误分类的已知类型数据和未知攻击数据,ConfNN 生成的置信度值十分接近。以上现象说明ConfNN模型效果符合训练目标,具备识别未知攻击的能力,并且验证了利用训练集误分类流量数据进行阈值δ 选择的可行性。
图4 UNSW-NB15数据集置信度值分布直方图
图5 CICIDS 2017数据集置信度值分布直方图
图6 ~图9 展示了使用相同网络参数训练的传统DNN 模型与ConfNN 模型在对测试数据进行检测时的归一化混淆矩阵。结果表明,对于已知类型流量数据,ConfNN 模型在分类时会将DNN 模型错误分类的数据判断为未知类型,具有更高的分类精度,从而降低模型错误分类对入侵检测系统的负面影响。但是ConfNN模型在提升分类精度的同时,也无法避免地在一定程度上降低了分类的查全率。F1-Score能够综合精度和查全率两项指标评估模型性能,在UNSW-NB15 数据集上,对于已知类型流量,DNN 模型与ConfNN 模型的平均F1-Score 分别为0.56 和0.69,在CICIDS 2017 数据集上平均F1-Score 分别为0.92 和0.96。以上结果表明,对已知类型数据进行分类,ConfNN模型在精度和查全率上的综合表现优于DNN 模型。此外,对于未知类型流量,DNN模型会将其误分类为某已知类型,造成模型分类精度进一步降低。ConfNN模型能够准确识别未知类型流量,具备疑似未知攻击类型发现能力。
4.4.2 对比实验
图6 DNN模型UNSW-NB15归一化混淆矩阵
图7 ConfNN模型UNSW-NB15归一化混淆矩阵
图8 DNN模型CICIDS 2017归一化混淆矩阵
图9 ConfNN模型CICIDS 2017归一化混淆矩阵
表3 One Class SVM、SoftmaxNN与ConfNN模型实验结果
为了更客观地评估ConfNN 的性能,将传统未知攻击识别的单分类支持向量机(One Class SVM)模型[16]和文献[18]提出的利用网络Softmax层的最大值作为分类置信度的SoftmaxNN模型作为对比算法,比较三种算法在不同评价指标下的表现。对于One Class SVM,采用径向基核函数,内核系数设置为特征维数的倒数,训练误差分数的上限和支持向量分数的下限设置为0.5;对于SoftmaxNN,采用与ConfNN 相同的参数设置和阈值设定方法。
表3展示了One Class SVM、ConfNN和SoftmaxNN三种算法所给出的实验结果。由于One Class SVM模型中不包含直接影响未知攻击检测结果的阈值参数,无需计算AUROC和AUPR。从测试结果可以看出:(1)深度学习模型(包括ConfNN和SoftmaxNN)相比传统One Class SVM模型在对已知类型流量分类的准确率和F1-Score 上有很大的提升,说明深度学习模型在实现未知攻击检测的同时能够更好地保证对已知类型流量的分类能力。(2)深度学习模型相比传统One Class SVM模型在识别未知攻击时的检测错误率明显下降。(3)相较于SoftmaxNN 模型,ConfNN 在各项评价指标上均有一定的提升。尤其在检测错误率上,在UNSW-NB15 数据集,ConfNN 将检测错误率从34.5%降低到21.2%;在CICIDS 2017 数据集上,将检测错误率从25.1%降低到12.6%。实验结果验证了ConfNN模型具有较强的区分已知攻击和未知攻击的能力,表明ConfNN是一种有效的未知攻击识别方法。
5 结束语
为了提高入侵检测系统的综合防御能力,基于置信度神经网络,本文提出面向网络流量的异常检测模型ConfNN。相较于传统异常检测模型,ConfNN具备未知攻击的识别能力,同时提高了异常检测算法的精度,减少了因攻击类型误分类对攻击入侵检测系统中攻击建模和行为分析所造成的消极影响。本文在UNSW-NB15和CICIDS 2017 两个异常检测数据集上的仿真实验结果验证了ConfNN模型的效果,并通过与其他未知攻击检测方法的对比实验评估了ConfNN 模型的综合性能。实验结果表明,ConfNN 模型是一种有效的未知攻击检测方法,能够更好地满足入侵检测系统的需求。但是,ConfNN模型在分类的准确率、查全率以及区分未知和已知流量类型的检测错误率上仍存在提升空间,这是未来工作中需要进一步解决的问题。此外,目前已有的异常检测数据集仍存在样本分布不均衡的问题,部分攻击样本数量较少,利用生成模型人工生成攻击样本用于模型训练也是未来工作中十分重要的研究内容。