基于LSTM的动态网络异常行为检测方法
2021-12-30孙先亮谭小波
孙先亮,谭小波
(沈阳理工大学 信息科学与工程学院,沈阳 110159)
动态网络异常行为的检测方法是国内外研究的热门课题。异常行为检测技术是通过分析动态网络[1]的结构特征,使用模型算法进行结构特征提取,再通过分类算法判断某一时刻上的网络是否存在异常行为,找出网络中与其他正常行为差异过大的异常行为[2]以进行防范,降低网络攻击危害。
传统的动态网络异常检测方法包括基于节点特征分类的方法、基于行为特征的方法和基于图特征的方法等。姚潍等[3]提出了基于决策树和朴素贝叶斯分类算法结合的方法,首先使用决策树进行概率加权求和,然后使用朴素贝叶斯分类算法进行结果分类,并在KDD99数据集上进行验证,结果表明该方法在准确度上有一定提升,但效率不高。Yu H F等[4]提出了基于随机游走的SybilGuard算法用以针对女巫攻击。该算法可以在信任节点上进行多次随机游走,进而找到所有的信任区节点进行异常检测,但需要花费大量的内存和计算时间。Yoon M等[5]提出了基于异常等级(AnomRank)的异常检测算法,首先将动态图中的异常分为异常S(AnomalyS)和异常W(AnomalyW)两种类型,然后根据该两种类型特征构造节点异常评分函数,通过评分函数进行异常事件的区分。该方法效率上优于其他算法,但精度不够。Gahrooei M R等[6]提出了基于概率模型的方法,首先使用广义线性模型(Generalized Lagrange Multipliers,GLM)对每个属性图进行建模,再通过拓广的卡尔曼滤波器调整参数并使用指数加权移动平均值检测图流上的全局结构变化,该方法虽然提高了准确度,但会占用大量的内存空间。
动态网络中节点数量巨大,结构呈现出多种特征,表现在网络拓扑结构随时间不断发生变化。传统的异常行为检测方法效率低或准确度不高。本文提出一种基于长短时记忆模型(Long short-term memory,LSTM)的动态网络异常行为检测方法解决上述问题。该方法首先采用基于中心网络(Ego network,Egonet)特征提取方案计算出图距离特征,其次使用增量并行式算法(Dynamic Parallel Anomaly Detections,DPADS)压缩图结构,计算图结构差异,最后使用LSTM算法进行模型训练并完成异常行为检测。
1 LSTM的动态网络异常检测
动态网络异常状态表现为[7]:在连续的图序列中,找到特定时间点对应图上显著变化的节点、边或子结构。
1.1 Egonet的动态网络模型特征提取
本文提出Egonet网络的动态网络模型特征提取方法提取图距离特征。
节点的Egonet[8]定义为包括距离该节点一跳邻居节点及连接这些节点的边的子图。
动态Egonet网络随时间变化的结构如图1所示。
图1 动态Egonet网络结构图
Egonet的动态网络模型提取距离特征的计算方法如下。
给定图G=(Vi,Ei)和图H=(Vj,Ej),两图最大公共子图(Max Common Subgraph,MCS)为mcs(Vi,Vj),图G与图H的节点距离L1(G,H)定义为公共子图中节点数与两个图当中最大节点数max {|Vi|,|Vj|}的比值与1的差,其表达式为
(1)
同理,图G与图H的边距离L2(G,H)定义为公共子图中边的数量与两个图当中最大的边数量max {|Ei|,|Ej|}的比值与1的差,其表达式为
(2)
以图的点距离与边距离构成的图距离特征可以有效衡量两张图在结构上的相似程度。
1.2 DPADS算法
异常的子结构(或子图)是正常结构的变异,即是正常图边和节点的增加或者缺失。通过计算图G1转化为G2的同构图的计算量,可以衡量G1和G2之间的结构差异。
设图G正常模式为S,由最小长度原理(Minimum Description Length,MDL)判定[9],并通过最小化目标函数找到最小描述长度L为
L=min(L(G|S)+L(S))
(3)
式中:L(G|S)为使用S压缩图G后的描述长度;L(S)为正常模式S的描述长度。
设D(G1,Gn)表示图G1与图Gn之间的结构差异,如果差异度为0,那么两个图为同构,否则为异构。
设图G任意一个子图模式SA为异常结构,Dmax为SA到S的最大差异,且Pmax限定了SA为异常结构的最大概率。那么有0 使用图的正常模式,以根据最小长度原理对原始图进行描述,并通过计算与其它图之间的差异度和异常概率可以判断其它图结构是否异常。 LSTM算法[10]最早由Sepp Hochreiter和Jurgen Schmidhuber提出,是一种对递归神经网络的改进算法。其适用于学习时间序列上的动态特征,针对异常行为所产生的特征变化能够进行有效捕捉,进而实现异常行为检测;其主要思想是使用三个门限设计来解决长期依赖问题,增加了神经元的记忆和遗忘功能;其结构由输入层、隐含层和输出层构成,核心在于记忆单元的设计,由三个乘法门构成。LSTM结构如图2所示。 图2 LSTM结构图 (1)遗忘门:决定是否需要遗忘之前储存的信息。读取输入当前时刻t的特征向量和上一层输出特征向量,通过激活sigmoid函数判断是否遗忘,0表示丢弃,1表示存储。其计算公式为 ft=w(Wf*[ht-1,xt]+bf) (4) 式中:ft为遗忘门值;ht-1表示前一时刻隐含层状态;xt表示当前时刻特征向量;w为系数;Wf为待定系数;bf为常量。 (2)输入门:判断什么类型的新信息需要进行学习,使用tanh函数计算候选值向量。其计算公式为 it=w(Wi*[ht-1,xt]+bi) (5) Ct=tanh(Wc*[ht-1,xt]+bc) (6) 式中:it表示记忆门值;Ct表示当前记忆细胞值;Wi、Wc为待定系数;bi、bc为常量。 将上一层的状态值Ct-1与ft相乘确定要丢弃的信息,加上新的候选值得到新记忆细胞值为 Ct+1=(ft*Ct-1+it*Ct) (7) 式中:Ct+1表示新记忆细胞值;Ct-1表示上一层记忆细胞值。 (3)输出门:通过sigmoid激活函数获取输出状态,使用tanh函数计算输出信息,得到结果ht。 ot=w(Wo*[ht-1,xt]+bo) (8) ht=ot*tanh(Ct+1) (9) 式中:ot表示输出门值;Wo为待定系数;bo为常量。 使用LSTM算法训练时间序列上的动态网络特征变化,通过图距离特征和图结构差异度两种特征做为输入特征向量,判断某一时刻的网络结构是否为异常结构。具体步骤如表1所示。 表1 LSTM算法步骤 在Python3.7环境下进行仿真实验,测试该方法的性能。 IDS2018数据集来自于小规模局域网上模拟网络攻击过程中收集到的网络攻击数据,攻击的基础设施有420台计算机和30台服务器。数据集包括捕获的每台计算机的网络流量和系统日志,每一条数据由70多个特征构成,每一条记录有目的IP、源IP及持续时间等。包含拒绝服务(Denial of Servie,DOS)攻击、端口扫描、渗透测试及僵尸网络4种攻击类型。 以24h的数据作为训练集进行实验,其节点的数量情况如图3所示,边的数量情况如图4所示。 图3 节点数量 图4 边数量 本文方法使用的数据类型均为数值型,需要对数据进行标准化处理,使用Min-Max方法[11]将数据映射到(0,1)区间,如公式(10)所示。 (10) 式中:X为原始数据;Xmax、Xmin分别为数据中每一个特征的最大值和最小值。 对于LSTM算法评价标准有4个:准确率(Accuracy)、召回率(Recall)、精确率(Precision)和调和平均值(F-Measure),计算公式为 (11) (12) (13) (14) 式中:TP表示正类预测为正类数目;FP表示负类预测为正类数目;TN表示负类预测为负类数目;FN表示正类预测为负类数目。本文选取准确率和召回率作为异常行为检测评价指标。 实验采用10h的数据作为测试集验证模型的有效性。其节点、边和异常数量如表2所示。 表2 测试集节点、边及异常数量 将LSTM进行30轮迭代训练,不断更新参数,寻找最优解。经过15轮训练后损失函数值基本不变,达到了最优,损失函数值变化如图5所示。 图5 损失函数值变化 训练模型后对测试集进行准确性评估,并与基于特征的支持向量机(Support Vector Machine,SVM)异常检测方法、基于主成分分析(Principal Component Analysis,PCA)的异常检测方法、基于图卷积(Graph Convolution,GCN)和基于矩阵分解的动态网络异常检测方法进行对比,结果如图6所示。 图6 算法对比图 由图6可见,本文提出的方法在准确率和召回率上远超过基于SVM的异常检测方法。与其他三种方法相比,准确率提高了7%左右,召回率提高了5%左右,达到良好的检测效果。 本文提出一种基于LSTM的动态网络异常行为检测方法。该方法首先通过对动态网络结构的变化特征进行分析,并计算图结构距离特征表示动态网络的变化趋势;其次,使用DPADS算法通过MDL原理压缩图结构,并计算图结构之间的差异度,减少内存消耗,提高检测速度;最后使用LSTM算法对数据集进行训练,完成异常行为检测。实验结果表明,基于LSTM的动态网络异常行为检测方法与其他异常检测方法相比,准确率提高了7%,召回率提高了5%。1.3 LSTM算法
2 仿真实验与结果分析
2.1 实验数据
2.2 数据预处理
2.3 评价标准
2.4 实验结果
3 结论