深度学习进行网络流识别

摘 要

近年来,计算机网络已成为我们生活中不可或缺的一部分,而这些网络很容易受到各

种类型的网络攻击,危及我们的数据安全和通信自由。近年来,有一种新的入侵检测方法,该方法利用网络数据流的图像转换生成 RGB 图像,这是我们的图像数据集,并利用先进的深度学习模型对其进行分类。可以使用决策树算法来识别重要特征,并使用窗口和重叠机制将不同尺寸的输入转换为标准尺寸的图像,供分类器使用。

之后我们可以利用在计算机视觉和自然语言处理领域比较火热的模型,即Transformer进行分类。选用视觉转换器(ViT)分类器对得到的图像进行分类。这个是将Transformer用于计算机视觉领域比较基础的模型。根据这个完成基础的分类识别。

我们选用的数据集是CICIDS 2017数据集,实验结果证明我们生成的图像是合理的,一些网络攻击能被VIT有效识别。进一步的展望是我们可以考虑根据扩散模型去扩散我们的图像,希望能处理类别的不平衡问题。

关键词:网络流、图像 、Transformer、VIT、CICIDS 2017数据集

第1章 绪论

1.1 研究背景

近年来,计算机网络已成为我们生活中不可或缺的一部分,而这些网络很容易受到各

种类型的网络攻击,危及我们的数据安全和通信自由。

机器学习被用于提高 IDS 的准确性,主要是改进检测算法和输入网络流审查。最早的机器学习方法之一KNN(又称传统聚类)自 1996 年起就开始使用。最近,基于统计、信号处理、信息理论 以及数字信号处理、高级检测和分类算法被提出。然而,这些技术的多类分类准确率仍然很低,误报率也很高。作者在文献[1]中指出,网络流数据量大,具有时间序列数据的所有特征,在处理过程中很容易导致数据包丢失和中断,严重影响检测精度和误报率。

网络 IDS(NIDS)面临的主要挑战之一是需要处理大量的网络流数据。对于每个数据流,都有许多可能的特征(如到达时间间隔、数据包大小等)可以提取,但并非每个特征都有助于确定攻击是否正在进行。另一个挑战是网络入侵的多样性和每种入侵类型的模糊性。有许多不同类型的攻击,其中一些具有相似的特征,从而导致错误分类。第三个挑战是,总有一些新的攻击类型是网络入侵防御系统以前从未见过的,因此网络入侵防御系统无法识别正在进行的攻击。因此,我们面临的问题是,如何学习哪些特征对检测一组实时网络数据中的此类入侵很重要?如何提高系统的自学能力,以便能够区分不同类型的攻击?如何才能对恶意和良性网络流进行最准确的分类,从而检测出新型攻击?

为了提高 NIDS 的性能和准确性,我参考文献[2]去将特定时间间隔内的网络流模式转换为二维图像的方法。使用经典的视觉Transformer模型[3]去识别图像。图像的一个维度是网络流的各种测量值(即特征),另一个维度是这些测量值随时间变化的值。然后,我们将使用图像处理技术对这些图像进行恶意或良性分类。

第2章 原理方法

2.1 VIT的基础原理

受NLP中Transformer成功的启发,提出VIT的文献将标准Transformer以最少的修改直接应用于图像。为了做到这一点,我们将一个图像分割成一个补丁,并提供这些补丁的线性嵌入序列作为一个变压器的输入。图像补丁的处理方法与NLP应用程序中的标记(单词)相同。以有监督的方式对该模型进行图像分类训练。

图2-1 VIT原理框图

如图2-1所示,我们将一个图像分割成固定大小的补丁,线性嵌入每个补丁,添加位置嵌入,并将得到的向量序列提供给一个标准的变压器编码器。为了进行分类,我们使用在序列中添加额外可学习"分类标记"的标准方法。

Transformer编码器由多层多头自注意(MSA)和MLP块组成。在每个块之前应用Layernorm(LN),在每个块之后应用剩余连接。分类头由一个在训练前时间有一个隐藏层的MLP实现,在微调时由一个单一的线性层实现。

作为原始图像补丁的替代方案,输入序列可以由CNN的特征图形成。在该混合模型中,将补丁嵌入投影应用于从CNN特征图中提取的补丁。作为一种特殊情况,块的空间大小可以为1x1,这意味着输入序列是通过简单地将特征图的空间投影来获得的分类输入嵌入和位置嵌入。

2.2 流转换成图像的基本方法

特征选择。 使用决策树对不同类型攻击的各种网络流测量(即特征)进行排序的方法,并为我们的分类算法选择最重要的特征。**流量到图像的转换。**将网络流量转换为图像,即选择最重要的测量值并将其转换为RGB图像表示。

将网络特征转换为二维图像。在这种方法中,将每个请求流转换成一个二维矩阵,矩阵的大小与要检查的数据特征总数相对应(例如,对于一个有 121 个特征的请求流,他们将其转换成一个 11 × 11 的矩阵)。然后将二维矩阵转换为二维图像。利用相邻时间段内数据请求之间的相关性在一定时间框架内对这些数据进行组合和协同处理,是提高分类准确率和降低误报率的关键。

图2-2 整体入侵检测架构图

第3章 实验步骤

3.1确定重要特征

在使用数据预处理器模块进行干扰检测之前,我们需要确定要从 CSV 文件中提取哪些重要特征。CSV 文件的每一行代表一个网络流,每一列代表一个特定的网络特征。例如,在 CIC IDS2017 数据集中,有 78 个特征,因此 CSV 文件有 78 列。为了确定哪些特征对识别攻击很重要,我们采用了决策树分类算法,为每种攻击类型选择最重要的特征。我

们使用基于马哈拉诺比斯距离的超采样(MDO)技术来平衡每个类别的距离,从而提高决策树的准确性。MDO 是一种利用 Mahalanobis 距离生成合成样本的超采样技术。事实证明,这种方法在使用不平衡数据集进行训练的多类多标签分类模型中非常有效。

例如,在 CICIDS 2017数据集中,有9类不同的网络 流数据(8 类恶意数据和 1 类良性数据)。它们是Patator 、Benign、DDoS、DoS 、Bot 、PortScan、Heartbleed 和 Infiltration。我们建立了一棵决策树,将所有类型的攻击与良性请求结合起来,并查看 24 个特征中信息增益(IG)值最高的特征。 我们获得了24个特征 ,这 些 特 征 将 用 于 我 们的NIDS。这些特征包括 Avg Fwd Seg Size、Subflow Fwd Bytes、Dest Port、Avg Pkt Size、Source Port、Bwd Pkt Length Min 、 Idle Min 、 Fwd Pkt Length Mean、PSH Flag Count、Flow Duration、Fwd Header Length。

3.2 准备数据流到图像的转换

确定算法所需的重要特征后,我们就可以使用预处理器模块进行入侵检测了。在执行入侵检测过程中,我们的数据预处理器模块将从 CSV 文件中读取输入,CSV 文件的行代表网络流,列代表 78 个特征。首先,我们将查看 CSV 文件中的行数,并检查是否有足够的行数来生成正方形图像(这是因为入侵检测流程中的最终模块(即分类器模块)需要正方形图像)。由于我们已经为感兴趣的攻击确定了 24个重要特征(即 24 列),因此需要确保输入 CSV文件也至少有 24 行。)否则,CSV 文件中将新增所有特征值均为

0的空行。接下来,我们会删除 CSV 文件中的所有其他列,但我们已确定为入侵检测系统重要特征的 24 列除外。这个新的 CSV 文件将成为下一个模块的输入,即流式图像转换器模块。

3.3流到图像转换器

下一步是将新 CSV 文件中的网络流转换为图像。由于新的CSV 文件大小不同(列数对应于特征点数。我们需要对图像进行额外处理,以确保图像大小合适,适合拟议解决方案中的模块。这可以通过两个步骤来实现:(i) 将流量数据映射为 RGB 值,以及 (ii) 缩放和重叠机制。在这一步中,首先我们将初始化一个空白图像,其高度和宽度与新 CSV 文件的行数和列数相同。然后,将新CSV 文 件 中 的 每 个 特 征 值 转 换 为 0x000000 至0xFFFFFF(即 24 位颜色)范围内的 RGB 值。具体做法是找到数据集中每个特征的最高值和最低值,然后使用此特征范围将特征值线性映射到24位RGB范围。在十进制中,这个24位范围是从0到 24 位 RGB 值中的每 8 位(即十六进制的两位数)是每个颜色成分的值。前 8 位(十六进制的前两位)是红色分量的值。接下来的 8 位是绿色分量的值,最后 8 位是蓝色分量的值。将流量数据映射为RGB值的算法流程如图2-3所示。

图3-1 映射算法流程图

每幅 N×24×3图像的训练标签基于图像行所代表的时间范围内是否存在攻击流。如果存在攻击,攻击类型将作为该图像的训练标签。Nx24x3是一个总的大流,之后要将Nx24x3的图片切割成多份24x24x3的小图片,设置N=24,实际获得图像的过程中,24条数据一组,利用滑动窗口机制,每次下滑12条数据,保证每个组之间有一定的交叉。

二分类时的图像标签,只要存在攻击就是攻击流。多分类的情况下,也是存在攻击就算做攻击流,但是具体归类的话要看哪个攻击类型多。

我个人映射得到的图像如下图所示:

图3-2 转换结果

其实转换后的图像也存在一些问题,一些攻击类型难以分开,且数据不平衡现象严重。少数的样本甚至只有几百个,而多数的样本会达到上万。

3.4使用VIT进行识别处理

得到图像后,就是我们进行识别处理的一个过程。我们的VIT内部结构直接采用VIT经典论文中的内部结构,即参考文献中提出的结构,因为对于很多图像处理任务经典模型可适用。

另外,我得到的图像是24x24x3的,这里序列输入的大小要仔细考虑,因为VIT是要对输入图像进行切割的。分的块越少,输入序列的维度越大,每次自注意力运算就会消耗更多的资源。我在实际运行的时候尝试只分成四块就出现了内存溢出的情况。但是分的过细,又会有过拟合的风险。

最终测试,将一个图片24x24x3切割成4x4=16份会比较好。如图3-2所示。

图3-3 分割效果示意图

3.5识别结果

实验结果表明,二分类的结果准确率高达98%,该模型能很好的区分攻击类型和正常请求。

多分类却存在一些问题,整个多分类的识别结果如图3-4所示。

图3-4多分类结果

可以看出,整体的准确率和二分类相比都有所下降。对于良性、DOS、PORTSCAN等还是能较好的识别,但是对其中的一些少数类样本,模型就不够友好了。

有的样本甚至识别不出来,而这实际上,参考文献中有所优化,那就是将一些有相似特征的网络攻击合并。

第4章 结论

本文讨论了如何利用流量的上下文特征去对攻击流量进行识别。根据信息增益选择重要的特征去识别,减少干扰且加快运算。将流的数据适当处理转成图像,方便利用计算机视觉领域的优秀模型来辅助检测。

参考文献

  1. T. M. Thang and K.-V. Nguyen, FDDA: A framework for fast detecting source attack in web application DDoS attack in Proc.8th Int. Symp. Inf. 742Commun. Technol., Dec. 2017, pp. 278--285.
  2. Ho C M K, Yow K C, Zhu Z, et al. Network intrusion detection via flow-to-image conversion and vision transformer classification[J]. IEEE Access, 2022, 10: 97780-97793.
  3. Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arxiv preprint arxiv:2010.11929, 2020.
相关推荐
deepdata_cn13 分钟前
双流卷积神经网络架构(OpenPose)
深度学习·人体姿态
好易学·数据结构1 小时前
可视化图解算法36: 序列化二叉树-I(二叉树序列化与反序列化)
数据结构·算法·leetcode·二叉树·力扣·序列化·牛客
_AaRong_1 小时前
经典密码学算法实现
算法·密码学
孙同学_2 小时前
【递归,搜索与回溯算法篇】专题(一) - 递归
算法·leetcode
不吃香菜?2 小时前
基于 Flask的深度学习模型部署服务端详解
人工智能·深度学习·flask
大知闲闲哟2 小时前
深度学习Y7周:YOLOv8训练自己数据集
人工智能·深度学习·yolo
Tummer83632 小时前
C语言与C++的区别
c语言·c++·算法
MSTcheng.3 小时前
【数据结构】算法的复杂度
数据结构·算法
撸码到无法自拔3 小时前
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
人工智能·pytorch·python·深度学习·缓存
jzwei0233 小时前
为啥大模型一般将kv进行缓存,而q不需要
深度学习·ai·transformer