具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1:
如图1所示,一种基于不同数据维度的网络流量识别方法,包括如下步骤:
从网络中捕获网络流量数据包,将所述网络流量数据包进行数据预处理,得到一维网络流量数据或二维网络流量数据;
构建HexCNN-1D深度学习模型以及构建GCNN-2D深度学习模型;
若得到一维网络流量数据时,则通过所述HexCNN-1D深度学习模型对所述一维网络流量数据进行流量识别,输出所述一维网络流量数据对应的分类识别结果,
若得到二维网络流量数据时,则通过所述GCNN-2D深度学习模型对所述二维网络流量数据进行流量识别,输出所述二维网络流量数据对应的分类识别结果。
上述实施例中,通过HexCNN-1D深度学习模型和GCNN-2D深度学习模型能够对一维的网络数据和二维的网络数据进行不同类型网络流量数据的识别分类,处理速度更快,精度更高。
具体地,所述从网络中捕获网络流量数据包,将所述网络流量数据包进行数据预处理,具体为:
从所述网络流量数据包中提取pcap包信息,去除所述pcap包信息中的冗余信息,对经去除后的pcap包信息进行填充或裁剪处理,得到待转换的网络流量数据包;
将所述待转换的网络流量数据包转换为十六进制格式,将十六进制格式的网络流量数据包作为一维网络流量数据。
具体地,所述从所述网络流量数据包中提取pcap包信息,去除所述pcap包信息中的冗余信息,对经去除后的pcap包信息进行填充或裁剪处理,得到待转换的网络流量数据包,具体为:
从所述pcap包信息中去除pcap文件头信息中的24Bytes信息和pcap头文件中的16Byte信息;
若去除冗余信息后的网络流量数据包小于1480Byte,则用0填充至1480Byte,作为待转换的网络流量数据包;若去除冗余信息后的网络流量数据包大于1480Byte,则裁剪前1480Byte作为待转换的网络流量数据包。
目前传统的基于端口号的分类方法,深度包是基于常规网络流量特征分析,但对加密流量识别无能为力。基于深度包传输行为的分类方法可以应用于高速网络环境,但其分类性能受包加密和NAT的影响。因此,需要对网络流量数据包进行预处理。
具体地,所述从网络中捕获网络流量数据包,将所述网络流量数据包进行数据预处理,具体为:
从所述网络流量数据包中提取pcap包信息,去除所述pcap包信息中的冗余信息,对经去除后的pcap包信息进行填充或裁剪处理,得到待转换的网络流量数据包;
将所述待转换的网络流量数据包进行格式转换,得到二维灰度图,将所述二维灰度图作为二维网络流量数据。
上述处理过程,将待转换的网络流量数据包进行格式转换,得到二维灰度图,将转换后的二维灰度图作为GCNN-2D深度学习模型的输入,能够解决网络流量数据不受包加密和NAT的影响的问题。
具体地,所述从所述网络流量数据包中提取pcap包信息,去除所述pcap包信息中的冗余信息,对经去除后的pcap包信息进行填充或裁剪处理,得到待转换的网络流量数据包,具体为:
从所述pcap包信息中去除pcap文件头信息中的24Bytes信息和pcap头文件中的16Byte信息;
若去除冗余信息后的网络流量数据包小于1024Byte,则用0填充至1024Byte,作为待转换的网络流量数据包;若去除冗余信息后的网络流量数据包大于1024Byte,则裁剪前1024Byte作为待转换的网络流量数据包。
具体地,所述HexCNN-1D深度学习模型包括Cov1D卷积层、1D Max pool最大池化层、BN归一化层、Dropout层、Full connect全连接层和Softmax层;所述一维网络流量数据为十六进制格式的网络流量数据包;
所述通过所述HexCNN-1D深度学习模型对所述一维网络流量数据进行流量识别,输出所述一维网络流量数据对应的分类识别结果输出,具体为:
将所述十六进制格式的网络流量数据包输入所述Cov1D卷积层中,通过所述Cov1D卷积层得到网络流量数据包中的多个特征,将每个特征作为结点;
通过所述1D Max pool最大池化层缩减所述HexCNN-1D深度学习模型的大小;
通过所述BN归一化层加快所述HexCNN-1D深度学习模型的训练过程及收敛过程中速度;
通过所述Dropout层控制随机失活神经元过拟合;
通过所述Full connect全连接层将所有的结点连接;
通过所述Softmax层对所有的结点进行分类识别结果输出,输出的分类识别结果包括二分类、九分类、十八分类以及恶意与非恶意分类。
应理解的是,恶意与非恶意分类又为7+3分类,即识别七类正常流量和三类恶意流量。
具体地,所述GCNN-2D深度学习模型包括Cov2D卷积层、2D Max pool最大池化层、Flatten层、Full connect全连接层和Softmax层;所述二维网络流量数据为二维灰度图;
通过所述GCNN-2D深度学习模型对所述二维网络流量数据进行流量识别,输出所述二维网络流量数据对应的分类识别结果,具体为:
将所述二维灰度图输入所述Cov2D卷积层中,通过所述Cov2D卷积层得到二维灰度图中的多个特征;
通过所述2D Max pool最大池化层缩减所述HexCNN-2D深度学习模型的大小;
通过所述Flatten层将每个特征由二维转换为一维,将转换后得到的一维特征作为结点;
通过所述Full connect全连接层将所有的结点连接;
通过所述Softmax层对所有的结点进行分类识别结果输出,输出的分类识别结果包括二分类、九分类、十八分类以及恶意与非恶意分类。
综上所述,二维卷积神经网络(GCNN-2D)的工作流程是基于网络流量识别方法。通过将上述预处理后的Pcap文件转换为二维灰度图,生成的灰度图像将作为模型的输入。经过多个卷积层和池化层处理后,按照流量或应用的类别完成识别过程。
一维卷积神经网络(HexCNN-1D)的工作流程是基于网络流量识别方法。将预处理后得到的十六进制数据作为模型的输入数据。模型训练完成后,根据不同的流量类别完成网络流量识别工作。
具体地,构建HexCNN-1D深度学习模型和GCNN-2D深度学习模型后,还包括对所述HexCNN-1D深度学习模型和所述GCNN-2D深度学习模型优化的步骤,具体为:
分别在所述HexCNN-1D深度学习模型和所述GCNN-2D深度学习模型中添加BN批归一化模块,所述BN批归一化模块表示为Batch Normalization公式:
其中,γ和β为学习参数,对于标准偏差采用每个batchσ
β的无偏估计,
对于均值来说直接计算所有batchμ值的平均值,其中,γ和β为学习参数,Var[x]为标准差,Eβ为样本平均值,E[x]为总体平均值,且E[x]=Eβ[μβ],μβ为均值,ε为偏移量。其中,m表示在模型训练中的batch_num,即存放样本的总数。
下面说明加入BN批归一化模块的具体过程:
为了设计卷积神经网络模型,考虑将BN批归一化模块添加到正常的卷积神经网络模型中。BN批归一化模块可以解决Internal Covariate Shift引起的收敛速度慢、梯度饱和等问题。为了防止归一化破坏特征分布,引入了变换和重建公式,包括可学习参数γ和β,如公式(1)和(2)所示:
其中,E(xk)是指每批训练数据中xk个神经元的平均值。那么分母就是每批数据中神经元激活的一个标准差。
每个神经元xk都有一对这样的参数,γ和β。它有以下定义:
β(k)=E[x(k)] (4)
为了能够恢复在初始阶段上学到的特征。因此,引入了可学习的重建参数γ和β,以便模型可以学习和恢复原始模型要学习的特征分布。最终的Batch Normalization(BN)层的公式(5)、(6)、(7)和(8)如下:
Batch Normalization(BN)层计算的平均值μ和σ固定的。可以将这些值作为测试样本的均值和标准差,然后在最后的测试阶段计算μ和σ如下:
E[x]=Eβ[μβ] (9)
其中,m表示在模型训练中的batch_num,即存放样本的总数。
上式解释如下:对于均值,直接计算所有批次μ值的平均值;然后将每个批次σβ无偏估计用于标准偏差。最终测试阶段的Batch Normalization(BN)公式为:
下面通过识别实验来分别验证GCNN-2D深度学习模型和HexCNN-1D深度学习模型的识别效果。
(1)如图3-6、图11所示,通过ISCX数据集对GCNN-2D深度学习模型进行二分类实验,目标是识别两种不同类型的流量,常规流量和VPN协议封装流量。二分类实验中使用了9种不同的流量数据样本,9类常规加密流量和对应的9类VPN协议封装流量,每类1000个样本,共计18000个样本。实验进行了20次迭代,本实验目标在与能够识别出常规流量与VPN协议封装加密流量。在九分类实验中,使用ISCX数据集对aim、facebook、email、netflix、hangouts、youtube、skype、vimeo和spotify进行分类,以分别识别九种常规流量。每种类型的流量最多采集5000个样本。实验进行了50次迭代。本实验的目的是使模型能够预测九种流量。在十八个分类实验中,使用九种分类(九种常规流量和九种对应的VPN封装加密流量),每种类型的流量最多采集5000个样本。
在USTC数据集中,使用恶意与非恶意分类(7+3类别,即识别七类正常流量和三类恶意流量),正常流量使用BitTorrent、Facetime、Gmail、MySQL、World of Warcraft,Weiboand Skype。恶意流量包括Nsis-ay、Virut、Zeus。
本发明提出的模型使用两个不同的数据集,在四种不同的实验环境中,所有实验的准确度指标都保持在0.95以上。这说明本发明模型在识别不同网络流量数据方面具有较高的可靠性,后续章节将在实验中与其他模型进行对比。
在每个实验中,所有的加密流量和vpn封装的流量实验指标都在0.976到1的范围内。这表明本发明的模型在网络流量识别工作中具有很大的优势,并且的模型与下面的传统模型进行了比较。
GCNN-2D模型准确度分布实验二分类、九分类(Non-VPN)、十八分类、恶意与非恶意流量分类准确率分别达到100%、97.8%、98.5%、97.6%。
HexCNN-1D模型准确度分布实验二分类、九分类(Non-VPN)、十八分类、恶意与非恶意流量分类准确率分别达到100%,98.7%,99.1%,99.6%。
本发明的方法能够检测常规流量、VPN封装流量和恶意流量等网络流量。目前,使用C4.5机器学习方法和SVM支持向量机通过手动特征提取来选择使用的网络流量数据集,所以它们都没有早期检测的特征。相比之下,本发明使用原始流量数据集,本发明的方法可以自动提取特征。
本发明分析了使用卷积神经网络进行网络流量识别的问题,提出在数据预处理阶段对网络流量数据进行忽略冗余信息的处理,并提出一种基于卷积神经网络的GCNN-2D算法。与C4.5机器学习模型和SVM支持向量机相比,它在非VPN数据识别准确率达到98.1%相比之下提高了9.1%。在VPN协议封装的流量中,也取得了比C4.5机器学习模型和SVM支持向量机高14.4%的成绩,达到了98.5%。对于恶意流量识别,该模型的准确率达到了97.6%。
实验结果表明,由于在数据集选择中使用了灰度图图像分类方法,本发明通过GCNN-2D深度学习模型可以获得更高的精度。库尔等人和Mauro等人分别使用了数据包特征和流特征,这使得他们的想法受限于数据集特征的提取。最后,由于本发明的数据处理阶段只使用了每个会话的前1024Bytes,所以一些恶意流量会伪装成正常数据流量的格式,导致对其分析的准确性较低。这也为未来研究方向提供了思路以及下一步实验分析的方向。
(2)如图7-10、图12所示,通过ISCX-VPN-NonVPN-2016数据集对HexCNN-1D深度学习模型进行二分类、九分类、十八分类和恶意与非恶意分类。
从图中的实验数据结果可以得出结论,HexCNN-1D深度学习模型在二分法、九类、十八类和恶意与非恶意分类中的准确率约为99%。实践证明,本发明设计的HexCNN-1D深度学习模型在网络流量识别方面比传统方法模型具有更高的准确率。
上述实验结果和数据证明,与传统学习模型模型相比,本发明所设计的HexCNN-1D模型具有更高的分类识别准确率,具有更高效的分类效果能力。
本发明使用USTC-TFC数据集验证HexCNN-1D深度学习模型对Zeus、Virut和Nsis-ay等恶意流量的识别准确率达到98%以上。这说明本发明设计的HexCNN-1D模型在恶意流量识别方面具有较好的能力。
(3)实验总结:
本发明基于深度学习GCNN-2D深度学习模型和HexCNN-1D深度学习模型,以不同的数据预处理为特征学习提取不同的标签特征。设置了四种不同的场景实验,将提出的GCNN-2D深度学习模型与HexCNN-1D深度学习模型进行实验收集数据与传统的C4.5机器学习模型和SVM支持向量机进行对比。本发明所提出的两种不同的模型在VPN与非VPN流量识别准确率均比传统的C4.5机器学习模型和SVM支持向量机有着较大的提升,本发明所提出的模型在网络流量识别工作中有着更优秀的能力。为了更好地说明本发明得出的结论具有普适性。
混淆矩阵的实验效果跑出了列那个人满意的成绩。实验结果表明,在四个实验场景中,本发明采用的GCNN-2D深度学习模型和HexCNN-1D深度学习模型的准确率均高于传统方法C4.5机器学习模型和SVM支持向量机,并且在恶意流量识别工作中有着较大的提高。
本发明分析了使用卷积神经网络处理网络流量识别的问题。在数据预处理阶段,忽略冗余信息的影响,提出了两种数据预处理方法。分别与两种GCNN-2D深度学习模型和HexCNN-1D深度学习模型相匹配。相较于传统的网络流量识别方法,本发明所设计的模型,识别常规流量数据和VPN封装流量的准确率达到98.8%,比传统网络流量方法高出约10%。对于恶意流量的识别,本发明设计的模型准确率达到98%左右。根据本发明设计的两种模型的实验结果,得出结论:卷积神经网络和图像识别等工作等结合可以有效提高网络流量分类技术的准确度。但是,直接提取网络流量数据中的有效荷载能够更好地应用于网络流量检测工作。
实施例2:
如图2所示,一种基于不同数据维度的网络流量识别装置,包括:
预处理模块,用于从网络中捕获网络流量数据包,将所述网络流量数据包进行数据预处理,得到一维网络流量数据或二维网络流量数据;
模型构建模块,用于构建HexCNN-1D深度学习模型以及构建GCNN-2D深度学习模型;
识别模块,用于若得到一维网络流量数据时,则通过所述HexCNN-1D深度学习模型对所述一维网络流量数据进行流量识别,输出所述一维网络流量数据对应的分类识别结果,
若得到二维网络流量数据时,则通过所述GCNN-2D深度学习模型对所述二维网络流量数据进行流量识别,输出所述二维网络流量数据对应的分类识别结果。
上述实施例中,通过HexCNN-1D深度学习模型和GCNN-2D深度学习模型能够对一维的网络数据和二维的网络数据进行不同类型网络流量数据的识别分类,处理速度更快,精度更高。
实施例3:
一种基于不同数据维度的网络流量识别装置,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,实现如上所述的基于不同数据维度的网络流量识别方法。
实施例4:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的基于不同数据维度的网络流量识别方法。
需要说明的是,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。