摘 要
随着网络攻击的复杂化、自动化、智能化水平的不断提高,网络中不断涌现出新的攻击类型,这些未曾见过的新攻击给基于特征码的网络攻击检测和响应带来了极大挑战。网络流量异常检测通过对网络流量进行分析,可以检测出与正常流量明显不同的流量,因其不依赖于静态特征码,被看作检测未知新攻击的有效手段。研究人员针对异常网络流量的检测提出了许多方案,包括基于统计学习法、基于无监督机器学习的方案、基于监督机器学习的方案,从流量特点、特征工程到检测模型,再到应用场景对这些方案进行了系统性综述。
内容目录:
1 网络流量数据采集
1.1 连接的基本特征
1.2 连接的内容特征
1.3 流量统计特征
1.4 原始负载
2 检测模型
2.1 统计模型
2.1.1 简单统计模型
2.1.2 基于协方差矩阵的模型
2.1.3 基于隐马尔可夫的模型
2.2 监督分类模型
2.3 无监督模型
2.3.1 基于聚类算法的模型
2.3.2 基于孤立森林的模型
2.3.3 基于自编码器的模型
2.3.4 基于 LSTM 的模型
3 未来研究方向及挑战
4 结 语
传统的流量侧攻击检测方案依赖于分析人员对攻击流量进行分析而提取出的静态特征码。这种方案的检测速度极快,但检测准确率严重依赖于特征库。如果一个攻击的特征码没有被收录进特征库,该方案就无法检测出攻击。另外,一些攻击会对其流量进行加密,在不解密的情况下是无法从负载中提取特征码的,这就导致传统的基于特征码的检测方案无法对加密流量进行检测。
正常情况下产生的网络流量通信行为和攻击行为下产生的网络流量的通信行为具有明显的不同,并且这种不同不会因负载数据被加密而消失。反过来,如果网络中出现了与正常流量明显不同的流量,是否就表明网络中出现了攻击行为?答案是不一定。因为网络复杂多变的特性,一些原本正常的行为也会导致网络流量出现异于往常的变化。但是这种情况是相对较少的,如果对正常流量有一个良好的建模,可以把这种情况控制在很小范围内。所以当从网络中检测出异常流量时,有较大概率是攻击行为产生的流量,后续可以通过其他手段进一步验证其是否是一个攻击行为。鉴于此,网络流量异常检测常被用于检测非加密流量和加密流量中未知的新攻击,其不依赖于传统的静态特征库,通过对网络流量通信行为进行分析,检测出与正常流量明显不同的流量,从而发现潜在的攻击行为。
异常这个概念有许多不同的定义。Kafadar等人将其定义为一组看起来与其他数据不同的数据。Chandola 等人认为异常是和明确定义的正常行为相背离的数据模式。Lakhina等人将网络中的异常定义为不常出现并且在网络流量层面出现巨大的变化。通过这些定义,可以明显看出如何定义正常态是进行异常检测中的关键步骤。
许多安全研究人员在网络流量异常检测领域进行了研究,并且提出了许多切实可行的技术方案。通过对这些技术方案的研究可以发现,从网络流量侧进行异常检测的方案无一例外都将采集什么样的流量数据和使用什么样的算法视为关键点。在这些方案中,流量数据和算法之间并不是紧紧耦合在一起的,实际上,一种流量数据需要用多种不同算法处理,同理,一种算法也可以处理不同种类的流量数据,技术人员可以根据实际应用场景将流量数据和算法进行自由组合以获得最优的检测方案。为达此目的,本文将从网络流量数据采集和异常检测算法模型这两个维度对相关检测技术进行综述,同时对未来的研究方向和可能遇到的挑战进行了预测。
01 网络流量数据采集
采集什么样的流量数据是异常检测中一个非常重要的问题,不同的数据对网络流量的刻画角度和刻画能力不同,需要根据实际应用场景和需要解决的问题来选择合适的流量数据。根据 KDD’99 数据集 中关于特征的描述,网络中的流量特征可以划分为连接的基础特征、连接的内容特征、流量统计特征 3 种类型。另外,随着深度学习技术的出现,数据包的原始负载也可以直接用来进行异常检测。
1.1 连接的基本特征
连接的基本特征是一个传输控制协议 /网 际 协 议(Transmission Control Protocol/Internet Protocol,TCP/IP)族中不同层次、不同种类的协议所建立的连接的基础属性信息,包括但不限于一个连接的持续时间、所使用的协议类型、发送的数据量、接收的数据量等。Jadidi 等人和 Bartos 等人 利用传输控制协议(Transmission Control Protocol,TCP)连接的基础特征训练模型进行异常检测。
连接的基础特征使用连接双方在通信过程中的一些基础信息和行为信息,并不包含通信内容相关的特征,所以对连接的描述不够全面,但在加密流量检测的场景中,主要依靠连接的基础特征。
1.2 连接的内容特征
连接的内容特征是对连接中的负载数据进行分析,抽取出可能反映入侵行为的特征,包括但不限于在一个连接中访问系统敏感文件和目录的次数、登录失败的次数、shell 命令出现的次数等。
连接的内容特征能够从内容上刻画攻击,具有很高的准确度,但它需要该领域专家对攻击进行分析后抽取与之相关的内容,人力成本较高,并且泛化能力有限,在加密流量场景中也无法使用。
1.3 流量统计特征
流量统计特征不再是针对单个连接,而是在一个指定时间窗口内或在指定数量的连接中抽取的可以反映攻击行为的特征。可以统计指定时间窗口内和当前连接的目的 IP 地址相同的连接数量、和当前连接的源 IP 地址相同的连接数量、和当前连接具有相同服务类型的连接数量等,也可以统计前 n 个连接中和当前连接的目的 IP 地址相同的连接数量、前 n 个连接中和当前连接的目的 IP 地址及服务相同的连接数量等,还可以统计指定时间窗口内发往同一个目的 IP 地址的数据大小、新建连接数量、发送和接收数据包的个数等。Thottan 等人 、Fontugne等人和 Lim 等人从局域网内主机的角度,统计指定时间窗口内一个主机和其他主机之间的流量特征,并进行异常检测。
在协议层面采集数据的优势在于可以体现每个协议的变化情况,能够发现与特定协议关系密切的攻击行为。相较于基于连接的特征,流量统计特征可以从更宏观的角度描述网络流量,反映多个连接之间的关联关系,能够用来发现复杂且持续的攻击行为。
1.4 原始负载
随着深度学习的发展,报文中的原始负载也可以被用来作为训练模型,进行异常检测。深度学习模型能够根据目标函数,通过梯度下降与反向传播技术自动地从原始负载中提取出适用于目标任务的特征 。
利用原始负载特征不再需要特征工程,可以减少对领域专家的依赖,但是该方式需要大量的样本数据,并且消耗大量的计算资源。另外,在负载被加密的情况下模型很难收敛到一个理想水平。
02 检测模型
当前的检测技术都有相应的使用场景和局限性,同时,很多检测技术在本质上是同一类型的或是互补的,从一开始的基于统计的方案到后来的基于机器学习、深度学习的方案,其核心都是尽量准确地刻画出正常流量和异常流量之间的差异。根据实际情况,可以采用正常流量、攻击流量及正常流量和异常流量相结合的方式进行建模。
检测模型由算法组成,这些算法利用提取出来的特征向量学习到正常流量的规律或者正常流量和异常流量之间的差异。从总体上,这些模型可以分为统计模型、监督分类模型、无监督模型等,不同的数据量、数据类型及应用场景需要选择不同的检测模型。
2.1 统计模型
统计模型在异常检测领域被广泛使用,其主要应用场景是异常发生点的网络数据会发生急剧的变化。统计模型需要有一个学习期,在学习期内会记录下所提取到的流量数据,然后用来创建统计模型。
2.1.1 简单统计模型
Rousseeuw 等人 利用 3σ 模型对网络流量中的各个指标进行建模。该模型首先计算历史数据的均值和方差,然后利用均值上下波动 3个标准差的范围区间作为正常流量指标的取值区间,超出该区间的则判定为定位异常。该方法的主要思想来自正态分布的置信区间,其优点是计算简单,但只能应用在流量变化比较平稳的场景中,在其他复杂场景中会存在过高的误报,并且如果用来计算均值和方差的历史数据中存在极端异常值,则检测结果会出现较大偏差。
为了消除历史数据中存在的异常值所带来的影响,Vinutha 等人 利用分位数进行异常检测。分位数是指将随机变量的概率分为几个等分的数值点,常见的有二分位(即中位数)、四分位、百分位,一个四分位数箱体如图 1 所示。
利用四分位数进行异常检测主要通过图基检验,以四分位数为例,异常检测的公式可以表示为:
式中:
分别为一分位点、二分位点、三分位点;x 为待检测数据;k 为异常系数,当k = 3 时,表示极度异常;当 k =1.5 时,表示中度异常。
分位数方法采用的分位点和分位距具有对噪声不敏感的优点,相较于均值方差的方法具有更强的鲁棒性,但该方法也只适用于数据变化较为平稳的网络环境中。
2.1.2 基于协方差矩阵的模型
协方差矩阵是一个二阶统计量,可以找出哪些变量对网络异常影响最大。Yeung 等人使用协方差分析检测网络中的泛洪攻击。利用该方法对网络流量进行建模,形成协方差矩阵样本,以便利用时间序列样本中包含的统计信息来检测泛洪攻击。根据协方差矩阵的变化和关联特征的差异去揭示正常流量和泛洪攻击流量之间的差异。Xie 等人 借助随机变量,利用空间可预测性处理相邻数据段集合,确定哪些数据段表现出了异常。为了降低计算复杂度,该方法使用与 Spearman秩相关系数和差分压缩概念近似的样本协方差矩阵。
协方差矩阵的方法适用于特征维度较低的场景,如果维度过高,计算复杂度会呈指数级增加。
2.1.3 基于隐马尔可夫的模型
隐马尔可夫模型可以对序列数据进行建模,网络流量中采集的一部分数据是时间序列格式的,用隐马尔可夫模型可以实现对时间序列的异常检测。
Bang 等人 提出了一种利用隐马尔可夫模型在无线传感器网络中检测长期演进(LongTerm Evolution,LTE)网络信号异常的方案。首先,利用隐马尔可夫模型对正常唤醒包生成过程的时空特征进行建模,并设置一个对数概率阈值。其次,将观测到的时空特征带入模型进行计算,如果得到的对数概率小于设置的对数概率阈值,则将其判定为异常。
Stefanidis 等人 利用隐马尔可夫模型对工控网络中的命令交互进行建模来检测异常流量。首先,从正常工控流量中提取出关键的交互流程片段;其次,利用这些片段训练得到隐马尔可夫模型;最后,利用训练好的隐马尔可夫模型检测出异常的命令交互过程。
利用隐马尔可夫模型可以从行为序列的角度对流量进行分析,从而发现异常行为,但隐马尔可夫模型在处理长序列时存在计算下溢的风险。另外,模型中隐状态的数量一般需要由领域专家根据应用场景进行设定。
2.2 监督分类模型
监督分类模型需要将获取的正常流量和异常流量进行训练得到一个二分类器,再利用二分类器对未知数据进行分类。监督分类模型常见的应用模式是先在线下获取大量正常流量和异常流量数据,数据经过预处理及特征提取之后会被用来训练出一个分类模型,然后将训练好的模型部署到产品中来检测异常流量,其模式如图 2 所示。
通常来说,监督学习因为可以同时看到正常流量和异常流量,所以能够更好地学习到正常流量和异常流量之间的差异,因此在异常检测领域表现会更好,但事实却不是这样的。首先在现实场景中获取正常流量是容易的,但是获取异常流量是非常困难的,这就导致异常流量样本数量少,覆盖面小,这样的数据训练出来的样本很容易出现过拟合的情况,在训练集上有着很好的表现,但在测试数据上却表现很差。Catania 等人 提出了一种对网络流量进行自主标记的方法,来克服样本类别不平衡的情况并用来减少训练数据中的噪声。
另外,流量数据和网络环境密切相关,不同网络环境中的正常流量之间都存在着巨大的差异,更何况异常流量数据,所以将在一个或几个网络环境下采集正常流量训练出来的模型部署在其他网络环境中必然会出现“水土不服”的情况。
为了克服监督模型离线训练所存在的问题,Forestiero 等人 [20] 提出一种在线训练的监督模型方案,利用现网流量数据进行训练,再检测现网流量数据。该方案的总体思路如图 3 所示。
先利用其他异常检测技术对流量进行检测,然后标注上对应的标签,待打了标签的数据达到一定量级之后就启动监督模型的训练,在训练过程中会设定一个收敛条件,当训练的指标达到收敛条件之后就自动停止训练,之后便可以将训练好的监督模型应用到检测流程中。在使用监督模型进行预测时,首先需要设置一个置信度,即当监督模型预测流量为异常或正常的概率大于或等于该置信度时,才会将其标注为异常或正常,并且这些数据都会被用来更新模型,其他的流量数据会被暂存,待模型更新之后会用更新后的模型继续对暂存的流量数据进行预测,将预测为异常或正常的概率大于或等于预测置信度的数据打上相应的标签并从暂存区移除,迭代进行上述过程,直到暂存区没有数据为止。
监督分类模型既可以是逻辑回归、支持向量机、随机森林、梯度提升树等传统的机器学习模型,也可以是卷积神经网络(Convolutional Neural Network,CNN)、长短时记忆网络(LongShort Term Memory,LSTM)、深度残差网络等深度学习模型。传统机器学习模型参数少,对样本数据量要求不高,资源消耗小,训练速度快,但是学习能力没有深度学习模型强,需要依赖人工经验进行特征提取。深度学习模型需要对大量数据进行训练,资源消耗较大,但该模型学习能力强,可以直接利用原始数据实现端到端的学习。
Liu 等人提出了一种通过利用原始的报文 负 载 训 练 CNN 和 循 环 神 经 网 络(RecurrentNeural Network,RNN)模型来进行异常检测的方案。在该方案中,不再有特征工程阶段,模型的输入都是原始负载经过简单处理后的数据。CNN 模型的输入是对负载进行分词、词嵌入后处理后的矩阵,RNN 模型的输入是由负载的前n 个字符的 ASCII 值组成的序列。这种利用深度学习模型自动从原始负载中提取特征并进行分类的模型虽然可以取得不错的效果,但前提是需要有大量不同种类、不同来源的样本数据对模型进行训练,否则模型很容易陷入过拟合的困境。因此在实际应用中,深度学习模型在训练数据上可以取得不错的效果,但是在实际应用时效果却比较差。
2.3 无监督模型
无监督模型不需要训练数据,主要利用在线数据进行学习和检测,因此其适用范围很广。这种技术有一个前提假设,就是正常流量要远远多于异常流量,如果该假设不成立,则无监督模型会有很多误报。无监督模型也需要一个学习期,系统会使用学习期内的数据训练模型,在该阶段内模型是不具备检测能力的,当学习期结束后,就可以利用模型进行异常流量的检测。在网络流量异常检测领域常用的无监督模型包括聚类、孤立森林、自编码器等。
2.3.1 基于聚类算法的模型
聚类算法是一种典型的无监督学习算法,输入只有特征向量,没有标签,其主要目的是将相似的样本自动归类到一个类簇中 。常用的聚类算法有 K-means、DBSCAN 等。聚类算法依赖于相似度计算方法,不同的相似度及算法得到的聚类结果也会有所不同,常用的相似度计算方法是欧式距离和闵可夫斯基距离。二维空间上的数据聚类如图 4 所示。
Pu 等人采用了基于聚类算法的混合方法进行异常检测。其思路是首先在学习期内积累流量数据,待数据积累完毕利用聚类算法对这些数据进行聚类,最终聚成两个类簇,其中数据量小的类簇称为异常类簇。观测到新的流量数据时,计算该数据所归属的类簇,如果归属于正常类簇,则将流量数据判定为正常;如果归属于异常类簇,则将流量数据判定为异常,然后使用该流量数据更新类簇。
聚类算法比较依赖于数据之间的距离度量,如果数据之间的距离度量不能很好地反映数据之间的相似性,则基于聚类算法的模型的误报和漏报较多。
2.3.2 基于孤立森林的模型
孤立森林是一个基于集成的模型,不同于其他一些算法通过距离、密度等去描述数据之间的相似度或疏离度,它通过使用孤立树的二叉搜索树去孤立样本点来检测异常值。孤立森林是由多棵孤立树组成的,孤立森林中包含的孤立树越多,模型稳定性越好,但预测时的计算量也越大。
Li 等人利用孤立森林进行异常检测,可以以很低的误报率实现异常检测。其思想是随机选择一定量的样本作为孤立树的根节点,然后递归地在孤立树的节点上随机选择一个特征维度将结点一分为二,直到所有节点只有一个样本,或者节点不可再分,或者节点的深度达到给定阈值。因为异常数据的数量很少,并且和大部分正常数据之间存在较大疏离性,所以异常数据会被更早地孤立出来,也就是说异常数据离根节点更近,正常数据离根节点更远。Tao 等人 提出了一种基于孤立森林和 Spark 的大规模并行网络流量异常检测算法,该算法充分利用了孤立森林的并行特性和 Spark 分布式处理能力,能够快速地处理海量流量数据,同时因为处理的数据量的扩大,模型的检测准确率也得到了很大的提升。
利用孤立森林进行异常流量检测的优点是具有线性时间复杂度,可以在海量的数据集上进行训练,并且由于每棵孤立树都是独立的,非常适合通过并行的模式部署在大规模分布式系统上来加速运算。但是孤立森林在特征维度特别高的场景下并不是特别适用,主要是因为在这种情况下会有很多维度的信息并没有被利用到,导致算法的可靠性降低。另外,高维空间中可能存在大量噪声维度或无关维度,这会降低模型的检测能力。
2.3.3 基于自编码器的模型
自编码器是一种无监督学习模型,是神经网络的一种,通过一个编码器将输入特征向量映射到另一个编码特征空间中的一个向量,然后再用一个解码器将编码特征空间中的向量还原回来。通过这样一个过程使其学习到输入数据的分布规律,从而使得符合训练数据分布规律的数据经过编码再还原出来之后和原始数据之间的误差是相对较小的,不符合训练数据分布规律的数据经过编码再还原出来之后和原始数据之间的误差会很大。因此基于自编码器的这种特性可以进行异常流量检测。
Qiu 等人采用自编码器对正常流量进行建模,然后利用正常流量模型去检测异常,该方案取得了不错的效果。首先,在线下设计一个自编码器,用收集到的流量数据训练这个自编码器;其次,将线下训练好的自编码器模型部署到相关产品中,用学习期内的数据再次微调这个自编码器模型,直到检测准确率达到预期准确率或者模型收敛为止,用训练好的自编码器对学习期内的数据进行编码、还原,并统计还原误差的均值
和方差
;最后,将自编码器应用到异常流量检测中,对于输入的数据,如果自编码器还原误差大于
则将其判定为异常。
虽然自编码器具有很强的拟合能力,但前提是需要利用大量数据进行训练,使其能够学习到数据的分布规律。如果数据量比较少,模型容易出现过拟合的情况,即训练数据的重构误差比较小,其他数据的重构误差比较大,导致误报比较多。
2.3.4 基于 LSTM 的模型
LSTM 是一种特殊的循环神经网络,主要用来处理序列数据,解决了长序列数据训练过程中的梯度消失和爆炸的问题,因此在长序列数据上也有很好的效果。网络流量中有很多长序列数据,使用基于 LSTM 的模型可以更好地学习到这类数据的分布情况。
Li 等人提出了一种单分类 LSTM 模型,实现了端到端的异常流量检测。该模型用 LSTM网络将流量数据映射到一个标量空间,用一个自定义的损失函数和预设边界值训练模型,然后根据模型的输出值不断更新边界值并再次训练模型,直至模型收敛。该模型对数据噪声具有较强的鲁棒性,可以进行在线训练。在设定的学习期内模型使用部署在网络环境中的流量数据进行训练,待模型收敛后,即可用来进行异常检测。首先用训练好的 LSTM 网络层将网络流量数据映射到标量空间的一个值,然后用该值和学习到的边界值进行比较,如果小于或等于边界值则判定为正常,否则判定为异常。
另外,上述方案中的 LSTM 网络可以替换为门控循环单元(Gate Recurrent Unit,GRU)网络。GRU 是 LSTM 的一个简化版本,与 LSTM 的效果相当,但更易于计算。
基于 LSTM 的无监督模型通过对序列形式的正常网络流量数据进行建模,以实现异常检测。因为 LSTM 模型强大的学习能力,使得这类模型往往具有很好的表现。但是,由于模型比较复杂,所需的训练数据量和计算资源比较大,模型的训练周期比较长。
03 未来研究方向及挑战
本文所研究的方法还是依赖领域专业人员对网络流量进行深入分析后提取出来的特征向量去进行异常检测,这个过程会损失网络流量的一些信息,同时也需要根据不同的应用环境去选择使用不同的特征组合。如何减少对人的依赖,并且能够将网络流量除负载内容外的相关信息以一种准确、全面、易于算法分析的方式表示出来,是今后需要着重研究的一个方向。在这个方向上所面临的主要问题是计算量会比较大,在一些对性能要求比较高的场景中可能需要借助于硬件加速装置。
04 结 语
本文从网络流量数据采集和检测模型两个方面对异常网络流量检测进行了深入的研究。网络流量数据采集从连接的基础特征、连接的内容特征、流量统计特征、原始负载 4 个方面进行了探讨,每种类型的特征对网络流量的刻画能力是不同的,都有其适用的场景,需要根据实际应用场景选择合适的特征。异常流量的检测模型有统计模型、监督分类模型和无监督模型 3 种类型,目前的主要研究方向是利用无监督模型对正常流量进行建模,然后将背离模型的流量识别为异常。
在这个过程中,深度学习模型因其强大的表征学习能力越来越受到研究人员的重视,在一些场景中,传统的特征工程已被深度学习模型中的特征提取层所取代,隐马尔可夫模型也正逐渐被 LSTM/GRU 等模型所取代。由于网络流量复杂多变的特性,在异常网络流量检测领域没有哪种模型是万能的,只有了解每种模型的特点及其适用的场景和侧重点,并灵活、综合地运用多种模型,方能更有效地解决异常网络流量检测问题。
引用格式:吴迪锋 , 孙昊翔 , 曹浪 , 等 . 网络流量异常检测综述 [J]. 信息安全与通信保密 ,2022(8):101-111.
作者简介 >>>
吴迪锋,男,学士,资深安全咨询顾问,主要研究方向为网络安全检测模型分析与应用、网络安全异常流量检测、网络安全风险评估;
孙昊翔,男,学士,高级安全咨询顾问,主要研究方向为网络安全、渗透测试、漏洞挖掘;
曹 浪,男,学士,软件工程师,主要研究方向为渗透测试、主机安全风险评估模型;
谭 天,男,硕士,高级工程师,主要研究方向为安全检测引擎、AI 安全。
选自《信息安全与通信保密》2022年第8期(为便于排版,已省去参考文献)
创业项目群,学习操作 18个小项目,添加 微信:jjs406 备注:小项目!
如若转载,请注明出处:https://www.xmfxquan.com/6845.html