基于深度学习的网络入侵检测研究综述
2019-03-18张勇东陈思洋彭雨荷
张勇东, 陈思洋, 彭雨荷, 杨 坚
(中国科学技术大学 信息科学技术学院, 安徽 合肥 230027)
根据《互联网安全威胁报告》(简称ISTR), 2015年,大约有4.3亿新恶意软件变种、362个加密勒索软件和其他互联网威胁被发现[1].网络犯罪和威胁活动已成为日常生活的重要组成部分,网络安全的重要性日益成为人们关注的焦点.近年,一款勒索软件“WannaCry”于2017年5月12日在150多个国家的1万多家组织中发起攻击,显示出新兴网络攻击的影响日益严重[2].
入侵检测(ID)是网络安全的核心要素[3].入侵检测的主要目的是识别网络和计算机系统中入侵者引起的异常行为.根据入侵检测的执行位置,存在两种不同类型的入侵检测:基于主机的入侵检测和基于网络的入侵检测.根据如何进行入侵检测,IDS可以实现误用检测(基于签名)和异常检测[4-5].误用检测通过对已知的攻击行为进行分析,提取攻击特征,建立相应的攻击签名库,利用文件或者网络流量数据与攻击签名的匹配情况判断入侵行为;而异常检测首先构建主机、用户或网络连接的正常行为描述,通过判断所检测到的行为是否偏离了正常行为模式,从而判断是否发生了入侵行为.
误用检测是发展最成熟、应用最广泛的技术.大部分商用的入侵检测系统主要采用基于误用的检测方法,并依靠不断提升规则库的完备性来提升检测的可靠性.误用检测可以有效地检测已知的攻击行为,并且具有较高的准确率.然而,由于误用检测的基础是已知的攻击签名和可获取的数据包载荷,因此,误用检测通常难以应对加密攻击检测和零日攻击检测问题.异常检测通过分析流量的行为模式来检测那些偏离正常行为的异常流量.异常检测在已知攻击时的准确率不如误用检测,而且经常面临着高误报率的问题.然而,由于基于异常的入侵检测方法不需要分析数据包的有效载荷,并且可以只利用正常流量就可以检测出异常流量,因此,异常检测在检测加密攻击和零日攻击时具有无与伦比的优势,针对异常检测的研究受到了广泛的关注.
本文综述了利用深度学习方法进行网络异常检测的最新研究进展,旨在系统地梳理这一方向最新的研究工作,并讨论目前存在的问题和发展方向:①总结了目前基于深度学习的入侵检测常用的输入特征及相关预处理方式;②介绍了几种典型的深度学习模型及选择方式;③总结了利用深度学习可以实现的几种不同的检测任务;④讨论了目前存在的若干问题和发展方向.
1 特征选择
利用深度学习进行入侵检测时首先需要从原始网络数据中提取出流量的行为特征.流量的行为特征通常指的是流级特征,即将网络数据按照源IP、目的IP、源端口、目的端口、协议聚合后提取的特征.这些特征通常可以分为统计特征、时序特征、协议特征、有效载荷特征四种.
1.1 统计特征
在数据传输时,可以从整个数据流中获得许多统计特征,例如数据包的平均长度和最小到达间隔时间.许多研究已经验证了统计特征用于分类可以得到较高精度的结果,如Roughan等[6]的研究采用了平均数据包大小,流量持续时间,每个流的字节数,每个流的数据包和均方根数据包大小等统计特征,在服务类型分类中最低仅有5.1%的误报率,取得了较好的结果.
但统计特征数量较少,输入维度较低,因此,大多数研究仅在经典机器学习中应用统计特征以构建更简单的分类器.此外,为了获得统计特征,分类器通常需要观察流的全部或大部分.虽然已经有研究证明,根据数据集和统计特征的选择,从前10到180个数据包获得的统计特征可能足以进行分类,但是因为它需要捕获大量流,以从中获得可靠的统计特征,所以可能不适合用于在线分类和快速分类.而且,在某些情况下,统计特征的选择可能会受到特定用户的行为、特定操作系统的模式或特定网络条件的影响.
通常,我们对于统计特征采取标准化、最大-最小缩放等预处理方法.如Alom等[7]在处理KDD数据集时,因持续时间等特征的最大值和最小值之间差值的范围较大,需要对数据进行最大-最小缩放预处理.
1.2 时序特征
时间序列特征包括数据包长度的序列、到达间隔时间序列和连续数据包的方向等,它在统计特征的基础上进一步体现了数据包之间时间上的关联性.相关工作已经证明,时间序列特征对于原数据具有更准确的代表性,即使对于加密流量,前几个数据包(最多20个数据包)也已被证明足以达到一定的准确度,因此,时间序列特征被广泛应用于各种场景和数据集.
由于时间特征的提取会面临一系列的困难,因此,很多文章研究了不同特征提取方法,如滑动窗口法,但这种方法不考虑窗口跨越时间,且内存和运行时的复杂度高,为了解决这些问题,Mirsky等[8]设计了一个新的框架.该框架提出了一个衰减窗口模型,用于在动态数量的数据流(网络信道)上进行时间统计数据的高速特征提取.为了达到这个目的,文中通过使用衰减增量统计方法来提取时序统计特征.在特征更新时引入遗忘因子,使得较早的数据对当前时刻结果的影响呈指数减少,最终输出为当前时刻值和上一时刻值分别与其权重乘积之和.这种方法既考虑到了时间的影响,又只占用了较少的内存,比一般的时间特征提取方法效果更好.
因为网络入侵行为往往会持续一段时间,通过分析数据包在一段时间内的变化能更好地检测到入侵行为的发生, 而循环神经网络恰好适合处理具有时间域特征的数据,可以通过训练好的神经网络模型提取出正常和异常网络流量具有区分度的时间依赖特征.Yin等[9]就是使用基于循环神经网络的模型进行分类,并在NSL-KDD数据集上评估该方法在二分类和多分类中检测网络入侵时的性能.实验提取了数据包持续时间等特征,经过数字化和标准化处理后,将其输入到循环神经网络模型进行训练和测试.实验结果表明基于循环神经网络的入侵检测系统非常适合入侵检测,在二分类和多分类中,其性能优于传统的机器学习分类方法,提高了入侵检测的准确性.
时间序列特征提取出的数据因为上下限范围大,应采取归一化的预处理方法,具体方法内容和统计特征的预处理相似,一般需要将数据映射到[0,1]之间.
1.3 协议特征
协议特征是通过提取网络协议中某些字段而得到的特征,如网络层IP协议相关字段、应用层HTTP协议相关字段等.网络流量的协议特征相较于简单的统计特征包含了更多流量的隐藏结构特征信息,可用于检测利用协议漏洞或针对网络协议发起的攻击,如DOS/DDOS攻击.此外,还可以通过分析流量的协议字段从而获取正常流量的协议参数,得到协议状态的转移关系,进而分析异常行为.
在入侵检测系统中,基于传统特征的检测方法常常无法检测到加密流量,而基于协议特征的方法因为无需检测数据包有效载荷,在此方面表现较好,如检测针对TLS协议中特定加密算法的攻击行为.相关工作通过利用TLS握手元数据、与加密流相关的DNS上下文信息,以及5分钟内来自相同源IP地址的HTTP上下文信息等数据,提高了对加密攻击流量的识别精度[10].
然而协议特征并没有包含数据包的有效载荷信息,仅仅依靠协议字段信息对流量的分类不够精细,因此,具有一定的局限性.
协议特征通常采用数值化的预处理方法,即将“protocol_type”,“service”和“flag”等非数字特征,转换为数字形式,通常采用独热编码方式,又称为一位有效编码,主要是采用N维向量来对N个状态进行编码,每个状态对应其中的一个维度,并且在任意时候只有一维有效,独热编码可以使特征之间的距离计算更加合理.例如,在KDD数据集中特征“protocol_type”有三种类型的属性:“tcp”、“udp”和“icmp”,其数值被编码为二进制向量(1,0,0),(0,1,0)和(0,0,1).同样,特征“service”有70种类型的属性,功能“flag”有11种类型的属性.以这种方式处理后,KDD数据集中41维的特征转换为122维特征.
1.4 有效载荷
有效载荷特征即通过提取基于TCP/UDP传输中数据包的特定负载而获取的特征.基于数据包载荷的检测方法可以通过有效载荷特征来识别数据包,即能够通过深度学习方法提取攻击流量的有效载荷中隐含的特征信息,进而识别异常流量.
网络数据包基本的传输形式为二进制比特流,而灰度图的原始存储方式也为二进制比特流,在对网络流数据包协议的识别过程中,两者存在相似性,可将网络流数据包当作灰度图来进行处理.利用成熟的卷积神经网络图像识别技术,避免了显式的特征提取,而隐式地从训练数据中进行深度学习,自动得到不同网络流量的特征模型,实现对异常流量的识别.卷积神经网络可以通过局部感知和权值共享对原始流量有效载荷灰度图进行卷积,将异常流量信息的特征提取出来,再用池化操作对特征值进行降维,经多层提取,最终抽取出对应异常网络流量信息的多项抽象特征.例如,Zhou等[11]从流中提取了256个特征并将其映射为16*16灰度图像,然后使用改进的卷积神经网络对流进行分类.对于数据量较大的数据类型,他们的模型具有良好的分类结果,但对数据量较小的流量类型,其分类效果是非常有限的.
此外,还有一些工作也针对有效载荷特征进行了研究.如Yuan等[12]提出了深度学习的神经网络模型.他们从连续流序列中提取了20个区域,并使用长度为T的滑动时间窗生成了一个三维特征图.实验发现,与传统的机器学习算法相比,所提出的模型将误差降低了5个百分点.Zhang等[13]通过将原始代码映射到等长的十进制数作为流量的特征,来提取流中的原始十六进制代码,并设计了改进的分层网络模型以进行分类,在两个不同的数据集中进行了实验.实验结果表明,在数据量充足的条件下,所提出的模型仍然可以达到99.9%的分类准确率.
有效载荷特征的预处理不再采用标准化的方法,王伟[14]对基于有效载荷特征的预处理流程进行了详细的描述,大致分为流量切分、流量清理、统一长度和图片生成四个流程.首先,将一份原始流量数据切分成一些较小的流量数据,如果待分类的流量来自相同的网络环境则需要对其进行清洗,即用随机生成的新地址替换原地址;其次,对没有应用层数据的数据包进行文件清理,以防止这些数据包产生空文件;再次,对清理过的文件按照一定字节进行统一长度处理,如果文件长度超过标准则按统一长度截取,少于该长度的文件在后面补充0x00;最后,将统一长度后的文件按照二进制形式转换成灰度图片,即每个字节对应相应的灰度像素值,如0x00对应黑色,0xff对应白色.
2 深度学习模型及选择
入侵检测的准确率不仅取决于输入的特征数据,还取决于选择的深度学习模型,不同的模型具有不同的特点,适用于不同的检测任务和不同的输入特征,本节讨论了四种典型深度学习模型的原理、进行入侵检测时的优势和不足,以及选择的方法.
2.1 多层感知机
多层感知机(MLP) 是一种人工神经网络结构,可以用来解决分类和回归问题.MLP由输入层、隐藏层、输出层三部分组成,在MLP中,层与层之间采用全连接的方式,即每层的神经元与上层的所有神经元都有联系且存在相应的连接权值.MLP可以通过对隐藏层数目和神经元个数的设计,实现对任意非线性函数的学习.训练MLP的算法通常是BP算法(反向传播算法),MLP训练完成后,可以根据输入数据来判别它的所属类别.
MLP原理简单,但在网络结构较大时往往性能较差,一方面是因为训练参数的增多,使得计算时间变长,同时容易陷入局部最小值导致得不到全局最优解;另一方面是网络结构较大时会产生过拟合的情况,导致训练效果降低.
在网络入侵检测中,纯MLP难以得到良好的训练效果而很少使用.但几层采用全连接方式的神经元(可被视为MLP)可被用作其他模型的一小部分.此外,对于上文所述的统计特征,统计特征数量较少、维度较低、构成的网络结构相对简单,用MLP训练会有不错的训练效果.例如,Roy等[15]将MLP应用于入侵检测系统,前馈网络包括输入层,大约400个隐藏层神经元和输出神经元,使用ReLu函数作为激活函数,并用softmax分类器实现流量分类,达到入侵检测的目的,与使用支持向量机的模型进行比较,模型的精度有了很大的提高.Shun等[16]利用前馈神经网络构建检测模型并利用反向传播算法进行优化,实验说明训练后的模型可用于Tor网络中的入侵检测和用户识别,并有着较好的效果.
2.2 卷积神经网络
卷积神经网络(CNN)是人工神经网络的一种,主要包括卷积层和池化层两个模块.卷积层的作用是对输入层进行卷积,来提取更高层次的特征,池化层的作用是对卷积层得到的特征进行特征选择和过滤,减少数据处理量.
卷积神经网络具有良好的泛化能力,能够适用于多种分类任务,在模式识别、物体检测等方面具有良好的效果.利用卷积神经网络建立模式分类器,能直接用于灰度图像的识别和分类.在入侵检测和分类过程中,卷积神经网络的输入往往是流量数据图片化后的灰度图,通过将流量分类问题转变为图片分类来处理.可以利用卷积神经网络提取流量的空间特征.
在入侵检测中,首先对原始流量数据进行预处理,生成统一大小的流量灰度图,将获得的流量灰度图作为输入数据输入CNN中,通过CNN提取流量有效载荷中的相关特征,并利用所得特征进行异常流量检测.CNN中获得的特征多是空间特征,可以与其他神经网络获得的特征结合起来,并用于异常流量检测.如与RNN搭配使用,可以同时提取流量的时序特征和空间特征,更加准确地描述了流量的特点,对分类精度的提高有很大的帮助.例如,Lin等[17]使用了一种基于LeNet5模型的CNN方法来进行网络入侵检测,实验结果表明,随着训练样本数目的增大,入侵检测的准确度会随之提高.当样本数目超过10 000时,入侵检测的预测准确率达到99.65%,总体准确率为97.53%.Naseer等[18]使用不同的深度神经网络架构,包括CNN、AE和RNN,来训练并构建入侵检测模型.这些深度学习模型在NSLKDD训练数据集上进行训练,并在NSLKDD提供的两个测试数据集上进行评估.发现CNN和LSTM模型在入侵检测中表现出卓越的性能,测试数据集的准确度分别为85%和89%.Blanco等[19]利用遗传算法(GA)优化CNN分类器,以找到更好的输入特征组合,不仅能实现正常流量和异常流量的分类,而且能对异常流量进一步细分,正常流量的检测准确度最高达到了98.14%.
2.3 循环神经网络
循环神经网络(RNN)是常规前馈神经网络的扩展,是一类用于处理序列数据的网络.与常规的神经网络相比,循环神经网络通过在隐藏层的神经元中添加了自连接的权重值,使得每次的训练可以记录前面训练时输出值状态的信息,实现了保存前一个序列的信息的功能,成功地解决了序列数据预测问题.
RNN主要提取的是流量的时序特征,可以通过RNN分别学习数据包和网络流两个层次上的特征,数据包层次,即RNN将一个数据包的字节序列作为输入,只针对每一个数据包进行特征学习,学习到每个数据包的特征信息,并输出每个数据包对应的特征向量.网络流层次,即使用RNN在每个数据包特征向量的基础上进一步学习数据包之间的序列关系,最终得到一个流特征向量.在入侵检测中,不仅可以使用两阶段的RNN先后提取数据包和网络流的时间特征,得到流特征向量,利用Softmax分类器进行分类.也可以结合CNN,通过CNN学习数据包内部的空间特征,再利用RNN提取数据包间的时序特征,综合利用两种神经网络的特征,得到准确刻画网络行为的时空特征,并用于网络入侵检测.此外,也可以将RNN和自动编码器结合,自动编码器用于网络流特征提取和维度压缩,RNN处理网络流数据的序列信息,得到流数据的时间特征,两者结合起来,用于网络入侵检测.
Kim等[20]基于长短期记忆(LSTM)神经网络建立IDS模型,并用KDD Cup 1999数据集进行训练.在实验中,作者建立了一个基于LSTM的IDS分类器,并将其与其他IDS分类器进行比较,发现基于LSTM的IDS分类器对于攻击有着很高的检测精度.王伟[14]结合CNN和LSTM两种神经网络来学习网络流量的时空特征,就此提出了一个网络流量异常检测系统HAST—NAD.首先利用CNN对每个数据包的空间特征进行提取,再利用LSTM在数据包特征向量的序列上提取其时序特征,然后结合网络流的空间特征和时序特征,实现对网络流量异常的精准检测.在DAPRA1998和ISCX2012两个数据集中,有着很高的检测精度,同时保持相对较低的误报率.Mirza等[21]介绍了一种基于长短期记忆(LSTM)神经网络的序列化自动编码器结构,用于计算机网络入侵检测.首先通过LSTM处理可变长度数据序列,将可变长度数据转化为固定长度数据,自动编码器在无监督条件下处理固定长度数据,在提取到可靠特征的同时降低输入数据的维度,最后基于交叉验证分配阈值,以便对输入的流量数据序列进行异常分类.实验证明了提出的顺序LSTM自动编码器用于入侵检测具有良好的分类效果,并在ISCX IDS 2012数据集上验证了算法的性能.
2.4 自动编码器
自动编码器(autoencoder)是神经网络的一种,自动编码器(AE)的作用是想尽可能的重构输入,使得隐藏层较低维度的神经元能够代替高维的输入层神经元,从而实现降维和特征提取的功能.该网络可以看作由两部分组成:一个由函数h=f(x)表示的编码器和一个重构解码器r=g(h).前一部分能将输入数据进行压缩,后一部分将压缩后的数据进行重构.通过向自编码器强加一些约束,可以通过不同的约束条件构建不同的自动编码器,通过训练不同的自编码器来获得数据不同类型的特征.
相比其他神经网络,自编码器是一种无监督学习的算法.通过编码器和解码器,学习某一类数据内在的特征分布.若只使用正常流量训练自动编码器,则可以得到一个简单的正常与异常流量分类器.在测试样本中,如果流量是正常流量,重构误差(输入和预测之间的误差)应该在设定阈值范围内,如果重构误差超过阈值范围,将其视为异常流量.
在网络入侵检测中,用一种只包含正常流量的训练集训练自动编码器,产生的分类器能够区分正常流量和异常量.Farahnakian等[22]提出了一种基于深度自动编码器的入侵检测方法,并通过逐层贪婪训练来避免过度拟合,并在KDDCup99(旧版NSL-KDD)上评估,在二分类和多元分类上,均有着较高的准确度.Al-Qatf等[23]提出基于堆叠自编码器的自我学习框架进行特征学习和降维,并使用SVM进行分类的方法.该方法在两类和多分类中也表现出良好的性能,在NSL-KDD数据集上实现了很高的异常检测准确率,同时缩短了训练和测试时间,表现出高效的检测性能.Javaid等[24]讨论了现有NIDS技术所面临的问题,为此提出了一种新型的栈式非对称自动编码器(SNDAE)用于无监督特征学习,在此基础上,利用随机森林算法对学习到的样本特征进行分类.分别在KDDCup99和NSL-KDD数据集上训练并测试该方法,结果表明,该模型拥有较高的准确性、精确度和召回率,同时缩短了训练时间,与基于深度置信网络的方法相比,模型精度提高5%,训练时间缩短高达98.81%.
3 基于深度学习的入侵检测任务
入侵检测的基本任务是实现对网络攻击的分类,除此之外,基于深度学习的入侵检测具有检测加密攻击和零日攻击的天然优势.本节讨论了深度学习技术在上述三类入侵检测任务上的应用和最新研究进展.
3.1 异常检测与攻击分类
针对计算机网络的攻击种类繁多,主要包括利用网络通信协议自身存在的缺陷、利用用户终端操作系统内在缺陷或利用程序语言本身所具有的安全隐患几大类.由于当前主流的计算机硬件和软件、网络协议和结构以及网络管理等方面均不可避免地存在安全漏洞,从而使得网络攻击有机可乘,难以防范.
对网络攻击进行分类是研究具体网络攻击及相应防御措施的一个重要前提.攻击分类不仅仅是区分正常流量和异常流量,还要识别异常流量的攻击类型,通过对攻击类型的研究,可以清楚地了解每一类攻击的详细特性,从而更好地对攻击进行防御.
为了更精确地进行攻击分类,通常采用深度学习的方法进行攻击检测.在过去的40年中,支持向量机和贝叶斯等算法模型在异常检测和攻击分类的研究中表现出色,而随着技术的发展,作为机器学习的一个分支,深度学习算法在这些方面逐渐显示出了独有的优势,因而深度学习算法逐渐开始被应用于异常检测和攻击分类等领域.
深度学习是机器学习的一种,主要用于对数据进行表征学习,其采用高效的无监督式或半监督式的特征学习和分层特征提取算法来替代人工特征提取.在网络攻击检测领域,相较于传统的特征提取算法,深度学习具有更好的特征提取效果,可以有效提高检测速度和准确率、降低误报率,能够自动识别出不同的攻击特征,从而更高效地发现潜在安全威胁.
目前,基于深度学习的网络攻击检测算法已逐渐成为学术界和产业界的研究热点.Muna等[25]使用无监督的深度自动编码器模型进行训练,以学习正常的网络行为并产生最佳参数(权重和偏差).然后,在有监督的深度神经网络模型中,使用ADE模型的估计算法来有效地调整其参数,并对网络流量进行分类,并在两个数据集上进行了评估,降低了检测结果的假正类率.Staudemeyer等[26]提出了基于有监督的LSTM的入侵检测算法,该算法适用于检测有独特时间序列特征的DoS攻击和Probe攻击.为了解决网络流量特征难以定量选取和训练数据集数量有限等问题,许勐璠等[27]首先采用了半监督的学习方法,利用少量已经标记的数据生成大规模的和原数据类似的数据集用以训练模型,在降低流量数据标记成本的同时定量选取流量特征,不仅消除了传统特征提取中人为因素的影响,同时也尽可能多地保留了特征的分类信息,能更准确地检测到网络中的未知攻击.
3.2 加密攻击检测
近年来,随着网络规模的不断扩大,保护传输数据和用户隐私的需求也在迅速增加.各种流量传输加密技术的实现,在保证网络应用传输数据安全和用户隐私的同时,很多恶意软件也开始利用加密技术来逃避防火墙和入侵系统的检测,这些做法给攻击流量的检测带来了巨大困难.
根据协议所处层的位置,流量加密技术可以分为三类,即网络层加密、传输层加密以及应用层加密.网络层加密是指在网络层对上层数据包即传输层数据包进行整体加密,如IPsec技术.传输层加密是指在传输层对上层数据包即应用层的数据包进行加密,如TLS协议和SSL协议.应用层加密是指在应用层上对网络应用数据使用专门的加密协议进行加密传输,如BitTorrent和Skype.网络层和传输层加密这种对上层数据包进行整体加密的技术,又可以被称作协议封装.实际场景中不仅可以在某一层对流量数据进行加密传输,也可以在不同层同时使用加密协议,如使用VPN通信的Skype流量就是将应用层加密后的流量数据进一步进行协议封装.
在加密协议握手阶段,双方往往需要通过明文协商相关加密参数,这一阶段可以得到许多与加密相关的宝贵数据,如加密采用的 HTTP 、URL、DNS主机名、TLS版本、算法、证书、TLS扩展选项等.除此之外,还可以利用数据包长度和报文的时间间隔和顺序,以及被分析的数据流中数据包的有效载荷上的字节分布,分析加密流量的行为模式,根据这些信息,建立加密数据的流量模型,同时可以进一步研究加密流量传输的内容,使得加密流量的入侵检测有着更高的精度.
加密流量的分类方法主要有两种:一种是基于载荷的分类方法,流量采用不同的加密协议对流量进行加密,而不同的加密协议的协议格式是不同的,利用模式匹配检查数据包的包头格式来判断其采用了哪种加密协议,是否为加密流量,达到识别加密流量的效果.但是,这种分类方法只是粗分类,只能判断流量是否为加密流量,无法对加密流量具体分类.另一种是基于行为的分类方法,通过深度学习的方式提取加密流量的各种行为特征,最终实现加密流量的识别和分类,实现入侵检测的功能.
在加密流量的入侵检测中,可以利用加密协议握手过程中提取的特征进行检测,如加密协议的协议特征、与加密流相关的DNS上下文信息、以及5分钟内来自相同源IP地址的HTTP上下文信息等数据,通过相关的神经网络模型进行训练,实现加密流量的入侵检测.此外,也可以利用原始数据包有效载荷来进行加密流量的入侵检测,通过被分析的数据流中数据包的有效载荷上的字节分布,分析加密流量的行为特征,从而达到入侵检测的目的.
王伟[14]针对传统基于机器学习的入侵检测方法需要手动的提取特征的问题,提出了一种基于CNN的端到端的加密流量检测方法,利用深度学习的优势实现流量特征的自动提取与流量类型的识别.在公开的VPN数据集上的实验结果发现一维CNN比二维CNN更适用于网络流量分析与分类.Foroushani等[28]提出了一种通过SSH2(Secure Shell)协议检测加密数据中异常行为的新方法.在Snort入侵检测软件上实现了所提出的系统,并利用DARPA评估数据集对其进行了评估.评估结果表明,该方法在检测精度和计算效率方面具有良好的前景,因此,适用于实时入侵检测.Prasse等[29]开发并研究了基于LSTM的恶意软件检测模型,该模型仅使用HTTPS流量的握手阶段的可观察信息,并通过神经语言模型将域名转化为低维特征,即域名特征,在实验的过程中得出结论,基于LSTM的模型优于基于随机森林的模型,并且域名特征和网络流特征的组合使用优于使用其中的一种特征.该机制能够识别网络流中的大部分恶意软件,包括以前未见过的恶意软件.
3.3 零日漏洞检测
零日漏洞,即被恶意行为发现后立刻被其利用的安全漏洞,也称零时差漏洞,而零日攻击便是对应产生的攻击,它因某些系统或软件的漏洞未被修补或未被开发商知晓,从而被恶意行为发起攻击.随着信息技术的发展,系统及代码越来越庞大复杂,虽然能实现更多的功能,但安全隐患也会随之增加.虽然一般企业已经尽力防止被恶意行为入侵,但系统漏洞无法避免,都可能成为零日攻击的目标.
与传统病毒攻击相比,零日攻击不再被动、缓慢,而是主动且迅速的发起攻击,如MS Blast在漏洞被发现不到25天内就被恶意行为加以利用,造成了巨大损失.此外,普通病毒虽然传播迅速,但其在爆发后短短几小时之内,就会被相关防护系统识别特征码并阻止其入侵.而对于零日攻击而言,从攻击爆发到该漏洞补丁的出现,最快可能也需要数天时间,而在这段时间内,系统都没有有效的防御手段.
为了能更准确地检测到零日攻击,应加强网络入侵防御系统建设.误用检测和异常检测是目前最常规的两种检测方式.误用检测,即基于签名的检测,将采样到的数据包与数据库中已知的入侵特征进行比较.这种方法对已知攻击的检测准确率较高,但无法直接检测出零日攻击,因此,对于该方法,只能不断优化签名更新的速度,才能尽量将确认攻击的时间缩短,提升网络的安全性.而基于异常检测的方法则是先建立正常网络行为的模型,在对采样数据包的检测中,所有偏离正常的行为都被判定为异常,即如果网络的行为数据超过了设定的正常行为的阈值,这些操作将被判为异常,并将报告发送给网络管理员.因此,异常检测可检测到从未出现过的零日攻击或已知攻击的变种.
为了提升网络的安全性,有许多研究针对零日攻击进行了入侵检测的研究和优化.麻省理工学院的林肯实验室在1998-1999年间对18种不同的入侵检测系统进行了比较研究.结果表明,最好的入侵检测系统检测到了63%~93%的已知攻击和大约50%的零日攻击.然而,实验结果对真实场景的实用性有限.Amoli等[30]提出并实现了一种新颖的、实时无监督的NIDS,它通过在NIDS中应用了无监督机器学习算法来提高零日攻击的检测率,同时在没有任何先验知识的情况下减少不平衡流量中的误报.在Dang等[31]的研究中,他们通过使用不同的无监督算法来检测移动自组织网络中的异常,实验对比发现k-means和c-means的表现最好,而k-means需要的资源更少.
4 存在的问题和挑战
虽然基于深度学习的入侵检测相比于传统的误用检测在加密攻击检测和零日攻击检测问题上具有优势,然而深度学习技术至今仍然无法在商用入侵检测系统中实现大范围应用,其中,重要的原因是目前基于深度学习的入侵检测研究只是在良好的数据集上进行,一些现实环境中存在的问题无法得到有效的解决.
4.1 短流的识别
短流指的是数据包较少的网络数据流.当一条流包含的数据包较少时,难以根据这些数据包获得有效的流特征.对于统计特征来说,需要在充分多的数据包的情况下统计出来的数据才有意义,短流的统计特征往往包含大量的空值或者具有很强的随机性,难以表达流量的行为模式.同理,对时序特征来说,通常需要在一段较长时间范围内计算多个时间窗口里的行为特征,以体现流量行为在时间上的变化特征,而短流的持续时间短,难以用多个窗口刻画,难以提取有效的时序特征.对有效载荷特征来说,由于需要保证输入特征的维度相同,因此,通常会对长流做截取,对短流做填充,而如果短流的数据包个数太少,流量的有效载荷特征中将包含大量的填充值,可能会影响对真正数据包内容的检测.
4.2 更强的加密协议的检测
对于使用更强加密协议的流量,如使用QUIC、TLS1.3等加密协议的流量,尚未有良好的检测方法.大多数浏览器(包括Chrome和Firefox)已经使用了TLS1.3协议.以前对使用TLS1.2协议的加密流量的检测,主要是通过从握手阶段的明文字段提取输入特征,通过深度学习的方法进行训练,从而实现对加密流量的检测.但在TLS1.3和QUIC中,由于新的密钥机制和0-RTT连接,加密流量第一个数据包只有少数字段处于未加密状态,因而无法从中得到关于加密流量的足够信息来支持对加密流量的检测.同时,对于加密的隧道协议,数个流可能会被合并成一个加密流进行转发,导致加密流量的检测更为困难.
4.3 流量行为特征随时间和空间变化
网络流量的行为特征是会随着时间和空间而发生改变的.比如,在学校采集的正常流量的行为特征,往往会与公司的正常流量行为特征有所不同.此外,随着时间的发展,进入互联网的流量数据和终端应用的类型在不断增多,人们上网的行为习惯也在不断发生变化,这将导致正常流量的行为特征也会随时间变化.好的入侵检测算法应当有良好的时间和空间的自适应能力,以应对在不同时间、不同地点流量特征的分布可能不同的问题.该问题同样存在于计算机视觉领域,并且相应的迁移学习和域自适应算法已经被广泛研究.然而在入侵检测领域,如何解决流量行为特征随时间和空间变化的问题尚未有人研究.
4.4 数据量不平衡
在深度学习的过程中,一个好的数据集对于模型的训练起着至关重要的作用.在对训练集进行训练的过程中,往往需要足够多的训练样本来完成神经网络中各个参数的训练.在入侵检测领域,训练集中往往包含大量的正常流量样本,而攻击数据很少.训练样本不平衡会使训练出来的检测模型存在着严重的偏向性,即模型将过多的关注正常流量,致使样本数量较少的异常流量的识别效果下降.目前很少有研究工作研究入侵检测问题下的样本不平衡问题及解决方法.
5 总 结
深度学习技术为解决加密攻击检测和零日攻击检测这些入侵检测的新挑战提供了很好的方法,因此,基于深度学习的入侵检测技术受到了广泛的关注.本文从流量的特征选择、检测模型选择和检测任务分类三方面总结了基于深度学习的入侵检测相关最新研究进展.最后,本文总结了将深度学习技术应用到入侵检测问题中仍然存在的几个实际的必须克服的问题.