APP下载

融合注意力机制与并行混合网络的DGA域名检测

2022-09-24刘立婷欧毓毅

计算机与现代化 2022年9期
关键词:域名字符注意力

刘立婷,欧毓毅

(广东工业大学计算机学院,广东 广州 510006)

0 引 言

僵尸网络在各种网络安全威胁中扮演着重要的角色,这些安全威胁包括DDoS攻击、垃圾邮件、信息盗窃等。为了有效地实施恶意行为,僵尸网络常利用域名生成算法(Domain Generation Algorithm, DGA)以伪随机的方式生成大量的域名,攻击者只需从中选取少量域名进行注册即可与C&C(Command and Control)服务器进行通信。DGA域名具有数量庞大和灵活性强的特点,这增加了网络安全管理人员检测网络可疑行为和维护网络安全的难度[1-3]。

随着DGA域名检测方法的不断完善,新的DGA域名家族及其变体也层出不穷。不同DGA域名家族所攻击的对象不同,如CryptoLocker是一种勒索软件,该软件在感染计算机后,会自动锁定计算机桌面和加密所有文档资料,导致用户无法正常使用[4];Conficker针对 Windows 操作系统的漏洞进行攻击,具有蠕虫病毒和下载病毒等多种属性[5];Ramnit是一种拥有多种传播方式的蠕虫病毒,它可以监控感染主机的网络访问活动以及扫描和浏览服务器中的文件系统以获取敏感信息等[6]。不同的恶意攻击往往会使用不同的域名生成算法,为了帮助安全人员快速响应攻击行为、采取针对措施,不仅需要检测出DGA域名,更需要精确区分出不同的DGA域名家族。

1 相关工作

早期,研究者们采用黑白名单的方法来检测DGA域名,但此类方法仅能识别已收集的DGA域名,无法对整个DGA家族做出针对性防御[7]。为了克服黑名单检测方法的缺点,研究者们开始采用基于特征工程的机器学习方法检测DGA域名,此类方法常用的特征为:基于域名字符统计特征和DNS流量特征[8-10]。文献[11]使用语义分析方法、词嵌入和词性来分析词间和域间的相关性,最后利用集成分类器进行分类。文献[12]提出了一种掩码N-grams,其中字符组成N-grams被映射为辅音、元音、数字和非字母数字,并使用随机森林进行分类。文献[13]提出了一种基于DNS查询数据的DGA域名检测方法。以上基于机器学习的检测方法虽然一定程度上提高了恶意域名检测率和分类效果,但是需要消耗大量时间和人力来提取域名特征,并且人工提取的特征很容易被有针对性的DGA绕过,不足以应对DGA域名的动态特性。

深度学习的发展为DGA域名的检测提供了新思路,它无须手工提取特征,模型可以自学习域名特征,不仅实现了端到端的实时检测,而且进一步提高了DGA域名检测率。文献[14]提出了一种基于长短期记忆(Long Short-Term Memory, LSTM)神经网络的DGA域名检测方法,该检方法能够自动提取域名序列的时序特征,且性能明显优于传统机器学习方法。在此基础上,文献[15]提出了一种结合LSTM和注意力机制的DGA域名分类模型,该模型考虑了域名中不同位置字符的权重,比单一的LSTM算法具有更高的检测率,但是在多分类任务中,模型对CryptoLocker、Locky、Necurs和Ramnit这4类DGA域名分类效果不佳。针对LSTM训练和检测速度慢的问题,文献[16]提出了一种基于实时深度学习的恶意域名检测系统fast3DS,该系统基于轻量级的全卷积检测模型,采用数据处理和模型推理加速技术的检测管道实现了实时检测。文献[17]提出了一种混合神经模型Bilbo,该模型首次将CNN和LSTM并行用于检测DGA域名。相比于单一模型,Bilbo对3种基于字典的DGA家族分类效果更佳。但该模型仅对3个DGA域名家族进行检测,未对其他类型DGA家族进行讨论。文献[18]提出了一种基于LSTM和数量相关优化方法相结合的检测模型(LSTM.PQDO),实现了重采样比例的动态优化,提高了在数据量不平衡情况下恶意域名的检测率,但在多分类任务中仍有12个DGA家族的分类F1值低于0.5。文献[19]在向量嵌入阶段采用字符级和单词级相结合的嵌入方式,使用动态卷积算法进行检测,有效地提升了检测效率。文献[20]将BiGRU与MCNN串连构建BiGRU-MCNN,先用BiGRU学习字符间的依赖关系,再利用MCNN的不同网络通道从多方面学习,以提取DGA域名的深层隐藏信息。文献[21]结合字符级词向量和双字母组词向量,提出了一种基于混合词向量的DGA域名检测方法,该检测方法相比于只基于字符级词向量的模型有更好的分类性能,但是在多分类任务中仍存在3类零检出的DGA域名。

综上所述,虽然现有研究在区分良性域名和DGA域名的检测任务上表现良好,但由于DGA家族类别多、部分家族字符分布相似、样本数据不平衡等原因,现有方法难以充分捕获域名字符串深层语义信息,在区分不同DGA域名家族的多分类任务中性能较差。

针对上述问题,本文利用深层金字塔卷积神经网络(Deep Pyramid Convolution Neural Networks, DPCNN)较强的深层特征提取能力,并采用SENet[22](Squeeze-and-Excitation Networks)进行优化构建DPCNN-SE,SENet的通道注意力机制能够学习通道间依赖关系,从而抑制无用特征,加强重要特征的传递;同时,将双向LSTM网络(Bidirectional Long Short-Term Memory Network, BiLSTM)和自注意力机制(Self-attention Mechanism, SM)结合构建时序模型BiLSTM-SA提取时序特征,避免单一卷积神经网络忽略DGA域名中上下文语义信息的问题,最后将2种特征融合后进行DGA域名检测。实验结果验证了本文方法的有效性,与现有深度学习方法相比,在多项评价指标中均有更优表现。

2 融合注意力机制与并行混合网络的DGA域名检测

本文提出的融合注意力机制与并行混合网络的DGA域名检测方法网络结构如图1所示,由词嵌入层、DPCNN-SE、BiLSTM-SA、全连接层4个部分组成。首先,在嵌入层对域名数据进行预处理并向量化,以便输入网络模型进行训练;接着进行特征提取,由DPCNN-SE和BiLSTM-SA分别提取域名序列的深层空间语义特征和上下文的时序依赖特征;将BiLSTM-SA和DPCNN-SE提取的特征向量进行融合,并送入全连接层完成最终的分类任务。

图1 模型总体结构图

2.1 词嵌入层

由于深度学习模型无法直接处理字符串数据,因此需在词嵌入层将域名数据转换成可处理的数字矩阵。

一条完整的域名由英文句号“.”分隔成多个部分,例如“baidu.com”“360.cn”,“com”与“cn”为顶级域名,“baidu”和“360”为二级域名,以此类推,域名最左边还可以有三级、四级等次级域名。每条域名可以使用26个英文字母a~z(不区分大小写)、数字0~9和英文连词符“-”进行组合,加上用于域名分隔的“.”,域名由“abcdefghijklmnopqrstuvwxyz0123456789-.”这38种字符组成。依据上述的域名数据特点构建一个字符字典:将域名中所有38种合法字符“abcdefghijklmnopqrstuvwxyz0123456789-.”对应为1~39的数字,利用字典将域名字符串转化为向量,例如“baidu.com”转化为字符向量[2,1,9,4,21,38,3,15,13]。

为了保证模型输入的形状一致,需将所有字符向量长度统一处理为l,超出l的进行截断,不足l则使用0进行填充,本文设置l为64。最后,把预处理后的域名字符向量映射到浮点数字矩阵E中,E再输入深度学习模型中进行训练,本文设置E的维度为l×d,其中嵌入维度d为32。

2.2 DPCNN-SE网络模型

为了解决普通CNN无法有效捕获域名序列的长距离依赖,造成特征丢失的问题,本文将DPCNN[22]引入到域名检测任务中。DPCNN使用等长卷积替代普通卷积,等长卷积的方式能获取每个词位上更高级、更准确的上下文信息;同时,DPCNN固定了特征图的数量,并在每次卷积操作后使用1/2池化,不仅使得每个卷积层的计算量减半,而且增大了模型感知长文本片段的能力,提取更多高维度语义信息。本文利用SENet的通道注意力机制改进DPCNN,构建DPCNN-SE网络,其网络结构如图2所示。

图2 DPCNN-SE的结构

DPCNN-SE由1个组合卷积块和多个叠加块组成,其中,1个叠加块由1个1/2池化、2个等长卷积层、1个SENet组成。DPCNN-SE的具体实现细节如下:

1)组合卷积。

设置卷积步长为1,大小分别为2×32、3×32、4×32的卷积核,对词嵌入层输出的词向量矩阵E进行组合卷积,可以提取域名不同字符组合间的特征图作为嵌入向量,便于后续高级特征的提取。

2)1/2池化。

DPCNN-SE在每次卷积后进行池化操作,池化时固定特征图数量不变,采用卷积核大小为3,步长为2的Max-Pooling进行下采样。每次1/2池化后,序列长度减半,计算量随之减半,形成一个金字塔的形状,而每个词位能够感知的文本片段长度翻倍。

3)等长卷积。

4)残差连接。

残差连接用于解决梯度破碎或梯度爆炸问题,能有效避免深层网的退化问题[24]。在DPCNN-SE中组合卷积后的文本序列被直接无损连接到叠加块上,并与Pre-activation后的序列进行加和;同时,在每个叠加块的池化前也引入残差连接,这能够有效缓解梯度消散的问题,确保特征的有效传递。

5)SENet。

DPCNN-SE中每个叠加块最后一层为SENet,SENet通过激励压缩的方式计算特征通道间的依赖,为特征通道重新分配权重,从而抑制与当前DGA家族无关或不重要的特征,挑选出最具代表性的深层局部特征。SENet的结构如图3所示。

图3 SENet的结构

SENet计算和分配特征通道权重的具体过程:输入特征图X维度为c×h×w,其中c为通道数,h、w分别为单个通道的高和宽。首先经过1个全局平均池化层Fsq,将单个通道的h×w个特征编码为一个全局特征:

(1)

接着,使用Fex运算求得各个通道间的权重:

s=Fex(z,W)=σ(g(z,W))=σ(W2ReLU(W1z))

(2)

X′=Fscale(Xc,sc)=sc·Xc

(3)

最后,将带有权重信息的X′输入到下一个叠加块中。

2.3 BiLSTM-SA网络模型

基于卷积神经网络构建的DPCNN-SE着重于提取深层空间局部特征,而LSTM可以学习DGA域名的时间序列特征。传统的LSTM网络只能依据之前时刻的时序信息来预测下一时刻的输出,缺乏学习域名序列逆向关联信息的能力。本文对传统LSTM进行改进,把自注意力机制融合到双向LSTM网络中,构建用于域名时序特征提取的BiLSTM-SA模型,结构如图4所示。

图4 BiLSTM-SA的结构

1)BiLSTM。

BiLSTM由多个LSTM门控制循环单元组成,每个LSTM门控制单元由遗忘门ft、输入门it、输出门ot组成,式(4)~式(9)为单个LSTM单元更新的过程,其中xt为LSTM当前时刻t的输入;ht-1、ht分别是上一个单元和本单元的隐藏层状态;Wf、Wi、Wc,Wo为各自对应的权重矩阵;bf、bi、bc、bo为各自对应的偏置;σ为Sigmoid激活函数,tanh为双曲正切函数。

ft=σ(Wf·[ht-1,xt]+bf)

(4)

it=σ(Wi·[ht-1,xt]+bi)

(5)

(6)

(7)

ot=σ(Wo·[ht-1,xt]+bo)

(8)

ht=ot×tanh(ct)

(9)

每个LSTM门控循环单元都会使用LSTM的当前输入xt和上一个单元的隐藏层状态ht-1来更新自身状态,以完成整个LSTM模型的更新。BiLSTM层的最终输出由前向LSTM和逆向LSTM的输出共同决定,即将2个方向的LSTM单元输出相加。在t时刻时,BiLSTM的输出表示为:

ht=h1t+h2t

(10)

2)自注意力机制。

自注意力机制用于对域名序列进行重新加权,学习域名字符组合在域名中的重要程度,挑选出关键的全局时序特征,有效增强捕获关键特征的能力。首先,根据式(11)和式(12)得到注意力权重值分别为α1,α2,α3,…,αn:

Source(s,hi)=vTtanh(w1s+w2hi+bi)

(11)

(12)

其中,Source是相似度计算函数,s为随机初始化向量,随着模型训练而更新,vT、w1、w2为权值矩阵,bi为偏置项。式(12)利用Softmax函数对注意力权重进行概率化,得到注意力权重分布值。最后,使用注意力权重αi对hi进行加权,得到含有注意力概率分布的域名表示向量ci,具体计算公式为:

(13)

2.4 全连接层

全连接层将DPCNN-SE和BiLSTM-SA的输出进行特征融合,融合后的域名特征经隐藏层激活后,完成最终的分类任务。本文的域名分类任务有2种:一种是判断输入域名是DGA域名还是正常域名的二分类任务,即DGA域名的检测;一种是把DGA域名归类到具体DGA家族的多分类任务。2个任务的激活函数均为Softmax,计算公式为:

(14)

其中,n为分类的类别数。

3 实验结果与分析

本文实验在Windows10系统上进行,硬件环境处理器为AMD ryzen3 2200g@3.5 GHz,运行内存为16 GB和用于加速模型训练的GPU:GeForceRTX 1060 6 GB GPU。模型的实现基于Pytorch和CUDA深度学习框架,版本分别是1.8.0和11.1。具体实验的仿真参数如表1所示。

表1 仿真参数设置

3.1 数据集

本文实验采用的数据集由DGA域名数据集和良性域名数据集2个部分数据组成。恶意域名数据集来源于360Netlab网站公开的DGA域名数据,本文从中选取了53273条恶意域名作为DGA域名数据集,其中包含25种数据量较为充足的DGA域名家族。另外,良性域名数据集则来自Alexa网站中的访问量排名前53273的域名。良性域名与DGA域名比例为1∶1,将2组数据集合并后作为本文实验的数据集,共计106546条,具体分布如表2所示。将数据集以8∶1∶1的比例随机抽取后,分别设置为训练集、验证集和测试集,其中,训练数据用于训练深度学习模型;验证集用于衡量模型在训练过程中的性能;测试集用于评估训练完成后模型的性能。

表2 26类域名数量

3.2 模型评价指标

本文实验采用准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值以及ROC曲线作为模型评价指标。其中准确率代表预测正确的样本数占样本总数的比率;精确率代表预测正确的正类占模型预测为正类总数比率;召回率代表预测正确的正类占所有正类总数的比率;F1值是精确度和召回率的谐波平均值,只有当精确率和召回率都很高时,F1值才会高;ROC(Receiver Operating Characteristic, ROC)曲线将真阳率(True Positive Rate, TPR)和假阳率(False Positive Rate, FPR)以图示的方法结合起来,可准确地反映TPR和FPR的关系,是判断分类器综合性能的代表。模型评价指标的计算公式如下:

(15)

(16)

(17)

(18)

(19)

其中,TP是真正类的数量,FP是假正类的数量,TN是真负类的数量,FN是假负类的数量。

3.3 消融实验

为全面验证本文模型各个部分的性能,将本文模型分解,进行消融实验。对比方法有DPCNN、BiLSTM、DPCNN-SE、BiLSTM-SA、DPCNN-SE+BiLSTM-SA(本文方法),实验结果如图5所示。

图5 对于模型结构进行的消融实验结果

从图5中可知,相比原始的DPCNN和BiLSTM,加入了通道注意力(SENet)的DPCNN-SE和融合了自注意力的BiLSTM-SA在精确率、召回率、F1和准确率上均有更好的表现,这说明2种注意力机制能够聚焦域名的关键特征,以更好地区分出不同DGA家族。而本文方法将DPCNN-SE、BiLSTM-SA这2种网络提取的关键信息进行融合,有效利用了重要的空间局部特征和时序依赖特征,进一步提高了模型的分类能力,在5种模型中表现最优。

3.4 对比实验设计

为了验证本文方法相较现有DGA域名检测方法的有效性,实验中设置了CNN[25]、LSTM[14],Bilbo[17]、BiGRU-MCNN[20]这4个模型作为对比模型,其中CNN、LSTM为单一模型,Bilbo和BiGRU-MCNN为基于2种网络构建的混合模型:

1)CNN模型,采用文献[25]中的网络结构,利用卷积核在域名序列上滑动以获取序列特征信息,特征信息经最大池化层后输入到分类层,实现对恶意域名的检测。

2)LSTM模型,采用文献[14]中的网络结构,使用多个LSTM门控制单元充分提取域名序列的长依赖关系,最后通过分类层进行检测和分类。

3)Bilbo模型,采用文献[17]中的网络结构,并行单向LSTM和浅层CNN组成特征提取模块,最后通过分类层输出分类结果。

4)BiGRU-MCNN模型,采用文献[20]提出的串行网络结构,先利用双向的GRU学习的字符间依赖,再输入多通道CNN提取DGA域名的局部特征。

3.5 二分类性能比较

在相同实验环境和数据集的设置下,将本文方法与4个对比模型进行对比,每个模型在二分类任务中的Accuracy、Precision、Recall以及F1值如图6所示。

图6 5种模型检测性能的比较

由图6可知,在DGA域名的二分类任务(即检测任务)中,5种模型都具有良好的检测性能,4个评价指标均达到95%以上。普通的单一模型CNN和LSTM的检测性能表现较差,而基于2种混合网络构建的Bilbo和BiGRU-MCNN表现较好。相较于对比模型,本文方法的检测性能有着更佳的表现,4个评价指标均达到了96.8%以上。

3.6 多分类性能比较

表3所示为5种模型对不同DGA域名家族的多分类性能比较。与模型在二分类任务中的表现类似,单一模型CNN和LSTM表现较差,并且普通的CNN模型在域名语义信息的提取能力上不如LSTM;Bilbo基于CNN和LSTM构建,在所有评价指标上均超过单一的CNN或单一LSTM模型,主要是因为Bilbo采用了混合模型,对域名的关键信息提取有着积极作用;而BiGRU-MCNN采用了GRU与CNN的串行的混合模型,能在学习字符间全局依赖的基础上进一步学习局部特征,相比普通的CNN、LSTM和Bilbo均有一定提升。

表3 5种模型域名家族分类性能比较

相较于对比模型,本文方法的综合表现最佳,精确率和F1值均达90%以上,与并行的Bilbo模型相比,在精确率、召回率、F1值和准确率上分别提高了8.52个百分点、3.53个百分点、5.97个百分点和1.26个百分点;与串行的BiGRU-MCNN相比,精确率、召回率、F1值和准确率上分别提高了6.22个百分点、0.9个百分点、4.87个百分点和2.23个百分点。这说明本文方法在结合深层金字塔网络和BiLSTM优势的基础上,通过2种注意力机制为网络提取的特征重新赋予权重,有效减少了无用特征的干扰,保留了更多有效信息,从而更好地识别出不同的DGA域名家族。

为了进一步分析模型多分类任务中的性能,表4详细地列出了5种模型对25个DGA域名家族分类结果的F1值,F1值综合了召回率和精确率2个评估指标,能较好地体现模型的整体分类性能。由表4可知,本文方法在对25种DGA域名的多分类任务中,F1值在80%以上的有22种,F1值在95%以上的有12种,F1值在99%以上的有7种。

表4 5种模型多分类F1值对比

相较对比模型,本文方法在25个DGA域名家族分类结果上有21个F1值最高,在剩余的Mydoom、Nymaim、Qadars、Tinba这4个DGA家族中,由于Mydoom训练数据过少,导致模型过拟合,本文方法相较BiGRU-MCNN有一定下降,而Qadars与Tinba的F1值均在94%以上,且与表现最佳模型的差距小于1个百分点。相较4种现有的模型,本文方法的多分类性能综合表现更优。

值得注意的是,由于Nymaim家族采用了基于单词表的生成算法,其字符串构成与良性域名十分相似,且长度较短,因而5种基于字符串特征的端到端模型均无法进行有效识别。

DGA域名家族之间的样本数量存在较大的差异,容易对分类器性能造成影响,ROC曲线不受类别不平衡的影响,能较好地度量分类器的稳定性和泛化能力,ROC曲线下的面积AUC(Area Under Curve)越大,说明模型性能越好。如图7所示,CNN和Bilbo的表现不佳,模型的稳定性较差;BiGRU-MCNN通过先后2步的特征学习,稳定性相较CNN和Bilbo有了明显的提升。而当检测模型TPR达到0.95时,本文方法的ROC曲线表现最佳,AUC达到0.9953,超过了所有对比模型。这说明本文方法能提取域名的高级空间语义信息和时序特征,并通过2种注意力机制挑选出关键特征,降低无关特征的干扰,使得分类器的性能具有更好的鲁棒性和更强的泛化能力。

3.7 模型复杂度比较

表5所示是5种模型的浮点运算次数(FLOPs)、模型参数量(Params)与推理时间。通过表5可知,普通的CNN和LSTM网络采用简单的浅层网络结构,计算复杂度低、推理时间较短;Bilbo、BiGRU-MCNN与本文模型均为融合模型、参数较多、计算量相对较大。但相比Bilbo模型,本文方法的FLOPs、参数量和推理时间分别减少了71.89%、85.21%、44.40%;相较BiGRU-MCNN,本文方法在3个指标上分别减少了65.60%、80.58%、31.90%。这是因为Bilbo与BiGRU-MCNN的CNN部分均使用了较多尺寸的多通道卷积核,这样虽然能获取更多低级特征,但也使模型的计算量变大,而且较难学习高级语义信息;本文方法减少了组合卷积的数量,并引入DPCNN的思想构建更深的CNN分支,通过固定特征图数量和每次池化后计算量减半的方式有效降低了模型复杂度。因此,本文方法不仅能捕获域名的高维度语义信息、提升模型性能,而且具备更低的计算复杂度,相比其他混合模型具有更强的实用性。

表5 5种模型复杂度比较

4 结束语

针对现有方法对DGA域名家族识别效果不佳的问题,本文提出了一种融合注意力机制与并行混合网络的DGA域名检测方法,先建立字符字典将域名字符串表示成向量矩阵,接着构建并行混合网络提取高级局部特征和时序依赖特征,并分别使用通道注意力机制和自注意力机制对2种特征进行重新挑选,最后将2种特征融合进行分类。相比CNN、LSTM、Bilbo、BiGRU-MCNN等深度学习模型,本文方法在精确率、召回率、F1值和ROC曲线下面积等多个评估指标上均有明显优势。

未来的工作将从以下2个方面展开:1)针对Nymaim这类较难识别的隐性DGA域名进行研究,可考虑加入域名DNS流量、IP地址等外部特征作为分类依据;2)针对未知DGA域名家族的检测,现有研究大多仅适用于已知DGA域名家族的识别,在处理未知DGA家族时有可能将其错误分类为已知域名,从而造成误判,如何动态地更新DGA家族数据库,保证模型的可靠性值得进一步研究。

猜你喜欢

域名字符注意力
寻找更强的字符映射管理器
让注意力“飞”回来
字符代表几
一种USB接口字符液晶控制器设计
消失的殖民村庄和神秘字符
如何购买WordPress网站域名及绑定域名
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
腾讯八百万美元收购域名
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家