一个可扩展的网络入侵检测系统,用于检测、发现和学习未知攻击
基于深度学习的网络入侵检测系统(IDS)已达到相当准确的攻击检测率。但这些深度学习方法通常采用。
一个可扩展的网络入侵检测系统,用于检测、发现和学习未知攻击
A scalable network intrusion detection system towards detecting, discovering, and learning unknown attacks
申明
版权归原文作者及出版单位所有,如有侵权请联系删除。
摘要
基于深度学习的网络入侵检测系统(IDS)已达到相当准确的攻击检测率。但这些深度学习方法通常采用封闭集(closed-set)协议 【 1 】 ^{【1】} 【1】执行,只有在训练中出现的已知类别会在分类时被考虑,现有的IDS将无法检测未知攻击,并将其错误分类为训练中的已知类别,因此不具备可扩展性。此外,这些IDS更新深度检测模型以识别新发现的攻击时效率不高。为了解决这些问题,我们提出了一个可扩展的IDS,用于检测、发现和学习未知攻击,它包含三个组成部分。首先,我们提出了开放集分类网络(OCN,the open-set classifcation network )来检测未知攻击,基于卷积神经网络的OCN采用最近类均值(NCM,the nearest class mean)分类器,设计了两种新的损失函数来共同优化它,包括Fisher损失和最大均值差异(MMD,maximum mean discrepancy)损失。随后,提出了语义嵌入聚类方法,用于从OCN检测到的所有未知实例中发现隐藏的未知攻击。然后,我们提出了增量最近簇质心(INCC,the incremental nearest cluster centroid)方法,通过更新NCM分类器来学习发现的未知攻击。在KDDCUP’99数据集和CICIDS2017数据集上进行的广泛实验表明,我们的OCN在检测多种类型的未知攻击方面优于最先进的比较方法。我们的实验还验证了语义嵌入聚类方法和INCC在发现和学习未知攻击中的可行性。
关键词:入侵检测 · 开放集分类 · 未知攻击发现 · 类增量学习
1. 引言
如今,随着5G技术的快速发展和物联网技术的广泛应用,接入网络的物理设备数量庞大。由于互联网的无控/匿名结构,使得整个大规模网络容易受到各种安全威胁的影响。入侵检测系统在信息安全技术中扮演着重要角色,有助于发现、确定和识别未经授权的使用、复制、更改和破坏信息系统。具体来说,网络入侵检测被认为是一种必要的安全机制,用于通过识别正常流量数据和恶意流量数据的模式来确定系统是否受到攻击。由于机器学习(ML)和深度学习(DL)在模式识别方面的巨大潜力,基于ML/DL的网络入侵检测技术越来越受到关注。然而,大多数ML/DL算法中存在几个错误的假设,这些假设扭曲了它们与实际入侵检测问题的映射。主要的错误假设是封闭集假设。大多数基于ML/DL的IDS的评估是在封闭集协议中进行的,在测试中只考虑训练过程中出现的已知类别。这些入侵检测方法属于封闭集分类模型,实质上是为了在训练和测试阶段进行( m m m)类分类而设计的,其中 m m m是训练过程中已知类别的数量。在现实世界中,现有的IDS通常部署在一个动态和开放的环境中,网络攻击会随着时间的推移而改变,新的未知攻击可能不断出现。考虑到训练数据集很难涵盖可能出现的所有网络攻击,基于不完整训练数据集的入侵检测模型可能会将新的未知网络攻击错误地分类为现有的已知攻击或正常类型,即模型可能无法检测到未知网络攻击。此外,这些IDS通常不够高效,无法更新用于新攻击的检测模型,因为当学习新类别时,需要从头开始重新训练ML/DL模型。近年来,为了处理未知类别并更新模型以适应未知类别,Bendale等人提出了面向构建可扩展智能系统的开放世界识别框架,该框架应能够:
- (1)检测未知测试实例是否来自训练中的已知类别或未知类别,
- (2)从所有被检测为未知类别的实例中发现隐藏的未知类别,并
- (3)从(2)中发现的新未知类别中学习并增量更新模型。
受开放世界识别框架的启发,我们提出了一种可扩展的网络入侵检测系统,旨在检测、发现和学习未知攻击,该系统旨在持续检测未知攻击并不断更新自身。关于未知类别检测,开放集分类在这一研究领域中已经被广泛研究,其目标是实现对已知类别的细粒度分类并检测未知类别。与封闭集分类不同,开放集分类实际上是设计为一个( m + 1 m + 1 m+1)类分类问题,在测试中考虑了额外的类别以检测未知类别。最近在开放集分类方面的研究主要可以分为两类:传统的基于机器学习的和基于深度学习的。基于ML的方法通常引入1-vs-Set机器与统计极值理论相结合来检测未知类别,例如极值机器(EVM)和韦布尔校准支持向量机(W-SVM)。目前,已经有几个努力将EVM和W-SVM应用于IDS以检测未知攻击。然而,这些基于ML的方法不能提供可扩展性以实现后续未知攻击的发现和学习,它们严重依赖于手动设计的特征,而且不考虑算法在处理大规模原始流量时的时间效率。最近的基于DL的方法建立了健壮的深度神经网络,并分析了网络输出来检测未知类别,最近的研究已经开始利用基于卷积神经网络(CNN)的开放集分类,并且已经被证明优于传统方法。因此,我们首先提出了基于CNN的开放集分类网络(OCN)来实现入侵检测和未知攻击检测。OCN采用最近类均值(NCM)分类器而不是softmax分类器,设计了Fisher损失和最大均值差异(MDD)损失来共同优化神经网络,使得学习到的特征表示既能帮助开放集分类,也为后续未知攻击的发现提供了基础。在KDDCUP’99数据集和CICIDS2017数据集上的实验结果表明,OCN在检测未知攻击方面优于最先进的基于机器学习和深度学习的比较方法。随后,考虑到OCN检测到的未知实例可能包含多种类型的未知网络攻击,我们提出了语义嵌入聚类方法来发现隐藏的未知攻击,通过对OCN检测到的所有未知实例的语义嵌入进行聚类。然后,由于NCM分类器在类增量学习中的潜力,我们提出了增量最近聚类中心(INCC)方法来学习发现的未知攻击,通过使用这些未知攻击的聚类中心来更新NCM分类器。实验结果证明了所提出方法在发现和学习未知攻击方面的有效性和可行性。
本文的主要科学贡献可以总结如下:
- 我们提出了开放集分类网络来检测未知攻击。首次设计了Fisher损失和MMD损失来共同优化CNN模型,然后采用基于阈值的判别方法的NCM分类器来检测未知攻击。
- 我们提出了语义嵌入聚类方法来发现隐藏的未知攻击,其中应用了DBSCAN算法来确定隐藏的未知攻击的数量,并使用K-means来对OCN检测到的未知攻击实例的语义嵌入进行聚类。
- 我们提出了增量最近聚类中心方法来学习发现的隐藏未知攻击的分类,通过允许NCM分类器适应聚类中心。本文的其余部分组织如下:在第2节中,简要回顾了相关工作。在第3节中,我们介绍了所提出的可扩展入侵检测系统。实验设置和结果在第4节中提供。第5节是结论和备注。
2.相关工作
本节概述了与我们工作相关的文献领域,包括入侵检测、未知类别检测、隐藏未知类别发现和类增量学习。
早期的入侵检测系统(IDS)工作涉及签名匹配[12]和机器学习方法[13]和[14]。最近,基于深度学习的入侵检测引起了越来越多的兴趣,目的是提高检测精度。Yan等[15]构建了基于CNN的网络入侵检测系统,并应用生成对抗网络合成攻击迹象,KDDCUP’99数据集上的实验结果验证了其有效性。Roopak等[16]评估了CNN和长短期记忆(LSTM)网络在检测物联网中的网络攻击中的性能,其中CNN的准确率为95.14%,LSTM的准确率为96.24%,表明LSTM略优于CNN,但CNN的性能仍然可接受。Zhang等[17]提出了一个基于深层次网络的入侵检测模型,该模型结合了CNN和LSTM(称为CNN_LSTM),在CICIDS2017数据集上取得了良好的性能。但这些方法属于封闭集分类模型,在测试阶段无法检测未知攻击。此外,Khan等[18]提出了一个可扩展且混合的IDS,结合了基于Spark ML的异常检测模块和基于卷积-LSTM网络的滥用检测模块,通过结合异常检测和滥用检测可以提高IDS的可扩展性。Lin等[19]设计了一个动态网络异常检测系统,它使用LSTM实现异常检测,并融入了注意力机制,其动态特性体现在采用了基于异常的方法。与这些可扩展和动态的IDS不同,我们提出的IDS的可扩展性体现在检测未知攻击和后续学习上。
就未知类别检测而言,最近提出了几项基于开放集分类的入侵检测系统研究,这些系统能够检测未知攻击。Rudd等[3]理论上证明了一个基于统计极值理论的机器学习系统可以检测未知攻击,但这并没有通过实验和实现来解决。Cruz等[11]应用了W-SVM来识别未知攻击,并在KDDCUP’99数据集上进行了评估。Henrydoss等[12]提出了一种基于EVM的开放集入侵检测方法,在KDDCUP’99数据集上对已知和未知入侵攻击的分类上获得了比W-SVM更高的准确性,EVM是IDS的最先进开放集方法。近年来,将开放集分类与深度学习结合的研究在图像识别领域被大量调查:Hendricks等[20]提出了一种基于softmax分布概率的基线方法。考虑到正确分类的样本倾向于拥有比误分类和分布外样本更大的最大softmax概率,可以通过设置概率阈值来识别未知样本。在[20]的基础上,[21]提出了ODIN,一种无需改变预训练深度神经网络的有效方法,它采用了温度缩放和向输入添加小扰动的方法,可以区分已知和未知样本之间的softmax概率分布。与现有的开放集分类方法不同,
入侵检测的未知类别检测在高度结构化样本的可变性方面要复杂得多,我们的方法引入了两个额外的损失并训练了一个更健壮的深度神经网络来检测未知攻击。
据我们所知,很少有研究发现隐藏的未知类别。Shu等[22]提出了一个深度成对分类网络,学习距离度量函数,并预测给定的样本对是来自同一类别还是不同类别,然后根据未知样本对的距离度量信息通过层次聚类确定隐藏未知类别的数量。Hsu等[23]制定了一个带有成对约束的聚类目标,并训练了一个深度聚类网络来实现图像类别的发现。因此,聚类方法可以被视为未知类别发现的有效方法。
在动态的现实世界中,新类别会随时间出现,深度学习模型需要逐渐为其更新。由于大数据存储和计算成本,每遇到一个新类别就从头开始训练深度模型以适应新类别通常不是一种可行的方法。为了解决这个问题,提出了类增量学习[24, 25],其学习过程是动态和渐进的,随着新类别的加入而进行。基于CNN模型的新类别增量学习首次在[24]中提出。Rebuf等[25]提出了一种新方法,可以逐渐添加新类别,使用少量的训练数据,称为ICaRL。它使用卷积神经网络,并采用最近类别平均分类器来学习新类别和旧类别的特征表示。事实上,NCM分类器有望被应用于类增量学习。
3.方法论
3.1 系统概览
众所周知,基于深度学习的入侵检测模型的构建依赖于大量的流量数据进行训练。鉴于正常活动的流量数据易于收集,现有的公共入侵检测数据集总是拥有足够的正常流量样本以覆盖正常类型。然而,在实际情境中,新的攻击方式总是在不断出现,训练数据集很难覆盖所有类型的攻击,而在测试阶段可能会遇到未知攻击。一个有效的入侵检测系统(IDS)应该能够扩展以处理测试中出现的未知攻击,并为之更新,因此我们提出了可扩展的IDS,其目的是检测、发现并学习未知攻击。
可扩展IDS的整个框架如图1所示,它包含三个组成部分:(1)开放集分类网络(OCN)用于检测未知攻击,它还可以通过实现对已知数据的精细分类来实现入侵检测,已知数据通常包括正常/良性类型和多种已知攻击类型;(2)语义嵌入聚类方法将由(1)检测到的未知攻击的语义嵌入聚类以发现隐藏的未知攻击;(3)增量最近聚类中心方法旨在通过允许分类器适应(2)发现的未知攻击的聚类中心来更新分类器,以学习未知攻击。这三个组件的更多细节将在以下小节中介绍。
3.2 针对未知攻击检测的开放集分类网络(OCN)
开放集分类旨在利用一组已知类别的样本来训练分类器,使分类器能够将测试样本(可能不属于任何已知类别)分类为已知类别之一或单一未知类别。这实际上是一个(m + 1)类分类问题,其中m表示训练期间的已知类别数,1表示单一未知类别。这意味着开放集分类不仅可以实现对已知类别的细粒度分类,还能将来自不同未知类别的样本检测为单一未知类别。因此,我们寻求在入侵检测中实现开放集分类,并进一步实施入侵检测和未知攻击检测,其中入侵检测代表对正常/良性类型和多种已知攻击类型的细粒度分类,未知攻击检测意味着测试中出现的多种未知攻击类型将被分类为单一未知类别。此外,值得注意的是,OCN分类出的未知类别代表的是未知攻击,而不是未知的正常类型,因为只有未知攻击的流量数据在训练数据集中无法覆盖,并且更有可能在测试中出现。
我们在本文中提出基于CNN的开放集分类网络来构建入侵检测模型。网络架构包括两个卷积层、两个最大池化层和一个全连接层,如图1所示。一方面,OCN可以通过对已知类别数据的训练,学会区分正常类型和多种攻击类型的模式,从而实现入侵检测并对已知类别实施细粒度分类。此外,为了实现未知攻击检测,OCN希望学习一个最优的特征表示f(⋅),以实现两个目标:
-
(1) 相同已知类别内的特征表示之间尽可能接近,而不同已知类别的特征表示之间尽可能远离;
-
(2) 未知类别和已知类别的特征表示之间尽可能远离。OCN的整体架构如图2所示。
为了实现这两个目标,我们设计了两个损失函数,称为Fisher损失
L
f
i
s
h
e
r
L_{fisher}
Lfisher和MMD损失
L
m
m
d
L_{mmd}
Lmmd。Fisher损失用于最小化类内距离并最大化类间距离,MMD损失最大化未知实例的特征表示分布与已知实例之间的距离。最后,将给定已知类别的交叉熵损失结合起来进行优化,OCN可以学习适合开放集分类的特征表示。
总损失公式化为:
其中α和β是惩罚因子,它们被限定在[0, 1]范围内以控制Fisher损失和MMD损失。
在前向和后向过程中,我们将输出向量
f
(
x
i
)
f(x_i)
f(xi)表示为
f
i
f_i
fi,并且还设置了神经网络参数
W
W
W和学习率
l
r
l_r
lr。在每次迭代
t
t
t中,我们通过
计算损失
L
L
L和反向传播误差,然后在
t
+
1
t+1
t+1次迭代中通过
(3)更新参数W,直到达到收敛。该网络通过带动量的随机梯度下降算法(SGD)随时间进行优化。
3.2.1 费舍尔损失
受费舍尔判别分析精神(spirit)的启发,该方法试图找到一个线性投影,最大化类间距离并最小化类内距离,我们设计了费舍尔损失
L
fisher
L_{\text{fisher}}
Lfisher,由公式 (4) 计算。
通过最小化费舍尔损失,神经网络可以学习一个非线性映射,以实现最大化特征表示中的类间分离和最小化类内分离的目标。
其中, n n n 是训练实例的数量, f ( x i ) f(x_i) f(xi) 表示网络最后一层中第 i i i 个实例的输出激活向量值, c y i c_{yi} cyi 表示第 i i i个实例的最近类别质心, λ \lambda λ 定义为平衡类间分离和类内分离的惩罚因子, m m m 指已知类别的数量, j j j 和 k k k 类的质心分别表示为 c j c_j cj 和 c k c_k ck。
考虑到仅使用费舍尔损失进行训练会不稳定,必须将费舍尔损失与交叉熵损失结合起来进行有效训练,这与 [6] 的观点类似。理想情况下,我们需要在每次迭代中考虑整个训练集来更新类别质心,但这样做效率低下甚至不切实际。因此,我们基于小批量进行更新,但每个批次中现有的错误分类样本会在训练过程中引起较大的扰动。为了避免引入错误分类信息,在计算类别质心时,我们只使用正确预测的实例的激活向量。实际上,我们可能无法计算当前批次中所有类别的质心。为确保在当前批次中可以使用完整的类别质心信息来计算费舍尔损失,类别质心通过公式 (5) 计算,
该公式基于移动平均法,并利用上一批次的质心信息来改进和补充当前批次的质心信息。
其中, c t k c_t^k ctk 和 c t − 1 k c_{t-1}^k ct−1k 分别表示当前批次和上一批次的第 k k k 个类别质心, δ \delta δ 表示滑动因子, n k n_k nk 是第 k k k 个类别的数量。如果无法从当前批次获得类别质心,则使用上一批次的类别质心进行补充,并将滑动因子设置为1.0。否则,将滑动因子设置为0.5,以防止批次之间的质心值出现较大的波动。
3.2.2 MMD损失
为了实现第二个目标,即未知类别和已知类别的特征表示尽可能远离,OCN旨在最大化未知类别和已知类别的特征表示之间的分布差异。然而,在训练阶段无法获取未知实例。我们可以在训练过程中合成超出分布范围的数据来替代未知数据,然后将从合成的超出分布范围的数据中学到的知识转移到对真实未知数据进行分类。有指出向原始数据添加小扰动会导致神经网络的错误预测 [26],因此向原始数据中添加噪声以生成超出分布范围的数据 [21]。在本文中,我们通过向输入数据
X
X
X 添加噪声
ϵ
\epsilon
ϵ 来合成超出分布范围的数据
X
s
X_s
Xs:
考虑到最大均值差异用于衡量两个分布之间的差异,它具有快速收敛、易计算和有限样本估计低偏差的优点 [27],因此在迁移学习研究领域得到了广泛应用。
我们设计了由公式 (7) 计算的 M M D MMD MMD损失 L mmd L_{\text{mmd}} Lmmd。
通过最小化它们的
M
M
D
MMD
MMD值的负值,
O
C
N
OCN
OCN可以实现最大化合成超出分布范围的数据
X
s
X_s
Xs与已知数据
X
X
X 之间的分布差异的目标。
其中,我们使用多核MMD [28] 计算分布差异,
L MK-MMD ( f ( x s ) , f ( x t ) ) = E x s x s ′ [ k ( f ( x s ) , f ( x s ′ ) ) ] + E x t x t ′ [ k ( f ( x t ) , f ( x t ′ ) ) ] − 2 E x s x t [ k ( f ( x s ) , f ( x t ) ) ] L_{\text{MK-MMD}}(f(x_s), f(x_t)) = E_{x_s x_s'} [ k(f(x_s), f(x_s'))] + E_{x_t x_t'} [ k(f(x_t), f(x_t'))] - 2 E_{x_s x_t} [ k(f(x_s), f(x_t))] LMK-MMD(f(xs),f(xt))=Exsxs′[k(f(xs),f(xs′))]+Extxt′[k(f(xt),f(xt′))]−2Exsxt[k(f(xs),f(xt))],
多核函数采用高斯核,计算公式为 k ( p , q ) = e − ∣ ∣ p − q ∣ ∣ 2 γ k(p, q) = e^{-\frac{||p-q||^2}{\gamma}} k(p,q)=e−γ∣∣p−q∣∣2。
MMD损失项可以促使我们的OCN模型从合成超出分布范围的数据和已知数据中学到更多知识,从而加速训练的收敛。
3.2.3 未知类别检测的最近类别均值分类器NCM
典型的神经网络通常采用softmax分类器。最后一个全连接层的输出激活向量通过softmax分类器进行归一化,强制输出向量的总和为1。当未知实例输入网络时,softmax分类器仍然会输出一个与最近邻类别相关的高概率,使其总和为1。因此,具有softmax分类器的典型神经网络在未知实例方面可能过于自信,这是softmax分类器在未知类别检测中的主要缺点。
在本文中,所提出的OCN采用最近类别均值分类器代替softmax分类器。NCM分类器已广泛用于多类别分类模型中,其中测试实例被分类到与最近类别数据均值最接近的类别。与softmax分类器不同,NCM中的类别表示仅基于最近类别的均值表示,与其他类别无关。OCN学习到的特征表示将确保在特征嵌入空间中尽可能接近于同一类别的训练实例,即尽可能接近其类别均值。因此,距离最近已知类别均值更远的实例更有可能属于未知类别,因为它与已知类别不同。
我们使用基于阈值的判别方法实现开放式分类,并对 ( m + 1 ) (m + 1) (m+1) 个类别进行分类。当测试实例到其最近类别均值的距离大于其相应类别的阈值时,将其分类为未知类别,否则将其分配给最近的类别标签。因此,对于所提出的OCN模型,测试实例的预测标签可以通过以下公式计算:
其中,
d
d
d 表示欧几里得距离函数,
threshold
k
\text{threshold}_k
thresholdk 表示相应类别的阈值。对于阈值估计,我们将给定类别的所有实例到相应类别均值的距离按升序排列,然后将
θ
\theta
θ 百分位距离作为给定类别的阈值。
3.3 用于未知攻击发现的语义嵌入聚类
OCN分类为单一未知类别的样本可能包含多种类型的未知网络攻击。考虑到在缺乏先验知识的情况下,无监督聚类可以发现隐藏的类别,但直接对原始数据进行聚类并不合适,特别是对于高维原始数据,由于聚类性能不佳和收敛速度慢。因此,我们提出了语义嵌入聚类方法来发现隐藏的未知攻击,该方法对OCN检测到的未知实例的语义嵌入进行聚类。
网络的最后一层可以将输入的学习特征映射到其对应的类别中,换句话说,网络输出的最后一层学习特征表示可以将每个输入实例与其对应类别的语义描述连接起来,其中类别的语义描述仅指攻击类型或正常类型。学习到的特征表示可以构建本文的语义嵌入空间。有指出语义嵌入空间中存在聚类结构,即相同类别的样本在嵌入到语义空间后将聚集在该类别的语义嵌入周围。此外,已知类别实例的类内和类间特征也可以转移给未知类别实例。因此,通过聚类未知攻击的语义嵌入,即使缺乏未知类别数据的先验知识,也有可能实现未知攻击的发现。
在对未知实例的语义嵌入进行聚类以识别隐藏的类别之前,确定最佳聚类数是第一步。本文采用聚类算法DBSCAN来找到最佳聚类数。DBSCAN能够有效地发现任意形状的聚类,它只需要两个输入参数,Eps和MinPts,但可以返回估计的聚类数。首先,我们将测试已知数据的语义嵌入作为验证数据,以确定Eps和MinPts的最佳值。之后,我们将DBSCAN应用于OCN检测到的未知实例的语义嵌入,然后将聚类数K确定为未知攻击的数量。随后,我们使用带有聚类数K的K均值对未知数据的语义嵌入进行聚类,以识别未知攻击的隐藏聚类。返回的聚类质心对于后续的类别增量学习非常有用,这就是我们选择K均值作为聚类方法的原因。整个算法如下所示。
3.4 用于未知攻击的类别增量学习
在发现隐藏的未知攻击之后,我们将类别增量学习应用于我们的入侵检测模型,目的是学习对新发现的未知攻击进行分类:新类别逐渐添加到预训练的分类器中,以实现对新类别的分类,而无需重新训练深度神经网络模型。
我们采用的NCM分类器属于基于距离的分类器,可以以(接近)零成本的方式向现有类别添加新类别,因此,它有潜力应用于类别增量学习。
在学习未知攻击时,NCM分类器通过简单地计算和适应新类别的平均值来适应新类别,NCM分类器前面的深度神经网络模型的权重保持与预训练的OCN模型相同,无需重新训练OCN模型。在理想情况下,我们假设可以准确找到所有隐藏未知类别的样本,即可以获取所有新未知攻击的样本,我们提出了增量最近类别均值方法(INCM),其中新类别的均值可以直接通过使用新类别的所有样本来计算。在实际情况下,我们使用语义嵌入聚类来发现新的未知类别。由于聚类误差,我们无法正确获取所有新未知攻击的样本,但获得的聚类质心可以被视为新类别均值的估计。因此,我们提出了增量最近聚类质心方法(INCC),其中新类别均值直接由相应的聚类质心替换。
之后,我们的NCM分类器适应新类别均值来对新类别样本进行分类。
我们的类别增量学习方法依次学习未知攻击的新类别,整个算法如下所示。
4.实验
4.1 数据集描述
为了评估提出的可扩展入侵检测系统的性能,我们在KDDCUP’99(KDD)数据集和CICIDS2017数据集上进行实验。
KDD数据集是最受欢迎的入侵检测数据集之一,包含41个特征的连接向量。对于KDD数据集,大多数研究都是基于高级别分类进行入侵检测,将数据分为五类,包括正常、拒绝服务(DoS)、探测(probe)、远程到本地(R2L)和用户到根(U2R)。在这种情况下,测试阶段出现的任何实例都属于已知类别之一,这是一个典型的封闭集问题。然而,如表1所示,
如果我们基于细粒度分类进行入侵检测,KDD测试数据集中存在一些攻击类别,这些类别在训练数据集中并不存在,因此,细粒度分类中存在的开放集问题是不能忽视的。
在本文中,我们在开放集协议下进行细粒度分类的入侵检测,但某些类型的攻击样本较少,不能被视为训练类别。因此,我们选择KDD中三个最常见的类别作为已知类别,分别是smurf、neptune和normal,其他常见的类别可以视为未知类别,在接下来的实验设置中,将使用snmpguess的测试样本作为验证数据集来选择惩罚因子的最佳值。
我们还采用CICIDS2017数据集作为评估数据集,这是由加拿大网络安全研究所于2017年收集的开源网络入侵检测数据集。它包含更多的网络攻击类型,并提供大量的真实世界pcap文件数据。最近的研究提出了原始流特征提取方法,可以消除复杂的特征工程,并有助于特征学习。因此,我们基于原始流特征提取方法提取了良性流和攻击流的256维头部特征,并在线发布了整个数据集。CICIDS2017数据集的更多细节如表2所示。
此外,我们选择五个常见类别作为已知类别,包括Benign、DDos、Dos Hulk、PortScan和FTP Patator。其他类别可以视为未知类别,在其中,SSH Patator和Goldeneye的流用于验证数据集,以选择惩罚因子的最佳值。为避免多类别训练中的数据不平衡问题,我们对DDos流、Dos Hulk扫描流和PortScan流进行了随机下采样,使每种攻击保留50,000个流。我们从已知类别数据集中选择80%作为训练已知数据集,剩余的20%作为测试已知数据集。值得注意的是,未知攻击的比例和测试已知正常类型的输入在测试阶段是由它们在数据集中的比例决定的。
4.2 实验配置
对于具有41维特征的KDD数据集,基于CNN的入侵检测模型采用了1D卷积层和1D最大池化层,卷积滤波器数量依次为16和32。考虑到我们从CICIDS2017数据集中提取了256维头部特征,并且头部特征可以调整为16*16,因此CNN模型采用了2D卷积层和2D最大池化层,并且卷积滤波器数量依次为32和128。对于这两个数据集,每个卷积层的内核大小固定为3,步幅设置为1,池化大小为4,步幅为2。
为了训练我们的OCN模型,我们使用SGD优化器,学习率为 1 0 − 3 10^{-3} 10−3,训练直到收敛,其中动量因子固定为 0.9 0.9 0.9,权重衰减设置为 5 × 1 0 − 4 5×10^{-4} 5×10−4。训练批量大小设置为256。对于惩罚因子α,我们采用[34]中的渐进式调度技术,对于KDD数据集和CICIDS2017数据集,α设置为 5 × 1 0 − 2 × e − 5 p 5×10^{-2} × e^{-5p} 5×10−2×e−5p,其中p从0到1逐步调度变化。对于惩罚因子β,它在两个数据集上都固定为0.01。对于KDD数据集,设置λ为 2 × 1 0 − 3 2×10^{-3} 2×10−3,对于CICIDS2017数据集,设置为 1 0 − 4 × e − 5 p 10^{-4} × e^{-5p} 10−4×e−5p。为了评估OCN在多种类型的未知攻击增加时的有效性,我们将第99百分位距离作为给定类别的阈值应用于两个数据集。
在这项工作中,我们首先将OCN与基于深度学习的现有开放集分类方法进行比较,包括Baseline [20]和ODIN [21]。需要注意的是,Baseline和ODIN首次应用于入侵检测系统以检测未知攻击,并且我们根据它们原始论文中采用的指标对它们进行评估,与OCN一起进行比较。除了Baseline和ODIN采用了softmax分类器外,网络架构和网络训练的其他设置与OCN保持一致。此外,我们还将OCN与最先进的入侵检测方法进行比较,包括EVM [10]、CNN和CNN_LSTM [17]。对于CNN,它指的是基于CNN的入侵检测模型,采用softmax分类器进行训练,仅使用交叉熵损失进行训练,其他设置与OCN保持一致。其他比较算法的实现基于它们的论文描述。
我们使用Python3.6作为编程语言,并使用Pytorch作为深度学习框架。DBSCAN和K-means的实现基于sklearn。为了评估OCN在不同GPU上运行的消耗时间,我们利用了百度AI云平台提供的几个NVIDIA GPU,包括Tesla P4、Tesla T4、Tesla V100和Tinan X Pascal。除了实验之外,所有其他实验都在本地计算机上执行。实验中使用的运行设备的详细信息列在表3中。
4.3 指标
为了评估我们的OCN的有效性,我们采用以下四个常见的与阈值无关的指标,这些指标也是Baseline [20]和ODIN [21]所采用的:
- (1) AUROC是接收者操作特征曲线下的面积。ROC曲线将真正率(TPR=TP/(TP+FN))和假正率(FPR=FP/(FP+TN))相互绘制。
- (2) AUPRIN是精度-召回率曲线下的面积,其中已知数据被指定为正类。PR曲线是一个图表,显示精度(TP/(TP+FP))和召回率(TP/(TP+FN))之间的关系。
- (3) AUPROUT是精度-召回率曲线下的面积,其中未知数据被指定为正类。
- (4) 当TPR为95%时,检测错误用于衡量误分类概率,由Pe=0.5(1 - TPR)+ 0.5 FPR计算。
在相应的实验中,所有由OCN检测到的已知类别被视为正类,而检测到的未知类别被视为负类,除了AUPROUT。 实际上,这四个与阈值无关的指标用于评估二元分类算法的性能,前三个指标的值越接近1,检测错误越接近0,分类性能就越好。
我们还采用分类准确率作为评估指标,因为本质上OCN是一个(m+1)类分类模型。 考虑到EVM在[10]中也采用了分类准确率来评估IDS中的开放集分类性能,我们将OCN与EVM进行分类准确率的比较。 在为NCM分类器设置特定阈值后,可以计算(m+1)类和单个未知类的分类准确率,分别表示为开放集准确率和未知准确率。
为了测试聚类效果,我们采用聚类准确度 [35] 作为评估指标。 记 y i y_i yi为样本i的实际标签, c i c_i ci为聚类算法得出的聚类结果,聚类准确度(Acc)定义为:
其中
n
n
n是聚类数据的总数,
ϕ
\phi
ϕ(x, y) = 1如果x = y(否则
ϕ
\phi
ϕ(x, y) = 0),
m
(
c
i
)
m(c_i)
m(ci)是聚类和标签之间的最佳一对一匹配,可以通过Kuhn-Munkres算法[36]获得。
为了评估所提出的增量学习方法,我们使用增量准确率 [25] 作为度量标准。 评估过程如下:在NCM分类器更新未知攻击后,我们将其测试在包含测试已知数据和分类器已经学习过的未知攻击的测试数据集上,然后得到多类分类准确率,即增量准确率。
4.4 结果与讨论
4.4.1 OCN对未知攻击的检测
1).在单一类型的未知攻击上进行测试
为了评估我们的OCN在检测未知攻击方面的性能,我们在添加单一类型的未知攻击和测试已知数据时,使用四个与阈值无关的指标对OCN进行评估,并将其与基于深度学习的开放集方法(包括Baseline和ODIN)进行比较。KDD数据集和CICIDS2017数据集上的实验结果如表4和表5所示,其中我们从KDD和CICIDS2017中选择的未知攻击按每种攻击的数量从大到小列出。
从表4中可以看出,在KDD数据集上,OCN在四个指标上的表现优于Baseline和ODIN。
使用OCN时,AUROC、AUPRIN和AUPROUT的平均值都在0.95以上,远高于比较方法的值。同时,检测错误的平均值远低于比较方法的值。此外,值得一提的是,当识别三种类型的未知攻击:mailbomb、back和processable时,OCN在四个指标上表现最佳。AUROC、AUPRIN和AUPROUT的值都达到了1.0,而检测错误的值为0,这表明OCN可以检测出这三种类型的未知攻击,并且不会将任何已知实例误分类为未知攻击。虽然Baseline在识别satan、mscan和httptunnel时的AUPROUT值高于OCN,但其AUPRIN值仍低于OCN的值。这表明Baseline会将已知实例误分类为未知攻击。
表5给出了CICIDS2017数据集上的比较结果,可以观察到OCN在平均指标上优于比较方法。
除了slow-http之外,所有的AUROC值都在0.9以上,表明OCN在识别这些未知攻击方面表现良好。特别是对于heartbleed,AUROC、AUPRIN和AUPROUT的值都超过了1.0,这意味着OCN可以检测到所有heartbleed的实例,而不会误分类。
与仅使用交叉熵损失进行训练的Baseline和ODIN不同,OCN同时使用Fisher损失、MMD损失和交叉熵损失进行训练,以获得基于深度神经网络的稳健的开放集分类器。这表明使用Fisher损失和MMD损失训练深度网络以区分已知和未知输入的重要性。此外,我们在两个数据集上的较好表现也表明了OCN在检测不同类型的未知攻击方面的稳健性。
2).在多种类型的未知攻击上进行测试
此外,在实际情况下,IDS通常会遇到多种类型的未知攻击,我们设置了特定的阈值来检测已知类别的实例和多种类型的未知攻击,然后可以得到分类准确度。为了进一步评估OCN的开放集分类性能,我们在已知测试数据和多种类型的未知攻击上对OCN进行测试,未知攻击按照表4和表5中列出的顺序添加,即当我们添加的未知攻击数量为2时,在图3a中表示为
N
a
N_a
Na = 2,这意味着对于OCN的测试,除了已知数据外,还添加了snmpgetattack和mailbomb的测试数据。
我们还根据各自的标准进行了与最先进的入侵检测模型的比较实验,包括
- (1)开放集分类模型EVM [12]和
- (2)封闭集分类模型CNN和CNN_LSTM [17]。KDD数据集和CICIDS2017数据集的比较结果如图3所示。
从图3中可以看出,在 N a = 0 N_a = 0 Na=0的情况下,CNN和CNN_LSTM的准确率高于我们提出的OCN和EVM,特别是CNN_LSTM实现了最高的准确率。这表明当测试数据不包含任何来自未知攻击的实例时,这些基于DL的入侵检测方法可以获得较好的性能。然而,随着未知攻击数量的增加,CNN和CNN_LSTM的准确率曲线下降,并且它们的准确率值以相同的比例下降,如图3所示。这是因为CNN和CNN_LSTM是基于封闭集分类的,只能实现(m)类别的分类。一旦在测试阶段出现未知攻击实例,这些模型将把所有未知攻击实例误分类为m个已知类别中的一个。即使CNN_LSTM是最先进的基于DL的入侵检测方法,其准确率曲线仍然会随着未知攻击实例的逐渐增加而同样程度地下降。这说明了现有基于DL的入侵检测方法的局限性,它们无法检测未知攻击。因此,有必要设计基于开放集分类的入侵检测模型,以便能够检测未知攻击。
根据图3a,在未知攻击数量增加时,OCN的准确率曲线趋于增加,然后在KDD数据集上保持稳定。值得注意的是,OCN旨在实现开放集分类,并设计为实现(m + 1)类别的分类,即OCN可以将大多数未知攻击实例检测为未知类别,因此分类准确率会增加。至于CICIDS2017数据集,OCN的准确率曲线与KDD数据集上的结果趋势相似,如图3b所示。
从表5中可以看出,OCN对于识别slowhttp的检测错误相对较高。因此,在 N a = 4 N_a = 4 Na=4的情况下,即添加第四种攻击slowhttp,OCN的开放集准确率略有下降,即添加的第四种攻击slowhttp。总的来说,OCN的开放集准确率曲线保持稳定,并且随着未知攻击的增加变化不大,验证了我们的OCN在检测多种未知攻击方面的有效性。此外,考虑到EVM作为开放集分类模型也是设计为(m + 1)类别的分类,可以将添加的未知测试样本检测为未知类别,因此EVM的准确率曲线随着未知攻击的增加而增加,如图3所示。然而,EVM的准确率曲线都低于OCN在两个数据集上的曲线,表明我们的OCN在检测未知攻击方面比EVM性能更好。此外,在 N a = 0 N_a = 0 Na=0的情况下,EVM的准确率要低于两个数据集上OCN的准确率。特别是在CICIDS2017数据集上,EVM的表现更差,准确率只有36.49%,说明EVM更倾向于将更多的已知实例分类为未知类别,从而导致已知测试样本的误分类。此外,与EVM在KDD数据集上的表现相比,在CICIDS2017数据集上的较低表现突显了EVM在具有高维特征的大型流量数据集上的潜在局限性。作为基于机器学习的方法,EVM依赖于特征工程,因此无法适用于复杂的数据集。相反,我们的OCN在两个数据集上表现良好,它利用深度神经网络自动学习最优特征表示,具有处理大型数据集的优势。
考虑到检测未知攻击是后续未知攻击发现和学习的基础,我们添加的未知攻击类型越多,我们在发现未知攻击方面就越困难。因此,在以下实验中,我们随机选择了表4和表5中的四种未知攻击类型。我们在KDD数据集上选择的四种未知攻击分别是back、satan、apache2和httptunnel,而在CICIDS2017数据集上选择的四种未知攻击分别是slowloris、heartbleed、infiltration和botnet。由于未知攻击发现的实现是基于添加多种类型的未知攻击的前提,表6显示了当添加给定的2、3和4种未知攻击时OCN的性能。
例如,对于KDD数据集,Na = 2表示添加back和satan。从表6中可以看出,OCN在开放集准确度和未知准确度方面表现良好。具体来说,未知准确度都在0.9以上,可以推断出OCN可以将大多数未知攻击实例识别为未知类别,当添加多种未知攻击时,它可以为后续未知攻击发现和增量学习提供可行的基础。此外,开放集准确度也超过0.85,表明OCN在已知类别数据和未知类别数据的分类中都能取得良好的性能。
3).OCN的消融研究
在提出的OCN方法中,我们引入了Fisher损失和MMD损失作为贡献。为了调查OCN每个单独贡献的影响,我们进行了消融研究,并考虑了以下情况:
- (1) CE:这是CNN基线,只使用交叉熵(CE)损失进行优化。
- (2) CE+FL:除了交叉熵损失外,还将Fisher损失(FL)结合在一起对CNN基线进行优化。
- (3) CE+FL+MMD(OCN):这是我们提出的OCN,其中交叉熵损失、Fisher损失和MMD损失结合在一起进行联合优化。
在这个消融研究中,三种情况的实验设置保持一致,除了训练损失。
图4展示了在KDD数据集和CICIDS2017数据集上添加多种未知攻击时CE、CE+FL和CE+FL+MMD的未知攻击检测准确度。
可以观察到,CE+FL和CE+FL+MMD的未知攻击检测准确度比CE更高,表明Fisher损失和MMD损失在提高未知检测准确度方面的重要性。对于KDD数据集,OCN结合Fisher损失和MMD损失明显优于仅具有交叉熵损失的CNN基线,特别是在检测3或4种未知攻击类型时,看起来Fisher损失和MMD损失使我们的神经网络能够学习到一种优化的特征表示,有助于检测更多类型的未知攻击。
4.4.2 未知攻击发现的语义嵌入聚类
1) 评估语义嵌入聚类
为了评估我们提出的用于未知攻击发现的语义嵌入聚类方法的有效性,我们在KDD数据集和CICIDS2017数据集上测试了我们的语义嵌入聚类方法的性能。在实验中,我们使用DBSCAN和K-means实现了我们的语义嵌入聚类方法。这里的聚类数据是表6中提到的给定2、3和4种未知攻击的语义嵌入。在确定最佳聚类数量之前,我们对测试已知数据的语义嵌入实施DBSCAN聚类算法,以确定Eps和MinPts的最佳值。为了充分测试我们的方法,我们比较了由DBSCAN确定的未知攻击数量 N N N和实际未知攻击数量 N a N_a Na,然后我们使用 N N N评估未知攻击的语义嵌入的聚类结果,采用K-means来衡量聚类准确性。
实验结果如表7所示。
可以发现,确定的未知攻击数量N与实际添加的未知攻击数量Na相同。因此,可以推断我们采用的DBSCAN算法在发现隐藏的未知攻击数量方面是有效的,并且从测试已知数据中得到的Eps和MinPts的最佳值可以有效地转移到测试未知数据中。对于KDD数据集,K-means具有较高的聚类准确性,这表明我们在聚类未知攻击的语义嵌入时所使用的K-means是有效的。然而,对于这两个数据集,随着未知攻击数量的增加,聚类准确性倾向于下降,表明聚类质量下降,我们的方法更难以发现更多的隐藏未知攻击。
2) 语义嵌入空间的视觉解释
最后,我们还提供了使用语义嵌入聚类方法进行未知攻击发现的可行性的视觉解释。语义嵌入空间的维数等于训练已知类别的数量。考虑到我们在KDD数据集上选择了三个训练已知类别,语义嵌入可以在KDD数据集的3D空间中描述。图5显示了KDD数据集上测试已知类别和未知类别的语义嵌入的3D图。
从图5可以看出,大多数实例都投影在它们各自的类别附近,似乎在语义嵌入空间中存在聚类结构。这提供了关于我们的语义嵌入聚类方法如何实现未知攻击发现的有用证据。
4.4.3 未知攻击的类增量学习
为了评估我们的类增量学习方法,我们在KDD数据集和CICIDS2017数据集上实施INCC和INCM来更新对已发现的未知攻击的检测模型。
表8给出了INCC和INCM的实验结果,涉及增量准确性。
m表示训练已知类别的数量,对于KDD数据集,m等于3,而对于CICIDS2017数据集,m为5。在m的情况下,准确性指的是仅关于测试已知数据的原始测试分类准确性。对于KDD数据集,INCC和ICCM几乎达到相同的增量准确性。由于我们的语义嵌入聚类方法在
N
a
N_a
Na = 2和
N
a
N_a
Na = 3的情况下具有相对较高的聚类准确性(如表7所示),所得到的聚类中心可能接近于这三种攻击的类均值。因此,如果前述的语义嵌入聚类方法可以获得良好的聚类性能,则适用于实际情况的提出的INCC可以达到与适用于理想情况的ICCM相似的性能。此外,值得注意的是,随着新类别数量的增加,增量准确性会略微下降,表明OCN在不重新训练的情况下学习更多新类别的增量的局限性。
4.4.4 计算分析
为了评估我们方法和比较的开放集分类方法的计算复杂性,我们评估了每种方法在KDD数据集和CICIDS2017数据集上的训练和测试时间消耗。Baseline、ODIN和我们的方法都属于基于深度学习的方法,并使用NVIDIA GTX 1080 Ti GPU来加速训练和测试速度,而EVM作为传统算法仅在CPU上运行。实验在本地计算机上运行,结果如表9所示。
从表9中可以看出,与其他方法相比,EVM的训练和测试时间最长,这表明EVM不够高效,可能不适合在实际场景中部署。值得注意的是,我们的方法在GTX 1080 Ti GPU上运行,在CICIDS数据集上的训练速度比在CPU上运行的EVM快了33.3倍,验证了GPU的加速能力。此外,我们的方法的训练时间比Baseline和ODIN要长。这是因为所提出的OCN使用Fisher loss、MMD loss和Cross Entropy loss进行训练,以获得稳健的开放集分类模型,其中Fisher loss和MMD loss的额外计算需要更多时间。考虑到我们的方法可以获得更好的开放集分类性能,这意味着计算与性能之间存在权衡。然而,我们方法的测试时间在两个数据集上都不到1秒,这种权衡在实际应用中是可以接受的。此外,语义嵌入聚类方法和类增量学习方法所需的时间都很短,如表9所示。特别是对于类增量学习,所提出的方法不需要重新训练模型,NCM分类器只需计算并调整新类别的均值以学习新的攻击,因此运行速度非常快。
考虑到不同的运行设备在训练和推断的执行时间方面表现不同,我们还评估了在云平台上使用几种流行的NVIDIA GPU对所提出的OCN方法的时间消耗,包括Tesla P4、Tesla T4、Tesla V100和Tinan X Pascal。实验结果如图6所示。
从图6中可以看出,
在GPU中,Tesla P4在两个数据集上的训练和测试时间最长,因为P4的cuda核心比其他GPU少,仅有表3中显示的2560个cuda核心。相反,Tesla T4在两个数据集上都取得了令人满意的加速性能,并且在训练和测试速度上超过了其他GPU,验证了其额外的320个图灵张量核心在加速深度学习训练和推断方面的有效性。此外,尽管Tesla V100被认为是最先进的数据中心GPU,但在两个数据集上都没有取得加速训练和测试速度的优越性能,特别是在KDD数据集上。可能是因为我们的OCN在每个数据集上的训练并不需要占用太多的计算资源,而V100 GPU的计算和加速能力无法充分利用。此外,应该注意的是,Tinan X Pascal GPU和GTX 1080 Ti GPU具有相同数量的cuda核心和接近的GPU内存带宽值,但GTX 1080 Ti在使用KDD数据集训练OCN时几乎比Tinan X Pascal快2.2倍,并且在成本上更便宜,因此使用GTX 1080 Ti加速训练OCN是更合适的选择。最后,应该指出的是,所提出的OCN的运行时间仍有进一步加速的空间,未来可以使用更先进和更高效的GPU进行加速。
5.结论
本文提出了可扩展的入侵检测系统,用于检测、发现和学习未知攻击。首先,提出了开放集分类网络来实现入侵检测和未知攻击检测。随后,提出了语义嵌入聚类方法来发现由OCN检测到的所有未知实例中隐藏的未知攻击。然后,我们提出了增量最近簇中心方法来学习发现的隐藏未知攻击的分类。对KDD数据集和CICIDS2017数据集的大量实验证明了所提出方法的有效性和可行性,这也可以视为对我们框架背后理论的有效验证。在未来,如果在测试阶段出现来自未知攻击和未知正常类型的数据,我们提出的方法将将它们检测为未知类别,无论它们是否恶意都需要手动判断。此外,进一步的工作将集中在更有效的未知攻击发现和学习方法上。
致谢:本工作得到中国国家重点研发计划资助,项目编号为2020YFC1522503。
注释
- 【1】"封闭集协议"在这段文本中指的是在深度学习方法中使用的一种数据处理和模型训练策略,它仅考虑和使用在训练阶段已知的类别。这意味着模型的训练仅基于已知的数据类别,而没有考虑或处理在实际应用中可能遇到的未知类别或攻击。这种策略的局限性在于,当面对新型或未知的攻击时,这些基于封闭集协议的入侵检测系统可能无法有效识别和响应,因为系统没有被训练来识别它们,可能会将这些未知攻击错误地分类为已知的类别。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)