APP下载

基于深度学习的集成DGA域名检测方法

2018-10-22罗赟骞王艳伟

网络安全与数据管理 2018年10期
关键词:字符串域名字符

罗赟骞,邬 江,王艳伟,杨 鹤

(中电长城网际系统应用有限公司,北京 102209)

0 引言

恶意软件是为了进行未经授权的恶意活动而感染计算机的软件,如僵尸网络、勒索软件、间谍软件等。恶意软件通常与命令和控制中心(Command & Control,C2)之间建立通信连接,从而使控制者通过C2服务器远程控制目标主机。为了提高恶意软件与C2服务器之间通信的可靠性,恶意软件常常采用动态域名生成算法(Domain Generation Algorithm,DGA)自动生成海量域名,然后从中选择一个或多个有效域名解析出IP地址,实现与C2服务器的通信,规避常规的黑名单检测。DGA域名是恶意软件的一个重要特征,对其进行有效检测可以准确、及时地发现恶意软件,对于提升安全检测水平进而提高网络空间安全防护能力具有重要的现实意义。

DGA域名检测经过了黑名单过滤、浅层机器学习检测阶段,正在向深层机器学习检测阶段发展,传统的黑名单检测方法需要人工补充DGA域名,难以适应DGA域名迅速增长带来的挑战[1]。浅层机器学习检测通过精心构造特征,采用浅层机器学习方法构建检测模型,实现对DGA域名的自动化检测。但是,由于需要人工构造特征,要求特征构造者具有丰富的经验,并且当DGA域名变种时,需要对特征进行重新构造。深度学习方法可以自动提取特征,解决了浅层机器学习面临的问题,可以采用该方法实现对DGA域名的有效检测。文献[2]提出采用长短时间记忆网络(Long Short-Term Memory,LSTM)模型实现对DGA域名的检测;文献[3]提出采用集成卷积神经网络(Convolutional Neural Network,CNN)模型对恶意字符串进行检测;文献[4]比较了Alex Net、VGG、Squeeze Net、Inception、Res Net结合迁移学习进行DGA域名检测时的性能;文献[5]采用实际的域名数据,对CNN模型和LSTM模型的检测性能进行了比较。上述检测方法只是采用单种深度学习模型对DGA域名进行检测,然而不同的深度学习模型自动提取特征的角度不同,如果将不同类型的深度学习模型集成在一起,可以从多个角度提取特征,从而提升检测效果。本文将采用CNN模型和循环神经网络(Recurrent Neural Network,RNN)模型相集成的CNN-RNN模型对DGA域名进行检测。

1 CNN-RNN集成检测模型

1.1 CNN模型

CNN模型由卷积层和池化层组成[6]。卷积层具有局部连接和权重共享的特征,可以减少模型的复杂性;池化层可以减小数据量,从而减小参数规模,降低计算复杂度,也可以防止过拟合。CNN模型可以有效地捕捉输入的局部特征。

(1)卷积层

在卷积层中,上一层的特征图被一个可学习的卷积核进行卷积,然后通过一个激活函数,可以得到输出特征图,每个输出特征图可以组合卷积多个输入特征图的值。卷积层的公式为:

(1)

(2)池化层

池化层将生成输入特征图的下采样版本。池化层的公式为:

(2)

1.2 RNN模型

与深度神经网络(Deep Neural Networks,DNN)一样,RNN模型将输入序列x1,x2,x3,…,xt映射为隐含状态序列h1,h2,h3,…,ht。但是,与DNN不同的是,隐含状态ht是通过x1,x2,x3,…,xt的函数进行计算的,而不是由xt单独计算的。将ht置于一个序列的条件上进行计算,而不是在单独的现有输入上进行计算,可以捕获输入数据中的时间特征。RNN模型在理论上很完美,但随着神经网络层数的增加,存在梯度消失或爆炸的问题,在RNN模型基础上改进的LSTM和GRU(Gated Recurrent Unit)等模型解决了这个问题。

(1)LSTM模型

LSTM模型是由许多LSTM单元组成的,一个LSTM单元中包含了输入门、输出门和遗忘门。通过这种特殊结构,使LSTM能够选择输入的哪些信息被遗忘,哪些信息被记住。某时刻t,LSTM单元各组成部分的计算如下[7]:

it=σ(Wixt+Uiht-1+bi)

(3)

ft=σ(Wfxt+Ufht-1+bf)

(4)

(5)

(6)

ot=σ(Woxt+Uoht-1+bo)

(7)

ht=ot⊙tanh(ct)

(8)

其中,xt表示t时刻的输入向量;ht表示隐藏状态;it、ft、ct、ot分别表示输入门、遗忘门、记忆单元状态和输出门;Wi、Wf、Wc、Wo为输入数据的权重矩阵;Ui、Uf、Uc、Uo为隐藏状态的权重矩阵;bi、bf、bc、bo为偏置;σ表示sigmoid激活函数;⊙为元素乘。

(2)GRU模型

GRU模型与LSTM相比,合并了LSTM中的遗忘门和输入门,模型中只存在更新门和重置门,计算如下[8]:

zt=σ(Wzxt+Uzht-1+bz)

(9)

rt=σ(Wrxt+Urht-1+br)

(10)

(11)

(12)

其中,xt表示t时刻的输入向量;ht表示隐藏状态;zt、rt分别表示了更新门、重置门;Wz、Wr、Wh为输入数据的权重矩阵;Uz、Ur、Uh为隐藏状态的权重矩阵;bz、br、bh为偏置;σ表示sigmoid激活函数。

1.3 集成检测模型

CNN-RNN模型由字符嵌入层、特征提取层和分类层三部分组成。字符嵌入层主要实现将输入的字符进行数字化编码,特征提取层结合CNN和RNN模型实现对输入数据特征的自动提取,分类层根据提取的特征使用三层全连接神经网络实现对DGA域名的自动分类预测。其整个模型架构如图1所示。

图1 CNN-RNN集成检测模型

(1)字符嵌入层

字符嵌入层对输入的字符进行预处理,包括字符串填充和截断、字符编码等。字符嵌入层只处理固定长度为L的字符串,如果输入字符串长度大于L,那么需要将超出L的字符串截断;如果输入字符串长度小于L,那么需要将字符串进行补齐。为了能够将字符串应用于神经网络,还需要将输入的单个字符串编码为长度为d的向量;d是一个可变参数,这里取值为128。

(2)特征提取层

特征提取层采用深度学习模型,对字符嵌入层输出的二维矩阵进行自动处理,将高维的输入数据编码为低维的特征编码,保留输入数据中绝大多数的信息。本文在文献[3]的基础上,提出一种结合CNN模型和Bi-RNN模型的集成特征提取模型。

CNN模型采用3种不同长度过滤器的CNN模型检测局部特征,本文使用的过滤器长度为3、4、5,卷积核的数量为256。CNN卷积模型等效于传统的n-grams特征提取。每个CNN模型输出的结果将采用求平均的方法,输出长度为256的一维向量。

Bi-RNN模型常用于自然语言处理,可以实现字符数据的正向和反向处理。与单独的RNN模型相比,Bi-RNN可以捕获更多的时序信息。Bi-RNN模型将输出长度为256的一维向量。

CNN模型和Bi-RNN模型的输出结果将进入融合层,融合层将4个长度为256的一维向量连接成长度为1 024的一维向量。

Bi-RNN模型在实施时采用Bi-LSTM模型和Bi-GRU模型。

(3)分类层

分类层采用3层全连接神经网络对输入特征进行分类预测,判断输入字符串是恶意的还是良性的。模型进行训练时,使用Binary-cross熵衡量分类器的损失值。

(13)

2 实例分析

2.1 数据来源及嵌入层处理

文中使用的数据是文献[2]在github上开源提供的公开数据[9]。恶意域名是模拟DGA算法生成的30多种类型约75万个DGA域名,良性域名是来至Alexa的前100万个域名。实验时,随机抽取11万个DGA域名和11万个良性域名组成22万个样本。

实验时,使用上节中字符嵌入层的方法对输入字符串进行预处理,输入字符的最大编码长度为53,字符的编码长度为128,字符嵌入层输出大小为53×128的矩阵编码数据。

2.2 输入特征提取

将文献[3]中提出的方法作为基线参考,分析比较了本文提出的集成检测模型的性能。比较的三种特征提取模型如表1所示。

表1 三种特征提取模型

表1中CNN(n,m)表示过滤器长度为n,卷积核的数量为m的一维卷积Convolution1D;mean(256)表示对卷积的输出进行axis=1方向的均值计算,输出长度为256的向量;Merge(1 024)表示将第一层中各个深度学习模型的输出连接成长度为1 024位的向量。

2.3 预测输出

采用精度(Precision)、召回率(Recall)、ROC(Receiver Operating Characteristic Curve)评估本文提出的模型的效果。

精度是精确性的度量,指被分为正例的示例与实际正例的比例。精度的计算公式为:

(14)

召回率是覆盖面的度量,度量有多少正例被实际分为正例。召回率的计算公式为:

(15)

ROC实现了对TPR(True Positive Rate)和FPR(False Positive Rate)的权衡度量,TPR和FPR计算如下:

(16)

(17)

ROC是通过对分类器返回分数在不同阈值下计算的TPR和FPR进行评估而产生的。例如,针对某个分类器ROC在0.0~1.0的阈值范围内,计算每个阈值下的FPR和TPR。曲线下面积(Area Under Curve,AUC)是比较ROC曲线的常用单一度量,顾名思义,就是ROC曲线下的面积。AUC=1表示完美的分类,AUC=0.5表示随机的分类。AUC可以对分类性能进行综合评价。

2.4 实验结果分析

实验的硬件运行环境为Intel®CoreTMi7-6700 CPU@3.40 GHz×4,32 GB内存;操作系统为Ubuntu 16.04 LTS;程序开发环境为Anaconda4.4.0,Python版本为2.7.14,Tensorflow版本为1.8.0;使用Keras[10]进行开发,版本为2.1.6。

用于模型的训练样本数据占全部样本数据的80%,用于模型的测试样本数据占20%。模型训练时可以采用HoldOut检验法和交叉验证方法选择最优模型,但由于计算资源有限,在模型训练时采用HoldOut检验法,选择最优模型时使用95%的训练样本数据构建模型,使用5%的训练样本数据进行模型验证。模型训练时,如果模型的AUC值连续5次没有发生变化,就停止训练过程。实验时,分别运行模型10次,获取相关指标的统计值。

三种模型在预测精度、召回率和AUC值比较如表2~表4所示。

由表2~表4可知,从三个预测指标看,CNN-BiLSTM和CNN-BiGRU模型的预测性能要优于文献[3]中的模型,说明CNN-RNN模型的有效性。CNN-BiLSTM模型在精度指标方面要优于CNN-BiGRU模型,在AUC指标方面整体上也优于CNN-BiGRU模型,只是在召回率指标方面略逊于CNN-BiGRU模型。

表2 三种模型的精度比较

表3 三种模型的召回率比较

表4 三种模型的AUC值比较

在模型训练性能方面,文献[3]中CNN-BiLSTM模型和CNN-BiGRU模型的平均训练时间分别为2 880 s、4 484 s、4 428 s。CNN-BiLSTM模型和CNN-BiGRU模型训练时间相近,但远长于文献[1]中模型的训练时间。

3 结论

本文提出了一种将CNN模型和RNN模型相集成的DGA域名检测方法。实验结果表明,这种集成检测方法与原有模型检测方法相比,能够有效提高检测效果,但由于模型构建较复杂,增加了训练时间,下一步的研究工作将考虑对RNN模型进行改进,以减少模型训练时间,如采用SRU(Simple Recurrent Unit)模型。

猜你喜欢

字符串域名字符
基于文本挖掘的语词典研究
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
HBM电子称与西门子S7-200系列PLC自由口通讯
Combosquatting域名抢注的测量研究
如何购买WordPress网站域名及绑定域名
最简单的排序算法(续)
一种新的基于对称性的字符串相似性处理算法
高效的top-k相似字符串查询算法