谭 越,邹福泰
(上海交通大学 网络空间安全学院,上海 200240)
僵尸网络(Botnet)[1]是一组被攻击者破坏了安全防护系统并夺取了控制权的用户终端。受感染终端(Bot)组由一个或一组称为“Botmaster”的攻击者控制[2]。攻击者可以通过僵尸网络实施广泛的犯罪活动,包括分布式拒绝服务(Distributed Denial of Service,DDoS)攻击、网络钓鱼、加密勒索、点击欺诈、垃圾邮件、恶意软件分发以及交换非法信息,对互联网生态环境及网络空间安全构成了严重威胁。
2016年底,Mirai僵尸网络利用嵌入式和物联网设备对Kerbs On Security、OVH和Dyn等公司进行了大规模的分布式拒绝服务(DDoS)攻击,并在最初的20 h内感染了近65 000个物联网设备[3]。2019年,Emotet僵尸网络通过发送附带恶意文档下载链接的电子邮件,控制受害者终端并窃取受害者终端数据信息,已感染美国多个州和地方政府[4]。中国国家计算机网络应急技术处理协调中心发布的《2019年上半年我国互联网网络安全态势》中指出,2019年上半年我国大流量分布式拒绝服务攻击(DDoS)事件数量平均每月约4 300起,同比增长18%,且超过60%的DDoS攻击事件为僵尸网络控制发起的。
近年来,随着人工智能技术的发展,机器学习在僵尸网络检测领域中得到了越来越广泛的应用。但是,目前主流的基于网络流量的僵尸网络检测方法仍然存在僵尸网络样本多样性有限、缺少网络连接行为特征、对不同流之间时空关联性研究不足等问题。为了解决上述问题,本文对基于深度学习的僵尸网络检测系统进行了研究,主要贡献如下:
(1)提出一种结合网络流量时间特征和空间特征的僵尸网络系统性检测方法,从全局角度检测僵尸网络。
(2)提出两种深度学习模型,分别用于提取僵尸网络流量的时间和空间特征。时间维度方面,重新研究了多种僵尸网络通信、行为特征,并采用双向长短时记忆网络(Bi-directional Long Short-Term Memory,BiLSTM)学习特征;空间维度方面,将去除了头部的网络流量映射为灰度图像,并采用深度残差网络(Deep Residual Network,ResNet)逐层学习特征。
(3)实现基于深度学习的僵尸网络检测原型系统,采用合理数据集进行性能评估实验。实验研究表明,提出的深度学习检测模型具有较高的准确性和适用性,且拥有一定的检测未知僵尸网络的能力。
目前,僵尸网络的检测方法[5]可以根据检测对象分为基于主机的检测方法和基于网络的检测方法。
基于主机的技术通过检查单个终端的注册表结构、系统调用和系统文件来检测终端是否被感染。Skormin[6]等提出一种监控终端系统调用的监视网络检测方法。Liu[7]等人提出了一种基于流量的三相位检测模型BotTracer。Creech[8]等人提出了一种基于连续和非连续的系统调用的语义分析僵尸网络方法。基于主机的检测技术有较高的准确率,但检测较为耗时且成本较高。
基于网络的僵尸网络检测方法主要通过观察网络流量寻找异常流量特征来检测恶意流量,特征包括网络流量行为、流量模式、响应时间、网络负载和连接特征等。Gu[9]等人利用数据挖掘技术使用流量聚类,分析得到相似的通信流量来检测僵尸网络。Zhao等人[10]通过分析数据流行为特征和流间特征建立决策树分类模型,有效检测僵尸网络。
随着人工智能的发展,神经网络深度学习算法逐渐被应用于僵尸网络检测[11]。Pablo Torres等人[12]将僵尸网络流量转化成状态特征序列,并采用循环神经网络(Recurrent Neural Network,RNN)进行检测。Sajad Homayoun[13]等人采用自编码器(Auto-Encoder,AE)和卷积神经网络(Convolutional Neural Network,CNN)两种深度学习算法检测恶意僵尸网络流量。R. Vinayakumar[14]等人针对恶意的域名生成算法(Domain Generation Algorithm,DGA)提出了一种可扩展的结合了卷积神经网络与长短时记忆网络的检测模型,可以有效检测基于DGA的僵尸网络。CD McDermott[15]等人将深度学习算法应用到物联网领域,建立了一种基于双向长短时记忆的递归神经网络,通过文本识别检测物联网僵尸网络。
不同于上述已有工作,本文对比了多种深度学习模型的僵尸网络检测效果,使用多种神经网络自动学习网络流量的时间特征和空间特征,从而实现对大规模复杂的僵尸网络的检测。
随着神经网络的加深,从输入到输出的直接映射难以学习,很容易出现训练集准确率下降的现象。因此,Kaiming He等人[16]针对这个问题提出了深残度差网络(Deep Residual Network,ResNet),允许网络尽可能加深,且训练集准确率不会下降。
ResNet引入了一种全新的网络结构——残差网络结构(Residual Network),即在输入与输出之间引入一个前向反馈的shortcut connection,即文中提到identity mapping。传统的神经网络是学习输入到输出的映射H(x),而残差网络学习到的是F(x)=H(x)-x。这样可以避免学习从x到H(x)的直接映射关系,而是学习两者之间的差异,其中将差异逼近到0相对容易。残差网络模块的结构如图1所示。
图1 ResNet残差模块结构
长短时记忆网络(Long Short-Term Memory,LSTM)是循环神经网络(Recurrent Neural Network,RNN)的变种。LSTM相对于RNN添加了一个“遗忘门”结构,留下符合规则的信息,丢弃不合规则的信息,解决了标准RNN结构存在的梯度消失问题。双向长短期记忆网络[17](Bi-directional Long Short-Term Memory,BiLSTM)是由前向LSTM与后向LSTM组合而成的,结构如图2所示。
图2 BiLSTM结构
BiLSTM的基本思想是将每个训练序列根据前向和后向表示成两个独立的递归神经网络,并连接到同一个输出层。这意味着对于给定序列中的每个节点,神经网络都可以学习到它的所有前向节点和后向节点的完整的、连续的序列信息。
BiLSTM解决了LSTM无法编码从后往前的序列信息的问题,可以更好地学习双向序列特征,提高了预测的准确率。
本文设计的模型目标是搭建神经网络,通过深度学习算法,从僵尸网络流量中自动提取时间与空间两个维度的特征并训练分类器。在空间维度特征学习模块中,空间维度特征提取采用ResNet算法,主要方法是将数据流转换为二维灰度图像,然后利用ResNet在图像分类领域的应用学习空间特征;在时间维度特征学习模块中,时间维度特征提取采用BiLSTM算法,主要提取数据流基于时序的通信、行为等特征,然后利用BiLSTM在时序分类领域的应用学习时间特征。模型整体框架如图3所示。
原始数据集文件为Pcap格式,由多个数据包组成,而本文提出的检测方法的特征学习对象是数据流(flow),因此在进行特征提取前需要先将数据包重新聚合成数据流。
本文按照数据包五元组,即每个数据包的<src_ip,src_port,dst_ip,dst_port,protocol> 将数据包重新聚合成数据流,单条流中每个数据包按照起始时间排序。定义单条数据流形式为f=(Qf,Lf,Df,Tf),其中Qf代表单条流聚合所用的相同的五元组,Lf代表流中所有数据包的长度总和即单条流长度,Df代表单条流的持续时间,Tf代表单条流中第一个数据包的开始时间。若数据流双方超过3 600 s没有数据包通信或者TCP_Flag中FIN或SYN标志为1,则数据流连接中断,如此便将Pcap格式的原始数据集处理成模型所需的数据流对象。
本文使用的检测模型从时间和空间两个维度实现僵尸网络的检测,因此将从两个维度分别采用不同神经网络提取特征。
图3 模型框架
3.3.1 空间特征选择与提取
空间特征即将数据流内容转化成图像提取到的图像分类特征。为了提取到相同维度的空间特征,在做图像分类时需要保证图像有相同的大小,因此需要截取相同长度的数据流内容。本文分别对每个数据流的前784 Bytes(28×28)和前1 024 Bytes(32×32)进行了评估,结果显示前1 024 Bytes包含更多的连接信息,可以更有效地提取数据流的空间特征。
因此,本文空间特征选择截取每条数据流的前1 024 Bytes内容,若数据流长度不足1 024 Bytes,则在末尾使用0x00进行填充,然后将每个字节转转化为16进制灰度像素,最后形成一张32×32的灰度图像,如图4所示。
图4 不同类型流量转换成的图像
从图4可以看出,不同种类的数据流图像之间具有较为明显的差异。因此,使用空间维度特征对僵尸网络流进行分类检测的方法是有效的。
3.3.2 时间特征选择与提取
Elaheh Biglar Beigi[18]等人已经对数据流的部分时间维度特征如每秒平均交换字节数、连接持续时间等20多个特征进行了研究。在现有的研究基础上,本文深入研究了数据流的通信、行为特征,梳理筛选了部分特性,进一步优化了僵尸网络数据流的特征选择与提取。
本文主要筛选提取了以下特征:
(1)基本特征:源IP、目的IP、源端口、目的端口以及协议;
(2)通信特征:流持续时间、第一个包长度;
(3)行为特征:重连接次数、交换数据包总数、交换的空包数、输入包数与输出包数比例;
(4)流相似特征:总字节数、包平均长度、相同包数占总包数比例、包长度标准差、数据包平均到达时间以及每秒平均包数。
处理后的单条数据流时间维度特征由17个属性组成,处理后的部分数据如图5所示。
将处理后的单条数据流时间维度数值特征采用z-score标准化进行归一化处理,进一步了提升分类准确性。
z-score标准化公式如下:
本文设计的模型网络架构如图6所示。
图5 数据流部分时间特征
图6 网络结构
本网络结构聚合空间和时间两个维度特征,将预处理好的数据分别送入ResNet50和BiLSTM神经网络学习特征,最后将两个维度的10维特征向量进行串联聚合并采用softmax进行分类预测。
本网络结构设计拥有以下几个优点:
(1)ResNet50神经网络解决了深层网络训练准确率下降的问题,使得可以使用更深层的神经网络学习特征,以获得更好的效果。
(2)BiLSTM双向长短期记忆网络能够结合上下文提供更有效的时序信息,学习更有效的时间特征。
(3)使用Dropout层概率性忽略部分特征提取器减少过拟合现象。使用串联聚合两个维度特征,使得特征学习更具备全面性。
本文实验采用两块Nvidia 1080Ti显卡训练,并使用目前最主流的深度学习框架——Keras进行神经网络的搭建。
本文使用僵尸网络领域知名数据集——ISCX。该数据集包含训练集和测试集两部分,训练集包含7种僵尸网络(Neris、Rbot、Virut等),测试集则包含16种僵尸网络(Neris、Rbot、NSIS、Menti、Sogou、Murlo、Zeus等),为检验模型检测未知僵尸的能力提供了数据基础。
为了对本文提出的检测模型的表现进行评估,本文共选取2个实验指标,分别为准确率(Accuracy,ACC)和 F1-Score:
其中TP是将正类预测为正类的数量,TN是将负类预测为负类的数量,FP是将负类预测为正类的数量,FN为将正类预测为负类的数量。
正如前文所述,本文为了更全面地刻画网络流量特征,从时间和空间两个维度分别提取了数据流特征进行分析。因此,为了对本文提出的模型做出评估,本文对只使用ResNet、只使用BiLSTM和同时使用ResNet+BiLSTM的模型分别做了实验观测,并和其他主流模型进行对比,最后对模型检测未知僵尸的能力进行实验观测。
图7显示了各模型在不同训练迭代时的准确率,表1显示了各模型对正负两分类的F1-Score值。这部分训练中忽略了未知僵尸的影响,即将ISCX训练集与ISCX测试集合并,并按照8:2的比例重新划分训练集与测试集。
图7 不同模型的准确率
表1 不同模型的F1-Score
从图7和表1可以看出,使用单维度特征的时候,基于空间特征的模型准确率要高于基于时间特征的模型,说明本文采用的空间特征相较于时间特征可以更好地反映僵尸网络流量特性。而BiLSTM相较于LSTM、ResNet50相较于CNN,在性能上都有部分提升。
本文使用的模型BiLSTM+ResNet在训练30轮迭代后,性能相较于单特征均有部分提高,且较高的正负样本F1-Score也说明本文模型较为有效。
为了评估模型检测未知僵尸的能力,使用原始的训练集和测试集进行测试验证,结果如表2和图8所示。
图8 模型检测未知僵尸数量
表2 未知僵尸检测结果
本文提出了一种高效的基于深度学习的僵尸网络检测模型。该模型使用ResNet和BiLSTM两种神经网络模型,从空间和时间两个维度对处理后的僵尸网络流量进行特征提取与学习,并将两个维度的特征相结合,更加全面高效地学习僵尸网络流量特征。实验证明,该模型检测性能良好,相较于单一维度的模型有更高的检测准确率和F1-Score,并具备一定的检测未知僵尸网络的能力,显示出较高的综合预测能力。后续将继续寻找有效的特征进一步提高对未知僵尸的检测能力和提高模型泛化性,使得模型可以更好地抵御对抗机器学习算法。