基于深度卷积神经网络的DGA检测
1. 研究概述
在DGA(域名生成算法)检测领域,为了以最小的架构复杂度实现有效检测,研究者采用了一种仅在卷积层基础上增加少量额外层的网络架构。评估使用的数据集包含51种不同的DGA家族以及来自Alexa语料库和Bambenek数据源的正常域名,数据集中涵盖了两种不同的DGA方案,包括近期出现的基于单词的方案。基于单词的DGA通过拼接一个或多个单词列表中的单词序列生成域名,这种域名看起来不那么随机,检测难度更大。
研究假设一维卷积神经网络(1D - CNN)尽管存在已知局限性,但仍能从不同的DGA生成方案中学习到共同特征,并且评估验证了其检测性能满足现实场景的要求。主要贡献如下:
- 分析了简单1D - CNN学习模型在检测DGA方面的优缺点。
- 在包含51种不同真实恶意软件DGA域名以及来自两个不同来源的正常域名的扩展数据集上对1D - CNN进行了详细评估。
- 与另一种知名的深度学习技术——长短期记忆网络(LSTM)进行了比较。
2. 神经网络架构
本研究使用的神经网络架构是1D - CNN,它主要由三个核心层组成:嵌入层、一维卷积层和全连接密集层。前两层是检测DGA域名问题的关键组件,它们负责学习特征表示,以将数据输入到第三层全连接密集层。完整的神经网络架构还包括处理一维卷积层输出维度的层,以及表示输入域名和输出概率的层。具体架构和使用的激活函数如下表所示:
| 层类型 | 激活函数 |
|---|---|
| 输入层(Input Layer) | – |
| 嵌入层(Embedding) | – |
| 一维卷积层(1D Convolutional) | relu |
| 密集层1(Dense 1) | relu |
| 密集层2(Dense 2) | sigmoid |
2.1 嵌入层
字符嵌入是将长度为l的输入字符序列投影到向量序列$R^{l×d}$中,其中l需根据训练集中序列提供的信息确定,d是表示结果矩阵维度的自由参数。通过在架构中使用嵌入层,神经网络能够高效地学习表示输入数据的最优特征集。
2.2 一维卷积层
一维卷积层是在一个维度上进行卷积操作的网络层,对于DGA检测问题,这个维度就是域名序列的长度。该层由一组卷积滤波器组成,这些滤波器应用于域名的不同部分。例如,一个一维卷积层可以构建256个滤波器(特征),窗口(内核)大小为4,步长为1。它会选择4个字符的组(也称为补丁)应用卷积滤波器,并以步长为1的方式逐字符移动,对序列的其余部分应用相同的卷积滤波器,从而生成4 - gram特征,这些特征代表了域名中字母组的判别能力。与传统的多层感知机层相比,在整个序列上应用相同的滤波器可显著减少计算时间。此外,由于卷积内核独立处理每个4 - gram,因此可以同时处理整个输入层,这种并行化和低计算时间是使用卷积网络而非其他常用于文本处理的深度学习方法(如LSTM)的主要优势之一。
2.3 密集层
前两层提取的特征被输入到传统的多层感知机网络(MLP)中,以输出给定域名属于DGA或正常类别的概率。MLP由两层组成:第一层是大小为hn的全连接密集层,连接到大小为1的第二个密集层,用于实际输出关于所考虑域名的概率。
3. 实验设计
实验从两个角度关注算法的检测性能:一是DGA和正常域名的检测;二是数据集中不同恶意软件家族的检测性能。使用了两个标准的网络检测评估指标:真阳性率(TPR)和假阳性率(FPR)。TPR是正确检测到的DGA域名数量与DGA域名总数的比值,FPR是被错误分类为DGA的正常域名数量与正常域名总数的比值。
评估1D - CNN DGA检测方法时,采用了常见的机器学习方法,将包含DGA和正常域名的数据集按70%/30%的比例划分。70%的数据集用于调整1D - CNN的超参数(训练集),剩余30%(测试集)用于测试1D - CNN DGA检测模型在未见过的域名上的性能。
3.1 数据集描述
评估使用的数据集包含DGA和正常域名。正常域名来自Alexa前一百万个域名,另外还加入了Bambenek咨询数据源提供的3161个正常域名,这些域名是未由DGA生成的可疑域名,因此数据集中正常域名总数为1,003,161个。DGA域名从Abakumov和Bambenek的DGA域名存储库获取,总数为1,915,335个,对应51种不同的恶意软件家族,具体家族和域名数量如下表所示:
| 家族 | 方案 | 频率 | 家族 | 方案 | 频率 | 家族 | 方案 | 频率 |
|---|---|---|---|---|---|---|---|---|
| bamital | (A) | 904 | cryptolocker | (A) | 112,809 | padcrypt | (A) | 1,920 |
| p2p | (A) | 4,000 | proslikefan | (A) | 100 | murofet | (A) | 49,199 |
| bedep | (A) | 706 | dircrypt | (A) | 570 | necurs | (A) | 81,920 |
| post | (A) | 220,000 | dyre | (A) | 26,993 | newgoz | (A) | 1,666 |
| chinad | (A) | 256 | fobber | (A) | 600 | nymaim | (A) | 20,225 |
| conficker | (A) | 99,996 | gameover | (A) | 12,000 | pushdo | (A) | 94,278 |
| corebot | (A) | 840 | geodo | (A) | 1,920 | pykspa | (A) | 25,727 |
| goz | (A) | 1,667 | hesperbot | (A) | 192 | qadars | (A) | 1,600 |
| kraken | (A) | 9,660 | locky | (A) | 9,028 | qakbot | (A) | 60,000 |
| ramdo | (A) | 102,000 | ramnit | (A) | 91,978 | ranbyus | (A) | 23,167 |
| rovnix | (A) | 53,632 | shiotob | (A) | 12,521 | symmi | (A) | 4,448 |
| shifu | (A) | 2,554 | virut | (A) | 11,994 | sisron | (A) | 60 |
| zeus | (A) | 1,000 | vawtrak | (A) | 300 | simda | (A) | 28,339 |
| tinba | (A) | 193,912 | tempedreve | (A) | 225 | pykspav1 | (A) | 18 |
| pykspav2F | (A) | 800 | pykspav2R | (A) | 200 | banjori | (W) | 439218 |
| suppobox | (W) | 8185 | matsnu | (W) | 100127 | volatile | (W) | 996 |
| beebone | (W) | 210 | cryptowall | (W) | 94 | madmax | (A) | 2 |
其中,(A)表示算术生成方案,(W)表示基于单词的方案。算术方案通常通过计算具有直接ASCII表示的数值序列来生成域名,而基于单词的方案则是拼接单词列表中的单词。
3.2 超参数调整
调整神经网络的超参数是应用神经网络时最具挑战性的任务之一。对于所提出的1D - CNN架构,需要调整多个超参数,重点关注嵌入层、一维卷积层和密集层的相关参数。
- 嵌入层:需要设置两个值l和d。l是输入序列的长度,通过将其固定为数据集中最大域名长度来确定;只需调整矩阵维度d。
- 一维卷积层:需要调整的参数是滤波器数量nf和内核大小ks,步长sl固定为1。
- 第一个密集层:需要优化的参数是神经元数量hn。
- 第二个密集层:由于DGA检测模型需要低FPR,因此将决策边界阈值(thres)设置为0.90,而不是常见的0.5,只有具有非常高概率的域名才会被检测为DGA。
通过在训练集的指定子集上进行传统的网格搜索,并使用10折交叉验证对每个参数组合进行评估,以实现稳健估计。1D - CNN层使用反向传播算法和自适应矩估计优化器进行训练,训练进行10个周期。表现较好的参数组合如下表所示:
| 平均F1 | 标准差 | nf | ks | sl | d | l | hn | 参数 |
|---|---|---|---|---|---|---|---|---|
| 0.9797 | 0.0050 | 256 | 4 | 1 | 100 | 45 | 512 | 5,612,705 |
选择平均F1分数最高的参数组合用于后续实验。
3.3 对未见过的域名进行评估
使用上一节选择的超参数对1D - CNN进行评估。将完整的训练集用于训练1D - CNN,在测试集(占原始数据集的30%)上进行评估,并将决策边界阈值设置为0.90。计算测试集上的TPR和FPR,结果显示,在正常或DGA两类的检测中,TPR约为97%,FPR为0.7%。
按正常域名类型区分FPR时,1D - CNN DGA检测算法能正确将几乎100%的Alexa域名识别为正常域名,但对于Bambenek域名,假阳性率上升到16%。
不同DGA恶意软件家族的TPR和其DGA生成方案(算术方案用红色表示,基于单词的方案用蓝色表示)显示,大多数DGA都能被检测到,TPR接近0.75,无论使用哪种DGA生成方案。只有Cryptowall(TPR为0.16)、Virut(TPR为0.39)和Suppobox(TPR为0.47)这三个家族例外。
4. 结果讨论
实验结果表明,1D - CNN检测方法能够从不同恶意软件家族的基于算术的DGA生成算法中提取共同模式,这可以解释为什么在样本频率非常低的恶意软件家族中也能取得良好的检测结果,例如chinad和bamital家族,样本少于1000个,但TPR仍超过90%。
对于基于单词的DGA方案,情况有所不同。算术DGA的75%的TPR集中在1到0.92之间,而基于单词的DGA的75%的TPR值在1到0.70之间。显然,使用算术生成方案的恶意软件家族的TPR明显优于基于单词的方案,这可能是因为基于单词的生成方案旨在模仿正常域名的外观。
然而,也有一些意外结果值得深入分析。例如,基于单词的Matsnu恶意软件家族TPR达到0.92,而基于算术的Virut恶意软件家族TPR仅为0.39。
- Virut:其生成的DGA域名的字符频率分布(FCD)中,元音频率明显高于其他字符,且与正常域名的FCD相似,这增加了1D - CNN检测方法的判别难度,再加上数据集中该家族的样本数量较少,进一步加剧了检测的复杂性。
- Matsnu:其FCD与正常域名相似,无法通过FCD解释高TPR。经过检查发现,域名长度是区分正常域名和Matsnu域名的关键特征,Matsnu生成的域名明显长于正常域名。而Suppobox恶意软件的字符长度分布(CLD)接近正常域名,且FCD也相似,因此其域名很难被检测到。
5. LSTM网络架构用于DGA检测
为了比较性能,还使用了一种简单的LSTM网络与之前的1D - CNN进行对比。LSTM网络是一种特殊的循环神经网络(RNN),由Hochreiter和Schmidhuber于1997年首次提出,已成功应用于自然语言处理问题。与卷积网络和全连接网络相比,LSTM的主要优势在于能够记住序列中之前看到的信息,从而学习到序列中不一定连续的字符模式。
LSTM网络架构由嵌入层、LSTM层和输出层前的Dropout层组成。Dropout层在训练过程中随机移除网络层之间的一部分边,但在测试时恢复其贡献。详细架构如下表所示:
| 层类型 | 激活函数 |
|---|---|
| 输入层(Input Layer) | – |
| 嵌入层(Embedding) | – |
| LSTM层(LSTM) | relu |
| Dropout层1(Dropout) | – |
| 密集层1(Dense) | sigmoid |
根据相关文献,嵌入层的超参数设置为d = 128和l = 75,LSTM层的单元数量设置为128,Dropout层设置为0.5。与1D - CNN类似,LSTM网络在数据集的70%上训练10个周期,并在剩余的30%上进行测试。
结果显示,LSTM网络对数据集中总DGA的TPR约为94%,对总正常域名的FPR接近3%。与1D - CNN相比,LSTM网络的性能明显较差,特别是考虑到现实场景中低假阳性率的重要性。
不同DGA恶意软件家族的TPR和其DGA生成方案显示,大多数DGA的TPR接近0.75。算术DGA的75%的TPR集中在1到0.92之间,而基于单词的方案的75%的TPR值在0.97到0.12之间,这一结果比1D - CNN差很多。
综上所述,在DGA检测任务中,1D - CNN在性能上表现更优,尤其是在处理低FPR要求的现实场景时。同时,不同DGA生成方案和恶意软件家族的特点对检测性能有显著影响,需要进一步研究和优化检测方法以应对更复杂的情况。
基于深度卷积神经网络的DGA检测
6. 性能对比分析
为了更直观地比较1D - CNN和LSTM网络在DGA检测中的性能,我们将关键指标整理成如下表格:
| 网络类型 | 真阳性率(TPR) | 假阳性率(FPR) |
| ---- | ---- | ---- |
| 1D - CNN | 约97% | 0.7%(整体),Alexa域名近乎0%,Bambenek域名16% |
| LSTM | 约94% | 接近3% |
从表格中可以清晰地看出,1D - CNN在TPR上略高于LSTM,而在FPR上明显低于LSTM。特别是在现实场景中,低FPR是非常重要的指标,因为误判正常域名为DGA域名会带来不必要的干扰和资源浪费。因此,从整体性能来看,1D - CNN更适合用于DGA检测。
我们还可以通过mermaid格式的流程图来展示两种网络在检测流程上的差异:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([输入域名]):::startend --> B{选择网络类型}:::decision
B -->|1D - CNN| C(嵌入层):::process
B -->|LSTM| D(嵌入层):::process
C --> E(一维卷积层):::process
D --> F(LSTM层):::process
E --> G(密集层):::process
F --> H(Dropout层):::process
H --> I(密集层):::process
G --> J{判断是否为DGA}:::decision
I --> J
J -->|是| K([标记为DGA]):::startend
J -->|否| L([标记为正常域名]):::startend
这个流程图展示了1D - CNN和LSTM在处理输入域名时的不同步骤。1D - CNN通过嵌入层、一维卷积层和密集层进行特征提取和判断,而LSTM则在嵌入层之后使用LSTM层,并增加了Dropout层来防止过拟合。
7. 关键因素总结
在DGA检测中,有几个关键因素对检测性能产生了重要影响:
-
DGA生成方案
:基于算术的DGA生成方案和基于单词的DGA生成方案表现出不同的检测难度。基于算术的方案更容易被1D - CNN检测,因为其生成的域名具有一定的规律性,1D - CNN能够提取到共同模式。而基于单词的方案旨在模仿正常域名,增加了检测的难度。
-
域名特征
:域名的字符频率分布(FCD)和字符长度分布(CLD)是影响检测性能的重要特征。例如,Virut的FCD与正常域名相似,导致检测困难;而Matsnu的域名长度明显长于正常域名,成为区分的关键特征。
-
样本数量
:数据集中恶意软件家族的样本数量也会影响检测性能。如Virut家族样本数量较少,使得1D - CNN难以学习到足够的特征,从而导致检测率较低。
8. 实际应用建议
基于以上的研究和分析,对于实际的DGA检测应用,我们给出以下建议:
-
选择合适的网络架构
:根据实际需求和场景,优先选择1D - CNN作为DGA检测的网络架构,因为它在TPR和FPR上都表现出较好的性能,更适合现实场景的要求。
-
优化数据集
:尽量收集更多不同类型的DGA域名和正常域名,特别是对于样本数量较少的恶意软件家族,增加样本数量可以提高检测模型的泛化能力。同时,对域名的特征进行深入分析,如FCD和CLD,以便更好地理解域名的特点,为检测提供更多的依据。
-
调整超参数
:在使用1D - CNN进行检测时,仔细调整超参数,如嵌入层的维度、卷积层的滤波器数量和内核大小等。可以通过网格搜索和交叉验证等方法,找到最优的超参数组合,以提高检测性能。
9. 未来研究方向
虽然1D - CNN在DGA检测中表现出了较好的性能,但仍有一些方面值得进一步研究和探索:
-
对抗性攻击
:随着技术的发展,攻击者可能会采用对抗性攻击的方法来绕过DGA检测系统。未来的研究可以关注如何提高检测模型的鲁棒性,以应对对抗性攻击。
-
多模态信息融合
:除了域名本身的特征,还可以考虑融合其他模态的信息,如网络流量信息、域名注册信息等,以提高检测的准确性和可靠性。
-
新型网络架构
:不断探索和研究新型的网络架构,以进一步提高DGA检测的性能。例如,结合注意力机制、生成对抗网络等技术,可能会带来更好的检测效果。
通过对1D - CNN和LSTM网络在DGA检测中的研究和对比,我们明确了1D - CNN在性能上的优势,同时也分析了影响检测性能的关键因素,并给出了实际应用建议和未来研究方向。希望这些内容能够为DGA检测领域的研究和实践提供有价值的参考。
超级会员免费看
3370

被折叠的 条评论
为什么被折叠?



