基于深度学习的网络流量异常识别与检测

您所在的位置:网站首页 metric网络 基于深度学习的网络流量异常识别与检测

基于深度学习的网络流量异常识别与检测

2023-03-13 17:28| 来源: 网络整理| 查看: 265

工业互联网在经济发展和国家发展中具有重要的战略地位. 随着信息化的发展普及, 传统的工业互联网的暴露程度不断增加. 随着近年来网络攻击的泛滥, 网络攻击呈现多样化、复杂化、高强度的趋势发展. 2021年7月份, 国家互联网应急中心(CNCERT)发布《2021年上半年我国互联网网络安全检测数据分析报告》指出, 2021年上半年, 恶意程序样本捕获数量约2307万个, 日均传播次数达582万余次, 我国境内感染计算机恶意程序的主机数量约446万台, 同比增长 46.8%, 境内目标遭受大量的DDoS攻击, 网页仿冒、网站后门、网页篡改等安全事件依旧频发, 煤炭、石油、电力、城市轨道交通等重点行业存在高危漏洞, 工业互联网设备面临诸多安全威胁[1].

针对工业互联网中重要的业务系统进行异常流量的检测, 提前进行预防与研判, 对工业互联网的攻击防御具有重要的作用. 基于业务系统的流量特征, 对业务系统中的异常流量行为进行入侵检测, 不仅可以增强系统的防御能力, 而且可以在恶意行为潜藏或发生时及时发现并对进一步采取防御措施提供帮助. 此外, 流量异常检测能够发掘出业务系统的网络流量发展趋势, 使得相关部门能够网络规划和网络资源进行优化更新, 进而有效防御网络威胁.

1 流量异常识别与检测

在工控系统中, 异常识别与检测是一种主动的安全防御技术, 可以弥补防火墙等传统防御技术的不足, 保证重要业务系统的安全. 近年来, 异常检测的方法主要有以下几种.

基于传统机器学习的方法. 机器学习模型方法包括LightGBM[2]、XGBoost[3]、K-means等, 这类方法一般将时序问题转换为监督学习, 通过特征工程和机器学习方法进行异常检测. 传统的机器学习方法在异常流量的检测方面取得了一定的效果. 王智慧等人[4]为了解决传统攻击检测漏检率、误检率高的问题, 提出了基于LightGBM的异常流量检测模型, 该模型首先使用KPCA提取异常流量的关键特征, 将高维度的数据进行降维, 而后使用LightGBM模型进行异常流量的检测, 经验证该方法可以有效地实现工控系统异常流量的动态检测. 但该模型泛化能力不足, 无法检测未知的异常攻击流量. Jiang等人[5]提出了PSO-XGBoost模型, 模型利用PSO (粒子群算法)良好的搜索能力, 对XGBoost相关参数进行自适应优化, 可以有效提高网络入侵检测的效率与准确率. 但是粒子群算法波动较大, 粒子数量或者迭代次数对算法影响较大, 若设置不合理会产生局部最优解或者寻优时间过长的问题. 在入侵检测方面, K-means是最常用也是最为经典的基于划分的聚类算法. 其思想是在空间中按照一定策略选择k个点作为簇的初始中心, 然后基于这k个点对数据进行划分, 不断迭代, 更新每个簇的中心点, 不断重新划分, 直至到达最大迭代次数或者到最好的聚类结果[6]. 王胜等人[7]针对IEC61850智能变电站专有协议, 使用了一种基于信息熵的特征选取方法, 而后利用K-means聚类算法完成了对异常流量的检测分析集相关分析. 虽然K-means算法原理简单, 但是存在收敛速度慢、算法时间复杂度较高的问题, 且对噪声和离群点非常敏感. 传统的机器学习方法是浅层学习方法[8], 难以捕捉到重要信息, 局限性较大, 无法充分挖掘数据之间的特征与关联, 泛化能力较弱, 十分有限.

基于深度学习的方法. 深度学习算法能够充分挖掘和提取数据之间的潜在特征, 可以做复杂的非线性映射, 具备强大的表征学习能力[9]. 在流量异常检测、电力负荷预测等领域广泛使用且表现出良好的性能以及准确率. 深度学习模型方法, 包括LSTM/GRU、wavenet、1D-CNN、Transformer等. 深度学习中的LSTM/GRU模型, 就是专门为解决时间序列问题而设计的, 但是CNN模型是本来解决图像问题的, 但是经过演变和发展也可以用来很好地解决时间序列问题. Transformer是2017年被提出的时序模型, 该模型基于multi-head attention结构具备同时建模长期和短期时序特征的能力. 工控网络流量信息具有周期性和时序性的特性, 针对这一特性, 田伟宏等人[10]提出了一种基于LSTM的异常流量识别与检测的模型, 该方法提前对流量数据值进行预测, 在保证识别率较高的情况下, 有效提高了模型的检测效率. 但是该方法需要依赖于人工的特征提取, 特征处理较为复杂, 对模型效果影响较大. 杜浩良等人[11]提出了一种融合CNN和LSTM的混合异常检测模型, 该模型使用CNN提取数据空间特征, LSTM提取数据时序特征, 充分挖掘流量数据的结构化特点和时空特征, 有效提高了模型的准确率, 但是CNN具有较多的权值、阈值, 参数对模型影响较大, 选择不当容易导致陷入局部极小值解. 杨月麟等人[12]基于Transformer提出一种流量异常检测模型, 该模型很好地解决了网络数据流量远程依赖以及数据样本不平衡的问题. 经验证该模型在准确率以及检测时间方面均有优异的表现. 李梅等人[13]在CNN和LSTM的基础上融入了注意力机制, 在CNN中加入注意力机制可以抽取重要细粒度特征, 然后经由LSTM抽取时序规律的粗粒度特征. 但是这种方法使得模型更为复杂, 使得模型时间复杂度高, 训练时间较长[14].

综上所述, 复杂多变的网络环境使得网络流量数据朝着高维度发展, 在面对高维度的特征数据时, 深度学习模型无法有效处理高维度数据, 导致模型效率低. 因此剔除冗余特征进行特征筛选, 是提高模型效率的重要方式. 综上本文提出了一种结合随机森林算法与LSTM模型的异常流量检测方法, 首先使用随机森林算法, 对网络流量的特征进行重要度评分, 选取相关性最高的特征, 充分提取流量信息的关键特征, 使用LSTM模型充分挖掘流量特征之间的关系, 进行流量异常的检测与识别, 提高系统异常检测的效率.

2 研究方法 2.1 随机森林

随机森林(random forest, RF)模型[15]中包含很多决策树, 采用Bootstrap重抽样技术随机从数据集中采样以构造、训练模型中的每棵决策树, 最终将每个决策树进行组合, 然后通过投票方式得出最终结果. RF对异常值和噪声具有较强的容忍度, 在面对海量高维的数据时, 能够在数据分析的同时得到特征的重要性评分(variable importance measures, VIM)[16].

本文使用随机森林对流量特征进行重要度评分, 计算每个特征在随机森林中每个决策树上所做的贡献量, 即求解该特征在某个节点上, 分枝前后的基尼指数(Gini)差值, 对数据中包含的所有特征进行求解. 将单个特征基尼指数差值除以所有特征基尼指数差值, 得到某个特征归一化后的贡献量, 获得每个特征的重要性权重, 对特征之间的重要性权重进行比较、排序. Gini指数的计算方法[17]为:

$ Gini(p) = {\text{ }}\sum\limits_{k = 1}^K {{p_k}(1 - {p_k}) = } 1 - \sum\limits_{k = 1}^k {p_k^2} $ (1)

其中, K表示有K个类别, pk表示第k个类型的权重.

每个特征j在节点m的基尼指数变化值使用VIMjm表示, 其计算方法为:

$ VIM_{jm}^{{{Gini}}} = G{{I} _m} - G{I_l} - G{I_r} $ (2)

其中, GIl和GIr表示节点m分支后, 新产生的两个结点的基尼指数.

最后, 将特征j贡献量做归一化处理, 记为特征j的重要性评分:

$ VIM_j^{{{Gini}}} = \frac{{VIM_j^{{{Gini}}}}}{{\displaystyle\sum\limits_{i = 1}^c V IM_i^{{{Gini}}}}} $ (3)

其中, $VIM_j^{{{Gini}}}$ 是特征j的基尼指数 $\displaystyle\sum\limits_{i = 1}^c {\;VIM_i^{{{Gini}}}} \;\;\;$ 是所有特征的基尼指数差之和.

2.2 LSTM模型

长短期记忆网络(LSTM)[18]于1997年由Hochreiter和Schmidhuber提出, 是一种改进的时间循环神经网络, 由于其特殊的网络结构, 适用于处理时序型数据. 传统的RNN中, 当连续数据的序列变长时, 会使展开时间步过长, 在反向传播更新参数的时候, 梯度要按时间步长连续相乘, 会导致梯度消失的问题. LSTM中遗忘门、输入门等门控制单元的提出, 将短期记忆和长期记忆进行结合, 控制特征的流通与损失, 可以在一定程度上解决RNN无法处理长距离依赖导致的梯度消失问题. LSTM包含3个门单元, 分别是输入门it、遗忘门ft、以及输出门ot. 其中最重要的是遗忘门, 用于判断上一时刻中哪些记忆信息需要保留与丢失, 输入门判断此刻需要的记忆信息, 输出门用于决定输出的内容. 相关计算公式如式(4)–式(9)所示:

$ {i_t} = \sigma ({W_i} \cdot [{h_{t - 1}}, {x_t}] + {b_i}) $ (4) $ {f_t} = \sigma ({W_f} \cdot [{h_{t - 1}}, {x_t}] + {b_f}) $ (5) $ {o_t} = \sigma ({W_o} \cdot [{h_{t - 1}}, {x_t}] + {b_o}) $ (6) $ {C_t} = ({f_t} * {C_{t - 1}} + {i_t} * {\tilde C_t}) $ (7) $ {h_t} = {o_t} * \tanh ({C_t}) $ (8) $ {\tilde C_t} = \tanh ({W_{\text{c}}} \cdot [{h_{t - 1}}, {x_t}] + {b_c}) $ (9)

其中, 式(4)表示输入门, 式(5)表示遗忘门, 式(6)表示输出门, 式(7)表示细胞态(长期记忆), 式(8)表示记忆体(短期记忆), 式(9)表示候选态(新知识), Wi、Wf、Wo为权重矩阵, bi、bf、bo为偏置项, xt为t时刻的输入信息, ht表示中间输出, tanh表示双曲正切激活函数, σ表示Sigmoid激活函数, LSTM神经网络结构图如图1所示.

图 1 Fig. 1 图 1 LSTM网络结构 2.3 异常检测模型

综合随机森林与LSTM神经网络的特点, 以及工控网络流量的时序性和周期性特点, 本文尝试使用随机森林与LSTM进行入侵检测的识别. 本文模型主要有两部分组成, 其中随机森林部分负责特征提取, LSTM网络部分作为流量分类器进行学习和分类, 进行异常流量的检测与分类. 本模型在面对高维度的数据特征时, 可以选择出重要度评分较高的相关特征以便更高效的用于异常流量的检测. 与现有的CNN相比, 两者均可用于特征提取, 但是CNN是一种反向传播算法, 对数据量的需求大, 且池化层的存在会导致许多有价值信息的丢失, 在面对高维数据时存在效率低等问题, 而随机森林实现简单, 能够处理高维度数据和平衡一些属性权重带来的误差[19], 模型的泛化能力强.

模型中首先使用随机森林, 针对高维度的流量特征进行特征选择, 根据不同阶段选择出最能体现流量特点的特征, 最终融合阶段特征使得选择的特征更具有代表性[20], 特征选择包括针对单个攻击类型的特征选择以及所有攻击类型汇总的特征选择, 重要度评分较高的特征作为返回向量包传送到LSTM系统, 作为LSTM的输入信息, LSTM系统由LSTM层、Dense层(全连接层)、输出层组成, 对提取的特征向量包进行学习、处理, 计算属于每一类的概率, 最终得到分类结果. 为了防止过拟合, 可以使用Dropout舍弃一定概率的神经网络单元. 本模型异常检测的全流程如图2所示.

3 实验分析 3.1 实验环境

本文使用的软硬件环境为: Windows 10操作系统, 基于Python 3.7的TensorFlow 2.1和Keras 2.3.1软件框架, AMD Ryzen 7 [email protected] GHz CPU, 16 GB内存, NVIDIA GeForce GTX 1650显卡.

图 2 Fig. 2 图 2 异常检测流程图 3.2 数据集预处理

为验证模型的有效性, 本文使用公开的IDS数据集CIC-IDS-2017, 该数据集由加拿大通信安全机构(CSE)和网络安全研究院(CIC)合作公布. 相较于经典的KDD99数据集, 该数据集来源于真实世界, 使用的协议更加丰富, 包括FTP、HTTP、SSH、Email以及HTTPS协议[21], 共计200万余个标记流. 此外, 每个标记流包含70余条特征, 使用标签对正常流量或者攻击类型进行标注, 包含DDoS、Port Scan、SSH-Patator等14种攻击类型. 数据集中有些攻击类型数量较少, 不具备训练基础, 本文对一些攻击类型以及异常数据进行剔除. 采用文献[22]中的方式进行数据预处理, 将文本类型转换为数值类型. 为了解决数据不平衡的问题以及测试模型对单个攻击类型的效果, 本文针对每种攻击类型构造自己的数据集. 首先, 将原始数据集中周一至周五的流量信息进行预处理、汇总, 从汇总文件中提取出每种攻击类型, 选取正常标签数据对每种攻击类型数据进行补充完善, 使得正常类型: 攻击类型的比例在7:3左右, 数据集划分后攻击类型数量如表1所示. 为了验证模型总体识别的效果, 文中将所有异常攻击类型统一划分标签而后生成数据集, 并使用模型进行异常识别, 对模型总体效果进行验证.

本文针对每种攻击类型, 使用随机森林算法分别计算该攻击类型流量特征的重要度评分, 每个攻击类型选取7个重要度评分最高的特征, 对数据进行特征降维, 表2中表示每种攻击类型重要度评分最高的前7个特征. 其次, 为了验证模型的整体效果, 本文将所有正常类型以及所有异常类型分别进行编码, 使用随机森林算法进行特征选择, 选取评分度最高的8个特征作为LSTM系统的输入, 重要性权重如图3所示.

表 1(Table 1) 表 1 数据集划分 类型 攻击类型数量 正常类型数量 总量 All Data 469274 2203723 2672997 Bot 1966 4276 6242 DDoS 41835 92295 134130 DoS GoldenEye 10293 22291 32584 DoS Hulk 231073 551149 782222 DoS Slowhttptest 5499 12260 17759 DoS Slowloris 5796 12457 18253 FTP-Patator 7938 17262 25200 PortScan 158930 368180 527110 SSH-Patator 5897 12734 18631 表 1 数据集划分 图 3 Fig. 3 图 3 重要度评分 表 2(Table 2) 表 2 攻击类型特征选择 攻击类型 Bot DDoS DoS GoldenEye DoS Hulk DoS Slowhttptest 特征选择 Bwd Packet Length Mean Flow IAT Max Flow IAT Std Flow Duration Flow IAT Mean Flow IAT Min Flow B/s Bwd Packet Length Std Total Backward Packets Fwd IAT Total Flow Duration Total Length of Fwd Packets Flow IAT Min Flow IAT Std Flow IAT Max Total Backward Packets Flow IAT Min Fwd Packet Length Min Bwd Packet Length Std Fwd Packet Length Max Bwd Packet Length Mean Flow IAT Max Total Backward Packets Flow IAT Min Fwd Packet Length Min Bwd Packet Length Std Fwd Packet Length Max Bwd Packet Length Mean Flow IAT Mean Fwd Packet Length Min Bwd Packet Length Mean Fwd Packet Length Std Fwd Packet Length Mean Bwd Packet Length Std Total Length of Bwd Packets 攻击类型 DoS Slowloris FTP-Patator PortScan SSH-Patator — 特征选择 Flow IAT Mean Bwd Packet Length Mean Total Fwd Packets Fwd IAT Total Total Length of Bwd Packets Flow IAT Std Fwd Packet Length Min Fwd Packet Length Max Fwd Packet Length Std Fwd Packet Length Mean Bwd Packet Length Mean Flow IAT Min Total Length of Bwd Packets Flow Duration Total Length of Fwd Packets Flow B/s Flow IAT Max Flow Duration Fwd IAT Total Flow IAT Mean Fwd Packet Length Max Flow B/s Flow IAT Mean Flow Packets/s Fwd Packet Length Max Flow Duration Flow IAT Max Total Length of Fwd Packets — 表 2 攻击类型特征选择 3.3 实验分析与评价

本文使用随机森林算法进行特征提取后, 使用LSTM网络进行异常检测与识别. 在随机森林部分, 将随机森林中的决策树的数目设置为250, 将随机种子random_state设置为0, 选取的特征子集中特征的个数的max_features参数设置为auto. 在LSTM部分, 由一个LSTM层组成, 其神经元个数为128, 优化函数使用Adadelt, 损失函数使用categorical_crossentropy, metrics参数为accuracy, 为了缓解过拟合, 在全连接层加入dropout, 比例为0.5. 另外, 模型中还引入了early stopping机制, 借助Keras中的EarlyStopping类, 当训练模型在测试集上的性能不再增加的时候就停止训练, 从而达到充分训练的作用, 又避免过拟合, 提高模型的泛化能力, 加速目标函数的收敛, 并将训练过程中最好的模型保存下来.

本文使用准确率(accuracy, ACC)、召回率(recall, RE)、精确率(precision, PR)以及分类器精度得分(F1-score, F1)对模型进行评价, 计算公式如下:

$ {{ACC}} = \frac{{TP + TN}}{{TP + FP + FN + TN}} $ (10) $ {{RE}} = \frac{{TP}}{{TP + FN}} $ (11) $ {{PR}} = \frac{{TP}}{{TP + FP}} $ (12) $ {{F1 {{}} = }}\frac{2}{{\dfrac{1}{{PR}} + \dfrac{1}{{RE}}}} $ (13)

其中, TP表示将攻击类型检测为攻击类型, TN表示将正常类型检测为正常类, FP表示将正常类型检测为攻击类型, FN表示为将攻击类型检测为正常类型. 其混淆矩阵可表示为表3.

表 3(Table 3) 表 3 混淆矩阵 真实类型 预测类型 Attack Normal Attack TP FN Normal FP TN 表 3 混淆矩阵

实验过程中, 模型的准确率与损失函数变化如图4和图5所示. 在训练过程中, 随着迭代的进行, 模型不断收敛, 在迭代到第20次左右的时候, 模型的准确率ACC和损失函数Loss趋于稳定.

图 4 Fig. 4 图 4 训练过程ACC变化

为了验证本文方法在异常流量检测方面的优越性, 针对每种攻击类型以及所有攻击类型汇总的流量数据分别使用常见的机器学习算法进行实验对比, 如朴素贝叶斯(naive Bayes)、二次判别分析(QDA)、K近邻(KNN), 使用准确率(ACC)、召回率(RE)、精确率(PR)、和F1-score作为评价指标. 不同算法之间的性能比较如表4所示. 从结果中可以看出, 攻击类型FTP-Patator以及PortScan具有较高的检测效率, 这可能是因为这两种攻击类型具有较为明显的识别特征.在结果中可以看出, LSTM模型在各种攻击类型的识别检测上具有良好的表现, 本文算法有效提高了Bot、DDos、DoS GoldenEye、DoS Hulk攻击流量识别以及整体的识别准确率. 除DoS Slowhttptest、DoS Slowloris攻击外, 本文算法准确率均高于或者等于对比算法的准确率. 此外, 本文算法重要优势是对整体攻击类型识别的准确率在训练集上最终达到99%. 最后, 为了验证模型的有效性, 本文对汇总数据集进行随机取样, 选取部分数据作为数据集验证, 使用本文方法(RF-LSTM)与未使用随机森林进行特征提取的LSTM方法作比较, 结果如表5.

图 5 Fig. 5 图 5 训练过程Loss变化 表 4(Table 4) 表 4 机器学习算法对比 Parameter Naive Bayes QDA KNN 本文方法 ACC RE PR F1 ACC RE PR F1 ACC RE PR F1 ACC RE PR F1 Bot 0.56 0.69 0.70 0.56 0.68 0.77 0.74 0.68 0.94 0.95 0.92 0.93 0.97 0.97 0.96 0.96 DDoS 0.34 0.52 0.66 0.28 0.79 0.85 0.80 0.78 0.96 0.96 0.95 0.95 0.97 0.97 0.96 0.96 DoS GoldenEye 0.88 0.84 0.87 0.85 0.73 0.82 0.87 0.82 0.81 0.98 0.97 0.97 0.99 0.99 0.98 0.98 DoS Hulk 0.81 0.77 0.77 0.77 0.47 0.62 0.68 0.46 0.97 0.97 0.96 0.97 0.98 0.98 0.97 0.97 DoS Slowhttptest 0.43 0.57 0.62 0.41 0.70 0.77 0.73 0.70 0.99 0.99 0.98 0.98 0.98 0.98 0.97 0.98 DoS Slowloris 0.40 0.56 0.67 0.36 0.49 0.62 0.66 0.49 0.99 0.99 0.99 0.99 0.98 0.98 0.97 0.97 FTP-Patator 0.55 0.67 0.70 0.54 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 PortScan 0.44 0.60 0.67 0.43 0.84 0.88 0.82 0.83 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 SSH-Patator 0.68 0.76 0.75 0.68 0.79 0.84 0.80 0.79 0.96 0.96 0.95 0.95 0.96 0.97 0.95. 0.96 All Data 0.84 0.69 0.74 0.71 0.82 0.68 0.71 0.69 0.98 0.98 0.97 0.98 0.99 0.98 0.98 0.98 表 4 机器学习算法对比 表 5(Table 5) 表 5 LSTM模型与RF-LSTM模型对比结果 模型 ACC RE PR F1 Time (s) LSTM 0.99 0.99 0.99 0.99 7005 RF-LSTM 0.99 0.98 0.98 0.98 3346 表 5 LSTM模型与RF-LSTM模型对比结果

结果表明, 本文方法在准确率、召回率、精确率等评价指标损失很小的情况下, 将模型的训练时间大大缩短, 提高了模型检测的效率, 节省了计算机资源, 具有实际的应用价值.

4 结论

针对传统的工控网络流量数据在复杂网络环境下特征维度高, 模型检测效率低的问题, 提出了一种基于随机森林(RF)和长短期记忆网络(LSTM)的算法, 从高维度流量数据特征中提取出关键流量特征, 剔除冗余特征, 通过LSTM算法充分挖掘网络流量特征之间的关系, 进行网络异常流量的识别与检测. 实验结果表明, 本文算法在CIC-IDS-2017数据集上总体准确率达到99%, 与Naive Bayes、QDA、KNN机器学习算法相比, 本文算法在绝大多数攻击类型的识别准确率上优于或者等于对比算法, 且与单独的LSTM算法做对比, 本文方法在保证准确率损耗极小的情况下, 大大提高了模型的检测效率, 在工控网络异常检测方面具有实际的应用价值.

此外, 本文还存在以下问题. 本文提前将不平衡的数据集进行平衡化处理, 在处理现实世界中数据集不平衡的问题, 还需要引入其他方法, 对数据进行清洗, 比如考虑引入类型权重等方法减小数据不平衡对模型的影响或者采用GAN等方法生产相关样本数据. 另外, 模型在面对新的异常时, 可能存在泛化能力不足的问题, 下一步将采用性能更好的模型如Transformer等.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3