A Machine Learning Framework for Domain Generation Algorithm-Based Malware Detection

摘要

攻击者通常使用命令和控制(C2)服务器来操纵通信。为了进行攻击,威胁者往往采用域生成算法(DGA),它可以允许恶意软件通过生成各种网络位置与C2通信。传统的恶意软件控制方法,如黑名单,不足以处理DGA威胁。在本文中,我们提出了一个用于识别和检测DGA域的机器学习框架,以减轻威胁。我们从现实生活中的流量中收集了为期一年的实时威胁数据。我们还提出了一个深度学习模型,对大量的DGA领域进行分类。建议的机器学习框架包括一个两级模型和一个预测模型。在两级模型中,我们首先将DGA域从正常域中分类出来,然后使用聚类方法来识别产生这些DGA域的算法。在预测模型中,我们构建了一个时间序列模型来预测基于隐藏马尔可夫模型(HMM)的传入域特征。此外,我们建立了一个深度神经网络(DNN)模型,通过处理我们逐渐收集到的巨大数据集来增强提议的机器学习框架。

0x01 引言

  • 当代许多反恶意软件是基于静态方法,包括匹配静态字符串、hash和通信白名单。这些方案过于简单,无法解决复杂的恶意软件攻击。通过隐藏通信渠道,有目的地整合规避技术,绕过大多数检测方案。
  • DGA已经普遍应用于恶意软件攻击的C2回传通信,以绕过反恶意软件的简单封禁规则。生成的域名让恶意行为者有机会隐藏他们的C2服务器,这样企业就很难识别DGA.但存在生命周期短、更容易被人类识别,但机器更难自动检测等特点
  • DGA通常有种子函数,DGA检测挑战管理员必须识别恶意软件、DGA和种子值,以过滤掉过去的恶意网络和未来的服务器序列。
  • 本文收集了一年的数据,设计了一个DNN(Deep Neural Network)对大型数据集进行分类,评估结果表明,我们可以实现95.89%的第一级分类的准确性和92.45%的第二级聚类的准确性。对于我们的HMM(Hidden Markov Models)模型的预测,我们可以进一步实现95.21%的准确性。我们用于分类的深度学习模型可以达到97.79%的准确率。
  • 本文的贡献总结:
    1. 提出了一个机器学习框架来进行DGA检测和预测。我们首先将DGA域与正常域区分开来,然后确定它们的生成算法。我们还应用一个时间序列模型来预测DGA域。
    2. 提出了一个由分类和聚类组成的两级模型,首先对DGA域名进行分类,然后将DGA聚类到不同的DGA组。在第二个模型中,我们使用无监督的DBSCAN算法将DGA域名聚成不同的组,其中DBSCAN代表了基于密度的空间聚类应用的噪音。通过使用提议的两级分类和聚类,我们提高了从DGA中识别某些域名的准确性。
    3. 我们设计了一个HMM时间序列预测器,它可以用来预测与当前域名特征相匹配的特征。预测结果给网络一个快速的参考,以阻止DGA域名。因为我们不检查DNS查询的特征匹配,通过预测器,我们消除了在进行检查时与C2服务器沟通的风险。
    4. 我们提出了一个深度神经网络模型来对大型DGA数据集进行分类。在我们的DNN模型中应用了不同的优化算法,以获得更好的准确性。在这项研究中,我们将训练数据和验证数据分开,以防止过拟合。

0x02 问题声明

随着输入的多种来源扩大过滤规则,防火墙的黑名单不断扩大。然而,DGA中的序列可能无法及时了解这些输入。此外,对于与适当的域名进行正确通信的恶意软件,威胁行为者必须在序列中注册每个相应的域名,以维持C2或冒着失去分布中的一个节点的风险。图1给出了这种情况下的情景。

image-20220222105533359

图1. 威胁模型。DGA在网络环境中发挥作用的多种条件,其中过滤的结果是保护通信的防火墙和互联网域中的空单元,导致NXDOMAIN错误。请注意,图中所列的域属于现有的存活威胁

A.假设和威胁模型

  • 威胁者需要一种方法来控制和维护C2环境中的恶意软件,同时以一种不被网络安全系统察觉的方式运作。恶意软件的成功并不要求域名被注册或有效,DGA可能会迭代一个序列,导致NXDOMAIN情况(未注册)。
  • 黑名单,DNS沉洞和设定防火墙规则都是现行标准通用技术,但实施这些技术通常由威胁情报源提供。
  • 当前所面临的问题是会提供虚假签名来进行扰乱和利用未曾发现的0day,这样会导致黑名单功能失效。提出的机器学习框架旨在解决使用机器学习技术检测DGA序列的问题,该技术来源于网络中的观测。

0x03 相关工作

  • 由于互联网已经广泛分布,它非常容易受到恶意软件的危害。恶意软件攻击者可以选择不同的目标或网络物理设备,并对其进行攻击,如移动设备和联网车辆。由于管理不善、修补行为不当和危险的0日攻击,威胁行为者攻击的许多目标都容易受到恶意软件的攻击。(①K. Xiong and X. Chen, ‘‘Ensuring cloud service guarantees via ser-vice level agreement (SLA)-based resource allocation,’’ in Proc. IEEE35th Int. Conf. Distrib. Comput. Syst. Workshops, ICDCS Workshops,Jun./Jul. 2015, pp. 35–41;②T. Chin and K. Xiong, ‘‘Dynamic generation containment systems(DGCS): A moving target defense approach,’’ in Proc. 3rd Int. Work-shop Emerg. Ideas Trends Eng. Cyber-Phys. Syst. (EITEC), Apr. 2016,pp. 11–16, doi: 10.1109/EITEC.2016.7503690;③K. Sornalakshmi, ‘‘Detection of DoS attack and zero day threat withSIEM,’’ in Proc. IEEE Int. Conf. Intell. Comput. Control Syst. (ICICCS),Jun. 2017, pp. 1–7)
  • Barabosch等人提出了一种自动方法,从当前的恶意软件中提取DGA。他们的研究集中在领域内流动的恶意软件,并依靠二进制提取DGA。他们的方法只对某些类型的恶意软件有效。除了阻止和提取正常域名中的DGA,还有一项进一步的研究是基于DGA域名的特征(①T. Barabosch, A. Wichmann, F. Leder, and E. Gerhards-Padilla, ‘‘Automatic extraction of domain name generation algorithms from current malware,’’ in Proc. NATO Symp. IST Inf. Assurance Cyber Defense, Koblenz,Germany, 2012, pp. 1–13.②J. Gardiner and S. Nagaraja, ‘‘On the security of machine learning inmalware C&C detection: A survey,’’ ACM Comput. Surv., vol. 49, no. 3,pp. 59-1–59-39, Dec. 2016.③M. Mowbray and J. Hagen, ‘‘Finding domain-generation algorithms bylooking at length distribution,’’ in Proc. IEEE Int. Symp. Softw. Rel. Eng.Workshops (ISSREW), Nov. 2014, pp. 395–400.)
  • Ahluwalia等人提出一个可以动态检测DGA域名的检测模型。他们应用基于域长度阈值的信息论特征。他们的方法可以动态地检测任何长度的DGA域。许多其他的研究都是基于DGA域的特征来进行DGA检测。(A. Ahluwalia, I. Traore, K. Ganame, and N. Agarwal, ‘‘Detecting broadlength algorithmically generated domains,’’ in Proc. Int. Conf. Intell.,Secure, Dependable Syst. Distrib. Cloud Environ. Cham, Switzerland:Springer, 2017, pp. 19–34.)
  • Ma等人提出了一种轻量级的方法来检测基于URLs的DGA域,该方法使用了词汇和基于主机的特征。他们考虑了URL的词法特征,如长度、点的数量和URL路径中的特殊字符。(J. Ma, L. K. Saul, S. Savage, and G. M. Voelker, ‘‘Beyond blacklists:Learning to detect malicious Web sites from suspicious URLs,’’ in Proc.15th ACM SIGKDD Int. Conf. Knowl. Discovery Data Mining, 2009,pp. 1245–1254)
  • Antonakakis等人提出了一个新的检测系统,称为Pleiades。他们提取了一些与NXDOMAIN字符串相关的统计学特征,包括n-grams的分布。( M. Antonakakis et al., ‘‘From throw-away traffic to Bots: Detecting the riseof DGA-based malware,’’ in Proc. USENIX Secur. Symp., vol. 12, 2012,pp. 24–24)
  • Wang和Shirley提出使用单词分割法从域名中提取代币来检测恶意域名。提出的特征空间包括字符数、数字和连字符。(W. Wang and K. Shirley. (2015). ‘‘Breaking bad: Detecting maliciousdomains using word segmentation.’’ [Online]. Available: https://arxiv.org/abs/1506.04111
  • McGrath和Gupta也对钓鱼网站进行了仔细研究,发现钓鱼网站和DGA域名与正常域名和网站相比具有不同的特征。因此,他们提出了一个基于域名长度比较和英语字母频率的DGA域名检测模型。( D. K. McGrath and M. Gupta, ‘‘Behind phishing: An examination ofphisher modi operandi,’’ in Proc. LEET, vol. 8, 2008, p. 4.)
  • 基于DGA特征的类似方法还可以参考以下文章(①S. Yadav, A. K. K. Reddy, A. L. N. Reddy, and S. Ranjan, ‘‘Detectingalgorithmically generated domain-flux attacks with DNS traffic analysis,’’IEEE/ACM Trans. Netw., vol. 20, no. 5, pp. 1663–1677, Oct. 2012.②Y. He, Z. Zhong, S. Krasser, and Y. Tang, ‘‘Mining DNS for maliciousdomain registrations,’’ in Proc. IEEE 6th Int. Conf. Collaborative Comput.,Netw., Appl. Worksharing (CollaborateCom), Oct. 2010, pp. 1–6.③L. Bilge, E. Kirda, C. Kruegel, and M. Balduzzi, ‘‘EXPOSURE: Findingmalicious domains using passive DNS analysis,’’ in Proc. NDSS, 2011,pp. 1–17.④S. Srinivasan, S. Bhattacharya, and R. Chakraborty, ‘‘Segmenting Web-domains and hashtags using length specific models,’’ in Proc. 21st ACMInt. Conf. Inf. Knowl. Manage., 2012, pp. 1113–1122)
  • 为了对DGA域名进行分类,Schiavoni等人提出了一种可行的方法,根据语言学和DNS的特点对DGA生成的域名进行定性和聚类。在该研究中,他们假设DGA域名具有与正常域名非常显著的字符组。通过根据域名的特征进行分组,作者应用机器学习分类器将DGA域名与正常域名轻松区分开来。一些机器学习技术已经被研究用来对恶意代码进行分类。它们包括神经网络、支持向量机(SVM)和提升分类器(boosted classifiers)(①S. Schiavoni, F. Maggi, L. Cavallaro, and S. Zanero, ‘‘Phoenix: DGA-based botnet tracking and intelligence,’’ in Proc. Int. Conf. Detection Intru-sions Malware, Vulnerability Assessment. Cham, Switzerland: Springer,2014, pp. 192–211.②A. Shabtai, R. Moskovitch, Y. Elovic, and C. Glezer, ‘‘Detection of mali-cious code by applying machine learning classifiers on static features:A state-of-the-art survey,’’ Inf. Secur. Tech. Rep., vol. 14, no. 1, pp. 16–29,2009.)
  • 有一些研究旨在从历史上的DGA域名中预测DGA域名(R. Sharifnya and M. Abadi, ‘‘A novel reputation system to detectDGA-based botnets,’’ in Proc. IEEE 3rd Int. Conf. Comput. Knowl.Eng. (ICCKE), Oct./Nov. 2013, pp. 417–423.)
  • Woodbridge等人使用DNS查询来发现不同系列的DGAs的模式。他们的方法不需要一个特征提取步骤。相反,它利用长短期记忆(LSTM)网络进行实时DGA预测。他们的方法可以通过使用开放源码工具轻松实现。( J. Woodbridge, H. S. Anderson, A. Ahuja, and D. Grant. (2016). ‘‘Pre-dicting domain generation algorithms with long short-term memory net-works.’’ [Online]. Available: https://arxiv.org/abs/1611.00791
  • Xu等人检查了DNS的相似性和模式来预测未来的DGA领域。他们的方法对一些DGAs是有效的。(W. Xu, K. Sanders, and Y. Zhang, ‘‘We know it before you do: Predictingmalicious domains,’’ in Proc. Virus Bull. Conf., 2014, pp. 1–5.)
  • 最近,研究人员提出了用于检测DGAs和自动学习特征的深度学习技术,也就是说,在特征分析方面不需要人类的努力(J. Saxe and K. Berlin. (2017). ‘‘eXpose: A character-level convolutional neural network with embeddings for detecting malicious URLs, file pathsand registry keys.’’ [Online]. Available: https://arxiv.org/abs/1702.08568
  • 深度学习目前应用广泛,尤其在应对大数据集方面表现突出。由于DGA算法可以产生大量的DGA域,深度学习方法也可以用于检测DGA域。
  • Yu等人提出了一种使用深度网络的内联DGA检测。他们认为,大多数DGA检测方法都是在小型数据集上进行训练,而不是从真实流量中收集的大型数据集。他们首先通过简单的调整步骤从真实的DNS流量中收集数据。然后,他们建立了一个卷积神经网络(CNN)模型来训练大量的数据集。(B. Yu, D. L. Gray, J. Pan, M. De Cock, and A. C. A. Nascimento, ‘‘InlineDGA detection with deep networks,’’ in Proc. IEEE Int. Conf. Data MiningWorkshops (ICDMW), Nov. 2017, pp. 683–692.)

0x04 模型设计

这项研究的重要组成部分是。(1) 从DGAs中提取的域;(2) 一个机器学习框架,包括多种特征提取技术和模型,将DGA域从正常域中分类,将DGA域聚类,并预测DGA域。(3) 一个处理大型数据集的深度学习模型。

A.威胁情报供应和持续威胁情报

数据来源于Bambenek咨询公司收集的威胁情报,数据结构以CSV格式呈现,包括域名、源恶意软件和DGA成员,每日文件大小约为110MB,我们总共收集了64GB

image-20220222170152100

图2:Bambenek咨询公司的一个示例数据集给出了域名、恶意软件的来源、DGA模式和收集日期

B.机器学习框架

该框架主要分三部分:输入-处理-输出

(1)我们首先使用一个域名查询包过滤器来获取域名,然后将它们存储在动态黑名单中。如果输入的是一个已知的域名,我们将跳过(2)-(4),直接进入输出;否则,我们将进入下一个组件。

(2) 然后,使用特征提取器来提取领域特征。

(3) 接下来,我们应用第一级分类法来区分DGA域和非DGA域,并应用第二级聚类法将相似的DGA域分组。

(4) 最后,我们使用时间序列模型来预测一个领域的特征。在域名通过这个步骤后,我们将把这个域名加入到动态黑名单中。

1)动态黑名单

域名是我们在以下步骤中唯一需要进行分类和预测的信息。我们应用一个域名请求数据包过滤器来过滤掉琐碎的信息,这在我们的实验中是无用的,从原始数据中收集。筛选之后,我们只得到域名。在这个过程中,我们使用Gruber正则模式过滤器。所有的网络流量都经历了这个过滤过程。筛选后的域名被储存在动态黑名单中,该名单最初是空的,将被动态更新,然后在下一步被发送到特征提取器。动态黑名单可以帮助我们减少不必要的计算,如果在动态黑名单中可以找到一个域名,我们可以直接进入输出步骤。

2)特征提取器

特征提取器被用来从第一部分中过滤掉的域名中提取特征。每个域名都被认为是一个字符串。为了有效地对域名进行分类,我们使用两种类型的特征:语言学特征和DNS特征。我们先讨论语言学特征,然后再讨论DNS特征。

语言学特征

分别有六个语言学特征

1、长度

使用|d|代表域名长度

2、有含义的词汇比

在域名中有含义的词汇所占的比率,其公式如下:

\[f_{1}=\sum_{i=1}^{n}\frac{|w_{i}|}{|d|} \]

其中wi代表该字符串中第i个有含义的子串,|wi|是第i个有意义子串的长度。由于DGA域名通常包含无意义的单词;因此,比率的小值通常意味着该域名可能是一个DGA域名,而比率越高则意味着域名越安全。我们严格要求字符串中每个有意义子串|wi|的长度至少为4个字母,因为大多数合法域名的有意义子串都超过3个字母。

3、可读得分

在语言学意义上,可发音的词通常由许多可行的音素组合组成。可读性得分表征了可以发音的词语的数量。可发音的词越多,可发音性分数就越高。由于DGA领域通常包含较少的可行的音素组合,它们通常倾向于有较低的可读性得分。因此,发音能力分数可以成为一个有用的特征。为了计算一个字符串的可读性分数,我们利用一个n-gram查询表。我们通过提取一个域d的n-grams分数来计算可读性分数。我们在计算中选择子串长度l∈2,3,并计算它们在英语n-gram频率文本中的出现次数。其公式如下:

\[f_{2}=\frac{\sum n-gram(d)}{|d|-n+1} \]

其中n代表n-grams中匹配词的长度。

4、数值字的百分比

一个字符串中数字字符的百分比。

\[f_{3}=\frac{|n|}{|d|} \]

其中|n|代表数字字符的数量

5、LMS(the Longest Meaningful Strings )长度百分比

域名中最长的有意义的字符串的长度。

\[f_{4}=\frac{|l|}{|d|} \]

其中|l|代表LMS的长度

6、Levenshtein Edit Distance(编辑距离算法)

指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。
例如将kitten一字转成sitting:
sitten (k→s)
sittin (e→i)
sitting (→g)
俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。

它测量服务器收到的DNS查询流中,当前域和其先前域之间单字符编辑的最小数量。Levenshtein距离的计算是基于一个域名和它的前一个域名。例如,给定两个字符串''test''和''task'',它们之间的Levenshtein编辑距离是2,因为需要编辑的字符是e到a和t到k。另一个例子是,对于''word''和''world'',Levenshtein编辑距离是1,因为我们只需要在r后面添加一个l。

除了语言学特征,我们还使用了表1中的27个DNS特征。由于DGA域名产生的时间很短,而且寿命也很短,因此与普通域名相比,它们通常包含较少的信息。例如,DGA域名的创建日期往往在一年之内,而且它们的失效日期也非常快。

image-20220223165800359

其中+/-表示与正常域名的关联度

3)二级模型:识别和聚类

提出了一个两级机器学习模型,包括第一级分类和第二级聚类。在第一级分类中,我们使用机器学习分类器来对DGA域和正常域进行分类。只有分类后的DGA域才会被送到第二级聚类。为了根据DGA域的生成算法将其分为若干组,我们采用了DBSCAN聚类技术。图4显示了拟议的两级模型的工作流程。

image-20220223170332138

a. 第一级识别

在第一级分类中,我们使用上面描述的特征,并用七种不同的机器学习分类器进行测试,包括决策树-J48、人工神经网络(ANN)、支持向量机(SVM)、逻辑斯蒂回归、朴素贝叶斯(NB)、梯度提升树(GBT)和随机森林(RF)来找到最佳分类器。 在这些分类器中,我们注意到J48是对DGA领域进行分类的最佳分类器(其详细讨论见第五节),因此J48被选为本研究中第一级分类的分类器。

b.第二级聚类

在第二级聚类中,我们应用DBSCAN算法。只有从第一级分类中获得的DGA域才会被用于聚类。在我们的DBSCAN算法中,我们使用上述特征来计算域的距离,并根据域特征的差异将由同一DGA生成的域分组。令di和dj为两个不同的域名,其中i≠j。我们首先设定i=0代表第一个域名,然后计算di和其他所有域名之间的整体距离。整体距离包含两部分:语言距离和DNS相似性。

语言学距离的计算是基于六个语言学特征,并遵循以下公式:

\[D_{l}(d_{i},d_{j})=\sqrt{\sum_{k=1}^{6}distance_{k}(d_{i},d_{j})} \]

其中distance_{k}(di,dj)为di和dj之间的语言学特征距离。

为了得到DNS的相似性,我们首先构建一个权重矩阵M∈RK×L,其中K和L分别是DNS特征的数量和所有DGA域D的语言特征的数量,这些特征是由第一级分类得到的。K和L之间的关系用一个二分图表示,该图用M表示,其中每个分量Mk,l持有一条边(l,k)的权重。对于每个DNS记录,权重Mk,l的计算方法是

\[\mathbf{M}_{k,l}=\frac{1}{|\Bbb{D(k)|}},for\ any\ l=1,\cdot\cdot\cdot,L \]

其中|D(k)|是指向DNS记录的域的子集的基数。然后,我们使用矩阵S∈RL×L来存储DNS的相似性信息,对于每个组成部分,S_{di,dj}是域di和dj的相似性值。我们的直觉是,当两个域指向同一个DNS记录k时,它们应该有很高的相似性。因此,我们可以根据权重矩阵M来计算相似性矩阵,令N是M的列归一化矩阵:

\[\mathbf{N}_{k,l}=\frac{\mathbf{M}_{k,l}}{\sum_{k=1}^{K}\mathbf{M}_{k,l}},\forall l=1,2,...,L \]

此外,最终的相似度矩阵是通过以下方式计算的

\[S=N^{T}\odot N\in \Bbb{R}^{L\times L} \]

总体距离是语言学距离和DNS相似性的组合,它的计算方法是:

\[D(d_{i},d_{j})=S_{d_{i},d_{j}}+log(\frac{1}{D_{l}(d_{i},d_{j})}) \]

在我们计算了总体距离之后,我们可以根据阈值距离,得到从di开始的所有密度可达的点。如果D(di, dj)>,我们就把这些点dj加入到一个聚类C中。最小的聚类点MinPts被用来代表一个核心点。在我们的实验中,我们设定MinPts=3,因为它可以实现更好的聚类性能。让di是一个核心点。如果C中的点的数量大于MinPts,那么就会形成一个聚类。如果di是一个边界点,意味着从di开始没有任何点是可以到达的,那么我们的DBSCAN模型就会访问下一个域。上述步骤将重复进行,直到所有的域都被处理。

4) 时序预测器

为了分析聚类结果,我们建立了一个基于HMM的时间序列预测模型来预测传入的DGA领域特征。

  • 图5(A)显示了一个从聚类中得到的例子数据集。我们使用每一个领域聚类来训练一个单独的HMM模型。我们把模型从训练和预测阶段区分开来。

image-20220224100548190

  • 图5(B)显示了HMM的训练步骤。每个HMM数据记录代表一系列的领域观察。首先,域名序列被特征提取器处理,每个特征向量被用作训练记录。然后,类似的序列被聚类为具有一定结果的DGA域名组。在训练过程之后,如果一个序列没有HMM序列表示(或者它没有出现在训练数据中,而是出现在测试数据中),那么HMM模型就会产生未来的预测结果。否则,我们将使用一个现有的HMM序列表示。

    image-20220224100640286

  • 图5(C)显示了HMM预测的工作流程。一旦模型得到训练,一组特征就由一系列的DGA域形成。然后,我们进入预测阶段。

image-20220224100859361

  • 图6:HMM模型预测示例

image-20220224101111190

  • 我们的HMM模型的细节描述如下。我们假设一个DGA集群的每个域名在时间t是由一个未知的DGA产生的,St,它被隐藏在系统中。此外,隐藏状态满足n-th阶马尔可夫特性,其中St给出St-1 ... ... St-n在i < t - n独立于Si的。n是我们模型中使用的HMM序列长度。因此,一个足够长的序列囊括了我们需要知道的所有历史,以预测未来的特征。因此,领域特征和观察到的特征的联合分布可以如图所示进行分解:

\[P(S_{1::T},Y_{1::T})=P(S_{1})P(Y_{1}|S_{1})\prod_{t=2}^{T}P(S_{t}|S_{t-1})P(Y_{t}|S_{t}) \]

  • 符号S1::T表示S1, . . . , ST。S是隐藏的域名状态,属于DGA的一类。Y是观察到的特征。因此,我们可以从特征序列Y1::T和先前的状态S1::t-1推断出St的概率,这是HMM模型的基础。HMM模型序列的长度:HMM预测器会受到给定数据序列长度的影响。

C.深度学习分类

在本节中,我们将讨论在我们的深度学习框架中使用的详细的DNN模型。DNNs可以被看作是人工神经网络(ANNs)的更深版本,有许多隐藏层,其中包括多节点,也称为神经元,在每个隐藏层。每一层的节点都与下一层的节点完全连接,每条连接线都有一个权重。DNNs可以通过使用激活函数对复杂的非线性关系进行建模。

1)激活函数

一个非线性函数被应用于每个隐藏层以引入非线性,它在传递到下一层的加权和之前,对前一个隐藏层中的每个节点的值进行转换。它在传递到下一层的加权和之前,对前一个隐藏层中的每个节点的值进行转换。矫正线性单元(Rectified Linear Unit,ReLU)和sigmoid函数是许多DNN中最常见的激活函数。sigmoid激活函数将加权和转换为0和1之间的值,其写法如下:

\[f_{sigmoid}(x)=\frac{1}{1+e^{-x}} \]

ReLU激活函数将小于零的值设置为零,大于零的值保持不变;其表示方法如下:

\[f_{ReLU}(x)=max\{0,x\} \]

ReLU激活函数往往比sigmoid函数这样的平滑函数效果更好一些,而且它更容易计算。因此,我们在深度学习模型中应用ReLU。

2)学习率

学习率是优化算法中的一个重要参数。它是一个超参数,告诉我们需要更新多少向量参数,θ,其元素在本文中指的是权重。当我们有一个较低的学习率时,斜率会比较慢。在这种情况下,我们不会错过任何局部最小值,但需要很长时间来收敛。一般方程如下。

\[w_{new}=w_{old}-l\cdot g \]

其中w表示权重,l是学习率,g表示损失函数的梯度。通常情况下,学习率是由用户随机给出的。获得一个更好的学习率是很重要的。

3)优化算法

深度学习的一个重要步骤是减少损失函数,并更新那些可以学习的DNN模型参数,如权重和偏移值。优化算法可以帮助我们最小化损失函数。因为我们的DNN模型是用来对DGA域和正常域进行分类的,预测输入可以转化为0到1之间的概率值,对数损失可以用来衡量我们DNN模型的性能。对数损失的计算公式如下:

\[LogLoss=-(ylog(p)+(1-y)log(1-p)) \]

其中y是标记的输出。输出要么被标记为DGA域,表示为1,要么为正常域,表示为0。

有许多优化算法可以使用。在本文中,我们介绍了三种优化算法,梯度下降、Adagrad和Adam,并对它们进行了比较。

a.随机梯度下降(Stochastic Grandient Decent,SGD)

它是在DNN中进行优化的最流行的算法之一。它是梯度修正算法的一个随机变体,用于最小化损失函数。SGD更新参数θ,它是针对每个训练实例xi和标签yi的。更新参数的方程式如下:

\[\theta =\theta -l\cdot g(\theta,x^{i},y^{i}) \]

其中l是学习率,g(θ, xi, yi)是每个训练实例xi和标签yi的log损失函数梯度。

b.自适应梯度算法(Adaptive Gradient Algorithm,ADAGARD)

它是一种基于梯度的优化算法。与梯度衰减不同,Adagard可以自适应地更新学习率。如果它的参数与频繁的特征相关,学习率将被更新为低学习率,如果参数与不频繁的特征相关,那么学习率将被更新为大学习率。因此,它更适合于处理稀疏的数据。首先,我们使用相同的学习率l更新每个参数θ(i)。然后,在每个时间步长t,我们对每个参数θ(i)使用不同的学习率。一般方程如下:

\[\theta_{t+1,i}=\theta_{t,i}-\frac{l}{\sqrt{G(t,i)+\in}}g(t,i) \]

其中g(t, i)是时间步长t时损失函数相对于参数θ(i)的梯度。l是给定的学习率。它根据过去的梯度G(t,i)对每个参数θ(i)进行更新。

c.自适应矩估计(Adaptive Momentum Estimate,ADAM)

与Adgard类似,Adam也可以自适应地更新每个参数的学习率。Adam利用了计算动量的想法。一般方程写如下:

\[\theta_{t+1}=\theta_{t}-\frac{l}{\sqrt{V(t)+\in}}M(t) \]

其中,V(t)是第一矩,即在时间点t上损失函数相对于参数θ的梯度的平均值。M(t)是第二矩,即梯度的方差。

4)训练和验证

在我们的DNN模型中,我们把训练数据集和验证数据集分开,以防止过拟合。我们只在训练数据集上进行训练,用验证数据集进行测试。DNN模型中使用的其他参数有周期、批量大小和步骤。周期控制显示结果的粒度。批量大小是一个步骤的例子的数量。它通常是随机选择的,但对于SGD来说,它通常被设定为1。步数是训练迭代的总次数。因此,每个时期的训练例子Tperiod的数量计算如下:

\[T_{period}=\frac{B\cdot S}{P} \]

其中,B是批次大小,S是步数,P表示时期。

0x05 评估

A.实验准备

  • TensorFlow

  • Intel(R) Xeon(R)CPU E5-2450 @ 2.10GHz, 16 GB 硬盘, 1GB内存

  • 我们的DNN模型是在GAIVI1上训练的,GAIVI是一个具有大规模并行计算能力的计算机集群,每个节点都有以下硬件。GeForce GTX TITAN X major:5 minor: 2 memoryClockRate(GHz): 1.076.

  • 为了彻底评估我们的模型,我们使用了五个DGA领域的数据集。来自最新的DGA-feed的CryptoLocker、Tovar、Dyre、Nymaim和Locky。我们收集了自2017年以来一年的DGA域名。为了提供一个正常的控制组域名列表,我们选择了域名冲床中列出的前100万个最受欢迎的互联网域名。16万个域名在我们的机器学习框架中被测试。我们将远控域名和DGA域名以1:1的比例混合进行第一级分类。在第二级聚类中,我们使用第一级分类中的DGA域名,将它们归入不同的DGA域名组。在HMM预测模型中,我们使用每组聚类结果作为输入。因此,我们为DGA的每个聚类组分别建立一个HMM预测模型。为了处理我们收集的大量数据,我们建立了一个DNN模型进行分类。我们评估了我们的DNN模型,并与我们的第一级机器学习分类法进行了比较。在我们的DNN模型中,我们已经对超过100万个域名进行了训练和测试。

B.实验结果

1)拟议的机器学习框架

为了找到第一级分类的最佳模型,我们测试了七种不同的机器学习模型:J48、ANN、SVM、Logistic Regression、Naive Bayes、Gradient Boosted Tree和随机森林。我们对这些机器学习模型进行了10倍的交叉验证。图8(A)和(B)显示了不同算法在DGA领域分类中的表现。我们发现,与其他机器学习算法相比,J48的平均准确率最高,为95.89%。我们可以看到,RandomForest的准确率与J48相似。随机森林的平均准确率为95.47%。图8(B)还显示,J48是最快的一个,平均0.0144毫秒就能完成域名分类。为了了解J48的准确性和可扩展性,我们对每个DGA生成的域名进行了五组样本的测试,域名总数分别为1000、5000、15000、20000、50000。我们发现,J48对CryptoLocker域名表现最好。

image-20220224171845757

图9(A)显示,Cryptolocker的平均准确率为95.89%,其最高准确率达到98.27%,而其他DGA领域的准确率为92%至95%。如图9(B)所示,我们还计算了假阳性率,因为它也是一个重要指标,越低越好。CryptoLocker、Tovar、Dyre、Nymaim和Locky的假阳性率分别为0.010、0.012、0.014、0.015和0.018。

image-20220224172343767

图10(A)显示了第二级聚类算法在不同DGA上的表现。当我们同时使用语言学距离和DNS相似性作为整体距离时,其平均准确率为87.64%,而如果我们只使用DNS相似性作为整体距离,其平均准确率为89.02%。这是因为大多数DGAs具有非常相似的字符串组成和长度。这些特征不能帮助聚类算法将相似的DGA域从彼此之间识别出来。此外,我们还测试了当更多的组混合在一起时的聚类准确性。

如图10(B)所示,我们测试了所有五种DGAs的两组组合。当我们将Cryptolocker与其他DGA混合时,所有特征的平均聚类精度为81.43%。然而,当我们只使用DNS特征作为DBSCAN距离时,其准确率增加到92.45%,这意味着大多数Cryptolocker域被聚类到一个组。同样,当测试其他组时,我们发现ovar、Dyre、Nymaim和Locky的聚类精度分别为91.05%、92.22%、92.89%和92.57%。该结果表明,聚类模型对于进一步建立时间序列模型来说,将相同的DGA域归为一组是非常有效的。我们的聚类模型可以为HMM模型提供高质量的训练数据。聚类的准确度越高,对未来域名的预测就越准确。

image-20220224173625944

此外,我们还广泛研究了时间序列模型在做特征预测时的表现。我们为每个集群训练一个HMM序列模型。为了找到每个数据集的最佳HMM模型,我们测试了HMM序列长度从2到30的模型的匹配精度和假阳性。图11(A)显示,准确率的峰值是在序列长度为14至15的情况下,其中平均准确率为95.21%。此外,从图11(A)所示的每个序列模型的平均预测时间分析,我们看到当序列长度大于15时,预测时间急剧增加。当模型长度为15时,预测一个DGA域平均只需要1.02ms。但是,当模型长度为20时,时间将增加到4.85毫秒,这是一个3.75倍的增长。另一方面,在图11(B)中,这些模型的假阳性率在长度为14或15时也达到最低。我们观察到的平均假阳性率是长度为15的0.045。这一结果表明,长度为15的HMM序列模型具有最好的准确性和非常快的运行时间。HMM序列模型的性能赋予了快速响应和在DNS查询开始前阻止DGA域的能力。

image-20220224174226448

2)深度学习提升

在DNN模型中,参数包括神经元的数量和隐藏层。我们用不同的神经元和隐藏层的值进行测试,并手动改变它们。然后,我们根据准确性、对数损失和AUC的结果,选择最佳的一个。我们首先将我们的DNN分类模型与我们的机器学习框架中的第一级分类和LSTM模型进行比较,我们使用LSTM模型来训练和测试我们收集的数据集。由于我们发现J48在七个机器学习模型中具有最好的准确性,我们将只比较J48与我们的DNN模型。

图12显示了J48、LSTM模型和拟议的DNN模型在不同域名数量下的准确率比较结果。图12(A)显示了在域名总数为1000、5000、15000、20000、50000时的准确率测试。J48的平均准确率为95.89%,LSTM的平均准确率为91.12%,而DNN模型的平均准确率为96.43%。我们可以看到,当域名数量为1000个时,J48的准确率比DNN模型高,而在5000个域名时,它们的准确率相近。然后,随着域名数量的增加,DNN模型的准确率已经超过了J48模型。LSTM模型的准确率低于J48和DNN模型,但它增加得很快。在图12(B)中,我们继续增加域名数量,域名总数为50k、100k、500k和1M。J48的最高准确率在1M域名时为96.35%,LSTM模型的最高准确率在1M域名时为98.77%,DNN模型的最高准确率为97.79%,也是在1M域名。从图中我们可以看出,随着域名数量的不断增加,准确率的增长速度开始放缓。LSTM模型在域名数量非常多的情况下,如50万和100万域名,其准确率比DNN模型高。然而,LSTM的平均精度为96.9%,低于DNN模型的平均精度97.58%。

image-20220225090521444

我们还比较了J48、LSTM模型和DNN模型的假阳性,因为它是机器学习中的一个常见测量方法。图13(A)显示了J48、LSTM模型和DNN模型分别对1K、5K、15K、20K、50K、100K、500K和100万个域名进行测试的误报情况。假阳性是所有阳性中的归一化值。该值越小,性能就越好。我们可以看到,随着域名数量的增加,LSTM模型的误报率迅速下降,但对于域名数量小于50K的情况,它的误报率比DNN模型和J48要差。从J48、LSTM模型和DNN模型的评估结果来看,我们发现DNN模型在处理各种规模的数据集时都比J48和LSTM有更好的表现。

除了比较准确率和假阳性之外,我们还比较了LSTM模型和DNN模型的精确率、召回率和接收者操作特征曲线(ROC)下的面积(AUC)。精度衡量所有预测的阳性实例中真正的阳性实例的比例。召回率衡量的是在所有实际的阳性实例中被检测为阳性的那一部分。ROC曲线是在不同的阈值设置下,通过绘制真阳性率与假阳性率的对比来创建的。AUC衡量ROC曲线下的面积。AUC越大,性能越好。

image-20220225092559287

表2显示了LSTM模型和DNN模型的精确度、召回率、AUC和所用时间(秒)的比较。

image-20220225093045676

为了克服过度的问题,我们将训练数据和验证数据分开,并计算对数损失来衡量性能。我们的目标是使验证日志的损失尽可能地与训练日志的损失相匹配。图14显示了10个时期的训练和验证日志损失。我们选择50000个域名的数量作为例子。我们可以看到,验证日志的损失与训练日志的损失非常相似,并且随着时间的推移与训练日志的损失保持一致。

image-20220225093249235

为了更好地单独建立和评估我们的DNN模型,我们选择了50K、100K、500K和1M域的数量来衡量ROC、AUC、学习率和优化算法。图13(B)显示了不同域数的ROC曲线。50K、100K、500K和1M域的AUC分别为0.9764239、0.9873341、0.9897和0.99,接受。1M域的结果有最好的AUC,ROC曲线被绘制在红线上。50K域的ROC绘制在黄线上,它的AUC是其中最小的。

图15显示了对不同学习率的评估。我们选择了0.00001、0.0001、0.001、0.01、0.05、0.1和0.5的学习率,在50K、100K、500K和1M这四种不同数量的域之间进行比较,我们评估了它们的准确性和对数损失。图15(A)显示了不同学习率的准确率比较。紫色线、黄色线、蓝色线和红色线分别代表50K、100K、500K和1M域的数量。随着学习率的增加,准确性也普遍提高。在学习率为0.05和0.1时,平均准确率比其他学习率的平均准确率高。然后,在学习率为0.5时,准确率下降。在学习率为0.00001、0.0001、0.001、0.01、0.05、0.1和0.5时的平均准确率分别为91.95%、95.44%、96.77%、97.25%、97.58%、97.54%和97.15%。学习率为0.05时的平均准确率最高,比0.05时的平均准确率略高。图15(B)显示了不同学习率的对数损失比较。在学习率为0.00001、0.0001、0.001、0.01、0.05、0.1和0.5时的平均对数损失为2.75182、1.54855、1.12041、0.94418、0.83415、0.84775和0.99205。0.05的学习率具有最低的对数损失和最好的准确性。因此,在我们的DNN模型中,我们选择0.05作为我们所有其他实验的学习率。

image-20220225094206586

在图16中,我们显示了使用不同优化算法的结果,梯度下降、亚当和阿达格拉德。图16(A)报告了三种优化算法之间的准确性比较。梯度下降、Adam和Adagrad的平均准确率分别为96.997%、97.079%和97.578%,其中,Adagrad优化算法的准确率最高。图16(B)显示了每种优化算法所用的时间。建立DNN模型的平均时间分别为12188.16041,12364.92334和11496.49419秒。Adagrad使用的时间最少,适合于我们的DNN模型。预测一个域名的平均时间约为27.87毫秒。

image-20220225095126089

C.讨论

从我们的实验评估中可以看出,所提出的机器学习框架已经证明了预测未来DGA域名的有效方法。我们用DGA-feed中最新的DGA域名对所提出的机器学习框架进行了评估,以便从这些真实世界的数据中对DGA域名进行分类和预测。我们的评估表明,在我们的模型中提出的33个特征中,J48分类算法与ANN、SVM、Logistic和Naive Bayes相比,在最小分类时间0.0144毫秒和最高准确率95.89%方面表现得最为有效和高效。我们还测试了聚类的准确性。我们的结果表明,我们使用的DBSCAN聚类模型可以为进一步的时间序列模型提供高精度的聚类域,准确率为92.45%。我们注意到,我们从聚类中得到的最佳精度是只使用DNS查询特征的聚类。实验结果证明,一个DGA域名集群通常指向几个特定的服务器IP。这些域名的DNS信息非常相似,因此只用DNS特征对它们进行聚类是非常准确的。我们已经进一步评估了不同的HMM模型的准确性和性能。我们发现,HMM模型在长度为15的情况下表现最好,运行时间为1.02ms,匹配准确率高达95.21%。然后,我们评估了我们的DNN模型,并将其与J48分类算法进行了比较。我们发现DNN模型对大数据集的分类效果更好。DNN模型的平均准确率为96.43%,最高准确率为97.79%,测试了100万个域名。我们还评估了我们的DNN模型的不同学习率。我们注意到,DNN模型的最佳学习率是0.05。随着学习率的增加,DNN模型的准确性也在增加。这是因为学习率是用来控制更新权重的步骤的;如果学习率过大或过小,都会导致错过局部最小值或收敛过慢。因此,选择一个合适的学习率在DNN模型中是非常重要的。最后,我们比较了用于DNN模型的优化算法。我们发现,与Adam和梯度下降算法相比,Adagrad优化算法的性能最好。Adagrad收敛速度快,因为它对稀疏数据有好处。在我们的数据集中,DGA域的一些DNS特征都是零,所以Adagrad适合用于我们的DNN模型。

0x06 结论和未来研究方向

检测DGAs是安全领域的一个巨大挑战。黑名单对处理静态方法有好处。然而,DGAs通常被攻击者用来与各种服务器通信。它们是动态的,所以简单地使用黑名单是不足以检测DGA的。在这项研究中,我们提出了机器学习框架,并开发了一个深度学习模型来处理DGA威胁。拟议的机器学习框架包括一个动态黑名单、一个特征提取器、一个用于分类和聚类的两级机器学习模型以及一个预测模型。我们在一年的时间里收集了实时的威胁情报,其中包括互联网上所有领域的活体威胁。随着我们收集的数据规模越来越大,我们建立了一个深度学习模型来进行分类,它比机器学习算法有更好的性能。基于我们对现实世界的广泛实验,我们已经表明,所提出的框架可以有效地提取域名特征,以及对域名进行分类、聚类和检测。未来,我们将进一步探索用于域名聚类和预测的深度学习算法,并在现实世界的测试平台如GENI上进行评估。

总结

  1. 分类、聚类和深度学习
  2. 语言性特征分类:包括长度、有含义词汇比、可读(可发音)得分、数字百分比、最长含义字符长度百分比、编辑距离算法
  3. DNS特征
  4. DBSCAN聚类方法
  5. HMM时序预测
  6. 三类优化算法:随机梯度下降SGD、自适应梯度Adagard、自适应矩估计Adam
  7. 实验过程中考虑假阳性样本问题
posted @ 2022-02-25 10:12  王二狗喵喵喵  阅读(341)  评论(0)    收藏  举报