张 静 苗水清 吴晓晖
(延安大学西安创新学院 陕西西安 710100)
随着网络技术的快速发展,越来越多的应用程序被开发出来,尤其是在网络安全领域的应用[1]。但是,加密技术也为恶意流量的攻击提供了便利。过去黑客主要利用防火墙、IDS、SSL等技术来进行入侵检测,但这并不能保证网络数据的安全[2]。随着技术的进步,黑客在攻击过程中,也加密了自身的恶意攻击流量,使得攻击行为越来越隐蔽。因此,恶意加密流量识别对于网络安全有着重要的意义。对于提高网络安全性来说,恶意流量识别可以帮助网络安全厂商识别和阻断非法访问,从而提高网络的安全性[3]。恶意流量识别可以帮助网络安全厂商识别远程访问的请求,从而避免远程入侵的风险。不仅如此,恶意流量识别可以帮助网络安全厂商监测各种网络活动,例如入侵检测、反病毒软件等[4],通过识别恶意流量,网络安全厂商可以防止黑客攻击,保护用户的数据和隐私安全。
针对这种恶意加密流量来说,如何有效识别恶意加密流量成为了当前网络安全领域研究的一个重要方向,一般都是将加密流量和正常流量进行混合训练。而对于恶意流量分类,在实际的识别过程中,针对网络恶意加密流量识别方法在实际应用中,受到人为经验干预较大,影响恶意加密流量识别的结果。因此,文章提出了一种基于混合神经网络的恶意加密流量识别方法,能够有效识别各种加密方式的网络流量。
在对恶意加密流量进行识别的过程中,首先需要截取一个时间段内的全部流量,并从中进行筛选。流量数据包是网络活动中的基本传输单元,流量数据在实际使用中,不同类型的格式都是相对固定的[5]。在日常网络中的数据交互过程中,对产生的流量数据进行预处理,能够保证通信过程中的数据不会丢失,进一步保证双方的对话数据流中交互信息的完整性。流量数据的预处理主要包括对网络数据包进行提取、将数据包按照时间戳进行分组、将数据包按照端口号进行分组。下面以端口号为例,对网络流量的预处理进行介绍。会话表示如下:
P=
(1)
式(1)中,p1…pn表示网络数据传输交互过程按照时间排序的数据包,bi表示网络流分层结构的五元组信息,li表示分层结构数据包的长度和,ti表示时间。端口号是指一个数据包的主机地址的相关编号,同时也能够作为防火墙在判定网络流量是否合法的主要依据[6]。在对网络流量进行预处理时,对端口号进行提取是一种较为常用的方法,其主要流程如图1所示。
图1 流量预处理流程
通过图1可以看出,网络流量的端口号与 IP地址之间存在着较强的相关性,因此文章通过统计端口号与 IP地址之间的关系来识别恶意流量。在对网络流量进行分类时,还需要考虑其他因素对端口号与 IP地址之间关系的影响[7]。其中最重要的因素是对 IP地址进行分组时所采用的“二进制”方式。针对于 IP地址和端口号之间存在着较强相关性这一问题,文章提出了一种基于“二进制”方式对其进行分组的方法,“二进制”方式即为将 IP地址与端口号按照“1-9”的顺序分组。通过以上步骤,文章对网络流量数据包进行了预处理,使得网络数据包中可以包含更多信息,从而提高了网络流量分类任务的准确性。此外,这种方法还可以避免对正常流量进行分类时出现的重复分组问题。至此完成流量数据的预处理。
在对恶意加密流量进行分类时,需要从网络数据流中提取出有效特征,以实现恶意加密流量的识别,而这一过程中最重要的就是特征的选取[8]。在传统的机器学习过程中,内置算法没有足够的空间进行自学。文章建立的基于混合神经网络的识别模型如图2所示。
图2 混合神经网络模型
如图2所示,文章使用混合神经建立网络模型,其层次从功能上进行划分,第一层能提取出恶意加密流量的特征,第二层能在流量数据集中对恶意加密流量进行识别。在文章建立的模型中,第一层的功能主要是进行恶意加密流量的特征提取[9]。恶意加密流量特征可以划分为协议状态序列特征、数据包长度序列特征、协议扩展字段特征等。文章以PCAP网络加密流的文件形式为例进行分析,其格式如图3所示。
图3 PCAP网络加密流格式分析
从图3可以看出,经过预处理之后的数据集能够更好地代表特征空间。具体来说,通过网络模型能够提取出以下三个方面的特征:①第一个特征是数据包在整个网络中的传输时间。通过该特征可以判断网络流量是否存在异常情况;②第二个特征是数据包在整个网络中传输的位置[10]。通过该特征可以判断出网络流量是否来自于内网;③第三个特征是加密类型。将文章所设计的混合神经网络模型,根据功能的不同进行分层。模型共两层,其中第一层采用VGG16架构,主要负责提取出流量数据集中的相关特征;第二层采用PyTorch架构,将提取到的特征进行输入,经过算法计算,完成恶意加密流量的识别。至此完成基于混合神经网络模型的设计。
针对传统神经网络的局限性,文章提出了一种基于混合神经网络的恶意流量识别方法,并在此基础上进行了算法优化。文章将数据集按照流量大小分为三个子集:小数据集、中等数据集和大数据集,分别采用不同的混合神经网络模型对网络流量进行分类识别。具体算法优化流程如下:
(1)采用机器学习和深度学习相结合的方法对网络流量进行分类识别,对于小数据集和中等数据集,使用机器学习模型进行分类识别;混合神经网络在训练过程中主要是基于梯度,采用代价函数来计算偏导数进行参数的更新。其中代价函数表示为:
(2)
(2)在小数据集中,采用基于传统机器学习的方法进行分类识别;在中等数据集中采用基于深度学习的方法进行分类识别;在大数据集中采用机器学习和深度学习相结合的方法进行分类识别。在此过程中,梯度会随机产生变化。为了防止梯度消失,造成识别出现误差,选择引入激活函数来控制梯度差:
ReLu:f(x)=max(0,x)
(3)
式(3)中,混合神经网络中的输出层神经元的激活函数能够代替均方误差函数。
(3)对于网络流量样本集,在训练前将网络流量样本分为恶意加密流量、恶意正常流量、非恶意加密流量、非恶意正常流量。对于不同类型的流量,在进行混合神经网络的训练过程中,需要采用不同的机器学习模型对其进行训练。并且按照上述的流量进行划分,得到适用于模型的训练集和测试集,在不同的数据集中搭建不同功能的网络模型进行训练。
(4)对于加密流量和非加密流量的分类识别问题,文章将两者分别训练一个神经网络模型。在训练过程中,将加密流量和非加密流量分别作为输入,通过混合神经网络模型对其进行分类识别。
(5)对于混合神经网络模型中的学习率、正则化系数、交叉熵损失函数等参数设置问题,文章将采用遗传算法对其进行优化。根据优化后的网络模型对不同加密方式的网络流量样本集进行分类识别。实验结果表明:优化后的混合神经网络模型具有更好的性能表现。
在以上的识别流程中,在混合神经网络结构中使用相关的函数进行求解和训练,能够减小神经网络的体积,避免在识别过程中发过度拟合。至此完成基于混合神经网络的恶意加密流量识别方法的设计。
文章主要研究的是基于混合神经网络的恶意加密流量识别方法的有效性,根据完整的信息数据交流过程,实验步骤主要设计为两部分:数据预处理和特征整合。选择一套简单的请求响应程序,包含大部分恶意流量,组成一个样本恶意数据集。系统结构如图4所示。
图4 文章识别流程
实验结果选用响召回应准确率、召回率、召回准确率调和平均数来评定,准确率具体公式如下:
(4)
式(4)中,TP为正确预测为恶意加密数量,FN为错误预判为恶意加密数量。另一指标召回率的具体公式如下:
(5)
式(5)中,FP为错误预判为非恶意加密数量。
(6)
(7)
式(6)中,TN为正确预测为非恶意的非加密数量。在以上的指标计算下,分别使用文章设计的基于混合神经网络的恶意加密流量识别方法和传统的流量识别方法共同进行测试,并将实验结果进行对比与分析。
在以上的实验条件下,使用文章设计的基于混神经网络的恶意加密流量识别方法、基于序列监测的识别方法、基于端口检测的识别方法、基于特征检测的识别方法得到的检测准确率如图5所示。
(1)基于序列检测的识别准确率
实验使用收集到的数据集进行不同方式验证,对比精确率、召回率、F和检测时间,试验结果如图6所示。
图6 恶意加密流量识别方法的实验结果
经过对4种不同试验结果进行分析发现,文章设计的基于混合神经网络的恶意加密流量识别方法,具有较好的检测性能,精确率和召回率都远远高于其他检测方式,F值也一直保持98%的检测精度,稳定性更高。
文章提出了一种基于混合神经网络的恶意加密流量分类方法。首先在训练数据集上训练模型,然后将模型应用到测试数据集中进行测试,最后将测试数据集作为训练数据集,使用经过预处理过的加密流量样本作为模型的输入数据进行训练。通过实验验证,文章提出的模型相比于传统的机器学习模型和深度学习模型,在实际应用中表现出了较好的识别性能。同时,文章提出的混合神经网络模型还具有一定的可解释性,这在一定程度上保证了系统在实际应用中的鲁棒性。但是,由于文章所提出的方法是针对加密流量进行识别,因此在未来的工作中还需要进一步考虑如何提高识别准确率。此外,文章提出的模型仍有一些不足之处,未来还需进一步改进。