01 背景
计算机网络实现了资源共享、即时通信和分布式计算,给人们的工作和生活带来了极大的便利。然而这些网络也会被恶意软件滥用,僵尸网络(botnet)就是典型例子。僵尸网络由大量受控主机即僵尸(bot)和一个或多个命令和控制c2(command &control)服务器构成,bot与c2服务器相互通信以便传递命令和数据。为避免c2服务器被发现,恶意软件设法采用规避技术来隐藏bot与c2服务器的通信行为,其中,域名生成算法dga(domain generation algorithm)就是一种实用技术。简单地说,攻击者利用dga算法和种子(如时间、词典等)生成大量算法生成域名agd(algorithmically generated domain),然后只需要使用一个域名来进行c2通信,而防御者为了发现该域名,需要对所有agd域名进行检测。基于这种攻防双方所需资源的不对称性,dga技术被攻击者广泛使用。mitre att&ck c2战术t1568.002技术记录了十几个使用dga技术的apt组织,比如apt41、aria-body等。从2008年臭名昭著的kraken和conficker恶意软件以来,为了绕过入侵检测系统的检查,几乎所有恶意软件都采用了dga技术。最新的技术报告估计,恶意agd域名数量约占域名总数的9.9%,其中1/5属于基于dga的僵尸网络(约占所有注册域名的1.8%)。
当前,dga域名检测研究是安全圈讨论的热点话题。传统的dga域名检测方法是利用黑名单策略实现,但由于dga域名容易生成且规模量大,这就导致不断收集和更新黑名单变得不现实。基于机器学习的dga域名检测方法可以避免这一不足,实现实时检测,已成为dga域名检测领域研究主流方向。
本文将向读者介绍dga域名基础知识、dga域名检测方法现状以及我们提出的dga域名检测方案。
02 简介
2.1 dga域名攻击原理
dga是一组算法机制,被各种恶意软件家族用来生成大量的伪随机域名。伪随机意味着字符串序列似乎是随机的,但由于其结构可以预先确定,因此可以重复产生和复制。
大多数随机生成的域名是不存在的,只有其中一小部分域名会被注册以供受控主机与c2服务器进行通信,从而获取信息或跟踪其他恶意任务。此外,当一个域名被成功阻止时,攻击者会从dga生成的域名列表中注册其他域名。利用dga域名进行攻击的原理如图1[1]所示。
攻击者通过dga算法生成大量备选域名,受控端恶意软件运行同一套dga算法,生成相同的备选域名列表,当进行攻击的时候,攻击者选择其中少量域名进行注册,受控端通过查询获取已注册域名后便可以与c2服务器建立连接,进行命令和数据传输。
2.2 dga域名分类
2.2.1 按照种子进行分类
种子是攻击者和客户端恶意软件共享的dga算法的输入参数之一,不同的种子得出的dga域名是不一样的。
dga使用的种子有很多种类,包含日期、社交网络搜索热词、随机数或词典,dga根据种子生成一串字符前缀,添加tld(顶级域,如com、org等)后得到最终生成域名。
一般来说,种子可按如下方式进行分类:
基于时间的种子:dga算法使用时间信息作为输入(如:受控主机的系统时间,http响应的时间等);
是否具有确定性:主流的dga算法的输入是确定的,因此agd可以被提前计算,但是也有一些dga算法的输入是不确定的(如:bedep以欧洲中央银行每天发布的外汇参考汇率作为种子,torpig用twitter的关键词作为种子,只有在确定时间窗口内注册域名才能生效)。
根据种子的分类方法,dga域名可以分为以下4类:
tid(time-independent and deterministic):与时间不相关,可确定;
tdd(time-dependent and deterministic):与时间相关,可确定;
tdn(time-dependent and non-deterministic):与时间相关,不可确定;
tin(time-independent and non-deterministic):与时间不相关,不可确定;
2.2.2 按照生成算法进行分类
现有dga生成算法一般可以分为如下4类:
基于算术:该类型算法会生成一组可用ascii编码表示的值,从而构成dga域名,流行度最高;
基于哈希:用哈希值的16进制表示产生的dga域名,常使用的哈希算法有:md5,sha256;
基于词典:该方式会从专有词典中挑选单词进行组合,减少域名字符上的随机性,迷惑性更强,词典内嵌在恶意程序中或者从公有服务中提取;
基于排列组合:对一个初始域名进行字符上的排列组合。
2.3 dga域名举例
dga的使用非常广泛,目前已知的dga家族有40多个。下表列举了4个dga家族的tld(顶级域)、sld(二级域)和样例:
表1 不同dga家族举例
03 现状
3.1 概述
大多数dga算法都具有时间依赖性和确定性,即它们的生成参数是可获取和可重用的,从而计算出所有可能的结果。基于此特点,可以对每个恶意软件及其变体进行逆向分析获得域名生成算法和种子,从而提取给定日期和时间的有效域名集合,加入黑名单进行dga域名检测。
但是,当考虑到每天发现的恶意软件及变种的数量时,这种方法是不可行的。原因有两个方面,其一是黑名单的更新速度远远赶不上dga域名的生成速度;其二是必须阻断所有的dga域名才能阻断受控主机与c2服务器通信。据文献[2]所言,开源黑名单的dga覆盖率低,仅不到1.2%的dga包含在黑名单中。因此,粗暴用dga构建黑名单的方法并不能解决根本问题。
基于机器学习的dga域名检测方法大部分是直接从完全合格域名fqdn(fully qualified domain name)提取特征,将fqdn作为一个字符串,提取长度、熵、ngram等特征,这类方法不依赖于上下文信息,例如时间、环境配置等,因此,可以实现实时检测。
目前传统机器学习算法和深度学习都被用于dga域名检测,并都取得了不错的效果。传统机器学习算法分为监督学习和无监督学习两类,这两类算法都在dga域名检测中有应用。
3.2 基于监督学习的检测
常用的监督学习算法有决策树和随机森林,例如文献[3]使用决策树解决区分dga域名和正常域名的二分类问题,使用的特征有域名长度、字符比例(包括元音字母、辅音字母、数字)和ngram熵;文献[4]也是使用决策树算法进行二分类,使用的特征为域名长度和自定义的域名期望值。随机森林有助于解决决策树的过拟合问题,文献中广泛使用随机森林来处理基于dga的僵尸网络问题,例如文献[5]就是使用随机森林算法解决二分类问题,使用的特征有四类:分布特征、结构特征、发音特征、通用特征。
3.3 基于无监督学习的检测
基于决策树和随机森林的模型属于监督学习,都需要特征才能工作。无监督学习与有监督学习相比有一个重要的优势是不需要带标记的数据集。众所周知的k-means算法是一个简单常用的无监督学习算法,被广泛应用在dga域名检测中,例如文献[6]使用kmeans进行dga家族的多分类,使用了域名的长度、熵和ngram相关特征;文献[7]使用kmeans进行区分正常和dga域名,使用了可读性(ngram)、信息熵、结构(长度、字符比例等)三类特征。在过去十年中,只有少数无监督算法用来解决dga域名检测问题。除了kmeans还有两种聚类方法:混合模型(mm)和hc,但它们的使用非常有限,效果不理想。
3.4 基于深度学习的检测
深度学习也在dga域名检测中有广泛的应用,循环神经网络(rnns)、长短期记忆网络(lstm)和卷积神经网络(cnn)都被应用到了dga域名检测中。例如:文献[8]使用lstm解决dga域名和正常域名二分类、dga家族多分类问题;文献[9]研究并开发了经典lstm的变体,也用来进行二分类和多分类;文献[10]比较了rnn、lstm、cnn和cnn-lstm组合进行dga二分类和多分类的效果。深度学习在二分类中表现出色,但在多分类中此类方法在精确度和召回率方面都取得了令人怀疑的结果。最后需要说明的是深度学习虽然可以提供很好的分类效果,但它们往往是过度拟合的,尤其是不透明的,缺乏透明度最终导致无法对算法进行微调,也无法解释结果背后的原因。
还值得一提的是,有研究使用深度学习算法进行特征提取,然后使用分类算法进行分类,例如文献[7]使用cnn生成特征,这些特征随后由决策树和随机森林分类器进行分类。
04 方案
本文提出了一种简单高效的dga域名检测方案。该方案仅提取域名的字符串特征进行dga域名检测,实验表明该方案简单有效。该方案的具体检测模型示意图如图2所示。接下来我们将重点从特征工程和模型评估两个角度进行介绍。
4.1 特征工程
本方案使用特征20多个,分为两类:一类为经典的字符串度量特征,例如长度、熵、字符比例等,这类特征简单有效;一类为nlp-ngrams相关的特征。这些特征大多数反映了应用实践中对域名的要求,例如seo(搜索引擎优化)建议了域名的理想长度(大约12-13个字符),以及具有易读、易记、易传播等特点。
本方案对每个特征的直方图和相对分布进行了分析,下面对部分特征分布图进行举例分析。
域名长度:
域名长度是区分正常和dga域名的一个重要特征,从图3域名长度分布图可以看出dga域名的长度更长。
域名熵:
熵反应了字符串的随机性,dga域名是由算法生成的伪随机字符串,其随机性跟正常域名相比更高。图4为正常域名和dga域名的熵分布对比图。
域名字符转移概率:
字符转移概率可以反映域名的可读性,使用正常域名或者英文语料统计n-gram的转移概率,由于dga域名更随机,其n-gram转移概率与正常语料差异较大。
字符比例:
字符比例也是区分正常域名和dga域名的常用特征,所述字符包括数字、元音字母、辅音字母等。
ngram:
本方案中计算了ngram出现概率排名的平均值和方差,基准为英文语料,由于dga域名的随机性,其与英文语料差距较大,因此其ngram出现概率的排名更靠后。
4.2 模型评估
本方案使用的训练数据来源于公开数据集,数据量在百万以上,模型检测效果如下表所示:
表2 模型检测结果
从上表的数据可以看出不同算法的检测效果差距不大,检测率均达到96%以上。
05 后记
相比较黑名单方式,基于机器学习的dga域名检测方法具有一定的优势,但仍然需要根据实际环境进行优化。本文提出的dga域名检测方案能够达到较好的检测效果,但是方案对基于词典的dga域名检测效果还有优化空间,这将作为后续研究的重点;另外,本方案是针对dga域名和正常域名进行的二分类研究,后续我们将进一步对dga家族进行多分类研究,敬请关注。
参考文献
[1]patsakis,constantinos,and francasino. "hydras and ipfs: a decentralised playground for malware."international journal of information security (2019): 1-13.
[2]kührer m, rossow c, holz t (2014) paint it black: evaluating the effectiveness of malware blacklists. in: raid 2014: research in attacks, intrusions and defenses, june, pp 1–21. springer international publishing.
[3]ahluwalia a, traore i, ganame k, agarwal n (2017) detecting broad length algorithmically generated domains. in: intelligent, secure, and dependable systems in distributed and cloud environments, chap. 2, pp 19–34. springer international publishing.
[4]truong d, cheng g (2016) detecting domain-flux botnet based on dns traffic features in managed network. security communication networks 9(14):2338–2347.
[5]luo x, wang l, xu z, yang j, sun m, wang j (2017) dgasensor: fast detection for dga-based malwares. in: 5th international conference on communications and broadband networking, pp 47–53.
[6]bisio f, saeli s, lombardo p, bernardi d, perotti a, massa d (2017) real-time behavioral dga detection through machine learning. in: 2017 international carnahan conference on security technology, pp 1–6.
[7]pu y, chen x, pu y, shi j (2015) a clustering approach for detecting auto-generated botnet domains. in: applications and techniques in information security, pp 269–279.
[8]woodbridge j, anderson hs, ahuja a, grant d (2016) predicting domain generation algorithms with long short-term memory networks. corr abs/1611.0.
[9]tran d, mac h, tong v, tran ha, nguyen lg (2018) a lstm based framework for handling multiclass imbalance in dga botnet detection. neurocomputing 275:2401–2413.
[10]vinayakumar r, soman k, poornachandran p, sachin kumar s (2018) evaluating deep learning approaches to characterize and classify the dgas at scale. j intell fuzzy syst 34(3):1265–1276.
凯发k8国际首页登录的版权声明
转载请务必注明出处。
凯发k8国际首页登录的版权所有,违者必究。
- 关键词标签:
- 天融信 人工智能安全 ai安全应用 dga域名检测