- 文献综述(或调研报告):
异常检测是入侵检测的一个分支[1],是通过定义正常行为来检测偏离正常行为的异常行为。流量异常检测就是对网络流量进行分析从而识别异常流量,涉及到了流量特征提取和基于特征测度的检测。目前常用的检测方法主要是运用大数据和机器学习实现,总体上主要归纳为如下几类:基于聚类的异常检测技术、基于最近邻的异常检测技术、基于信息论的异常检测技术、基于分类的异常检测技术和基于统计的异常检测技术[2]。
基于聚类的异常检测技术[3]的数据集往往是未做标记的,需要寻找数据内在的分布规律,将数据集分成若干种类别。这类方法的优点是数据集不需要花费精力做标注,但缺点在于我们并不能确定类别的数目,很多异常检测技术都是聚类的副产物;此外,异常流量数据往往远远小于正常流量数据,导致异常数据可能会被分到大型簇当中视为正常数据,使得这类技术方法的召回率较低。
基于最近邻的异常检测技术通常定义数据彼此间的距离,正常数据会在密集区域聚集,异常数据通常出现在里最近邻很远的地方,通过与最近邻的距离判断是否异常。Liao Y[4]提出使用k近邻分类器将每个新程序行为分类为普通类或入侵类,de Vries T[5]提出以第k个最近邻居的距离为半径做超球面,根据数据邻域的密度判断异常。这类方法的优点仍然是在本质上是无监督的,并且数据类型简单,主要是定义数据距离的度量;但是缺点在于计算复杂度比较高,因为它需要计算每个数据实例与所有数据之间的距离,从而计算出最近邻。
基于信息论的异常检测技术利用信息论相关概念采用不同的信息论度量方法,如熵、条件熵、相对条件熵、信息增益、信息成本等,分析数据集的信息内容[6]。这类方法的优点在于数据集可以进行无监督学习,并且不用对数据集的统计分布做假设。但是缺点在于这类方法的性能表现很大程度却决于度量方法的选择,通常只有数据集出现大量异常数据时才能用这类方法检测到流量异常的存在。
基于分类的异常检测技术是目前比较热门的研究方法,通过一个标注好类别的数据集学习生成一个分类模型或者分类决策函数,从而对新输入数据进行类别判断。这个类别可以是二类分类,也可以是多类分类。这类方法的优点是分类算法对多类别识别具有很高的识别率,但是缺点在于多类别分类的技术依赖于数据集标签标注的精确性和可用性。常用的方法主要有:基于贝叶斯网络、基于支持向量机、基于规则、基于神经网络。
贝叶斯网络的基本模型[7]由有向无环图和一组条件概率分布组成。单变量分类在给定的测试数据集下,通过正常类标签和异常类标签估计观察类标签的后验概率。对于给定的输入,通过学习到的模型计算后验概率分布,将最大的类标签作为预测类输出。这类技术可以推广到多变量分类数据集。
支持向量机(SVM)的基本模型[8]是特征空间中的间隔最大的线性分类器,利用超平面将正常实例和异常实例分割开来。核函数可用于复杂区域的分类学习,将低维空间转化为高维空间,使数据点变得线性可分,从而使支持向量机用于非线性可分数据分类。Erfani S M[9]提出将深度学习与SVM相结合,使用DBN作为单类SVM的特征减少阶段,克服复杂的高维数据集上的单类SVM架构的局限性。
基于规则通常由机器学习正常行为的规则,不被此规则接受的实例则被视为异常。机器首先利用规则算法(如决策树等)[10],从训练数据中学习规则,它构建一个类似于概率密度函数的评分函数,函数值与正确分类的数据实例数目和按规则接受的数据实例总数间的比值成正比。其次是为每个测试实例找到最合适的接受测试实例的规则。与最合适规则的评分倒数是测试实例的异常得分。Li X[11]提出利用关联规则挖掘技术从网络数据中提取关联规则。这些规则可以有效地应用于局域网上的网络异常检测。
神经网络是目前比较热门的研究方向,提出了许多神经网络模型。这类分类方法模仿了生物神经网络中的神经元构造,神经元接受来自其他神经元的信号,通过自身的激活函数进行运算,再将处理后的信号传递至其他神经元,众多的神经元按层次结构组织起来形成神经网络。Shah B[12]搭建反向传递神经网络(BP),将预测值与真实值的误差通过网络反向传播训练多层前馈网络;Nanduri A [13]搭建递归神经网络(RNN),提出了具有长期短期记忆(LTSM)和门控递归单元(GRU)架构的RNN应用,克服了SVM因降维导致的短期异常敏感性差和无法检测潜在特征异常的限制。Kwon D[14]搭建了卷积神经网络(CNN)用于网络异常检测,并指出较深层次的神经网络结构没有任何性能的提高。
基于统计的异常检测技术统计方法是假设正常数据发生在随机模型的高概率区域,而异常数据发生在模型的低概率区域。通常根据数据集建立一个统计模型,根据拟合模型评估输入实例符合该模型的概率。概率分布模型一般为高斯分布模型,Mok M S[15]则提出了回归参数模型,Smrithy G S[16]提出了一种非参数统计技术的在线异常检测算法,用于检测实时云环境中的异常访问请求这类方法的优点是如果分布估计步骤对异常数据具有很好的鲁棒性,这类方法进行无监督学习而不需要给数据集做标记,并且可以不断的自我学习改进模型。但是缺点在于这种技术非常依赖统计分布的假设,而这种假设通常不成立,特别是对于高维实际数据集。此外检测并不考虑事件的时间顺序,忽视了流量的前后关系。
