具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
1.前言
1.1背景
组建僵尸网络的僵尸程序被事先编入设计好的DGA算法,利用该算法生成大量的DGA域名并周期性产生一个域名列表。在满足一定条件下(在某一个时间段内),僵尸网络的控制者会注册某些域名作为该僵尸网络的命令控制服务器访问域名。然后,被感染僵尸主机上的僵尸程序根据域名列表依次与表中的域名进行连接,如果尝试域名解析成功,并且被感染僵尸主机能够收到所属僵尸网络协议的应答,此时僵尸主机便与僵尸网络的命令控制服务器通信成功,即可完成攻击者的下达的指令。如果正在进行僵尸网络通信的域名被网络安全研究人员发现并被网络运营商屏蔽,此时将攻击者会注册DGA域名列中的预定的下一个域名,于是攻击者能够保证命令控制服务器对应的域名仍然能够解析成功,维持命令控制服务器与僵尸主机的通信,从而通过该方式增加了僵尸网络抗检测和屏蔽性,提高了僵尸网络的隐蔽性。通过不断更改僵尸网络控制服务器的域名使恶意僵尸网络保持运行的技术称之为domain flux。由于domain flux的良好特性,在僵尸网络中使用DGA域名的domain flux变得十分的流行。
DGA域名的通用办法都是使用确定性伪随机生成器(pseudo-random generator,PRNG)来生成候选域名列表。PRNG的种子可以是当前时间,某些幻数,汇率等。随机数生成器可以单个均匀分布生成器,例如使用移位、异或、除法、乘法和模运算组合来生成字符串序列作为域名(例如,Conficker,Ramnit等)。它也可以是规则生成器,可以从某些知识库中进行选择(例如在Suppobox中)。如图1所示,DGA算法使用当前日期作为种子,并使用PRNC为DGA域生成字符序列作为域名。
僵尸网络广泛使用domain flux技术,因此DGA域名检测是发现僵尸网络的重要途径之一。早期的DGA域名检测方式是黑名单,正则匹配等方式,面对复杂多变的DGA域名检测能力有限。后来随着机器学习兴起,利用海量的域名数据并人工进行特征工程的检测性能逐步提高。运用机器学习技术从海量域名服务请求数据中自动发现僵尸网络通讯的DGA域名成为可能。
近年来深度学习取得快速的发展,在自然语言处理、计算机视觉、语音处理等多项任务中不断刷新当前已有性能记录。并应用到具体的工业场景中。基于深度学习的DGA域名检测方法也得到了网络安全研究人员的重视。其中主要是利用深度学习一个重要的优势,即它能自动发现数据中有效的特征并做出分类,以此来判断一条域名是否是DGA域名,通过这样的方式完成DGA域名的检测。此外不同的僵尸网络家族生成的DGA域名可按照所属家族进行多分类。通过给DGA域名打上对应家族标签,然后使用监督学习方式训练DGA域名的分类检测器。
1.2研究动机
由于DGA域名训练数据来源于真实网络环境,收集被发现不同僵尸网络家族的DGA域名数量相差比较大,因此DGA域名中存在数据不平衡的问题。导致小样本的僵尸网络家族在多分类问题上的多种性能度量指标上较低。同时发现目前已有的研究方法对字符串随机性较高、僵尸网络家族之间相似的域名识别困难。为了针对上述问题,本发明专利设计了一种基于字符级滑动窗口的深度残差神经网络的深度学习模型,应用到DGA域名检测和分类这一具有现实意义的网络安全场景中。该方法采用字符级词向量表达文本DGA域名,并使用多尺寸的滑动窗口提取不同大小感受野的特征,然后输入精心设计的深度残差网络进行复杂特征提出。通过对比实验发现,该方法进一步提升DGA域名检测,达到目前最领先的成绩。
1.3主要贡献
(1)本发明专利提出了一种基于字符级滑动窗口的深度残差网络模型(SW-DRN)用于DGA域名的检测,模型采用字符级向量表达,并使用区域卷积方式扩大卷积核感受野,然后精巧设计一种可变长式的深度残差神经网络来提取特征。所提出SW-DRN能够把原始特征进行高维、复杂、深层次抽象,能够提取出数据中隐藏的有效信息。
(2)为了客观评估所提出SW-DRN模型的有效性。本发明专利建立两个数据集,收集真实网络环境中DGA域名建立Dataset 01;同时依靠域名生成算法合成DGA域名,并构建对照的Dataset 02。
(3)本发明专利提出的SW-DRN模型在这两个数据集上二分类和多分类任务上均到达目前领先的成绩。其中SW-DRN模型在两个数据集的多分类任务上的评估指标(macro F-score)比当前DGA域名检测模型分别高出了4.8%和3.34%。
2.相关工作
在僵尸网络的防御中DGA域名检测有着举足轻重的作用。因此DGA域名的检测成为网络安全中一个非常重要的研究点,在信息安全的顶级会议中也呈现不少研究成果。在2010年,Antonakakis等人提出域名声望系统Notos,通过分析被动域名系统(PDNS)数据以此来建立多种手工特征,依靠两层的聚类探知已知恶意域名和IP地址之间的关联,最后计算一条域名的声望分数,判断该域名为DGA域名的概率。Notos系统依赖大量的恶意域名数据,且不能对单一域名实时检测。Bilge等人提出另外一种DGA域名发现系统EXPOSURE。且这个系统首次使用基于DNS(domain name system)协议的特征,例如DNS解析时间特征、基于DNS响应特征,以及域名解析请求字符串的特征等。然后使用这些人工提取的特征输入给基于决策树分类器进行有监督的训练。Yadav等人对域名字符串进行1-gram和2-gram的特征统计,同时并计算DGA域名和非DGA域名集合1-gram与2-gram的分布,并使用KL距离度量分布之间的差异,通过模型聚类预测结果与标签真实值之间的差异使用Jaccard距离度量。Antonakakis等人提出基于idden Markov model(HMM)聚类发现潜在的DGA域名家族。但同样发现包含大量域名的域名家族分类时,无法做到每一条域名进行实时检测,且分类模型都需要人为设计特征。
上述这些DGA域名检测的方法都是基于机器学习算法,且全部都需要人为手动的定义特征。随着深度学习的发展,也给DGA域名检测带来新的契机。在2016年,Woodbridge等人首次将深度学习应用到DGA域名检测中。且它只使用域名字符串作为数据输入,利用深度学习自动提取字符串内的隐藏特征,使得DGA域名检测取得了飞跃性的突破。取得如此的成绩依靠循环神经网络中的long short-term memory(LSTM)模型,它能够提取域名字符串的有效时序特征。然后,Yu等人和Vinayakumar等人在不同深度学习框架上进行DGA域名检测对比实验,比较多种经典的convolutional neural network(CNN)与recurrent neuralnetwork(RNN),且把DGA域名检测看作natural language processing(NLP)的短文本分类任务。Lison等人首次使用双向多层的循环神经网络结构,并在大规模DGA数据进行训练,最终对模型对DGA域名检测率达到93%。Yang等人提出了一种针对基于单词的DGA的检测方法。首先,分析了基于词的DGA方法,并分析了词特征,词性特征和词相关的特征三种类型特征。然后通过以上分析得出16个特征,并选择了两种典型的基于单词的DGA方法Matsnu和Suppobox作为测试对象。最后,将随机森林分类器用于检测。对比实验结果表明,该方法具有优于现有方法的性能。Tran等人提出了一种新颖的LSTM.MI算法,该算法结合了二进制和多类分类模型,并考虑类别识别的重要性。经过证明,与原始LSTM和其他最新的成本敏感型方法相比,LSTM.MI在macro平均召回率和精度方面显著提高。能够在非DGA域名类上保持98.49%F-score的得分。Sivaguru等人提出利用除域名字符串之外的信息,综合来判断一条域名是否是DGA域名。由于域名检测器通常部署在网络中,需要实时进行处理网络中域名请求。Catania等人和Highnam等人提出了一种新颖的混合神经网络,该模型分析域并对此类算法生成域的可能性进行评分。它是卷积神经网络(CNN)和长短期记忆(LSTM)网络用于DGA检测的最先并行使用,提高了域名检测的运行速度,增强了实时性。Du Peng等人提出一种混合词向量的DGA域名检测模型,并使用混合词向量CNN-LSTM和CNN-MWE模型做了实验的对比。从这些参考文献的实验结果来看,基于深度学习架构的方法普遍优于基于人工特征的机器学习方法。但是基于深度学习的DGA域名检测方法在DGA域名家族的二分和多分类任务仍有很大的提升空间。
3.提出的方法
在卷积神经网络中随着网络深度的加深,能够从数据中抽取到更复杂、更抽象的特征,同时对数据压榨越明显,模型的性能就能够得到提升。为了让DGA域名检测器能够良好地自动发现域名字符串内的隐藏特征,本发明专利提出一种基于字符级滑动窗口的深度残差神经网络用于对DGA域名的分类识别。该模型与之前提出的DGA域名检测模型相比,本发明专利所提出模型的性能达到非常不错的效果,同时具有较高的准确率和F-score,同时对一些样本较少的DGA家族识别率也非常高。如图2为DGA域名检测所提出SW-DRN模型的架构图。
本发明专利所提出的基于字符级滑动窗口的深度残差网络用于DGA域名检测的模型可以分为细分为7个层次,分别是原始数据输入层、one-hot编码层、字符嵌入层、区域卷积层、深度残差网络层(卷积重复模块)、K-max池化和全连接层、以及最后的输出层。数据流从架构图2中底部输入层开始,到顶部的输出样本具体类别。下面将简述一下所提出的SW-DRN模型。
首先是SW-DRN模型输入层,它所接受是来自字符形式的域名,且域名的固定长度为L个字符。然后对域名进行数值化处理,使用字符级词典把域名中每个字符映射成one-hot编码向量(具体细节在实验的数据处理部分)。由于模型直接使用one-hot编码向量将会导致模型计算量增加,因此引入了字符嵌入层,它会把将one-hot的V1维度向量映射成d维度,且d<V1。
接下来就是特征提取部分,区域卷积部分会对数据做一个原始特征提取,本发明专利采用多尺度的滑动窗口,分别选用三种不同大小的一维卷积核,其长度分别为1,3,5。然后把提取到的特征图进行concat操作。然后输入到深度残差网络层进行更深层次的特征提取。深度残差网络层的层数是可以根据图2中的卷积重复模块重复次数进行变化,它的重复次数使用N来表示。当N的值越大时,每次卷积产生的特征图的数量也跟着增加,特征图数量与N关系为64*N。同时在卷积重复模块中尾部加上一个最大池化层,这样每经过一个卷积重复模块时,特征图的长度由原来的L变为原来的一半,其目的在于残差网络层中卷积核长度不变的情况下,通过减少长度L来增加对特征图感受视野,为后续获得高层次、抽象的全局特征提供帮助,这样可以对提取DGA域名内不同位置字符之间关系特征。
通过上一步深度残差网络层特征提取后,需要对得到的特征图进行K-max池化采样,目的提取显著的特征,缓解模型的过拟合,增加模型的泛化能力。然后输入到具有2048个神经单元的三层全连接层用于特征组合,最后按照分类任务类型(二分类或者多分类),对输入DGA样本进行类别划分。本节接下来的内容将会对所提出的SW-DRN模型中部分内容做更进一步的阐释。
3.1嵌入层
嵌入层是对DGA域名的编码信息进行数值特征更一步表达,它把one-hot编码的高维稀疏矩阵映射成低维稠密矩阵。本发明专利以采用字符级进行数字编码,那么嵌入层就是把一个维度为所有字符的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个字符被映射为实数域上的向量。对DGA域名进行字符嵌入后它能表达字符之间的相似性,例如,字符’1’的向量和字符’6’的向量在向量空间中距离更近,而与字符’b’相比在向量空间中距离更远,这是因为’1’的分布特性与’6’更为相似。
3.2卷积层
卷积神经网络中每层卷积由若干个卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。针对DGA域名的样本都是文本信息,因此使用一维卷积并在文本序列上滑动并检测不同位置的特征。定义
为一条DGA域名样本中第i个字符的字符向量,其中a
i表示一条DGA域名样本中第i个字符的字符向量;
表示实数域,d表示字符向量的维度;a
i的取值为实数;那么使用
代表输入的DGA域名,其中a表示域名的数值化,L表示DGA域名的长度;d表示字符向量的维度;
表示a的取值在实数域;
然后定义k为滤波器的长度,引入
作为一个卷积滤波器感受野大小。对于句子中的每个位置j,都有一个带有k个连续字符向量的窗口向量w
j,表示为:
wj=[aj,aj+1,...,aj+k-1] (1)
然后滤波器m以’VALID’方式与每个位置窗口向量进行卷积,生成特征图
窗口向量w
j的特征图的每个元素A
j的产生如下:
Aj=f(wj⊙m+b) (2)
其中,f()是非线性的激活函数;⊙表示逐元素相乘;b是偏置项;
它可以sigmoid,hyperbolic tangent等。在本发明专利中,选择ReLU作为卷积后非线性激活函数。本发明专利提出SW-DRN的模型使用多个滤波器来生成多个特征图。对于长度相同n个滤波器,可生成n个特征图为每个窗口向量wj特征进行表示,
W=[A1,A2,...,An] (3)
其中A
i表示第i个滤波器产生的特征图,
的每一行表示从W
j是从位置j处的窗口矢量的n个滤波器生成特征图来表示。
在本发明专利提出SW-DRN的模型中区域卷积层使用多个不同尺寸的滤波器,与n-gram相似,区别在于本发明专利在嵌入层使用多尺寸滑动窗口进行特征抽取,滑动窗口选取大小分别为(1,3,5),并把不同尺寸的滤波器抽取的特征进行融合。运用多尺度的滑动窗口能够让模型捕获到不同粒度的信息,使得到特征图更加的丰富,提升模型的性能。
而本发明专利的卷积重复模块中的卷积核长度为固定值,大小为3。卷积重复模块的次数N=4,当N的值每当增加1时,下一次卷积的滤波器数量n增加为原来的2倍,于是滤波器数量在分别为64,128,256,512。
3.3残差块
残差块的是构成残差网络的基本单元,残差网络的设计是为了防止当网络层数加深,会导致模型训练变得困难,模型在训练中出现梯度爆炸和梯度消失。在网络模型中引入残差结构能够使模型这些问题都能得到有效的解决。如图3展示本发明专利提出SW-DRN的模型中残差块的内部结构。
残差块的内部结构有两部分数据流,第一部分是模型正常数据流向,由两层卷积层进行特征提取得到结果H(xl-1);第二部分是模型shortcut连接,把输入数据x′l-1与H(xl-1)进行加操作,这里的x′l-1是为了与H(xl-1)维度进行匹配而对xl-1下采样的操作。所提出SW-DRN模型的架构图中残差块的堆叠下,数据流方向如公式(4)所示:
xl=x′l-1+H(xl-1) (4)
其中x′l-1表示xl-1经过下采样后得到的值;H(xl-1)表示两层卷积层进行特征提取得到结果;xl-1表示第l-1层残差块的输入;xl表示残差块第l层的输入(即l-1层的输出)。
在SW-DRN架构图2中,由于卷积重复模块的次数N取值不同,SW-DRN模型的深度就会发生变化。本发明专利的N=4,依照文献中的模型深度进行设计。本发明专利为了探索SW-DRN模型在不同深度的性能,分别在深度为9,17,29,49层对模型进行相应的训练并测试,所得对比结果在实验部分展示,并选择一个最优SW-DRN模型的层数。
最后如何增加或者减少卷积层数的方法。在深度卷积神经网络中,当数据流每经过一层卷积层时,此时模型的深度就加1。如图2所示,一个残差块中具有两层卷积,同时在图2中一个卷积重复模块具有两个残差块,当N=4时,我们深度残差网络层共有4×(2×2)=16层,再加上原来的区域卷积层,那么此时SW-DRN模型有17层。如果想得到就9层的SW-DRN模型只需要对残差块中的卷积层数量减少即可。同理增加模型的层数也在残差块中增加卷积层数量。
3.4池化层
本发明专利使用了两种池化的方式,图2中的卷积重复模块中使用最大池化;而在模型尾端进行全局信息采样使用的是K-max池化。
最大池化用于提取特征图中显著的特征,它会从一个滤波器的内提取一个最大值,减少模型的计算量以及防止过拟合增加模型的泛化能力。K-max池化与最大池化区别在于K-max池化会从一个滤波器内提取前K个最大值,这样能让模型捕获到更加丰富特征信息,提升模型性能。
3.5批标准化
批度标准化(Batch Normalization)是一种用于提高人工神经网络的速度、性能和稳定的技术。当输入样本xi输入到SW-DRN模型中,在训练中随着网络深度逐渐增加,样本的分布逐渐发生偏移或者变动,导致神经网络的反向传播发生梯度消失。因此该技术通过re-centering和re-scaling来归一化来自输入给它的数据。如公式(5-8),输入到BatchNormalization层的为一个mini-batch大小,定义为B={x1,x2,x3,...,xm}。m表示输入样本的个数。
计算一个mini-batch大小的样本均值μB:
计算一个mini-batch大小样本方差σB:
然后把公式(5)和(6)分别计算的均值和方差用来给x数据归一化。
其中,
表示归一化值,
表示归一化值,ε表示拟合参数,一个非常小的数,其目的防止式子(7)的分母为0。
最后通过Batch Normalization中两个可训练参数γ和β的更新来提升模型泛化性能以及防止网络变深后的梯度爆炸和梯度消失问题,yi为经过Batch Normalization后得到值yi。γ表示第一训练参数;β表示第二训练参数。
BN表示Batch Normalization的缩写。
3.6分类
本发明专利所提出的SW-DRN模型可以进行二分类和多分类的任务。当判别一条域名是否DGA域名时,则是一个二分类任务;当对需要对DGA域名详细分类出它的具体家族类别,那么就是一个多分类任务。由于任务的类型的不同那么最终在输出端所使用的分类函数也就不一样。
在二分类的任务中,输出层常常采用Sigmoid函数,它是激活函数的一种能够把输入的值映射到(0,1)之间,本发明专利的正负样本的分类的阀值在0.5,即当经过Sigmoid函数后的值>=0.5,表示正样本,即DGA域名;反之小于0.5则表示负样本,即是合法的域名。Sigmoid的函数如公式(9)所示:
x表示样本向量或置信度。
在多分类任务中,输出层则采用Softmax函数,它是另外一种激活函数,能够把输入值映射成具有K个值的一维向量,其中K表示多分类的类别数量。向量中K个值的取值均为(0,1),但这K个值的和恒等于1,最后模型会选择值最大对应类别输出作为对样本的预测值。如公式(10)所示,表示置信度或样本向量x属于第j类DGA家族的概率。
T表示矩阵的转置;
wj表示softmax函数的权重;比较P(y=1|x)、P(y=2|x)、P(y=3|x)、……、P(y=K|x)间的概率大小:若P(y=1|x)的概率最大,则置信度x属于第1类DGA家族;
若P(y=2|x)的概率最大,则置信度x属于第2类DGA家族;
若P(y=3|x)的概率最大,则置信度x属于第3类DGA家族;
……;
若P(y=K|x)的概率最大,则置信度x属于第K类DGA家族。
3.7损失函数
本发明专利使用交叉熵损失函数,也叫模型的目标函数,用于计算ground truth和模型预测值之间的损失值,然后反向传播,梯度更新SW-DRN模型中所有参数θ,最后得到模型近似最优解。
公式(11)是交叉熵损失表达式,适用于二分类或者多分类损失函数的计算。
其中,B训练样本一个mini-batch数量;
y(i)表示第i个样本的标签值;
hθ(x(i))表示模型预测的值;
x(i)表示第i个样本的值;
θ表示定义模型中被训练的权重;
{(x(1),y(2)),...,(x(B),y(B))}为一个mini-batch的数据样本以及其标签值。
4.实验与结果分析
本节将会介绍SW-DRN在DGA域名检测上的实验,模型实现的框架采用PyTorch(1),它是一种高层次深度学习编程的框架,集成了多种神经网络的实现,能够快速、方便实现所提出SW-DRN模型。PyTorch框架是基于Python编程语言且同时支持GPU上加速训练模型。
4.1实验环境
4.1.1软硬件环境
表1.实验基本环境
开发环境 |
参数 |
处理器 |
Intel(R)Core(TM)i7-4790k CPU@4.0GHz |
内存 |
32GB |
加速设备 |
NVIDIA GeForce RTX 2080Ti |
操作系统 |
Ubuntu 18.04.4 LTS |
IDE |
Pycharm |
开发语言 |
Python |
第三方库 |
numpy,matplotlib,pandas,sklearn,seaborn,tqdm,tensorboardX |
4.1.2实验超参数
本论文模型的超参数:初始化学习率0.01;学习率参数调整方式为每50Epoch学习率调整成原来的1/2;梯度参数优化器Adam,且其中参数betas为0.9和0.99。Epoch为200;模型初始权重使用kaiming_normal;嵌入层的维度d=200。
4.2数据集
本发明专利通过实验来证明SW-DRN在不同评估指标上有效性。实验的数据分为两种,一种含有来自从真实网络世界中的DGA域名,定义为Dataset 01;另一种则是含有依靠DGA域名生成算法产生的不合法域名,定义为Dataset 02。接下来将进一步分别介绍这两个数据集的基本构成。
4.2.1 Dataset 01
Dataset 01数据集分别有两部分组成,第一部分就是合法的域名样本,它来自Alexa(2)访问量全球排名1,000,000的网站域名;另外一部分使用360Netlab DGA公开数据(3),作为DGA域名样本。
截止2020年1月,360Netlab DGA数据中包含了44个DGA域名家族,每一条域名数据中包含有域名的家族类别、域名、开始和结束的验证时间。由于考虑到数据不平衡因素会导致模型训练中会造成对某一些类别的偏差,因此本发明专利把DGA家族中样本数量低于1,000的域名家族都去掉,同时把样本数量大于20,000的DGA家族域名进行抽样并取值为20,000,于是组成了Dataset01数据集中正样本。另一方面,考虑到每日庞大的访问量,Alexa数据中域名在各种DGA域名识别研究中均被看作非DGA的合法域名,同时为了匹配正样本数量方便模型的训练,因此需对Alexa域名进行抽样选取,把抽样后的样本作为0Dataset 01的负样本。如表2所示:本发明专利对Dataset01数据集做了统计分析,包括各类样本的数量、最大域名的长度、最短域名的长度、每一个域名的类别所使用的不同字符数量,这些统计为本发明专利后续数据处理提供支撑。
表2.Dataset 01数据集统计
4.2.2 Dataset 02
本发明专利不仅收集真实网络环境下的DGA域名样本,同时还通过域名生成算法生成DGA域名样本并和Alexa中域名作为合法域名一起构成数据集Dataset 02。本发明专利从互联网中收集了主流的域名生成算法(4),然后根据不同域名生成算法,按照其满足相应条件生成33种不同家族的DGA域名。并使用图4的Treemap来表示各个家族数量。同样为了匹配DGA样本的数量本发明专利对Alexa中域名进行样本抽取值600,000。
对已获得的Dataset 01和Dataset 02数据集分别需要进一步的划分训练集和测试集。训练集是让模型进行学习所使用的数据,测试集是为了验证所学习到模型的性能。训练集和测试集划分采用的比例是8:2。
4.3数据处理
本发明专利所提出SW-DRN的模型只能处理经过数值化的张量,而不能够直接处理字符形式的数据。然而在自然语言处理领域中,针对这一问题常常采用词向量的技术。首先需要对一条句子进行分词处理得到独立的单词,然后将其单词向量化,并使用one-hot编码将单词编码为长度为V的向量。其中V为词典的大小,它的值依据语料库中所有出现过不同单词个数。经过one-hot编码后,词典内所有的单词都用向量(o1,o2,...,oV)来表示,在这V个元素中只有一个元素为1,其余元素都为0。由于one-hot编码向量维度为词典大小V,如果直接使用one-hot编码后的向量输入到深度学习模型中,将会导致模型的参数量巨大且数据稀疏的问题。同时one-hot编码忽略了单词与单词之间的存在的语义关系,这将会导致模型训练的效果较差。
考虑到直接将one-hot编码后的向量输入深度学习模型的影响,因此需要将one-hot编码后的向量做进一步处理。于是引入了词嵌入层,词嵌入层将会为每一个单词或者短语生成词向量。词向量是每个单词映射到维度比V低得多的实数域上的向量,且不同维度包含不同语义信息。实际上词嵌入层也是对one-hot向量的维度压缩,把高维稀疏向量压缩成低维稠密向量,减少计算的参数量。常见的自然语言处理任务中,常使用Word2Vec等方法生成词向量。
在DGA域名检测问题中,虽然合法的域名都是具有一定语义能够使用词向量表示,但是大量的DGA域名是由看似无规律的杂乱的字符组成,其域名大多并不是一个自然语言中存在的单词,因此直接使用Word2Vec等词嵌入方式难以表达。为了解决这一问题,本发明专利采用了char-level方式,即把域名中每个字符看作一个独立的’词’,针对每个字符生成一个字符向量。一个完整的域名记为X,公式(12)表示X的组成,c表示字符。
X=(c1,c2,c3,...,cL) (12)
ci表示:域名中第i个的字符;
其中定义L为域名的长度,在本发明专利中数据处理都固定域名长度,即最大域名长度。当DGA域名样本长度不足L时,则从字符串末端进行0填充。当DGA域名样本长度超过L时,则采用尾截断方式。
通过对域名的命名规则了解,也同时发现域名对大小写字符不敏感,于是需要把所有域名中大写字符都转成小写字符,则输入的字符为’abcdefghijklmnopqrstuvwxyz0123456789-.’,共计38个字符,用V1表示该字符集词典。然后使用该字符集词典建立一个维度为V1=38维的one-hot编码映射,如公式(13)所示:
最后把one-hot编码输入到embedding layer,进行维度压缩。
4.4衡量指标
文本所提出SW-DRN的架构如图2所示,模型具有二分类和多分类的任务,二分类对是否是DGA域名样本做出判断,而多分类是进一步对DGA域名进行家族类别区分。对于一个多分类的问题通常可以拆解为多个二分类问题。表3是二分类混淆矩阵。
表3.分类结果混淆矩阵
1)TP:实际DGA归类为DGA;
TN:实际合法记录归类为合法记录;
FP:实际的合法记录被归类为DGA,这种情况也被称为假警报;
FN:实际的DGA被归类为合法记录。
本发明专利将使用以下指标来评估本发明专利所提出SW-DRN模型的性能。
准确率:
查准率:
召回率(检测率):
在多分类任务中,把一个多分类的任务拆分为K个二分类任务,则有K个二分类的混淆矩阵,于是计算查准率、召回率和F-score时就有两种不同方式,分别为’macro’和’micro’。
‘Macro’计算方法是先在各个混淆矩阵上分别计算出查准率和召回率记为(precisioni,recalli),再计算平均值,最后计算macro_P、macro_R以及macro_F-score,计算的公式如下所示:
除了’macro’还有’micro’的计算方式,它是先将各个混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,并分别记为
在基于这些平均值计算micro_P、micro_R以及micro_F-score,计算公式如下所示:
不论是macro_F-score还是micro_F-score都是由相应的查准率和检测率两个因素平衡构成的综合因子,这是有效评价一个模型综合检测的有效性度量。其中,β是权重因子,且在本发明专利的值均取1。
4.5 Comparative Model Analysis
本发明专利提出基于字符级滑动窗口的深度残差网络模型用于DGA域名的检测,并在真实网络环境内收集DGA域名构建数据集Dataset 01和通过域名生成算法产生的DGA域名定义为Dataset02,来证明所提出的模型的性能比先前的研究方法好。同时为了减缓因数据集中某一些类别样本数量偏少,导致数据集出现严重不平衡的问题。本发明专利本对数据进行欠采样,即数量少的类别保持不变,而数量多的类别需要进行数据抽样。
在Dataset 01和Dataset 02数据集上的二分类和多分类的实验,本发明专利均采用相同的对比模型。本发明专利采用对比实验模型共计5个,分别是LSTM、GRU、CNN-LSTM、Shallow-CNN、Attention-LSTM。其中比较经典循环神经网络LSTM以及改进GRU模型都在自然语言处理领域中的文本分类、机器翻译、文本摘要等多项任务取得了不错的成绩。后续有相关研究人员提出了具有注意力机制的LSTM,它能集中注意力关注重要特征,而对任务不重要的特征选择忽略。后续又有研究人员发现一维卷积神经网络在多项自然语言处理任务中优于循环神经网络,并且卷积神经网络在GPU加速训练速度比时序循环神经网络快。在第二部分相关工作可知,DGA域名二分类和多分类的检测使用机器学习模型明显没有使用深度学习模型效果好,原因在于使用机器学习模型时需要人为的进行手工特征提取,增加操作复杂难度,对安全研究人员要求较高。
而深度学习模型可以自动对数据进行特征提取,大大提高效率。因此本发明专利实验都选取5个深度学习模型作为所提出SW-DRN模型进行对比实验。
本发明专利的实验结果均是模型在测试集上的表现。本节实验内容主要对所提出的SW-DRN和实验对照组模型在数据集Dataset 01和Dataset 02二分类和多分类结果,并用表格形式呈现。二分类结果在表4、5,其中除了Acc、precision、recall、F-score还增加了AUC的评估,依此从多维度来评估SW-DRN模型的性能。多分类结果在表6、7,由于表格限制的原因导致不能展示所有模型的评估,因此本发明专利挑选了三个具有代表性的评估指标分别为precision(简写为prec)、recall(recall在DGA域名检测也称Detection Rate,DR)、F-score。不论是二分类还是多分类模型的评估,其相应的数值均在[0-1]之间,且这些评估指标的值越高代表模型的性能越优异,但这些评估指标往往不能单独作为评估模型的标准,需要综合考量。本发明专利为了数据直观展示,采用百分数作为评估的单位。
在Dataset 01数据集上的二分类结果如表4所示。从中可知本发明专利提出的SW-GRU模型和对比模型在5个评估指标上都取得不错的成绩。说明深度学习模型在DGA域名检测中具有非常优秀的性能。由于Dataset 01数据集中DGA和合法域名的特征相对容易区分,且在各个性能指标均在99%的范围,使本发明专利所提出SW-DRN与其他对比模型在二分类任务上取得了微弱的领先。但这并不能说明本发明专利所提出SW-DRN不存在优势,Dataset01数据集测试集样本数量较大,在综合评估指标F-score上SW-DRN模型比对照模型中最优的Attention-LSTM高0.06%,而这部分样本恰恰是其他模型难以区分部分。SW-DRN模型不仅使用多尺寸的窗口采集原始特征信息,还设计比较深且带有残差的卷积神经网络,使得模型能够抽取出非常抽象、高层次的特征信息,能够把看似高随机性的DGA域名显著的区分开。
表4.在Dataset 01二分类结果,单位为百分数(%)
Model |
Acc |
precision |
recall |
F-score |
AUC |
LSTM |
99.13 |
99.13 |
99.12 |
99.12 |
99.12 |
GRU |
98.81 |
98.80 |
98.77 |
98.79 |
98.77 |
CNN-LSTM |
99.08 |
99.07 |
99.07 |
99.06 |
99.06 |
Shallow-CNN |
98.65 |
98.65 |
98.61 |
98.63 |
98.61 |
Attention-LSTM |
99.14 |
99.13 |
99.13 |
99.13 |
99.13 |
SW-DRN |
99.20 |
99.19 |
99.19 |
99.19 |
99.19 |
表5展示各个模型在Dataset 02数据集上评估结果。本发明专利所提出的SW-DRN模型在5个性能指标上都领先于对比模型。但同样得指出所提出SW-DRN模型并没有比其他模型在性能上胜出太多,其中LSTM和CNN-LSTM模型仅次于SW-DRN模型。SW-DRN模型在Dataset 02数据集的性能并没有达到数据集Dataset 01那样好的成绩,主要是Dataset 02数据集中DGA家族数量更多,所覆盖类别更全面。
表5.在Dataset 02二分类结果对比,单位为百分数(%)
Model |
Acc |
precision |
recall |
F-Score |
AUC |
LSTM |
97.35 |
97.36 |
97.36 |
97.35 |
97.36 |
GRU |
96.14 |
96.19 |
96.17 |
96.14 |
96.17 |
CNN-LSTM |
97.21 |
97.21 |
97.22 |
97.21 |
97.23 |
Shallow-CNN |
96.92 |
96.93 |
96.93 |
96.92 |
96.93 |
Attention-LSTM |
92.42 |
92.45 |
92.44 |
92.42 |
92.44 |
SW-DRN |
97.71 |
97.72 |
97.72 |
97.71 |
97.73 |
表6.Dataset 01多分类结果,单位为百分数(%)
表7.Dataset 02多分类结果,单位为百分数(%)
在DGA域名的多分类实验中,分类模型需要对DGA各个家族域名进行详细分类检测。本发明专利所提出SW-DRN和对照模型在具有21种DGA域名的数据集Dataset 01上的3种评价指标的实验结果如表6所示。根据实验结果可以发现,SW-DRN模型在多分类整体评估指标macro和micro的F-score(平衡precision与recall的综合指标)上,分别比对照模型高出了4.8%和1.14%。同时对表内数据进行分析发现,所提出SW-DRN模型在大多数DGA域名家族上都取得领先的成绩,即使在某一些DGA家族上未能超越对比模型,但在性能上紧跟其后。再通过表6中不同模型在每一类DGA域名检测表现,发现其中LSTM、GRU、LSTM-Attention、CNN-LSTM模型均在小样本域名家族识别出现了零检测的现象,这意味着上述这4个对照模型在评估指标上出现0值的DGA家族不能识别。出现对某些DGA家族的零检测现象,主要原因在于该样本的数量在数据集中占比太小,导致数据不平衡问题。虽然本发明专利对数据集Dataset 01进行欠采样,但依旧无法彻底解决这个在深度学习中一直以来存在的问题,其因在于某些类别数据收集非常困难。而本发明专利所提出的SW-DRN模型能够很好解决小样本识别问题,该模型在小样本识别不仅优于现在已有的基于深度学习的DGA域名检测方法,而且对于shifu、qadars、chinad、dyre这4种小样本DGA家族上的F-score的值均超过98%,达到了非常不错检测效果。令SW-DRN模型取得优异表现主要在于,首先该模型在字符级嵌入层上采用多尺寸滑动窗口的卷积核,通过使用不同大小的卷积核,可以感知不同视野下的数据,以此能够捕获非常丰富原始特征信息;然后深度残差网络以更高维度、更为复杂方式拟合原始特征数据;最后把最终提取到抽象、高层级的特征分别判断DGA的家族类型。
接下来将分析本发明专利所提出SW-DRN模型和对照模型在数据集Dataset 02多分类性能,其实验结果如表7所示。由于Dataset 02数据集是依靠域名生成算法构建的,不受数据采集困难的问题,于是选择33种不同DGA算法用于生成相应的域名。从实验表7数据不难发现,本发明专利提出SW-DRN模型依旧能够比对照模型在整体多分类指标上macro与micro的F-score上高出3.34%,3.49%。通过实验数据对照发现对照的LSTM、GRU、LSTM-Attention、CNN-LSTM模型也出现在某些DGA家族上零检测情况。这其中的对比模型如LSTM、GRU、CNN-LSTM,零检测情况不仅出现在小样本的DGA家族上,而且同时出现在dircrypt、nymaim、fobber等样本数量充足DGA家族。原因在于目前基于深度学习的DGA域名检测模型,对dircrypt、nymaim、fobber具有高随机性,且相似的DGA家族区分非常困难。而本发明专利所提出SW-DRN模型在33类DGA家族上均未出现零检测情况,同时对大多数类检测情况都比较好,只有极少数类在评估指标上未能到达理想的分数。
4.6模型和损失的深度
本发明专利所提出SW-DRN模型的深度取决于残差块的内部卷积层数和模型中卷积重复模块的次数。本发明专利取重复次数为固定值N=4,因此模型深度直接由残差块的内部卷积数量决定。通过增加或减少在残差块内的卷积层来增减SW-DRN模型层数,本发明专利把SW-DRN模型的层数定为9,17,29,49层,并在Dataset 01和Dataset 02数据集上分别进行二分类和多分类实验。实验的结果如图5所示,分别对9,17,29,49层的SW-DRN模型在Acc、precision、recall、F-score评估指标的展示。通过实验结果图5可知,当模型层从9到17再到29时,模型的各个指标都在逐渐递增,当层数在49层时模型的性能提升几乎停滞了,此时如果再继续增加模型的深度会造成过拟合且可能直接会导致模型性能的下降。因此最终本发明专利选择一个最优模型层数为29层。
本发明专利使用交叉熵损失函数如公式(11)所示,来计算模型预测值与真实之间损失值,梯度反向传播更新模型参数,依次让模型进行学习。如图6所示,左边图是对照模型的训练时每一个epoch下的损失值走势,右边图是不同网络层数的SW-DRN模型训练中损失图态势。本发明专利对照模型第一个epoch损失值都比较高,都大于2.7,随着模型迭代训练,损失值逐渐开始下降,模型的性能逐渐提升,但是当模型过了50epoch后,损失下降变得缓慢了,最后到100epoch后,损失几乎不会继续下降,已经到达平稳期,且对照模型最终损失值都在2.4以上。同时结合在数据集上二分类和多分类实验结果可知,模型在训练时损失值越低,那么模型在分类结果往往比较好。右边的SW-DRN模型训练损失图刚好证明这一点,SW-DRN模型的第一个epoch损失值低于0.5,而后续在1-100个epoch之间损失值随着模型不断学习逐渐下降,然后101-200是平稳期。SW-DRN最终训练的得到模型损失值非常小,说明模型对训练数据做了良好的学习,因此模型在测试集上表现得非常优异。进一步对右图SW-DRN模型训练的损失图分析,发现不同层数之间损失下降速度存在区别。在前50epoch时层数越少模型损失下降速度越快,这是因为层数越少模型参数更少,模型更新梯度大。随着epoch的增加,层数多SW-DRN模型依靠较强拟合能力会超过层数少SW-DRN模型。
通过对比实验的分析,所提出的SW-DRN模型不仅在二分类任务优于其他模型,而且在多分类任务中也取得惊人的成绩,特别是在小样本的DGA域名家族识别和具有字符随机性较高域名识别、以及相似度较高DGA域名之间识别具有明显的优势。其因在于SW-DRN模型通过区域卷积的方式获取多个尺度的感受视野,极大丰富了提取到的特征;同时把这些特征输入到可变长的深度残差神经网络中更一步进行复杂、非线性变换。
本发明专利实验数据Dataset 01内的DGA域名家族由于其部分类别收集难度大,即所获得极少量DGA家族数据不足以用于模型训练,导致不能充分获得目前全部主流DGA家族域名。为此本发明专利通过DGA域名算法合成Dataset 02用于和Dataset 01对比。通过在Dataset 02实验可知,所提出SW-DRN模型在更多DGA域名家族类别上识别优于其他对照模型,表现出SW-DRN模型强大分类性能。虽然本发明专利所提出SW-DRN模型与其他模型在小样本DGA域名家族识别具有一定的优势,但是SW-DRN模型并不能完全把所有小样本家族识别率达到其他家族那样高。原因分为两种,第一,不论是基于机器学习或者深度学习的DGA域名的检测方法,数据类别间不平衡导致的问题并不能完全解决,模型依靠数据训练获得知识,在训练中模型会偏向数据量多样本类别学习,导致模型对小样本类别识别性能变差;第二,域名字符串随机性较高,单单使用域名字符串的信息很难判断其DGA家族类别,例如dircrypt、proslikefan、qakbot、nymaim、pykspa,并且在这些类DGA域名中存在域名相似度高导致难以区分。
在日益复杂的网络世界中,防止僵尸网络内的命令控制服务器和僵尸主机的之间DGA域名解析连接是一个重要的课题,为此本发明专利提出了一种基于字符级滑动窗口的深度残差神经网络模型(SW-DRN)。通过实验证明,所提出SW-DRN模型不仅在二分类任务上优于对照模型,即分别在Dataset 01和Dataset 02的F-score指标达到了99.19%和97.71%。同时SW-DRN模型在多分类任务中取得当前最优异的成绩,且针对小样本DGA域名家族以及对高随机性、易混淆的DGA域名之间识别相比当前已有的DGA域名分类模型做了更进一步提升,在macro F-score评估指标上提高了3.34%和4.8%。本发明专利还对提出的SW-DRN模型进一步实验,通过可変长的残差模块实现SW-DRN不同的深度探索,通过图5发现,当模型深度为29层时具有最优的性能。最后通过图6的训练的Loss图可知,本发明专利所提出SW-DRN模型对数据具有较强的学习能力,以及很强的泛化能力。尽管本发明专利所提出模型已经各个评估指标上取得了不错的成绩,但承认它并不完美,还有进一步的改进空间,尤其针对DGA域名检测能否实时处理数据对当今网络节点非常重要,这也正是我们下一步所需要做的工作。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。