原文标题:Model of the intrusion detection system based on the integration of spatial-temporal features
原文作者:Jianwu Zhang, Yu Ling, Xingbing Fu, Xiongkun Yang, Gang Xiong, Rui Zhang
原文来源:Computers & Security 2020
原文链接:https://www.sciencedirect.com/science/article/pii/S0167404819302214
文章目录
1 简介
传统的机器学习方法,如SVM、贝叶斯网络、聚类等,当数据集的规模较小、维度较低时,具有较好的分类效果。但是,在实际的网络环境中,存在大量的高维、无标签、非线性数据,这就要求我们建立新的入侵检测模型。
本文提出了一种模型,将多尺度卷积神经网络和长短期记忆相结合(Multiscale Convolutional Neural Network with Long Short-Term Memory,MSCNN-LSTM)。模型首先使用多尺度卷积神经网络(MSCNN)分析数据集的空间特征(spatial features),然后使用长短期记忆(LSTM)网络处理时间特征(temporal features)。 最后,该模型利用时空特征(spatial-temporal features)进行分类。 在实验中,使用公共入侵检测数据集UNSW-NB15作为实验训练集和测试集。 与基于传统神经网络的模型相比,MSCNN-LSTM模型具有更好的准确性,误报率和误报率。
2 相关工作
2.1 入侵检测系统
IDS分类:
- 基于特征的检测系统(signature-based)
通过分析已知的攻击模式,提取流量特征;然后将这些特征与后续检测系统提取的特征进行比较,以发现后续的攻击流量并发出警告。 基于特征的检测系统的优点是准确率高,但无法分析未知的攻击方式,如0-day漏洞攻击和APT(Advanced Persistent Threat)攻击 。
- 基于异常的检测系统(anomaly-based)
也称为基于网络行为的检测系统,主要依赖于传统的机器学习和深度学习算法。 在这种方法中,首先提取部分流量特征;然后使用有监督或无监督的学习方法,基于这些特征来构建学习框架。 基于网络行为的检测系统可以检测正常和恶意网络流量, 这种方法的好处是它可以检测未知攻击。但该方法的困难的是,设计一组代表性的特征来检测网络流量并训练模型。
2.2 深度神经网络
- 卷积神经网络CNN
主要用于提取数据集的空间特征
- 递归神经网络RNN
为神经网络中的每个节点添加了一个自相关加权值作为记忆单元,可以记忆神经网络之前的状态
- 长短期记忆网络LSTM
LSTM在RNN的结构中中添加了忘记门,因此LSTM网络可以有效地从长序列中提取时间特征
时空特征是入侵检测系统中最常用的两个检测特征。目前的研究方法都应用CNN或RNN来构建单个模型,这显然不够全面。
数据流量中的“字节、数据包、数据流”和自然语言处理中的“字符、句子、段落”非常相似。因此,对网络流量的分类类似于将自然语言中的段落分为正样本和负样本。
3 MSCNN-LSTM设计
3.1 数据选择
由于KDDCUP99和NSL-KDD年代过于久远,本文采用公开数据集UNSW-NB15.
3.2 数据处理
包括数据标准化和数据格式转换。原始数据中,每条数据都有49个特征和1个标签,其标签为“attack”和“normal”,为了以数据流的形式将数据输入到神经网络中,必须要将字符型属性转化为数值型。
数据集包括9中类型的异常行为:Fuzzers, Analysis, Backdoors, DoS, Exploits, Generic, Reconnaissance, Shellcode and Worms
特征可以分为以下几类:流量特征,基本特征,内容特征,时间特征,附加生成的特征、标签特征。
数据集的49个特征中,显然存在一部分冗余。因此使用前人所得出的特征子集,这些特征子集是通过使用遗传算法作为特征搜索策略,并使用逻辑回归作为分类器来获得的,如下表所示:
3.2.1 数据标准化(standardization)
特征‘proto’、‘state’、‘service’、‘attack_act’的值都是字符型的,我们将其转化为数字型。比如特征‘proto’,将其三个最重要的值‘tcp’、‘udp’、‘icmp’分别映射为1、2、3,其余协议映射为4.
3.2.2 数据归一化(normalization)
通过线性转换,将特征值归一化到[0, 1]区间内:
3.3 特征学习过程
整个数据流图像的空间特征,是CNN从单个的图像中学到,如下图所示,然后MSCNN的输出结构是单个的数据流向量。
LSTM从多个数据流向量中学习时间特征,如下图所示,输出是代表网络数据流时空特征的、单个的数据流向量,它将根据提取出的特征被进行分类。
3.4 多尺度卷积(multiscale convolution)
对于网络流量的识别,不仅需要分散的局部特征(local feature),也需要将多个局部特征联合起来进行分类,因此将CNN调整为MSCNN。本文使用多个大小不同的卷积核来提取特征,并将它们组合以获得多组局部特征。MSCNN结构将基于三个原始的多尺度卷积层(每层有多个卷积核进行采集),三个卷积层,一个池化层和三个全连接层, 网络结构参数如下表所示:
MS卷积采用了三个不同尺度的卷积核,因为2×2、3×3的卷积是比较耗时的,所以在之前先进行1×1的卷积操作来降低特征空间的维度:
- 关于1×1卷积核
如果当前层和下一层都只有一个通道,那么1×1卷积核确实没什么作用,但是如果它们分别为m层和n层的话,1×1卷积核可以起到一个跨通道聚合的作用,所以进一步可以起到降维(或者升维)的作用,起到减少(或增加)参数的目的。
3.5 LSTM网络
3.5.1 RNN
首先介绍一下传统的递归神经网络(Recurrent neural network: RNN):
- 为当前状态下数据的输入
- 表示接收到的上一个节点的输入
- 为当前节点状态下的输出
- 为传递到下一个节点的输出
通过上图的公式可以看到,输出 h’ 与 x 和 h 的值都相关。而 y 则常常使用 h’ 投入到一个线性层(主要是进行维度映射)然后使用softmax进行分类得到需要的数据。这里的y如何通过 h’ 计算得到往往看具体模型的使用方式。通过序列形式的输入,我们能够得到如下形式的RNN:
3.5.2 LSTM
LSTM是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
LSTM结构(右图)和普通RNN(左图)的主要输入输出区别如下所示:
相比RNN只有一个传递状态,LSTM有两个传输状态,(cell state)和(hidden state)。其中改变得很慢,通常输出的是上一个状态传过来的加上一些数值。而则在不同节点下往往会有很大的区别.
- 首先使用LSTM的当前输入和上一个状态传递下来的拼接训练得到四个状态:
其中,、、是由拼接向量乘以权重矩阵之后,再通过一个激活函数转换成0到1之间的数值,来作为一种门控状态。而则是将结果通过一个激活函数将转换成-1到1之间的值(这里使用是因为这里是将其做为输入数据,而不是门控信号)。
- 下面开始进一步介绍这四个状态在LSTM内部的使用
其中, 是Hadamard Product,也就是操作矩阵中对应的元素相乘,因此要求两个相乘矩阵是同型的。 则代表进行矩阵加法。
LSTM主要有三个阶段:
- 忘记阶段
这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。具体来说是通过计算得到的(f表示forget)来作为忘记门控,来控制上一个状态的哪些需要留哪些需要忘。
- 选择记忆阶段
这个阶段将这个阶段的输入有选择性地进行“记忆”,会对输入进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。当前的输入内容由前面计算得到的表示。而选择的门控信号则是由(i代表information)来进行控制。
将上面两步得到的结果相加,即可得到传输给下一个状态的,也就是上图中的第一个公式。
- 输出阶段
这个阶段将决定哪些将会被当成当前状态的输出。主要是通过来进行控制的。并且还对上一阶段得到的进行了放缩(通过一个tanh激活函数进行变化)。
与普通RNN类似,输出往往最终也是通过变化得到的
3.6 池化层
池化的目的是减少训练参数,加快网络训练速度,其主要作用是执行下采样(down-sampling)。通过池化可以降低模型的过拟合,提高模型的泛化能力。池化包括两种:
- 最大值池化(max-pooling):通过subsample数据,主要选择那些具有更好的分类和标识的特征,因此总的来说,其效果比较好
- 均值池化(mean-pooling)
但是特征提取的误差主要来自于两方面:由于邻域大小的限制,估计值的方差增大;卷积层参数的误差导致估计值的偏差。均值池化可以缓解第一种,最大值池化可以缓解第二种。
即均值池化可以保留更多的背景特征信息,它强调整体的特征信息;而最大值池化可以保留更多的纹理特征信息,它强调局部的重点。
因此均值池化在信息的完全传递中会更有用,而使用最大值池化会丢失许多特征信息。因此本文选用均值池化。
3.7 模型反馈
模型在CNN中使用反向传播算法(back propagation:BP)。
- 残差网络(Residual Network,ResNet)
随着神经网络层数的加深,会产生梯度爆炸(激活值变为无穷大)和梯度消失(激活值变为无穷小)问题。残差网络通过跳跃连接,将前面的激活值跳过中间的网络层,直接传递到更后面的网络层中去,以此来避免梯度消失和梯度爆炸。从而使得训练更深层次的神经网络成为可能。
4 实验
4.1 实验数据
训练集中包含175341条数据,测试集中包含82332条数据。采样需要遵循大样本平均采样和小样本完整采样的原则。 通过采样获得的测试集为Test_Set_A。 下表中显示了每个数据集中的异常行为类别和分布。
为了进一步测试模型的泛化能力,这项工作中使用了一个新的测试集Test_Set_B。 观察数据集,我们可以发现网络流量的正常行为大约占总流量的三分之一,而罕见的攻击类别“Worms”和“Shellcode”仅占很小的比例。因此,在Test_Set_B中,“Worms”和“Shellcode”类型的比例有所增加。 下表展示了测试集Test_Set_B的具体分布:
4.2 实验过程
每个MS卷积层使用三种不同大小的卷积核,padding方法使用“same padding”,损失函数使用“Categorical_crossentropy function”,优化器使用“AdamOptimizer”,权重和偏移量使用0均值的高斯初始化。
使用dropout来避免过拟合,其连接概率p在通过实验探索后选取p=0.5
4.3 实验度量
4.4 实验结果
设置了三个对照实验:
下图比较了在罕见攻击情况下这四个模型的检测能力。检测罕见攻击情况的重点是减少误报率
5 总结
- 尽管使用神经网络不需要太多的关注特征工程,但是在面对众多的特征时,需要进行进一步的特征选择
- 现实中,恶意软件流量相对于正常流量来说占比很小,而且不同而已流量所占的比例也不同,因此提高模型的泛化能力是关键
- 学习点:MSCNN-LSTM集成模型
来源:CSDN
作者:Alst0n
链接:https://blog.csdn.net/Sc0fie1d/article/details/104748404