方 圆,李 明,王 萍,江兴何,张信明
(1.国家电网 安徽省电力有限公司信息通信分公司,合肥 230061;2.中国科学技术大学 计算机科学与技术学院,合肥 230027)(*通信作者电子邮箱xinming@ustc.edu.cn)
高级持续性威胁(Advanced Persistent Threat, APT)攻击是一种高级的网络入侵技术,因其极强的隐蔽性、针对性、持续性和不计成本的长期入侵机制,使得各类核心网络的安全受到极大的威胁[1]。电力信息网络作为整个电力资源管理的核心,因其存储着海量的高价值数据,来自网络的安全威胁往往更为突出。例如,2015年乌克兰电网系统遭受了黑客入侵[2],植入的恶意软件同时攻击了多个电网公司,这是史上首次导致大规模停电的恶意网络攻击。因此尽早地检测到网络的入侵行为,隔离处理各种潜在的威胁,为国民生活生产提供可靠的保障刻不容缓。
检测APT攻击行为是电力信息系统安全防护的前提,也是整个防御阶段最为核心的部分。常用的基于底层数据分析的检测方案有恶意代码异常检测、社交网络安全事件挖掘和网络流量异常检测[3]。恶意代码异常检测需要采用静态或动态的方式提取特征,由于APT攻击具有很强的伪装性、隐藏性和变异性,导致提取时难以识别变形、加密后的恶意代码且耗时较长;社交网络安全事件挖掘,往往需要处理海量低价值密度的数据且有隐私保护的限制,数据量过大且面临法律纠纷的风险[3]。由于上述两种检测方式存在一些不足,本文采用基于网络流量的异常检测方案,分析恶意入侵的行为模式、处理特定网络中的流量数据,避免伪装带来的干扰,降低数据规模。
网络流量异常检测的方案需要先通过网络嗅探工具例如:Sniffer、NetFlow和flow-tools等,周期性地采集来自网络数据流各分组不同维度数据的属性值或统计值作为原始的训练数据,预处理后再通过数据挖掘、统计学习、深度学习等方法去探测网络中存在的异常网络连接、数据转发、网络分组等。按照检测数据覆盖的范围可把异常检测方案分为两类:第一类是基于单一链路的入侵攻击异常检测;第二类是基于全网流量矩阵的入侵攻击异常检测。单一链路的入侵检测往往是考虑单链路流量数据的时间相关性,使用机器学习如朴素贝叶斯(Naive Bayes)[4]、支持向量机(Support Vector Machine, SVM)[5]等模型进行训练;全网流量矩阵则是利用各分组不同维度的数据属性,分析多条链路网络流量的空间相关性并针对全网流量高维度的特点使用主成分分析法 (Principal Component Analysis, PCA)来降低数据维度[6],提取出多个主要特征来进行分析。
全网流量矩阵数据中特征维度很高,一般的机器学习方法难以发现高维度特征之间的相关性,不能将APT入侵时不同主机的网络流量联系起来。卷积神经网络(Convolutional Neural Network,CNN)能很好地提取二维数据中不同特征之间的联系,通过不同的卷积核设置,CNN能提取出流量矩阵中不同位置特征之间的深层特性,挖掘数据之间未知的恶意行为特征;此外,考虑到网络入侵行为往往会持续一段时间,通过分析流量矩阵在一段时间内的变化能更好地检测到入侵行为的发生,循环神经网络(Recurrent Neural Network,RNN)能将数据按照时间进行处理,层层训练获得流量数据在时间维度上变化的特性,找出流量数据内在的时间依赖。因此,为了提高APT入侵检测的效果,综合考虑了恶意入侵所带来网络流量的时间相关性和空间相关性,本文提出了一种基于混合卷积神经网络和循环神经网络(Hybrid Convolutional and RNN, H-CRNN)的入侵检测模型。相对于传统的机器学习模型,混合型深度学习网络结构能挖掘全网流量矩阵更复杂的结构特征,能对未知的恶意行为特征进行提取和封装。首先,通过CNN提取网络流量矩阵中的不同特征空间之间的相关性,再利用RNN进一步找出入侵流量数据在时间上依赖性,充分挖掘全网流量矩阵中的时空特征,提高入侵检测模型的准确性。
APT攻击往往针对高价值的目标,使用多种先进的入侵手段,不间断地进行入侵攻击来窃取目标网络的数据或者进行破坏。如图1所示,网络入侵攻击大致可分为六个阶段[7]。入侵在不同阶段具有不同的实施步骤,检测模型要确保在攻击收益阶段之前探测到入侵行为,及时处理恶意攻击。电力信息网络作为电力运行控制的核心,难免会遭到各类先进的APT攻击,需要部署灵敏的APT检测系统,通过分析全网流量的特征及时地发现攻击活动。电力信息网络中记录了大量网络流量日志信息,预处理之后使用入侵模型进行判断,可以实时判断当前网络中是否存在入侵活动。由于APT攻击具有阶段性、多目标性等特点,构建网络流量检测模型时不仅要考虑到恶意行为在网络流量时间上的相关性,也要将空间上的相关性融入到模型中。此外网络流量中能提取的特征很多,为了避免“维度灾难”,本文参考文献[5]中数据集KDD 99所包含的网络流量的基本属性,统计网络中不同链路中TCP连接的基本属性,如连接所持续的时长、协议的具体类型等;TCP连接内容属性,如一段时间文件被操作的次数、shell被使用的次数等;基于时间流量的统计属性,如一个周期内具有相同连接目标主机的数量等;基于主机的流量属性,如一定连接次数下具有相同目标或相同服务的比例等[8]。
图1 APT攻击的各阶段Fig. 1 Stages of APT attack
卷积神经网络是由Lecun等[9]提出的一种能实现深度神经网络中局部感知、权值共享等功能的网络,其网络结构包含卷积层和池化层。卷积层作为CNN结构的核心部分,它的设计动机是减少参数数量、模拟生物行为、提取数据之间的深层特性等,通过局部连接降低高维度的输入数据带来的时间和空间代价。其中一个神经元只需与部分神经元连接,而没有必要对整体进行感知;池化层常常对应于统计函数如最大值、L2范数、加权平均值等,用于降低参数规模和保持线性变换过后结果不变。卷积层提取的特征在用于分类模型的训练时,考虑到特征在不同位置具有空间局部性,需要使用池化层对不同位置的特征进行一定程度的聚合统计,降低数据维度,减少过拟合的问题。
图2是卷积神经网络的结构,其中包含2个卷积层和2个池化层,整个卷积网络的数据处理步骤如下:
(1)
在经过卷积运算后通常会再连接一个激活层,把非线性特征引入一个刚经过线性卷积运算的系统,避免输入层仅仅对上一层的结果作一个简单的线性变换。
图2 卷积神经网络结构Fig. 2 Architecture of CNN
S2层:第一次采样窗口大小为2×2,输入的24×24的矩阵被池化成一个12×12大小的pool map,为了使得采样层具有学习性,加入标量。M个卷积核使得生成M个pool map:
(2)
(3)
S4层:第二次采样,大小为2×2的采样窗口将8×8的feature map池化成一个4×4的pool map,第i个采样结果为:
(4)
(5)
(6)
其中:Nl为l层中pool map的数量。
循环神经网络能对时间序列数据进行建模,将数据流按照循环的方式来层层处理,其显著的特点是具有持续性和记忆性[10]。持续性是指在时间序列的数据中,时间前后关系的数据并不是独立的,而是具有某种内在的依赖性,某个阶段的输入不仅仅和当前阶段的数据相关也受过去信息的影响;记忆性是指RNN在处理序列数据时,具备保留过去信息的能力。入侵检测需要挖掘数据流量中的时间相关特征,同类型的统计数据之间隐藏着复杂的内在联系,考察当前状态时不应该抛弃过往的结果。在时间和空间相关的场景中,这些数据更是存在着不同的组合关系,数据特征的糅合多种多样。为了挖掘深藏的依赖关系,本文使用RNN去处理CNN所提取的特征数据。
在任意的时间t,隐藏层和输出层处理如下:
st=sigmoid(UT×xt+WT×st-1)
(7)
ot=softmax(VT×st)
(8)
基保:U是连接输入层和隐藏层的权重矩阵;W是两个隐藏层之间连接的权重矩阵;V是隐藏层到输出层的权重矩阵。反向传播时,导入数据的损失函数可通过如式(9)得出:
(9)
使用梯度下降来对其中的参数进行更新,将任意时间的损失C(ot,yt)对V求导结果如下:
(10)
其中:
(11)
m为输入神经元个数;d为输出神经元个数。从结果可以看出对V求导并不因为时间流逝而导致梯度的消失。损失函数C(ot,yt)对W求导的结果如式(12)所示:
(12)
但是当时间序列跨度过长时会出现梯度消失的问题,即梯度计算结果随着一层层的传递而指数级的降低,此时一种基于RNN的改进的门控递归单元(Gated Recurrent Unit, GRU)[11]可以处理这样的问题。GRU网络作为处理隐藏层的方式,其原理如图3所示。
图3 单个GRU网络节点结构Fig. 3 Architecture of single GRU network node
(13)
(14)
(15)
(16)
如图4所示,全网流量矩阵先经过CNN处理,提取出网络流量的空间特征,输出按时间排列的分组数据,再通过RNN对已经时间序列化的数据进行训练最终得到结果。为了解决传统的矩形卷积核难以在二维矩阵中采集离散分布的特征的问题,通过给训练的卷积窗口增加一个随机的偏移向量的方式获得可变的卷积核来处理CNN中的卷积和池化操作[12],其思想核心是对原有CNN中的采样方式进行一定的改进。
首先给出一个与输入矩阵窗口大小相同的偏移域(offset field),卷积窗口在偏移域中滑动得出卷积偏移的效果,以此达到优化采样空间的效果。9种偏移向量如下所示:
Γ=((-1,-1),(-1,0),…,(1,1))
(17)
任意一个点可以向周围八个方向偏移。原有的卷积的输出结果经过式(18)可得:
(18)
每个卷积窗口每个元素Pn有权重w,其中Pg则代表每个窗口输出的任意元素。通过加上ΔPn,可以使输入的数据矩阵x进行偏移:
(19)
其中:ΔPn用来处理x输入层对应元素的采样,对窗口元素权重w没有约束,这里需要对w和ΔPn两组参数进行训练。对于可变形的池化区域也可以通过类似的变形步骤,将传统的池化区域转化成大小为bin的特征图:
(20)
其中:Pg是池化区域上某个点;nij对应bin大小的特征图中元素的个数。再通过对池化区域进行偏移变形计算得出最终的池化区域:
(21)
图4 混合CNN和RNN模型结构Fig. 4 Architecture of hybrid CNN and RNN model
本文实验是在Linux仿真平台上基于TensorFlow[13]深度学习框架来进行训练的。实验包含两类数据:第一类数据来源于含有大量先进APT攻击技术的恶意软件数据库[14];第二类数据是Predict网络中“Defense Advanced Research Projects Agency (DARPA) Scalable Network Monitoring (SNM) Program Traffic”分类下的良性数据[15]。真实场景中的APT攻击往往隐藏在大量的正常网络数据流中,本文将这两类数据融合在一起使得数据来源更贴近现实。APT攻击常常使用多种先进的攻击手段而且攻击时间往往持续几天甚至几个星期。本文实验选取40个IP地址作为监听对象,记录恶意入侵时各种网络流量特征的统计值,收集其一个月的网络流量数据。每个统计值数据50 ms更新一次,间隔5 s得到一份全网流量矩阵原始样本。最后利用4 GB左右的DAPRA良性样本和848 MB的APT标记的恶意样本来进行模型训练。图5是数据处理的大致流程。
图5 H-CRNN模型训练过程Fig. 5 H-CRNN model training process
通过观察损失值(loss)下降曲线图和准确率变化趋势,在较大学习率时确定合适的参数范围,循环缩小超参数的搜索空间。然后降低学习率,利用网格搜索(grid search)的方式进行大量训练找出最优的模型参数。本文模型的CNN、全连接层(Fully Connected layer, FC)RNN各超参数如表1所示。系统硬件配置如下:CPU为Intel Core i7 7700K,内存为DDR4 2 333 MHz 64 GB, 显卡为NVIDIA GTX 1080Ti。如图6所示,在训练初期模型loss震荡下降,训练后期损失值不再随着训练步数增加而减少。图7中模型预测准确率(accuracy)在训练初期随着训练步数增而加快速升高,训练后期预测准确率基本维持在95.5%左右。整个训练时间约4.3 h。
表1 各模块参数设置Tab. 1 Parameters setting for each module
图6 H-CRNN模型损失值Fig. 6 Loss of H-CRNN model
图7 H-CRNN模型准确率Fig. 7 Accuracy of H-CRNN model
为了验证本文模型的有效性,表2给了出分类问题预测结果的交叉矩阵。测试样本总数S=TP+FN+FP+TN,其中正确预测的样本数为TP+TN,错误预测的样本数为FP+FN,通用的样本分类问题评价指标如下。
误报率是预测为恶意样本中良性样本的比值,表达式如下:
(22)
查准率(Precison)是预测为良性的样本中,真实值为良性样本的比值,表达式如下:
(23)
查全率(Recall)是真实的良性样本占预测为良性样本的比值,表达式如下:
(24)
F1度量是精确度和召回率的平衡点,可以看作是精确度和召回率的调和平均数,表达式如下:
(25)
表2 分类结果的混淆矩阵Tab. 2 Confusion matrix of classification results
将本文模型H-CRNN与已有的基于单链路流量的Naive Bayes[4]、SVM[5]和基于全网流量矩阵的PCA-based[6]进行对比。随机截取数据集中1/4的数据作为测试集,各模型预测结果统计如表3所示。混合模型能综合考虑发生APT攻击时网络流量的空间相关性和时间相关性,使得模型在查准率、查全率、F1度量上都有一定程度的提升。除此以外,相对于其他模型,本文模型H-CRNN大幅降低了误报率,减少人力排查的时间。
图8给出四种模型的ROC曲线,其中横坐标假正例率定义为FP/(TN+FP),纵坐标真正例率定义为TP/(TP+FN)。H-CRNN模型的ROC曲线一直位于上在其他模型的上方,曲线下方的面积(Area Under Curve, AUC)相对于其他模型有7.5%~14.0%的提升,表明所提模型在综合性上能有了一定的提高。
表3 不同模型的分类结果统计Tab. 3 Classification results of different models
图8 不同模型的ROC曲线Fig. 8 Different models’ ROC curves
本文针对电力信息网络中APT攻击问题设计一种高效的入侵检测模型。这种新型的入侵检测模型采用了混合卷积神经网络和循环神经网络的结构,能综合分析APT攻击时网络流量的时空特性。除此以外,本文在卷积核的设计上,给卷积核添加随机偏移量来处理更广的空间特征,使得模型具有更高的灵敏度和更低误报率。实验结果表明,该模型在各项通用指标上都有一定的提升。值得注意的是,针对不断迭代的各种网络入侵攻击,实际部署的检测模型需要定期进行训练更新。