基于时空特征的恶意加密流量检测*

2024-03-20 01:16苏攀西石元兵张运理
通信技术 2024年2期
关键词:灰度加密准确率

苏攀西,石元兵,明 爽,张运理,籍 帅

(1.中电科网络安全科技股份有限公司,四川 成都 610095;2.可信云计算与大数据四川省重点实验室,四川 成都 610095)

0 引言

2023 年6 月我国网民数量已达10.79 亿人,较2022 年12 月增长1 109 万人[1],但随着互联网的飞速普及,网络安全问题也日益严重。为了更好地保护个人隐私和数据不被窃取和篡改,已有大量的网络应用使用网络加密协议对流量进行加密处理。《互联网研究趋势报告》[2]显示互联网的加密流量比例已经近九成,主要采用TLS1.2 加密协议。网络流量加密技术的普及也带动恶意流量进入了加密时代,恶意流量可以通过加密技术隐藏自己的明文特征,以此降低恶意行为暴露的风险。Zscaler 威胁研究报告[3]显示,在2020 年,对金融、医疗及制造业等五大行业的网络攻击中,基于安全套接层(Secure Socket Layer,SSL)加密的网络攻击占总数的17.95%,相比三个季度前增加了近260%,恶意加密流量的快速增长,使得对其的安全检测能力的需求日益增加。

在网络加密流量中,由于使用了加密协议,其报文载荷中的内容从明文变成了密文,无法提取其相关字段进行检测,使得基于深度包检测[4](Deep Packet Inspection,DPI)的方法都无法有效识别恶意加密流量。基于流量统计特征的机器学习方法可以解决密文无法解密的问题,此方法通过统计流量中未加密的特征(如流持续时间、协议字段数量等)进行恶意加密流量识别,但是针对不同识别场景需要人工设计不同的统计特征,非常依赖专家经验,且特征的好坏直接影响识别效果。深度学习利用复杂、多层的神经网络,能够自动提取数据的抽象特征,无须进行人工设计的特征工程广泛应用在图像、语音等特征复杂的数据识别场景中。

为了更好地识别恶意加密流量,本文分别使用卷积神经网络(Convolutional Neural Networks,CNN)和门控循环单元(Gated Recurrent Unit,GRU)提取流量的空间和时序特征,并在GRU 上使用多头注意力机制[5](Multi-head Attention),提出一种基于时空特征融合的恶意加密流量识别模型CNN-MHGRU。最后,在公开数据集上进行模型训练,并通过对比实验验证其有效性。

1 相关工作

目前对于恶意加密流量的识别方法主要分为基于机器学习和深度学习两种,这两种方法都属于人工智能技术的子类。

机器学习需要大量的数据进行训练,适用的场景范围比较广,一般在训练之前需要先进行特征工程,选择适合应用场景的数据特征。对于恶意加密流量的识别,需要在原始流量中提取可以区别正常流量和恶意加密流量的特征,如果需要进行多分类,则需要提取可以区别各类恶意加密流量的特征。Shah[6]使用Bro 开源流量分析软件提取加密证书特征和流连接特征,提出了一种基于XGBoost 的恶意加密流量检测模型。Liu 等人[7]通过提取每条流前8 个数据包的行为统计特征、协议特征和加密证书特征,实现了一种基于随机森林的在线实时恶意加密流量检测器。胡斌等人[8]结合报文负载特征和流指纹特征构建数据集,提高了逻辑回归模型在复杂网络环境下对恶意加密流量的识别效果。

深度学习通常需要比机器学习更多的数据进行更长时间的模型训练,因为从原始数据进行表征学习需要更多的函数进行拟合,并且深度学习适用的范围较机器学习而言更小,更适合复杂抽象、自然生成的数据场景,比如图像(人脸识别、医学影像分析等)、语言(语音识别、语言翻译等)。Wang等人[9]首次在恶意加密流量识别方向提出将原始流量映射到灰度图,利用卷积神经网络对灰度图进行特征提取,从而进行恶意加密流量识别。邹源等人[10]利用流的前50 个数据包的原始数据对长短时记忆(Long Short Term Memory,LSTM)神经网络进行训练,对恶意加密流量的分类效果优于传统人工提取特征的机器学习算法。吴迪等人[11]提出了一种同时考虑时空特征的深度学习模型BotCatcher,使用CNN 和LSTM 对原始流量数据映射的灰度图进行时空特征提取,在对僵尸网络流量的二分类实验上效果良好。李小剑等人[12]基于切片循环神经网络建立了SIndRNN 网络模型,提出了一种基于CNNSIndRNN 的恶意加密流量快速识别方法,使用并行结构的SIndRNN 代替传统串行结构的循环神经网络(Recurrent Neural Network,RNN),训练和检测用时大幅降低。

本文使用CNN 和双向GRU 对原始流量数据进行特征提取,不需要人工提取数据特征,利用深度学习的特征自动提取特性。同时,在GRU 上加入多头注意力机制,能够更好地捕获长序列数据的特征,减少长距离传播中的信息损失。综上,本文在已有研究的基础上,使用CNN、GRU 及多头注意力机制更好地挖掘数据中的时空特征,提出了CNN-MHGRU 模型,通过模型对比实验,验证了对恶意加密流量的识别能力。

2 方法设计

本文提出的恶意加密流量识别方法主要包括数据预处理、深度学习模型训练及特征分类识别这3个部分,各部分的主要工作如下文所述。

(1)数据预处理部分:将数据集中的原始流量PCAP 文件进行会话分割、过滤无效流、地址匿名化、大小标准化和灰度图映射操作,形成会话到灰度图一对一的映射关系。

(2)深度学习部分:选用CNN 进行灰度图的空间特征提取,用带有多头注意力机制的GRU 进行时序特征提取,最后将两者得到的抽象数据进行特征融合,送入全连接神经网络得到固定大小的时空特征。

(3)特征分类部分:使用softmax 分类器对全连接层输出的特征进行流量分类。

恶意加密流量识别方法结构如图1 所示。

图1 恶意加密流量识别方法结构

2.1 数据预处理

数据预处理部分负责将PCAP 文件的流数据转换为储存784 字节内容的灰度图。首先按照流量的五元组信息(源和目的的IP 地址、源和目的的端口号及网络协议)进行分割,具有相同五元组信息的数据包按照时间排序构成一个流(会话);其次将内容为空的流删除,并用“0”数据去替换流中数据包的目的IP 地址、源和目的端口号字段;最后截取流的前784 字节信息进行灰度图转换,不足784 字节的流用“0”数据进行填充。

生成的灰度图如图2 所示,每一个像素都有8 比特的数据,值为0 到255,每一种恶意流量的传播和攻击特性可以通过灰度图表现出来,但是这种特征差异通过专家经验很难解释,需要借助CNN模型的图像特征提取能力,提取灰度图中的抽象特征。另外,由于流具有时序性(如先握手再传数据),自左向右、从上至下将灰度图数据分为28 组28 字节的数据送入GRU 中,依靠GRU 的时序特征提取能力,提取流中的时序特征。图2 为随机抽取的各类恶意流量灰度图,可以看出每类之间都有一定的区别,这些区别可以被深度学习提取为抽象特征进行分类。

图2 各类恶意流量灰度图

2.2 CNN 结构设计

本文CNN 的结构由卷积层、池化层、Dropout层、卷积层、池化层、Dropout 层、全连接层依次组成。两个卷积层卷积核个数分别为32 和64,卷积核大小都为5×5,步长都为1。池化层类型都为最大池化,大小为2×2,即在2×2 大小的感受野中选择最大的值进行下一步处理。Dropout 层通过在模型训练时随机去掉一定比例的神经元,不参与此次数据的训练,从而减小模型过拟合的程度,本文的Dropout 层随机去掉神经元的比例为0.5。全连接层由64 个神经元组成,接收最后的Dropout 层的输出,最后全连接层输出64 维空间特征。

2.3 带有多头注意力机制的GRU 结构设计

CNN 能够提取空间特征,但是不善于提取时序上的变化特征。网络流量由字节、数据包及会话组成,可以看成语言中的字、词语和句子。流量和语言也都具有时序性,数据包和词语都必须有着先后顺序才能构成合理的会话和句子。LSTM 和GRU 属于RNN 的变种,可以缓解RNN 的梯度爆炸和梯度消失问题,GRU 又比LSTM 结构更简单,参数更少,并且双向结构可以同时考虑输入在前向时序和反向时序的关系,因此本文选择双向GRU 作为时序特征提取模型。

注意力机制提取每个时序的输出,通过查询Q、键K 和值V 能够捕获整个输入的全部时序关系,降低长序列会出现的信息损失。多头注意力机制有多组查询Q、键K 和值V,每组参数学习不同的语义信息,从而增强模型的拟合能力和泛化能力。

本文时序特征提取使用两层双向GRU 进行,结构顺序为GRU 层、多头注意力层、GRU 层,其中GRU 隐藏层的大小都为32,注意力层的并行头数量为2,输出64 维时序特征向量。

2.4 分类学习

在进行分类之前,需要将CNN 和GRU 输出的时空特征进行融合。为了保留全部的特征信息,本文对两种特征进行拼接处理,得到128 维时空特征,再分别输入64 个神经元的全连接层和分类数量个神经元的全连接层,得到的维数就为待分类的数量,最后送入分类器进行分类。

(1)分类器。本文选择Softmax 作为模型的分类器,通过分类器得到最大值的类型,该输入就被分类为此类型。Softmax 的公式为:

式中:xi为输入的第i维值,i类型的分类值为Pi。在本文中进行二分类实验时,k为2,进行多分类实验时,k为17。

Softmax 的各个输出总和为1,大小映射至[0,1],适用范围广,简单易用。

(2)损失函数。损失函数衡量模型输出值和实际值之间的差距,再通过反向传播机制对模型中每一个待训练的参数进行优化,损失函数输出的值越大,代表和实际情况相差越大,优化调整的幅度也越大。

在本文的二分类实验中,使用二元交叉熵(Binary Cross Entropy,BCE)作为损失函数,二元交叉熵的公式为:

式中:y为真实标签,为预测标签,L为损失值Loss。

在本文的多分类实验中,使用交叉熵损失(Cross Entropy Loss)函数,交叉熵损失函数的公式为:

(3)优化函数。本文采用Adam 优化算法根据损失函数得出的loss 值对模型可训练参数进行更新。Adam 的学习率设为0.001,并加入值为0.000 1的权重衰退,限制更新幅度,防止过拟合并且避免梯度爆炸。Adam 优化算法表示如下:

式中:θt为t时刻的参数;gt为t时刻的梯度;mt为Adam 的一阶动量参数;vt为Adam 的二阶动量参数;α为学习率;λ为权重衰减值;ε默认为10-8,避免除数为0。

3 实 验

3.1 实验环境和工具

数据预处理阶段在Windows10 操作系统中完成。首先使用SplitCap 工具将原始PCAP 文件拆分成若干双向会话;其次使用PowerShell 脚本对拆分后的双向会话PCAP 文件进行裁剪;最后使用Numpy 和PIL 等开源第三方库生成大小固定的灰度图。

模型训练和验证阶段在Ubuntu20.04 LTS 操作系统中完成,并使用PyTorch 进行模型设计和优化。Ubuntu 操作系统中,CPU 使用Inter 至强6226R,内存为128 GB,显卡为英伟达 RTX4090。

3.2 数据集

翟明芳等人[13]进行了大量的恶意流量检测数据集比较,从中可以看出,能够在恶意加密流量识别中使用的数据集非常少,其中提到的可用于加密的数据集也有不足,如按照恶意种类将原始CICIDS2017 数据集的PCAP 文件进行分割较为困难,SSL Certificatres 数据集不适用于模型训练。因此,本文选择在公开数据中进行选取,组建一个混合数据集进行训练和验证。本文的恶意加密流量从MCFP[14]中选取,正常流量从ISCX VPN-nonVPN[15]和ISCX-Bot-2014[16]的正常流量中选取。

MCFP 是捷克理工大学创建的恶意软件捕获设施项目,负责用恶意流量抓取软件长期抓取,其中部分恶意流量存在加密数据。本文选取16 种恶意流量,其中11 种包含加密流量,会话数上限数为60 000,主要选取情况如表1 所示。

表1 恶意流量种类选取情况

ISCX VPN-nonVPN 含有常规加密和VPN 加密的正常应用流量,本文从中选取的流量类型有email、video、ftps、chat 等。ISCX-Bot-2014 中包含16 种僵尸网络家族产生的恶意流量以及非加密的正常应用流量。由于本文不对正常流量做详细分类,且正常流量种类较多,因此不对正常流量种类做详细展示,主要选取情况如表2 所示。

表2 正常流量来源选取情况

由于恶意流量的会话数远大于正常流量,因此在训练集和测试集中每种恶意流量随机取1 000条,正常流量按8 ∶2 来划分训练集和测试集。

在二分类实验中,去除Miuref、Adware、Zbot、Wannacry、Razy、Artemis 这6 种恶意流量和aim_chat、email、facebook_chat、vpn_bittorrent、vpn_ftps、vpn_skype_audio、vpn_skype_files 等正常流量作为训练集进行训练。在对未知流量进行二分类实验时,用以上种类流量作为测试集进行测试。

3.3 评估指标

本文采取二分类准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 值(F1_score),多分类整体准确率(Overall_ACC)作为模型识别效果的评价指标。计算公式如下:

式中:TP为二分类中被正确识别为恶意流量的数量,TN为被正确识别为正常流量的数量,FP为被错误识别为恶意流量的数量,FN为被错误识别为正常流量的数量,TPk为正确识别为第k类流量的数量,TNk为正确识别为非第k类的流量的数量,FPk为不属于第k类的流量被识别为第k类的数量,FNk为属于第k类的流量被识别为第k类的数量。

3.4 实验结果与分析

通过在3×3、5×5、7×7 大小的卷积核进行二分类对比实验,选出最优的卷积核参数,实验结果如表3 所示,30 轮训练轮数可以保证模型收敛,准确率和F1 值都为十折交叉验证中在验证集上的平均值。

表3 3 种卷积核大小模型的实验结果对比

图3 为3 种不同的卷积核模型在十折交叉验证中的准确率与迭代次数的关系。可以看出,5×5 大小的卷积核模型虽然起始准确率较低,但是准确率迅速上升。此外,通过表3 可以看出,5×5 大小的卷积核模型的准确率和F1 值分别为99.71%和99.78%,为3 种模型中结果最优。

图3 3 种卷积核大小模型的准确率实验对比

本文将GRU 模型所接收的数据类型进行了对比。类型1 为文献[11]和文献[17]中提到的提取流中的前8 个数据包,每个数据包中截取前100 个字节,不足100 字节则补0 处理。类型2 为本文提出的将CNN 接收的784 字节数据分为28 组,每组包含28 个字节。将两种类型数据进行二分类实验,实验结果如表4 所示,训练轮数同样设为30 轮,准确率和F1 值都为十折交叉验证中在验证集上的平均值。

同样得到GRU 在两种类型数据的准确率与迭代次数的关系,如图4 所示。从图4 可以看出,无论是收敛速度还是识别准确率,数据类型2 的表现相较于类型1 都更好。

图4 两种数据类型准确率实验对比

综上,为得到更好的检测效果,本文CNN 选择5×5 大小的卷积核进行后续实验,并选择数据类型2 作为GRU 的后续实验数据输入结构。

3.4.1 二分类消融实验

为了检测本文提出的时空特征提取模型CNNMHGRU 的效果,本节实验将通过5 种模型进行二分类实验,比较各个模型的实验结果并进行分析。这5 种模型分别是CNN、GRU、MHGRU、CNN_GRU 和CNN-MHGRU。

表5 为5 种模型在十折交叉验证实验中,每种模型的评估指标在验证集上的平均值。

表5 5 种模型十折交叉验证二分类结果的对比

从表5 可以看出,综合表现CNN-MHGRU 最优,准确率达到99.92%,F1 值达到99.94%,召回率相比没有加多头注意力机制的CNN-GRU 低了0.01%。从MHGRU 和GRU 的结果也可以看出,MHGRU 相比GRU 的准确率和F1 值要高,但是召回率稍低。

由于在对已知数据进行实验时,模型的训练结果评估指标相差不大,同时为了模拟真实环境,检测模型对未知类型的恶意流量和正常流量进行识别的能力,本节的测试集将选取训练集和验证集都未出现过的数据种类。选取Miuref、Adware、Zbot、Wannacry、Razy、Artemis 这6 种恶意流量和aim_chat、email、facebook_chat、vpn_bittorrent、vpn_ftps、vpn_skype_audio、vpn_skype_files 等正常流量作为测试集进行测试,实验结果如表6 所示。

表6 5 种模型对未知流量的二分类实验结果对比

从表6 可以看出,CNN-MHGRU 模型的准确率、召回率及F1 值在检测未知流量时表现最优。MHGRU 与GRU 的结果对比可以看出,多头注意力机制可以提升检测未知流量的识别准确率。从CNN_GRU 与CNN 和GRU 的结果对比可以看出,同时提取空间特征和时序特征的模型比单一模型的综合表现更好,其中只考虑空间特征时,表现较差。从CNN-MHGRU 和CNN_GRU 的结果对比可以看出,在时空特征上进行结合时,时序特征如果考虑多头注意力机制,那么能够在一定程度上提高对未知威胁的识别准确率。

综上,本文提出的基于时序特征的多头注意力模型CNN-MHGRU 能够提升一定的对恶意加密流量的识别能力。

3.4.2 多分类对比实验

在实际应用场景中,不仅需要对网络流量进行恶意威胁识别,还需要对恶意流量进行类别识别,这种对恶意类别的划分能够极大帮助网络安全人员对网络环境中出现的威胁进行快速反应。为了检测本文提出的CNN-MHGRU 在多分类场景下的效果,本节对BiLSTM[18]、BotCatcher[11]和CNN-MHGRU模型进行多分类实验,对比并分析实验结果。其中,为了还原BotCatcher 模型的实验情况,BotCatcher使用的是3.4 节中类型2 的数据。

图5 为3 种模型在十折交叉验证中的准确率与迭代次数的关系,准确率为十折交叉验证中在验证集上的平均值。在30 轮训练后,BiLSTM、BotCatchar、CNN-MHGRU 的准确率分别达到94.89%、93.81%和95.05%。

图5 3 种模型十折交叉验证多分类准确率对比

从图5 可以看出,3 种模型在20 轮左右基本已经收敛,准确率无较大变化。BiLSTM 和BotCatcher在开始时,准确率高于本文提出的CNN-MHGRU,但在10 轮时CNN-MHGRU 超越前两者,并从此一直保持领先,说明CNN-MHGRU 能够更好地拟合数据,在多分类识别时有更好的效果。

图6 为3 种模型在测试集上多分类识别结果的混淆矩阵(保留3 位小数,小于0.001 看作0 处理),混淆矩阵的横向坐标为实际类型,纵向坐标为识别类型,其中的数值为被预测类型X(横坐标值)占实际类型Y(纵坐标值)的比值,主对角线的值为此类被正确识别的比值。

图6 CNN-MHGRU 模型在测试集上多分类识别结果的混淆矩阵

3 种模型的分类识别结果的F1 值和整体准确率分别如表7 和表8 所示,其中表中粗体项代表此模型为三者中对此类恶意流量识别的最大数值。可以看出,在整体准确率上,本文提出的CNNMHGRU 模型表现最好,F1 值除了在Adware、TrickBot、Wannacry、Artemis、Virtu 这5 种类型的恶意流量稍低,其他类型都为最高。CNN-MHGRU整体准确率为0.929 8(92.98%),分别比BiLSTM和BotCatcher 高出1.5%和2%左右。这说明本文提出的CNN-MHGRU 模型能够很好地对数据进行时空特征抽象提取,并且在整体上能够更好地对恶意流量进行识别。

表7 3 种模型多分类实验的F1 值对比

表8 3 种模型多分类实验的整体准确率对比

本文提出的CNN-MHGRU 和李小剑提出的CNN-SIndRNN[12]在相同种类的恶意流量下进行对比实验的结果如表9 所示。

表9 本文模型与CNN-SIndRNN 实验结果对比

从表9 可以看出,在Dridex 的识别上,CNNSIndRNN 的F1 值比本文模型高0.144;在Zbot、Adware、TrickBot、Wannacry 和Benign 上CNNMHGRU 表现较好,分别比CNN-SIndRNN 高出15.96%、4.97%、7.7%、86.3% 和5.49%;本文模型相比CNN-SIndRNN 在Wannacry 识别上效果尤其突出。综合比较,本文模型CNN-MHGRU 在实际环境能够更好地识别恶意流量。

4 结语

本文提出了一种基于时空特征和多头注意力机制的恶意加密流量识别方法。该方法不依靠人工提取数据特征,通过深度学习的表征学习能力,直接输入原始数据进行模型训练。该方法分别利用CNN和GRU 提取空间和时序两种维度特征,并在GRU中加入多头注意力机制提高对长序列数据的特征提取能力。通过对比实验,本文从二分类和多分类角度对该方法训练的CNN-MHGRU 模型进行分析。实验结果表明,CNN-MHGRU 模型在二分类和多分类中的准确率、召回率和F1 值都有综合提高,有效增强了对恶意加密流量的识别能力。然而,随着参数的增加,模型的训练和检测的时间也随之增加,因此可以对模型结构进行进一步研究,减少使用的资源并增加检测的实时性。另外,本文数据特征仅来自一个会话,只能对单一会话进行识别,而有些恶意攻击会在整个局域网表现出恶意行为,可以结合多个会话的联系进行分析,识别网络中新型、复杂的恶意加密攻击。

猜你喜欢
灰度加密准确率
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
一种基于熵的混沌加密小波变换水印算法
高速公路车牌识别标识站准确率验证法
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算
认证加密的研究进展