专栏首页绿盟科技研究通讯DGA域名的今生前世:缘起、检测、与发展

DGA域名的今生前世:缘起、检测、与发展

一、引言

恶意软件如今已经发展为威胁网络安全的头号公敌,为了逃避安全设施的检测,其制作过程也越来越复杂,其中一个典型做法是在软件中集成DGA(Domain Generation Algorithm)算法,产生速变域名,该方式作为备用或者主要的与C2服务器通信的手段,可以构造更加鲁棒的僵尸网络,做到对感染肉鸡的持续性控制。对应地,针对DGA算法的研究现在也是安全圈讨论的热点话题,学术界和工业界也有大量DGA域名检测的工作,但是在实际使用中存在误报过多的现象。由于传统DNS使用明文进行数据传输,造成严重的用户隐私泄露问题,DoT(DNS-over-TLS)、DoH(DNS-over-http)协议陆续通过RFC标准,用于保护用户隐私,但另一方面,加密DNS的使用将给DGA域名的检测带来新的挑战。

本文首先对DGA域名的背景做简单介绍,然后对各种DGA域名检测方法做梳理和汇总,并选择其中一种方法用于实际产品测试,对结果进行深入分析并给出相应建议,接着简单介绍加密DNS给DGA检测带来的挑战和检测加密DGA流量方法,最后总结DGA域名检测目前工作的不足和待解决的问题。

二、背景

近年来,恶意软件的数量和复杂度持续增长,催生了大量黑色产业链和网络犯罪行为,据统计,网络空间犯罪的资本市场到2018年止已经高达1500亿美元[1],为了维持持续的经济效益或其他目的,攻击者对肉鸡的管理是僵尸网络控制的重要问题,对肉鸡的进行有效管理,不仅有利于各种攻击类型的发起,更可以延长攻击被发现时间,并且实现攻击者真实身份的隐藏。现代恶意软件一般通过使用DGA算法与C2服务器建立通信,从而达到上述目的。

1DGA域名原理

恶意软件利用DGA算法与C2服务器进行通信的原理如图1[2]所示,客户端通过DGA算法生成大量备选域名,并且进行查询,攻击者与恶意软件运行同一套DGA算法,生成相同的备选域名列表,当需要发动攻击的时候,选择其中少量进行注册,便可以建立通信,并且可以对注册的域名应用速变IP技术,快速变换IP,从而域名和IP都可以进行快速变化。

很显然,在这种方式下,传统基于黑名单的防护手段无法起作用,一方面,黑名单的更新速度远远赶不上DGA域名的生成速度,另一方面,防御者必须阻断所有的DGA域名才能阻断C2通信,因此,DGA域名的使用使得攻击容易,防守困难[3]。

图1 DGA域名工作原理

2DGA域名分类

DGA算法由两部分构成,种子(算法输入)和算法,可以根据种子和算法对DGA域名进行分类,DGA域名可以表示为AGD(Algorithmically-Generated Domains)。

2.1

按照种子进行分类

种子是攻击者和客户端恶意软件共享的一个DGA算法的输入参数之一,不同的种子得出的DGA域名是不一样的。一般来说,种子可按如下方式进行分类:

1.基于时间的种子(Time dependence)。DGA算法将会使用时间信息作为输入,如:感染主机的系统时间,http响应的时间等。

2.是否具有确定性(Determinism)。主流的DGA算法的输入是确定的,因此AGD可以被提前计算,但是也有一些DGA算法的输入是不确定的,如:Bedep[4]以欧洲中央银行每天发布的外汇参考汇率作为种子,Torpig[5]用twitter的关键词作为种子,只有在确定时间窗口内注册域名才能生效。

根据种子的分类方法,DGA域名可以分为以下4类:

1.TID(time-independent and deterministic),与时间不相关,可确定;

2.TDD(time-dependent and deterministic),与时间相关,可确定;

3.TDN(time-dependent and non-deterministic),与时间相关,不可确定;

4.TIN(time-independent and non-deterministic),与时间不相关,不可确定;

2.2

按照生成算法进行分类

现有DGA生成算法一般可以分为如下4类:

1.基于算术。该类型算法会生成一组可用ASCII编码表示的值,从而构成DGA域名,流行度最高。

2.基于哈希。用哈希值的16进制表示产生DGA域名,被使用的哈希算法常有:MD5,SHA256。

3.基于词典。该方式会从专有词典中挑选单词进行组合,减少域名字符上的随机性,迷惑性更强,字典内嵌在恶意程序中或者从公有服务中提取。

4.基于排列组合。对一个初始域名进行字符上的排列组合。

根据种子和生成算法的不同,DGA域名可以选择不同种子类型和算法类型的组合方式,因此最终DGA域名的生成形式多样性高。

3DGA域名存活时间

Plohmann Daniel等人[3]对43个恶意软件家族做逆向分析,实现了DGA算法并对超过1亿个DGA域名做分析,结合WHOIS信息,统计出了不同DGA家族域名存活时间的分布。每个DGA家族的域名存活详细信息不在此列出,感兴趣的读者可以直接阅读原文。

总结来说DGA域名的存活时间一般较短,大部分域名的存活时间为1-7天,因此DGA域名这种存活时间短的特性对防守方的检测实时性提出了更高的要求,防守方需要在尽量短的时间内对检测出DGA域名,并作出相应的处置措施,才能有效降低风险。

三、检测

DGA域名自曝光以来,其检测工作就在持续进行,在不同场景、不同时期,检测方法也呈现出一定区别,本节梳理相关工作并在实际产品中进行测试,给出算法在实际场景中遇到的问题和优化建议。

1相关工作

按照检测方法的不同,DGA域名检测大致可以分为以下两种:基于文本分析、基于行为分析。

基于文本分析的代表工作有[9][10][11],[9]通过分析DGA域名与正常域名之间字符分布的差异,对IP产生的域名进行批量分类,[10]通过LSTM算法分析DGA域名与正常域名之间的差异,可以判定每个域名是否为DGA域名, 由于DGA域名的请求过程中会产生大量NXDomain,[11]对NXDomain进行分类,有效识别DGA域名。

基于行为分析的代表工作有[12][13],[12]对同一主机产生的NXDomain进行聚类和分类,可以发现感染主机,进一步发现C2域名,[13]将检测问题转为图的推理问题,从代理日志构造主机与域名之间的关系图,用一些真实信息作为种子作为图的输入,然后使用信念传播算法估计域名为恶意的边缘概率。

2产品测试

该部分分为两部分,离线模型训练和线上产品检测。我们利用深度学习技术,自动化提取特征,对NXDomain进行分类,找出其中的DGA域名[15]。

2.1

模型训练

数据集:我们从DGArchive[14]收集DGA域名,其中包含约4570万个DGA域名,包含62个DGA家族,另外收集收集了大量良性NXDomain,包含1530万个域名,以这些数据为原始输入,进行有监督学习。

预处理:首先我们剔除良性NXDomain数据集中的少量噪声和DGArchive中的噪声,构造更加纯净的数据集,然后对数据集中包含的字符进行one-hot编码,作为神经网络模型的输入。

数据采样:由于各个类别的数据量不一致,为了使分类结果不产生偏差,我们确定一个阈值,对高于该阈值的类别进行下采样,最终保证每个类别的域名数量一致。

模型选择:选择CNN、LSTM、BiLSTM三种神经网络模型进行测试,神经网络最后一层分别选择:sigmod和sofmax两种函数,实现二分类和多分类,并且进行模型调参。

交叉验证:对数据集进行5折交叉验证。

实验结果。图2为3种神经网络模型的多分类统计结果,由于包含的DGA家族数量较多,多分类的实验效果总体表现不佳。我们查看每种DGA家族的分类情况,如图3所示,我们随机选择33种DGA家族和良性域名进行展示(34类),可以发现很多DGA家族几乎可以做到100%的分类准确率,尤其是基于字典的DGA家族,如:suppobox,banjori,volatile等。

图2 不同神经网络模型的多分类统计结果

图3 CNN多分类(34分类)的混淆矩阵

我们将多分类中所有DGA家族的类别合成一种类别,比较二分类与FANCI[11]的实验结果,如图4所示,实验结果表明,我们在二分类上具有很高的准确率,并且优于现有的基于NXDomain检测DGA域名的方案。

图4 二分类结果

2.2

产品测试

在离线模型中,我们发现各种深度学习算法的表现相差不大,挑选速度最快的CNN模型用于产品的日志检测,检测过程如下。

选取2019年产品DNS日志,挑选出其中的NXDomain进行检测,共计669万域名。经过如下过滤手段:

本地白名单。我们构建了本地白名单列表,二级域名如果能匹配上该列表则过滤该域名,过滤后剩余545万域名。

顶级域名合法。数据中存在大量顶级域名不存在的DNS请求,这些域名不是DGA域名,过滤后剩余463万域名。

Alexa_top_10000。Alexa top 10000的域名一般认为都是对大型企业的访问,理论上不存在DGA域名,过滤后剩余444万域名。

将剩余的444万个域名通过保存的CNN模型进行检测,检测结果显示有42万DGA域名。

2.3

结果验证

2.3.1

确定误报

对检测出的高可疑的DGA域名进行分析,制定如下将误报的策略:

1.去除二级域名为”afftb288.com”的域名,检测结果中有38万主域名为“afftb288.com”,如“41959214.afftb288.com”、“34308479.afftb288.com”,虽然该域名属于赌博网站,但经判定该域名不符合DGA域名特征,过滤。

2.去除主域名长度小于等于5的域名,由于DGA域名要避免与正常域名碰撞,被恶意软件使用的DGA域名长度一般也大于5,因此删除此类域名,如“baidu.com”中,主域名“baidu”长度 <=5,需要进行过滤。

3.删除正规机构域名,检测结果中有少量正规机构的域名,如”ztmbec.com”,“speedy.com.ar”等。

经过上述过滤手段,待确认域名剩余2.7w

2.3.2

确定DGA域名

根据公开的威胁情报,我们发现两类DGA域名,

第一类包含2572DGA域名,其中主域名有206个,如:

lhsjtcl.com

dfwpmpm.me

lzxemfc.com

tmhufuf.com

zccaotl.com

orahcre.org

eoerkfc.com

pycbumk.com

第二类为挖矿木马C2,如:zeruuoooshfrohlo.su,大约110个,

2.3.3

持续监测

对于剩余2万多高可疑DGA域名,我们给出DGA域名的置信度评分和可能的恶意软件家族信息,并进行持续监控、与恶意样本关联分析等后续操作。

四、发展

DGA域名从最开始的伪随机字符串开始进入人们的视野,由于该方式产生域名的字符分布与正常域名的分布有明显区别,易被检测,攻击者转而使用基于字典的DGA域名算法,从字符分布上尽量拟合正常域名,极大地降低了字符的随机性。近年来,随着DNSCrypt、DoT、DoH等DNS加密协议的制定和部署,越来越多的恶意软件使用加密流量逃脱监控,并且有研究表明已经发现使用DoH的恶意软件[6]。

随着加密DNS的进一步部署,预计将来有更多DGA域名通过加密DNS协议进行传输,针对使用DGA域名botnet的检测将会更加困难,文章[7]利用pydig工具对DGA域名和正常域名发送请求,产生加密流量,做了进一步分析,去除TLS握手等阶段的无效信息,文章对数据包大小进行分析,发现DGA域名与Alexa域名的的加密数据包大小分布存在明显差异,图5[7]表明,数据包大小可以在加密DNS流量中可以作为区分DGA域名的重要依据。

图5 DGA域名与Alexa域名通过DoT协议传输的数据包大小分布

虽然文章没有对加密协议、是否使用Padding技术、如何识别DoH流量等因素做深入讨论,但这些因素对于数据包大小的影响很大,对检测结果的影响有待进一步研究。

五、总结

DGA域名从2009年被曝光以来[5],至今发展了整整10年,虽然有大量文献研究DGA域名的性质、检测、防御、追踪等一系列话题,也有大量机构参与DGA域名的阻断、sinkhole工作,但是DGA域名迄今为止仍然作为一种主流与C2服务器通信的手段被广泛采用,由于笔者能力限制,无法给出产生这种现象的原因,到底是学术论文中的方法在实际使用中有效性弱,还是工业界的部署、处置方式不当,需要进一步进行探索,总之我们对DGA域名的研究治理工作仍然任重而道远。

参考文献:

[1].N. Ismail, Global cybercrime economy generatesover $1.5tn, according to new study,https://www.information-age.com/globalcybercrime-economy-generates-over-1-5tn-according-to-newstudy-123471631/(2018)

[2].Patsakis, Constantinos, and FranCasino. "Hydras and IPFS: a decentralised playground for malware."International Journal of Information Security (2019): 1-13.

[3].Plohmann, Daniel, et al. "A comprehensive measurementstudy of domain generating malware." 25th {USENIX} SecuritySymposium ({USENIX} Security 16). 2016.

[4].https://www.cso.com.au/vendor_blog/20/arbor-networks/10130/bedeps-dga-trading-foreign-exchange-for-malware-domains/.2015

[5].Stone-Gross, Brett , et al. "YourBotnet is My Botnet: Analysis of a Botnet Takeover." Proceedings of the2009 ACM Conference on Computer and Communications Security, CCS 2009, Chicago,Illinois, USA, November 9-13, 2009 ACM, 2009.

[6].https://www.techbullion.com/the-first-malware-abuses-dns-over-https-doh/,(2019)

[7].Patsakis, Constantinos, Fran Casino, and Vasilios Katos."Encrypted and Covert DNS Queries for Botnets: Challenges andCountermeasures." Computers & Security (2019):101614.

[8].https://github.com/shuque/pydig

[9].Yadav S, Reddy A K K, Reddy A, et al.Detecting algorithmically generated malicious domain names[C]//Proceedings ofthe 10th ACM SIGCOMM conference on Internet measurement. ACM, 2010: 48-61

[10].Woodbridge, Jonathan, et al."Predicting domain generation algorithms with long short-term memorynetworks." arXiv preprint arXiv:1611.00791 (2016).

[11].Schüppen, Samuel, et al."{FANCI}: Feature-based Automated NXDomain Classification andIntelligence." 27th {USENIX} Security Symposium ({USENIX} Security 18).2018.

[12].Antonakakis, Manos, et al. "Fromthrow-away traffic to bots: detecting the rise of DGA-based malware."Presented as part of the 21st {USENIX} Security Symposium ({USENIX} Security12). 2012.

[13].Manadhata P K, Yadav S, Rao P, et al.Detecting malicious domains via graph inference[C]//European Symposium onResearch in Computer Security. Springer, 2014: 1-18.

[14].https://dgarchive.caad.fkie.fraunhofer.de

[15].Tong M, Sun X, Yang J, et al. D3N: DGADetection with Deep-Learning Through NXDomain[C]//International Conference on KnowledgeScience, Engineering and Management. Springer, Cham, 2019: 464-471.

内容编辑:天枢实验室 童明凯 责任编辑:肖晴

本文分享自微信公众号 - 绿盟科技研究通讯(nsfocus_research)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优雅地创建未定义类PHP对象

    在PHP中,如果没有事先准备好类,需要创建一个未定义类的对象,我们可以采用下面三种方式:

    硬核项目经理
  • Appium+python自动化(四十一)-Appium自动化测试框架综合实践 - 即将落下帷幕

      今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现。到今天为止,大功即将告成;框架所需要的代码实现都基本完成。

    北京-宏哥
  • 论P&R | Pin Density 跟 Congestion

    在《论综合:为什么做physical aware synthesis》中论及做Physical 综合的二分之一原因是Congestion 优化;Congesti...

    老秃胖驴
  • Vue中的v-model与my97日期选择插件冲突

    Vue中的v-model指令只是一个语法糖,其具体实现是:监听input框的input事件,然后将用户输入的值赋值给input框的value属性

    Theone67
  • 正则表达式简介

    正则表达式(Regular Expression)是一门通用的知识,我们的工作中随处可见,掌握了它,可以显著提升我们的工作效率。它的主要作用是根据一串规则串用来...

    未来sky
  • 前端dom操作竟然使得http请求的时间延长了

    最近在项目中遇到了一个奇怪的问题:在google浏览器的调试窗口network下看到一个请求的时间一直是2s多,但是当我把这个请求单独拿出来执行的时候发现根本用...

    Theone67
  • 编程小知识之 Lua 函数定义

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    用户2615200
  • vue双向数据绑定

    我之前一直以为vue的双向数据绑定只有在视图中显式使用了才会进行视图的更新,今天发现当在某个方法中使用到某个变量时,该变量改变之后,会重新调用该方法,例子如下:

    Theone67
  • javascript 异或运算符实现简单的密码加密功能

    Theone67
  • JDK源码中的英文注释翻译(Class)

    public final class Class<T> implements java.io.Serializable, GenericDeclaration,...

    Theone67

扫码关注云+社区

领取腾讯云代金券