概念/功能
域名生成算法DGA (Domain Generation Algorithm)是一种使用随机字符及时间、字典、硬编码等,利用一定的算法生成的域名。 DGA生成的域名具有极大的随机性,常用于中心结构的僵尸网络与C&C服务器的连接,从而逃避域名黑名单检测。
DGA是动态域名,是动态随机生成的域名,通常情况下一次性会随机生成大量的随机域名,其中只有极少数的域名是注册了的,并且能够通信的,并且这些随机生成的域名在域名长度、域名字符的随机性、访问行为特征等都是和普通的恶意域名访问都是有区别的,我们对于DGA的检测采用:LSTM长短记忆神经网络机器学习算法(对域名字符前后文法合理性判断)在结合行为特征判断算法进行综合检测分析,然后还会经过dns白名单进行进一步过滤,最后检测出来的DGA,检出率较高,同时误判率会比较低。
而动态域名区别于普通的恶意域名在于,这些域名是动态生成的,能够逃过威胁情报的检测,所以这种属于一种APT攻击,是有目的的恶意行为。
DGA的危害
随着互联网技术的不断发展与迭代,也相应产生了很多恶意软件,如今恶意软件已经发展成为威胁网络安全头号公敌,更是成为不法份子通过互联网谋取不正当利益的优选途径。当前互联网环境,涉黄、涉赌、诈骗网站充斥,并且这些非法盈利的域名具有随机性 ,更是无法被企业及社区网络中的通信设备的黑名单有效监控,因为域名生成算法DGA这项技术的存在,如果非法域名被执法部门、技术公司或托管服务提供商屏蔽,恶意软件利用DGA技术随机生成域名,非法网站仍然可以发送和接收命令或共享被盗数据。
大量快速生成恶意域名,无法有效屏蔽
不法分子可以通过DGA技术,每天可以生成成千上万的恶意域名,这些大量级的恶意域名,网络安全设备几乎无法从通过配置黑名单的方式来屏蔽所有恶意域名。
随机性大,检测困难
DGA被各种恶意软件家族用来生成大量的伪随机域名。伪随机意味着字符串序列似乎是随机的,但由于其结构可以预先确定,因此可以重复产生和复制。大多数随机生成的域名是不存在的,只有其中一小部分域名会被注册以供受控主机与服务器进行通信,从而获取信息或跟踪其他恶意任务。此外,当一个域名被成功阻止时,攻击者会从DGA生成的域名列表中注册其他域名。这也就造成了网络安全设备想要检测到所有恶意域名变得极其困难。
持续解析,伪装潜伏
大多数DGA域名在互联网环境是访问不到的,恶意攻击者无法对所有域名进行注册,但是恶意软件编写者将采用同样的种子和算法生成与恶意软件相同的域名列表,从中选取几个来作为控制服务器,恶意软件会持续解析这些域名,直到发现可用的服务器地址。这种方式导致恶意软件的封堵更为困难。
DGA的分类
按照种子进行分类
种子是攻击者利用DGA算法生成DGA域名的输入参数之一,不同的种子得出的DGA域名是不一样的。DGA使用的种子有很多种类,包含日期、社交网络搜索热词、随机数或词典等,DGA根据种子生成一串字符前缀,添加顶级域名后得到最终生成域名AGD (Algorithmically Generated Domain) 。
一般来说,种子有两个维度:
基于时间维度的种子,DGA算法使用时间信息作为输入,例如受控主机的系统时间、http响应的时间等。
基于确定性维度的种子,主流的DGA算法的输入是确定的,因此AGD可以被提前计算,但是也有一些DGA算法的输入是不确定的,例如知名恶意软件Bedep以欧洲银行每天发布的外汇参考汇率作为种子,恶意软件Torpig用大型社交网站的关键词作为种子,只有在确定时间窗口内注册域名才能生效。
根据种子的分类方法,DGA域名可以分为以下4类:
TDD(time-dependent and deterministic):与时间相关,可确定。
TDN(time-dependent and non-deterministic):与时间相关,不可确定。
TIN(time-independent and non-deterministic):与时间不相关,不可确定。
TID(time-independent and deterministic):与时间不相关,可确定。
按照生成算法进行分类
现有DGA生成算法一般可以分为如下4类:
基于算术(Arithmetic-based):该类型算法会生成一组可用ASCII编码表示的值,从而构成DGA域名,流行度最高。
基于哈希(Hash-based):用哈希值的16进制表示产生的DGA域名,常使用的哈希算法有:MD5,SHA256等。
基于词典(Wordlist-based):该方式会从专有词典中挑选单词进行组合,减少域名字符上的随机性,迷惑性更强,词典内嵌在恶意程序中或者从公有服务中提取。
基于排列组合(或称置换,Permutation-based):对一个初始域名进行字符上的排列组合。
如何检测DGA
基于监督学习的检测
常用的监督学习算法有决策树和随机森林,即利用决策树算法或随机森林算法进行DGA域名检测
基于无监督学习的检测
基于决策树和随机森林的模型属于监督学习,都需要特征才能工作。无监督学习与有监督学习相比有一个重要的优势是不需要带标记的数据集。众所周知的无监督学习算法有K-Means算法,K-Means算法是一个简单常用的无监督学习算法,被广泛应用在DGA域名检测中。
基于注册状态进行检测
注册状态指的是域名是否注册,注册时间,到期时间等状态,基于注册状态的检测,就是通过域名在商业平台注册的情况评判,本质是付费情况判别域名性质。可以通过注册时间,费用等参数画取高风险域名画像进行检测。
基于威胁情报进行检测
即通过威胁情报平台和DGA数据集进行检测,主要用于检测已知的DGA域名。
基于熵检测
熵在计算机领域中用于描述随机变量中的不确定度度量,即一段信息的随机程度有多高。通常情况下,基于随机算法生成的DGA域名有比正常域名更高的熵,可以通过熵的大小分类DGA域名。
基于隐式马尔科夫模型检测
隐式马尔科夫模型主要通过检测字符串中各个字符之间的转换概率来分类域名,随机性较高的DGA域名在统计特征上不符合正常的域名,故而可以通过该方法检测DGA域名。
基于深度学习模型检测
深度学习模型通过一个神经网络对已知的DGA域名和正常域名进行学习,从而获得一个鉴别DGA域名的分类器,深度学习模型解释性较低,难于调试,但是较传统模型效果更好,故而也有很多产品使用此方法。
如何解决?
1.DGA域名一般不会与政策域名发生碰撞因为你所说的botnet要与C2通信。
2.未检出的DGA域名依旧可以与botnet通信。
目前各大安全厂商都说使用机器学习对DGA域名进行有效的检测,其实仅限于已知的DGA家族,对于未知的DGA还是很难有效的检出。
如何防范?
企业可以利用防范恶意软件的措施来防范 DGA。
由于域名生成算法是为恶意软件提供帮助,因此大多数反恶意软件解决方案基本上都能用来抵御此类威胁。
最佳实践包括:
采用最佳的定期修补方案及时更新软件,以阻止攻击者利用软件漏洞入侵防御系统并且安装恶意软件。
开展安全意识培训,帮助用户识别可能属于恶意软件攻击的潜在恶意链接、网站和电子邮件。
使用 URL 过滤功能来阻止用户访问已知的恶意网站或点击已知的恶意链接。
部署安全解决方案,禁止用户打开恶意附件或启用附件文档中的宏。
参考资料
https://info.support.huawei.com/info-finder/encyclopedia/zh/DGA.html
http://www.virplus.com/thread-1601.htm
转载请注明:2月前 于 VirPlus 发表