掌桥专利:专业的专利平台
掌桥专利
首页

基于深度学习的恶意流量识别方法及系统

文献发布时间:2023-06-19 19:30:30


基于深度学习的恶意流量识别方法及系统

技术领域

本发明涉及流量识别技术领域,尤其涉及一种基于深度学习的恶意流量识别方法及系统。

背景技术

本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。

随着互联网普及和应用水平的持续提升,人民群众享受到互联网带来的便利的同时,网络安全问题也伴随着网络流量的增加而增加。信息泄露、恶意诈骗、网络诈骗等事件层出不穷。诸多不法分子或以控制为目的,将恶意流量隐藏起来,大肆攻击,得到目的主机的控制权;或以获取信息为目的,发送恶意流量以求获取目标的信息进而售卖等操作,因此网络流量的精准识别,对网络安全监管起着至关重要的作用。

目前各种传统的检测方法对经过加密的恶意流量识别率均不高,许多企业和地方政府的信息等重要资产暴露在外而没有一些强有力的保护措施,网络流量的安全性识别迫在眉睫。

传统的流量识别方法是将流量映射到某种协议或者应用,如基于网络端口映射的检测方法,其原理是通过检测源端口号和目的端口号来进行流量识别,该方法对未经伪装端口的流量识别率高,但是这种方法对于非标准端口或者新定义的端口不能使用,而且现如今出现了许多多个网络协议的服务被包装成常见的应用而使用同一端口号,如许多P2P应用常利用类似80这样的周知端口或通过动态端口的方式来进行数据传输,而基于网络端口映射的流量分类识别方法对于这些问题已经无能为力。另外传统的基于DPI和统计的流量识别方法,如将流量的有效载荷与特征识别库相匹配来识别的有效载荷法和从流量特征的宏观角度对网络流量进行分类识别的行为特征法,虽然能够对特征库匹配的流量或者特性流量的准确识别,但是这类方法均需要根据经验和规则确定特征字、序列,不仅计算或系统时空开销大,且有数据安全风险,无法做到自动化智能化的实时性动态流量识别。

发明内容

针对现有技术存在的不足,本发明的目的是提供一种基于深度学习的恶意流量识别方法及系统,先去除流量报文报头,再对流量报文进行规范化处理,再采用深度学习的方法,通过2D卷积神经网络对原有的标签和图片进行训练,得到可以准确识别恶意流量的深度学习模型。

为了实现上述目的,本发明是通过如下的技术方案来实现:

本发明第一方面提供了一种基于深度学习的恶意流量识别方法,包括以下步骤:

选择合适的数据样本构成数据集,对数据集进行预处理;

利用卷积神经网络建立初步恶意流量识别模型;

采用深度学习算法对恶意流量识别模型进行参数调整;

利用预处理后的数据集对参数调整后的恶意流量识别模型进行准确度测试,得到最终的恶意流量识别模型。

进一步的,对数据集进行预处理的步骤包括:流量包处理、报头删除、数据规范化和图像转换。

进一步的,流量包处理的过程包括:将数据集中数据存储在对应文件夹下,对不同文件夹内的数据进行贴标签分类并读取。

更进一步的,报头删除的过程包括:在读取流量数据时,只提取pcap数据包的信息。对于pcap包中的一条流量,通过对数据进行二进制处理实现流量分割,根据协议确定冗余协议内容的长度信息,除去流量的应用层之下的链路信息。

更进一步的,数据规范化的过程包括:规定数据的字节长度,所有对于少于规定字节的数据进行零填充,多于规定字节的数据只取到规定字节数目,以使每个数据包的长度相等。

进一步的,图像转换的过程包括:将数据包中一字节八位的二进制数据转化为对应灰度图片中像素点的数值;然后按照先后顺序排列为一维序列数据,再将一维序列数据转化二维数组;最后将二维数组转化为灰度图片并保存。

进一步的,采用深度学习算法对恶意流量识别模型进行参数调整的具体过程为:建立第一个卷积层,定义提取特征值的个数,输入图片;对上一层卷积进行最大池化(MaxPooling),保留最大特征值;通过批量归一化(BatchNormalization)和Dropout处理部分过拟合问题;再次卷积,得到特征值;再对上一层卷积进行最大池化,保留最大特征值;再次循环进行卷积池化;建立Faltten层,拉长特征值;然后进行全连接层,保留部分特征值;最后再次建立全连接层保留最终的结果作为输出。

本发明第二方面提供了一种基于深度学习的恶意流量识别系统,包括:

预处理模块,被配置为选择合适的数据样本构成数据集,对数据集进行预处理;

模型建立模块,被配置为利用卷积神经网络建立初步恶意流量识别模型;

深度学习模块,被配置为采用深度学习算法对恶意流量识别模型进行参数调整;

模型测试模块,被配置为利用预处理后的数据集对参数调整后的恶意流量识别模型进行准确度测试,得到最终的恶意流量识别模型。

本发明第三方面提供了一种介质,其上存储有程序,该程序被处理器执行时实现如本发明第一方面所述的基于深度学习的恶意流量识别方法中的步骤。

本发明第四方面提供了一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本发明第一方面所述的基于深度学习的恶意流量识别方法中的步骤。

以上一个或多个技术方案存在以下有益效果:

本发明公开了一种基于深度学习的恶意流量识别方法及系统,首先将网络数据流量转化成为图像;然后,提出卷积神经模型,用于对网络数据流量图像进行分类并识别出未知威胁流量;最后,完成对未知威胁网络流量数据的识别工作。本发明的技术方案可以为识别网络未知威胁提供新的解决思路,并可以应用在网络安全监管领域,具有重要的科学研究意义和明确的应用实践价值。

本发明中的恶意流量识别模型通过深度学习解决了许多传统识别方式的痛点,大大提升了对加密流量的识别率,实现了高效快速的恶意流量识别。使用ISCXVPN2016数据集和USTC-TFC2016数据集,采用深度学习的方法,先去除流量报文报头,再对流量报文进行规范化处理,选取前1024个字节信息,将其转化为32*32的像素图片,通过2D卷积神经网络对原有的标签和图片进行训练,对传统端口映射法难以识别的伪装端口的流量和有效载荷法难以检测的加密流量均有95%以上的识别成功率,且系统计算开销远远小于有效载荷法和行为特征法,让流量识别更加高效快捷。

本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1为本发明实施例一中基于深度学习的恶意流量识别方法的流程图;

图2为本发明实施例一中图像转换规则示意图;

图3为本发明实施例一中预处理后的数据集示意图;

图4为本发明实施例一中卷积神经网络的结构示意图;

图5为本发明实施例一中参数调整过程的流程图;

图6为本发明实施例一中恶意流量识别模型的架构图;

图7为本发明实施例一对恶意流量识别模型进行测试的架构图;

图8为本发明实施例一模型测试过程中应用实现界面图。

具体实施方式

应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合;

实施例一:

本发明实施例一提供了一种基于深度学习的恶意流量识别方法,如图1所示,包括以下步骤:

步骤1:选择合适的数据样本构成数据集。本实施例采用网上公开的数据集:ISCXVPN2016数据集和USTC-TFC2016数据集。

步骤2:对数据集进行预处理。2D卷积神经网络下的流量数据不能直接用于卷积神经网络的输入,因此需要将流量数据转化为图片,方便对模型进行训练。

步骤3:利用卷积神经网络建立初步恶意流量识别模型。采用深度学习算法对恶意流量识别模型进行参数调整。根据Tensorflow的代码规则,对本实施例的CNN2D卷积神经网络进行参数调整,具体为修改网络层数、调节参数,通过不断修改得到最终的网络模型。

步骤4:利用预处理后的数据集对参数调整后的恶意流量识别模型进行准确度测试,得到最终的恶意流量识别模型。具体的,本实施例通过模型训练得到VPN与非VPN二分类模型,Benign与Malware二分类模型。

步骤1中,数据集一般可以由两个方面来获得。一是实验者自己捕获数据。二是使用网络上公开的数据集。本实施例采用了网上公开的数据集,本项目用到两个公开数据集:ISCXVPN2016数据集和USTC-TFC2016数据集。

本实施例中使用的第一个数据集为ISCXVPN2016数据集。此数据集通过使用Wireshark等工具抓取流量生成数据。整个数据集大小为27.5G,整个数据集有Chat,VPN-Chat,P2P,VPN-P2P等14个类别。此数据集用来支持模型训练以及样本不均衡问题的解决方案的测试。在本实施例实验中取其中的10个类别进行研究,各个类别包含非VPN和VPN两个类别,如ICQ类别流量包含VPN-ICQ类别流量和NOVPN-ICQ类别流量。每个类别最多采用5000个数据样本。

USTC-TFC2016数据集是Wei Wang等人研究恶意软件流量分类时创建的。一部分是十种网络攻击流量,另一部分是使用专业网络流量仿真工具IXIABPS工具仿真的十种常规流量。整个数据集的大小为3.7GB。在本实施例中,抽取部分数据完成常规流量和恶意流量的分类。在本实施例中取整个数据集中的8个正常流量类别和2个恶意流量类别(zeus,virut)进行测试,每个类别最多采用5000个数据样本。

步骤2中,通常情况下原始的流量数据不能直接用于卷积神经网络的输入,所以要进行数据预处理。在原始数据包数据经过预处理输出为卷积神经网络标准输入数据。对数据集进行预处理的步骤包括:流量包处理、报头删除、数据规范化和图像转换。

1)流量包处理

将数据集中数据存储在对应文件夹下,对不同文件夹内的数据进行贴标签分类并读取。

2)报头删除

数据链路报头包含物理链路信息,这对于在网络中转发帧是必不可少的,但对于应用程序标识或流量特征任务来说却不是有效信息。因此在预处理阶段,首先移除以太网报头。具体过程包括:在读取流量数据时,只提取pcap数据包的信息。对于pcap包中的一条流量,通过用windowspowershell对数据进行二进制处理实现流量分割,根据协议确定报头等冗余协议内容的长度信息,除去流量的应用层之下的链路信息,如以太网协议,ip协议等报文的封。

3)数据规范化

规定数据的字节长度,所有对于少于规定字节的数据进行零填充,多于规定字节的数据只取到规定字节数目,以使每个数据包的长度相等。具体的,卷积神经网络需要相同的输入长度,而数据集中的数据包长度则从50到1392字节不等甚至更大。因此,需要对于长度不足1024的数据流量将在规范化步骤中补全一些零值,以使每个数据包的长度相等。在本实施例中,对于数据包每条流量,少于1024B的进行零填充,多于1024B的只取前1024B。

4)图像转换

将数据包中一字节八位的二进制数据转化为对应灰度图片中像素点的数值;然后按照先后顺序排列为一维序列数据,再将一维序列数据转化二维数组;最后将二维数组转化为灰度图片并保存。具体的,如图2所示,本实施例中将数据包中一字节八位的二进制数据转化成为0到255的数值,正好对应灰度图片中像素点的数值。然后按照先后顺序排列为一维序列数据,再将一维序列数据利用numpy工具包转化为大小为32×32的二维数组。最后利用imageio工具包的imwrite函数将二维数组转化为灰度图片并保存。转化为图片后的数据集如图3所示。

步骤3中,CNN-卷积神经网络:

卷积神经网络通过卷积操作和池化操作学习输入特征的局部模式。随着网络层数的增加卷积神经网络对这些局部模式不断地进行组合、抽象,最终学习到高级特征。

虽然卷积神经网络不断在发展,但是卷积神经网络的构成元件都是差不多的,都是由几个重要的神经网络层组合而成,不同的卷积神经网络可能有着深度,卷积核大小,滑动步长等等差异。图4为本实施例中数字识别的卷积神经网络网络结构图。

卷积层:卷积层是卷积神经网络的重要成分,又被称为内核,由多个特征面组成,每个特征面由多个神经元组成。其的每一个节点是上一层的一小部分,具体长度和宽度由人自己定义。而一般的长宽定为3*3或者5*5。卷积层的形式为:

其中的为当前层,为当前层的偏置,为卷积核,为第j个卷积核对应的卷积窗口,激活函数通常采用sigmoid或Re LU等函数,本实施例的激活函数采用ReLU函数。

池化层:池化层一般在卷积层的后面,才用卷积-池化的方式,其又被称之为采样层。池化层的目的是减少神经网络中的参数,降低过拟合的风险,从而保障模型的准确度,其又可以分为最大池化最小池化等,本文采用的是最大池化池化层的形式为:

其中,为次抽样函数。次抽样函数通常是对输入图像中每一个n*n大小的区域加权求和,故输出图像的大小变为输入图像大小的

全连接层:全连接层一般位于最后,在最终输出结果时,通过全连接层进行输出分类。

利用卷积神经网络建立初步恶意流量识别模型。首先,如图5所示,本实施例根据数据的类型及其的处理方式,选择建立一个Sequential序贯模型。序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠,能比较好的适应本发明技术方案中数据图片的无规律性。

采用深度学习算法对恶意流量识别模型进行参数调整的具体过程如图6所示:建立第一个卷积层,定义提取特征值的个数,本实施例中提取特征值的个数为64,卷积块大小为3x3,激活函数ReLU,输入预处理后的图片维度是(32,32,1);对上一层卷积进行最大池化(MaxPooling),保留最大特征值;通过批量归一化(BatchNormalization)和退出层(Dropout)处理部分过拟合问题;再次卷积,得到128个特征值;再对上一层卷积进行最大池化,保留最大特征值;再次循环进行卷积池化;建立压平(Faltten)层,拉长特征值,为全连接层做准备;然后进行全连接层,保留部分特征值;本实施例中,保留64个特征值。最后再次建立全连接层,保留最终的数值结果作为输出。

需要特别说明的是,在第一次循环后,接有BN层,对数据进行标准化,是为了加速网络的收敛速度。在第二次循环后,接有Dropout层,随机拿掉一些神经元,能够降低过拟合的风险。在第三次循环后,接有Faltten层,将多维数据一维化,作为进入全连接层前的过渡。

步骤4中,为了全面的检测模型的性能,尽可能全面的测试本实施例中的模型,本实施例进行了3段测试,分别为理论性能测试,实际使用测试和模型对比测试。

实验环境为8G内存,Windows10操作系统,2060显卡,测试平台使用了python的tensorflow库进行理论和对比测试,通过编写程序进行模拟实际测试。

1)理论性能测试

本实施例使用了64-128-128-Flatten-64-2的模型结构,设置了Dropout层的丢弃百分比是0.1,steps_per_epochs由模型根据输入图片量处理得出,添加了层级BatchNormalization,减少模型的拟合度,验证准确率在训练过程中逐渐接近1.0。而通过观察训练结果,训练的最终准确率也保持在97.83%,相对的损失率也在接近0.0。

通过观察训练过程中学习准确率、损失率与验证准确率、损失率的变化情况。发现训练准确率与验证准确率始终在靠经1.0的位置,而最终得到模型时的训练准确率保持在98.75%,损失率接近于0。

2)模型模拟实际使用测试

为了检测模型在实际生活中的可用性,本实施例基于模型开发了一款测试的应用,方便本技术方案中恶意流量识别模型在实际生活中的可用性。

其的主要功能有:

a)模拟用户检测发送到本机的流量;

b)基于本机的发包软件对发恶意和非恶意的流量包到本机ip地址,打开软件进行检测并抓包。

c)统计实际发包的恶意和非恶意流量条数与检测出的恶意与非恶意流量数据,对测试数据进行分析处理,验证模型识别准确性;

d)系统的识别能力很强,对恶意流量很敏感,并且识别速度快,不会因流量包拥塞而造成系统崩溃。因此将通此产品进行模型现实流量的测试。

同时,为了模拟现实中的流量使用情况,测试环境需要准备发包环境。测试时,选择了当前热门的发包工具xcap进行模拟威胁用户对本地主机进行发包。接着,对xcap进行定制化使用,配置其接口为本地连接接口。

为了保障结果的准确性,对自行捕获的带有标签的VPN/非VPN流量作为发包素材的流量包,将其目的地址的MAC地址和IP地址改为本地主机的MAC和IP地址。为每个流量包选择端口,并保证其源IP不一致,真实模拟本机对来自不同主机、不同端口号的流量包抓取并分析。

最后为了方便统计最终的结果,通过使用Pycharm,在模拟工程中观察后台结果的记录,对系统的报错进行修改调试,保证系统运行的稳健性,减小实验误差。其对恶意流量识别模型进行测试的架构如图7所示,包括对流量包的动态监测和静态监测,动态监测过程包括:先开启服务,调用本技术方案中的恶意流量识别模型,对逐条流量实时进行监测并反馈,输出监测结果。静态监测过程包括:上传pcap流量包,调用本技术方案中的恶意流量识别模型并进行检测,输出检测结果。其测试过程中应用实现界面如图8所示。

为了准确的平均模型的好坏,更好地评估实验效果,本实施例将会使用如下指标:精度(precision)、召回率(recall)。同时本实施例给定一定标记如下:

TP—预测为P(正例),预测对了,本为正,检测为正样本(真阳性)。

TN—预测为N(负例),预测对了,本为负,检测为负样本(真阴性)。

FP—预测为P(正例),预测错了,本为负,检测为正样本(假阳性)。

FN—预测为N(负例),预测错了,本为正,检测为负样本(假阴性)。

其中:

本实施例先对数据流量进行预处理,将其目标mac指向本机的mac地址,开始循环发送流量,通过pycharm打开系统,同时实时抓取了流量包,为防止其他网络的影响,这里需要将一些占用网络资源的软件关闭,保证抓取到的流量包大部分都是本机发出的流量包.经过多次重复交叉式实验,获取两部分模型的模拟数据结果:识别恶意与非恶意的模型,识别流量是否是vpn加密流量。

最终得到加密和非加密,恶意与非恶意的Precision与Recall分别是98.33%,98.63%和97.00%,96.67%。

因此可以看出,本发明对网络中呈爆炸式增长的各种异构数据流量进行分类并准确识别出带有恶意的威胁流量,可以为维护网络空间安全提供有效支撑。

实施例二:

本发明实施例二提供了一种基于深度学习的恶意流量识别系统,包括:

预处理模块,被配置为选择合适的数据样本构成数据集,对数据集进行预处理;

模型建立模块,被配置为利用卷积神经网络建立初步恶意流量识别模型;

深度学习模块,被配置为采用深度学习算法对恶意流量识别模型进行参数调整;

模型测试模块,被配置为利用预处理后的数据集对参数调整后的恶意流量识别模型进行准确度测试,得到最终的恶意流量识别模型。

实施例三:

本发明实施例三提供了一种介质,其上存储有程序,该程序被处理器执行时实现如本发明实施例一所述的基于深度学习的恶意流量识别方法中的步骤。

实施例四:

本发明实施例四提供了一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本发明实施例一所述的基于深度学习的恶意流量识别方法中的步骤。

以上实施例二、三和四中涉及的各步骤与方法实施例一相对应,具体实施方式可参见实施例一的相关说明部分。术语“计算机可读存储介质”应该理解为包括一个或多个指令集的单个介质或多个介质;还应当被理解为包括任何介质,所述任何介质能够存储、编码或承载用于由处理器执行的指令集并使处理器执行本发明中的任一方法。

本领域技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

相关技术
  • 基于深度学习的恶意加密流量识别方法、系统及电子设备
  • 基于深度学习的恶意加密流量识别方法、系统及电子设备
技术分类

06120115932390