基于设备行为的异常流量检测
2022-12-30辛昊光苏思达王田原陈永乐
辛昊光,苏思达,王田原,马 垚,陈永乐
(太原理工大学 信息与计算机学院,山西 晋中 030600)
0 引 言
异常流量检测技术通过将入侵检测系统部署在主干网络或多个重要网络节点内,收集设备通信流量并对流量内容进行分析实现恶意流量检测。网络中异常行为造成流量特征变化,入侵检测系统依据不同类型流量特征进行异常检测。特征来源为原始数据流或流量统计特征,然而原始数据流包含大量与流量分类无关的信息,降低识别准确率,流量统计特征需要大量人力消耗,降低识别效率。
物联网中设备具有重复性网络流量模式,设备通常在多次实现自身功能时会体现出这一重复性网络流量模式,例如:为了记录日志,每隔一定时长发送数据包进行网络ping操作[1]。而异常流量,例如SYN-flood攻击,通过在短时间内向目标设备发送大量SYN数据包达到长时间占用设备端口资源的目的。设备在实现自身功能时,其发送的数据包内容、数量、速率、传输数据使用的协议往往具有固定模式,即设备行为模式。利用设备正常运行产生的流量特征与异常流量特征间差异性,进而实现异常流量检测。
本文提出了一种基于设备行为的异常流量检测方法,将设备流量统计特征、应用层网络协议以及应用层协议数据包内容特征定义为设备行为特征,建立LSTM-CNN深度神经网络模型提取出有效的深层时间与空间特征,进而通过SoftMax函数得到正常或异常的概率分布并最终实现异常流量检测。
1 相关工作
物联网设备是信息产生的源头以及数据传递的重要一环,相比于传统计算机,由于其有限的内存和计算能力,更容易成为黑客攻击的主要目标。传统入侵检测方法分为两种,基于异常检测和基于误用检测,前者收集正常用户行为信息并建立正常流量行为模式,当网络中出现偏离于正常行为的信息时,且偏离程度大于某一阈值时可确定为出现异常流量,后者将已知攻击特征建立特征库,当网络中出现与特征库中特征相似的流量特征,则表明该流量为异常流量。
网络技术的进步导致通信流量复杂度不断增加,动态端口以及有效载荷加密等技术的发展使得传统的异常流量检测方法难以满足当下需求[2]。当网络环境中出现大量数据流时,基于流量的异常检测技术可能出现不针对全部流量进行检测的情况下丢弃大量数据包的情况[3]。传统的机器学习方法SVM[4,5]被广泛用于流量检测领域,入侵检测系统需要依靠大量特征来训练模型,随机森林[6]能够较好应用于大型数据集。
目前学术界关于异常流量检测领域研究集中于经典机器学习方法的应用,Wang等[7]将流量原始数据转化为二维图像数据并利用CNN实现恶意流量探测。Zhang等[8]将HTTP请求字符嵌入至向量内,通过CNN模型提取特征实现网络攻击检测。深度学习具有较强的特征提取能力,能够建造性能良好的模型,Yin等[9]设计了一种双向递归神经网络(recurrent neural network,RNN)模型,前向传播计算输出值,后向传播负责更新权值。Sagheer等[10]实现了一种基于LSTM的自编码器,并在无监督条件下对网络模型进行训练。Park等[11]通过一种由改进的CNN构成的自动编码器进行字符级的二进制转换,实现了针对HTTP的异常检测。
CNN和LSTM的组合模型同样被应用到流量分类方法中。然而从网络流量提取出的高维特征矢量使得传统机器学习模型难以满足需求,CNN能够很好地处理高维特征向量从而被广泛应用于图像识别。LSTM以及CNN的组合应用也能够发挥出各自的优势,能够良好应用于文本预测和视频内容识别领域[12],该文提出了一种名为CECoR-Net的字符级网络攻击探测神经网络模型,将HTTP请求每一字符嵌入到矩阵中生成字符矩阵作为神经网络模型的输入,实现了针对已知攻击类型和未知攻击类型的恶意网络流量分类,但这一方法只适用于包含了HTTP请求的流量检测。Ryu等[13]提出了一种层次异常流量探测神经网络,通过CNN提取单一数据流方向中由数据包特征矢量,输入至基于注意力机制的双向LSTM中生成具有代表性的流特征矢量,最后使用SoftMax函数实现流量分类,深度学习体系能够自动提取出数据特征,因此该方法中没有使用人工提取的特征,且该深度神经网络模型包含三层卷积层以及二层池化层,需要大量时间优化调整参数。
2 方法设计
现有入侵检测方法主要将大量人工选择的特征或经过预处理的网络流量输入至神经网络模型中进行流量分类。前者人为选择并生成的高维特征矢量需要消耗大量人力,后者使用的原始网络流量内往往存在无用信息,降低识别效率并对最终流量分类结果准确性造成影响。本文通过分析对比设备产生的正常流量与异常流量进行特征筛选,结合传统流量特征以及设备产生的数据包内容生成表征设备行为的特征,并训练深度神经网络模型实现异常流量检测。
2.1 方法框架
本文提出的基于设备行为的异常检测方法框架如图1所示,主要分为4个阶段:流量数据收集、特征选择、设备行为特征提取和异常流量识别。本文使用的数据集为ISCX2012(详细内容见第4.1小节)。不同于目前异常流量检测方法仅依赖大量流量统计特征,本文基于设备的正常通信种类有限,每种通信状态都有相应的,且有着明显差别的网络模式与之对应这一思想,提出一种表征设备网络模式的设备行为特征表示方法(详细内容见本章第2小节)。特征提取阶段由基于LSTM-CNN深度神经网络模型完成。最后通过SoftMax函数得出流量类型概率分布完成异常流量检测过程。
图1 异常流量检测方法框架
2.2 设备行为特征
设备在实现特定功能时表征出的行为不同,设备行为特征分为3个部分,设备通信过程产生的数据统计特征,应用层协议以及应用层协议数据包内容作为表征设备行为的特征。
与正常网络通信流量不同,攻击者通过在短时间内多次发送SYN数据包尝试与目标设备建立连接并判断设备某端口是否开启,不同攻击手段向设备不同端口发送探测数据包或者请求连接数据包,这些数据包包头内容以及有效载荷差异性较大,相同时间内发送的数据包数量不同,请求持续时间不同。遭受攻击的设备通信流量与正常设备差异较大,所表征出的设备行为不同。例如在实施探测任务中Nmap是最为常用的技术,在侦测过程中使用20组报文并且需要消耗大量时间,这一过程传输数据包的持续时间、个数等属性特征与设备正常通信所传输的数据包存在差异。本文在现有不同类型流量特征基础上,对比正常流量间不同特征的稳定性,以及正常和异常流量统计特征间的差异性,结合实验结果,筛选出表1中10种特征作为表征设备行为特征的第一部分。第二部分为流量传输过程使用的应用层协议。数据集内包含5种应用层协议,分别为SMTP、SSH、POP3、HTTP、FTP。
表1 统计特征描述
特征第三部分提取自应用层协议数据包字段内容。我们将用户与设备建立连接,发起请求,设备响应请求,完成数据传输过程断开连接这一过程称为完整的数据流。数据流由若干消息流组成。每一消息流包含一个或多个数据包,不同协议的包头以及有效载荷内容不同,相同协议相同设备在实现不同功能时包头以及有效载荷内容不同。如图2所示,协议请求内容能够体现出设备将要实现的功能,与设备将要产生的数据包内容、速率等特征相关联。我们将在一次完整通信过程中,第一个应用层协议请求数据包以及响应数据包内容提取出来作为设备行为特征的第三部分。例如:图2中HTTP协议内请求方法GET,以及Accept、Accept-Encoding、SSH协议内Protocol、SMTP内Command等字段的值能够体现出设备的不同行为。我们提取出应用层协议数据包字段内容后进行独热编码,将经过数据预处理的此部分特征输入至LSTM中。
图2 部分数据包信息
3 异常流量检测模型实现
近年来,机器学习在各领域展现出良好的发展前景,神经网络被大量应用于特征提取。深度神经网络由多层非线性神经元构成,通过模拟生物神经链接方式使得信息在网络模型中高效传递,在各领域得到广泛应用,由于其拥有良好的识别能力也被用于实现各类识别功能。RNN以及卷积神经网络往往被单独应用于恶意流量识别领域,二者分别用于提取原始流量的时序以及空间特征,网络流量具有长期依赖的特征,传统的统计模型难以提取这类特征[14]。RNN中,当前时刻序列的输出与先前时刻的输出相关联,使得该神经网络将先前时刻提取的特征信息应用于计算当前时刻的输出,但RNN在实际应用过程中难以适应具有长期依赖特征的识别情形。LSTM通过特殊的门结构实现增加或删除信息从而解决了长期依赖的问题,LSTM是针对复杂攻击手段和包含无用信息的真实网络环境中进行正常或者异常流量识别的关键性技术[15]。
3.1 模型构建
本文提出的恶意流量检测方法使用深度神经网络模型提取流量数据的时间、空间特征。首先,将表征设备行为特征的第三部分,即获取的应用层数据包内容提取后经过数据预处理,输入至LSTM提取时序特征,并引入注意力机制用输出结果来生成重要性流矢量,其能够反映原始数据中不同数据内容的重要性。接着,将LSTM的编码结果与经过预处理的第一、第二部分设备行为特征结合,输入至CNN提取空间特征,CNN能够使用提取全局信息中的局部重要信息,显示地建立每一特征之间的动态非线性依赖关系,通过卷积核提供的特征重新校准的能力并根据恶意流量识别任务有选择地选择并强调特征。最后SoftMax将多个神经元的输出映射到[0,1]得出该数据流属于正常流量以及多种恶意流量类型的概率分布,计算交叉熵对模型进行评估。
异常流量检测模型用于识别输入的流量是否为恶意流量,以及恶意流量类型,分为3个部分,流量预处理部分提取出数据流包含的数据包内容以及设备行为特征值进行数字化处理,转化为统一的神经网络输入形式。特征提取部分建立LSTM-CNN模型,提取输入数据时序以及空间特征,并结合流量的统计特征生成最终用于恶意流量分类的特征空间。恶意流量分类部分利用嵌入了SoftMax函数的全连接层进行分类,最后计算交叉熵进行模型评估。模型训练过程如图3所示。
图3 模型训练
3.2 数据预处理
将表1中各特征值转化为二进制表示,并转化为矢量形式,记为 (BDuration,BTotalSourceBytes,…,BProtocol)。 服务协议类型转化为数字表示,SMTP、SSH、POP3、HTTP、FTP这5种应用层协议使用数字1至5表示,并转为二进制形式的矢量表示,记为(BService)。原始数据类型为pcap文件,提取出该数据流中第一个应用层协议请求数据包以及响应数据包,除去数据包内容中停词,特殊符号等无用信息,将出余下字段内容采用独热编码处理,并转化为矢量形式。
3.3 特征提取
本文使用的机器学习模型由LSTM以及CNN组成。网络流量具有长期依赖的特征,LSTM能够很好提取此类特征并用于流量识别。LSTM是一种特殊的递归神经网络,使用细胞状态实现长期记忆,并通过增加门控制结构提升神经网络细胞的记忆能力[16],并以此结构判断保留或者删除信息到细胞状态。
将第三部分设备行为特征经过独热编码后嵌入至高维矢量,视嵌入结果为一条具有时序特征的序列,输入至LSTM中提取上下文语义特征以及时序特征。LSTM通过遗忘门系数f减弱或删除细胞状态中对识别异常流量作用不大或者无用的特征。输入门i决定了细胞状态中需要保存的信息,利用tanh激活函数层生成临时细胞状态,进而,将遗忘门系数与上层细胞状态相乘,再加上输入门与临时细胞状态的乘积,以此将新特征信息加入到细胞状态中。最后,输出门O决定了细胞状态的输出部分,与经过tanh激活函数处理后的细胞状态相乘,得到最终的输出。运算过程如式(1)所示
(1)
式中:σ为sigmod激活函数,取值范围[0,1],取值为0时表示删除该信息,取值为1时表示完全保留此信息。W为权重矩阵,ht-1为上层隐藏层输出,xt为当前输入,b为当前权重对应的偏移值。ft,it,Ct,Ot,ht,分别为t时刻遗忘系数、输入、细胞状态、输出、隐藏层状态。
设备数据流中的不同特征字段对最终实现异常流量检测造成的影响不同,所以我们在LSTM编码过程中引入注意力机制,针对不同特征设置不同权重,进而将有限的注意力资源聚集到对流量识别过程起关键作用的信息上,进而提高识别准确率,设备行为第三部分特征经过LSTM最终编码结果为h,权重训练过程如式(2)所示
α=tanh(Wth+bt)β=SoftMax(wTα)γ=HβT
(2)
式中:tanh为激活函数,Wt为权重矩阵,bt为偏移值,β为权重矢量,W为可训练的权重矩阵,最后计算得出带有权重系数的时序特征矢量γ。
使用连接函数concatenate(设为Ω)将LSTM编码后的特征矢量与流量统计特征矢量以及应用层协议特征矢量结合生成新的特征矢量,计算过程如式(3)所示
V0=γΩ(BDuration,BTotalSourceBytes,…,BProtocol)Ω(BService)
(3)
将特征矢量V0输入至CNN,CNN网络结构共有4层,包括一个卷积层、一个池化层以及两个全连接层,卷积层与池化层叠加特征信息的映射。卷积层通过卷积核提取出输入数据的空间特征,与传统神经网络相比,卷积核能够提取出局部数据的空间特征并减少运算量,进而减少模型训练时间以及实现高效的流量异常检测。利用线性整流单元LReLU激活函数处理经过卷积后的特征图以确保提取出的特征图数据在合理范围内,以此避免卷积层输出的特征数据仅为输入数据的线性变换。将卷积层提取的特征图输入至池化层,降采样处理可以减少计算量并进行归一化,在一定程度上避免过拟合。降采样处理选择最大池化层(Max-Pooling),最大池化层从特征映射中获取最大元素,在保留重要特征信息的前提下降低卷积层输出维度。将卷积层和池化层提取出的流量空间特征输入至两层全连接层结合为整体特征,并进行平坦化处理,以0.3的Dropout避免过拟合。设CNN模型的输出为Xi。
3.4 SoftMax流量分类
SoftMax函数接收多个神经元的输入并映射到[0,1]范围内。将每一设备行为对应的特征矢量经过神经网络模型进行特征提取后生成的矢量输入至包含SoftMax函数的全连接层中进行分类,得出概率Pi,计算如式(4)所示
(4)
最后,通过计算交叉熵评估模型,其值越小说明实际值与期望值的差距越小。计算方法如式(5),其中,p(xi) 为期望值,q(xi) 为实际输出值
(5)
4 实验评估
4.1 实验数据
表2 实验数据集
4.2 评估标准
我们通过准确率(Accuracy),召回率(Recall)、精确度(Precise)以及F1值评估模型性能,计算方法如式(6)所示。TP表示为真阳性数量,FP为假阳性数量,FN为假阴性数量,TN为真阴性数量
(6)
4.3 实验结果
本文设置3组对比实验,分别利用基于注意力机制的LSTM、CNN、SVM实现恶意流量识别。并计算LSTM-CNN模型识别结果交叉熵,对模型进行迭代训练并更新LSTM权重矩阵以及CNN参数。识别结果如图4所示。
图4 识别结果
由图4(a)、图4(b)可知,4种机器学习方法识别平均准确率以及平均召回率均可达到90%以上,由此可以验证我们提取的设备行为特征能够有效地应用于异常流量检测,其中,LSTM-CNN方法识别准确率以及召回率最高,SVM次之,但训练SVM模型需要消耗时间较长。将所有特征输入至基于注意力机制的LSTM或CNN模型中时,只能够提取出特征的时序或空间特征,导致识别准确率较低。
由图5可知,SVM模型识别效果明显高于LSTM、CNN模型,随着召回率提升,3种模型的识别精确度下降明显。将LSTM与CNN模型联合使用,建立深度神经网络模型,能够提取设备行为时序特征以及增强特征关联性,所以LSTM-CNN的模型分类效果最好。
图5 识别结果P-R图
一定范围内,迭代次数越多模型识别效果越好,图6显示出了模型迭代次数与模型F1值以及交叉熵之间的关系,迭代次数在38以内时,次数越高,模型识别性能越强,38次以后,识别性能变化趋于平缓。
5 结束语
本文提出了一种基于设备行为的异常流量检测方法,将数据流统计特征、应用层协议、数据包内容特征定义为设备行为,对采集到的设备行为数据进行数据预处理,将数据中对识别结果影响不同的特征赋予不同权重,并进行分析与深度学习,使用LSTM学习数据包内容时序特征,将时序特征与流量统计特征以及应用层协议结合,利用CNN提取空间特征,最后通过SoftMax函数得出不同类型流量的概率分布,并利用交叉熵评估模型性能。模型训练过程在有监督条件下进行,未来工作中,我们继续优化异常流量检测方法,在半监督或无监督条件下实现异常流量检测。