刘海燕,吕 涵,2
(1.陆军装甲兵学院, 北京 100072;2.中国人民解放军94452部队, 河南 平顶山 467331)
入侵检测系统是保护网络安全的重要手段,它可以在网络受到攻击时及时发现并作出响应。随着网络数据量不断增多,基于机器学习算法的入侵检测技术应运而生。机器学习与入侵检测技术的结合能够有效降低检测的漏报率和误报率,提高检测的准确率等。深度学习技术是机器学习领域的一个重要分支,研究表明:它在计算机视觉、自然语言处理和恶意软件检测等多个领域取得了优于传统机器学习算法的性能[1]。目前,随着攻击手段日益智能化和复杂化,传统的机器学习方法在入侵检测中应用的有效性在下降,而基于深度学习的入侵检测系统达到了很高的检测精度并且已广泛应用[2]。
但对抗样本的出现,使得神经网络模型的安全问题受到威胁。对抗样本[3]是指在原始样本中加入细微扰动并使模型错误分类的一种合成样本。对抗样本会极大地干扰分类器,降低深度学习算法在对抗环境下的鲁棒性[4]。关于对抗样本的研究最初主要是在图像分类领域[5],但随着研究的深入和拓展,其他领域的对抗样本研究逐渐受到关注,包括网络安全领域。
Rigaki[6]研究了恶意软件检测中的对抗样本,用FGSM和JSMA方法成功生成了能够逃避入侵检测系统的对抗性流量样本。Wang[7]应用了更多对抗攻击算法包括FGSM、JSMA、DeepFool和C&W针对NSL-KDD数据集生成对抗样本。这些工作是基于掌握目标模型的内部信息而进行的白盒攻击。然而在实际场景中,攻击者很可能无法获得模型的内部信息,只能通过对目标模型输入样本得到输出。Yang等[8]进行了针对入侵检测系统的黑盒攻击的研究,使用生成对抗网络针对NSL-KDD数据集生成了对抗样本,但并未针对网络流量的特殊性进行添加扰动的限制,更改了数据的功能特征导致攻击效果失效。此外,这种静态的对抗攻击方法不能很好地学习到数据特征。
针对以上问题,本文提出了一种基于生成对抗网络的对抗攻击模型,一方面在生成对抗样本时设计了针对入侵检测数据集的特征约束机制,保留了网络流量的真实有效性和不可察觉性;另一方面利用动态查询黑盒模型的输出,更好地学习和适应入侵检测模型,生成了高质量的对抗样本。该模型在训练完成后,可以一步生成对抗样本并实施攻击,提高了对抗攻击的效率。
NSL_KDD数据集是网络流量入侵检测领域的公开基准数据集,本文将该数据集作为实验数据集。NSL_KDD数据集中的每个样本由41个特征和1个类标识组成[9]。41个特征分为4种类型,包括网络连接的基本特征、网络连接的内容特征、基于时间的流量统计特征和基于主机的流量统计特征。类标识即为标签用来表示该条网络连接的类型,分为正常和攻击,攻击样本共有四大类共39种攻击类型,包括Probe、Dos、U2R和R2L攻击。其中,训练集包含22种攻击类型,另外17种在测试集中,用来验证分类器的泛化性能。
与图像不同,网络流量的每个特征具有其特定的含义,且取值各不相同,如若在对抗样本生成时不对特征值进行约束,生成的对抗样本则不能保证符合真实流量的特性,以至于在网络入侵检测系统的中间环节即被丢弃,或在通过检测继而攻击网络时丧失入侵功能。
为了使得生成的对抗样本能够更加真实有效,我们对NSL-KDD数据集进行了特征分析并提出了一种特征约束机制。其中,保证功能特征不变,是为了对抗样本能保留真实流量入侵行为的特性,其他特征约束是为了更加接近真实网络流量的特点,使其不被察觉而丢弃。
1) 保证功能特征不变:根据攻击的原理和目的,不同攻击类型的网络流量都有其特定的功能特征,代表了该攻击的基本功能[10]。基本特征对于任何网络流量的有效性来说都是必需的,如若更改则网络流量无效。Probe攻击利用基于主机的流量特征和基于时间的流量特征来表现;DOS攻击体现在基于时间的流量特征部分;而U2R和R2L攻击一般体现在内容特征部分[11]。在添加对抗扰动时,针对不同攻击类型要保证其功能特征不被改动。
2) 保证特征类型一致:NSL-KDD数据集中,有3种不同的特征类型,包括字符型特征,离散型特征和连续型特征,攻击者在生成对抗样本的过程中,应该保持特征的数据类型不变。数据集中的字符向量包括protocol_type、service和flag不做改动。特征向量中的离散型数据为二值特征,经过生成器处理后,将修改后的二值特征的值转换为以0.5为阈值的二值。我们将高于阈值的值转换为1,低于阈值的值转换为0。
3) 保证特征取值一致:数据预处理后,每个特征向量都归一到(0,1)之间,为使生成的对抗样本与原始样本取值范围相同,设定添加噪声的取值是(0,1),生成后的特征向量将1以上的元素设为1,0以下的元素设为0。此外,num_outbound_cmds这一特征表示ftp会话中带外命令的数量,原数据集中该特征值均为0。若修改该特征,则会被察觉到流量含有外部命令,因此在生成对抗样本时,此项不做修改。
4) 保证特征间关系一致:wrong_fragment代表错误分段的数量,duration代表连接的长度。当数据包中存在错误分段,则该连接无法正常持续,所以duration的值会为0。说明这2个特征间存在着x*y=0的条件约束。
生成对抗网络(generative adversarial networks,GAN)是由Goodfellow[12]首次提出的深度学习模型,由生成模型G和判别模型D两部分组成。生成模型学习真实数据分布生成伪数据,判别模型区分真实数据和生成数据。生成对抗网络的生成模型和判别模型不断进行对抗训练和优化。在这种模式下,GAN能够生成看似接近原始数据的伪数据。设x为真实数据,G(z)为生成的伪数据,D(x)表示x被分类为真实样本的概率,p表示数据的概率分布。GAN的优化问题可描述为G与D的极大极小博弈问题:
Ez-pz[log(1-D(G(z)))]
(1)
但是,GAN也存在一些问题,主要是训练不稳定,以及容易陷入坍塌模式导致生成样本缺乏多样性。针对这些问题,Arjovsky在GAN的基础上提出了改进算法WassersteinGAN[13],它用Wasserstein距离来衡量2个概率分布之间的差异,可以提供有效的梯度信息,使训练更加稳定,生成样本与原始样本深度特征差异更小。下式为WGAN的目标函数:
(2)
本文在WGAN的基础上对模型进行改进,提出了一种对抗样本生成模型,称为AdvWGAN。该模型旨在生成逃避入侵检测系统且真实有效的对抗性流量样本,并对入侵检测模型进行黑盒攻击。
训练阶段:AdvWGAN动态地学习黑盒IDS的输出结果,并根据损失函数更新生成器和判别器的参数,最后训练出能够基于输入数据生成逃避检测的对抗样本的生成模型。
测试阶段:向生成模型中输入测试集中的流量样本,验证生成的对抗样本是否能够逃避目标模型的检测。
实际应用:在捕获到网络流量后,送入训练后的生成模型,即可将其构建为带有对抗性的网络流量,并用其对入侵检测系统实施攻击。
图1为构建的AdvWGAN对抗样本生成模型的训练框架,该框架主要由3个部分组成,包括生成器G、判别器D和目标IDS。
本文设计了3神经网络模型作为目标IDS,针对NSL-KDD数据集进行二分类训练,来模拟真实场景中的网络入侵检测系统。在不了解目标IDS模型的参数和结构等信息时,假设可以通过查询来获得黑盒IDS的分类结果。
在AdvWGAN模型中,生成器不再直接输入噪声生成虚假样本,而是通过原始样本与噪声串联输入生成器,并使用特征约束机制控制特征的修改。生成器的目标是生成对抗性样本,使得分类器将对抗性恶意样本误判为正常样本,生成器的梯度由判别器来反向传播。判别器不再是区分正常样本和对抗样本,而是通过动态地学习和模仿目标模型的预测输出,使得生成的对抗样本与预测的正常样本更加相似。
训练集被分为正常流量和恶意流量,生成器输入恶意样本和噪声来生成对抗性样本,再将正常样本和生成的对抗样本分别送入目标IDS和判别器D。判别器D将目标IDS实时预测的标签作为目标进行训练,并将分类结果反馈给生成器G。
AdvWGAN生成模型的训练算法如下,学习率设置为0.000 1,共训练20个轮次,每训练1次生成器,训练5次判别器。
参数α=0.0001,epochs=20,critic_iters=5
for epoch in range(epochs):
foriin range(每轮次迭代次数):
输入Xattack和N到G,经过C,生成Xadv;
D对Xadv进行判别;
根据生成器的目标函数LG更新G的参数;
foriin range (critic_iters):
将D的裁剪阈值设置为[-c,c];
输入Xattack和N到G,经过C,生成Xadv;
IDS对(Xnormal,Xadv)进行分类,得到预测标签;
D对IDS预测的标签对应的数据集进行判别;
根据判别器的目标函数LD更新D的参数。
end for
end for
end for
生成器G将恶意流量和噪声作为输入,并进行特征约束限制,生成对抗性样本Xadv。将正常样本和生成的对抗样本送入判别器D,根据判别器D的预测结果计算损失更新生成器G的参数。
判别器D设置权重裁剪阈值,目标IDS对输入的正常样本和对抗样本进行分类,判别器D输入目标IDS的数据进行判别,根据判别的结果计更新判别器D的参数。
G的目标是生成对抗性样本,使得分类器将对抗性恶意样本误判为正常样本。D的目的是通过动态地学习和模仿黑盒模型的预测输出,使之无法区分正常样本和生成样本。以下分别为G和D的目标函数:
LG=-Ex∈XadvD(x)
(3)
LD=Ex∈PattackD(x)-Ex∈PnormalD(x)
(4)
其中,LG为生成器的目标函数,Xadv表示生成的对抗性样本,最小化LG。LD为判别器的目标函数,Pattack为目标IDS预测的攻击样本,Pnormal为目标IDS预测的正常样本,最小化LD,使得判别器与目标模型结果相似。
本文实验选用NSL-KDD数据集,KDDTrain+作为训练集分为2部分,一半用来训练分类模型,一半用来训练对抗样本生成模型,KDDTest+作为测试集用于验证对抗攻击效果。
数据集中有多种攻击类型,为方便起见,将数据集的标签二元化,本文实验将所有异常样本标签设为1,正常样本标签设为0。对非数值型数据特征protocol_type、service和flag进行独热编码,编码处理后的数据集每条记录变为122维的特征向量。针对部分特征取值空间过大的问题,将各个特征取值范围归一化到[0,1]之间[14]。
本文使用深度神经网络,卷积神经网络和循环神经网络[15]这3种经典的神经网络结构搭建了3个神经网络模型,分别是DNN模型、CNN模型和RNN模型。根据经验分析,我们对各模型的网络层数、神经单元数、激活函数、优化算法、学习率和批尺寸等参数的选择做了对比实验,最终确定了3种检测性能较好的神经网络模型,它们在验证集上分别得到了99.64%、99.49%和99.39%的检测准确率。
3个模型训练时批尺寸设置为128,共40个轮次。使用网络输出与标签的交叉熵作为损失函数,Adam作为优化器,学习率设置为0.001。激活函数选择ReLu函数,输出层激活函数使用Sigmoid函数。DNN模型隐藏层的结点数分别为:128、256、128、64;
CNN模型包含2个卷积层和2个最大池化层,卷积核分别为16@3*3和32@3*3;RNN模型使用一个LSTM层,以20条网络流量记录作为一个序列。
生成器G和判别器D分别采用4层和5层全连接神经网络,隐藏层的激活函数选取ReLu,G的隐藏层结点数分别为128、64、128,D的隐藏层结点数分别为128、256、128、64。训练过程中设置批尺寸为256,使用的优化器为RMSprop。判别器的权重裁剪阈值设置为0.01。
在实验指标上,我们选择了攻击成功率和约束满足率。
攻击成功率(attack success rate,ASR)是指生成的对抗样本使分类器分类错误的比例。攻击成功率越高,代表对抗样本生成方法越好。
约束满足率(constraint satisfaction rate,CSR)是指满足特征约束机制的对抗样本所占的比例,CSR越大,说明生成的对抗样本与真实网络流量越相似。
本节针对基于深度学习的入侵检测系统进行对抗攻击实验,分别输入测试集中各类型攻击流量来生成对抗样本并对黑盒IDS进行对抗攻击。
表1显示了不同对抗攻击方法针对不同黑盒IDS的对抗成功率的对比,包括Yang提出的基于GAN的静态算法和本文提出的AdvWGAN算法。实验结果显示,与静态GAN攻击算法相比,在AdvWGAN算法的作用下,针对各种攻击类型流量样本和不同神经网络模型进行的对抗攻击都达到了高攻击成功率,表明AdvWGAN在逃避IDS模型检测的对抗攻击中具有良好的有效性和泛化性。
表1 攻击成功率的对比Table 1 The comparison of attack success rate %
此外,还比较了生成的对抗性流量样本的约束满足率,实验结果如表2所示:静态GAN攻击算法由于没有对特征修改进行限制,其构建的对抗样本只有很低的约束满足率,而在特征约束的作用下,AdvWGAN模型生成的对抗样本均达到了100%的约束满足率,说明该模型生成的对抗样本满足了真实网络流量的特性,与原始流量样本相似度高。
表2 约束满足率的对比Table 2 The comparison of constraint satisfaction rate %
AdvWGAN是基于生成对抗网络的对抗攻击方法,该方法在完成生成模型的训练后,能够在黑盒场景中,在保证网络流量真实有效的前提下实现面向入侵检测系统的逃避攻击。实验证明,通过该生成模型构建的对抗性流量样本绝大多数都能逃避入侵检测系统的检测,并且满足真实网络流量的特性,与原始样本更加相似。
在生成对抗网络中,判别器和生成器均为神经网络结构,容易学习到基于深度学习的入侵检测系统输出的数据,从而对于此类IDS具有很好的攻击效果,但若面对基于其他机器学习的入侵检测系统时可能达不到理想的效果。而且,本文实验使用的是已知的开源数据集,在面对现实中未知类型的网络流量时如何在保证流量真实有效的前提下实现对抗攻击还有待研究。