Domain Generation Algorithm(DGA)是一项古老但一直活跃的技术,是中心结构僵尸网络赖以生存的关键武器,该技术给打击和关闭该类型僵尸网络造成了不小的麻烦,研究人员需要快速掌握域名生成算法和输入,对生成的域名及时进行sinkhole。 背景僵尸网络指攻击者(Botmaster)出于恶意目的,通过命令控制信道(C&C Channel)操控一群受害主机(Bots)所形成的攻击平台。通过该平台,攻击者可以发起多种常见攻击,包括DDoS、垃圾邮件、钓鱼攻击、点击欺诈、在线身份窃取、比特币挖掘/窃取、加密勒索等。 同传统恶意代码形态相比,僵尸网络的攻击实现依赖攻击者和受害主机之间的信息交互,即攻击者需要告知僵尸主机命令,僵尸主机才可发起相应的攻击,命令的下发通过命令控制信道实现,这是僵尸网络构建的核心,也是攻防双方博弈的关键点。 在早期中心结构的僵尸网络中,僵尸主机通常采用轮询的方法访问硬编码的C&C 域名或 IP来访问命令控制服务器,获取攻击者命令,由于硬编码的域名或IP固定且数量有限,防御人员通过逆向掌握该部分内容后可对该域名进行有效的屏蔽,阻断其命令控制途径,使其失去控制源并逐渐消亡。该种缺陷称之为中心节点失效(single-point-of-failure)。 基本概念为了解决上述问题,攻击者使用Domain Flux协议来对抗防御人员的关闭,僵尸主机访问的C&C域名不再是静态硬编码,而是根据一定算法动态生成的、变化的域名,攻击者和肉鸡通信的集合点(rendezvous points)动态变化,防御人员难以关闭,该域名生成算法称之为DGA(Domain Generation Algorithm),算法的输入称为Seeds,涵盖日期、社交网络搜索热词、随机数或字典,如图1所示,生成的一串特殊字符前缀(比如kvbtltjwoxf52b68nslulzgvevh44bvatey)添加TLD后得到最终域名资源,该域名称为AGD(Algorithmically-Generated Domain),攻击者只需成功注册并让肉鸡访问到一个AGD即可实现僵尸网络的控制,而防御人员为了彻底关闭该僵尸网络,需要屏蔽所有的AGD,成本极大,因此,Domain Flux被认为是一种非常健壮的命令控制协议。 发展历史早期Domain Flux僵尸网络为2007年出现的Torpig和Karken,前者以Twitter热点话题为seed,后者则以当前日期为输入。最经典的案例为2008年出现的Conficker,该僵尸网络以日期为输入,每天生成不同的域名,其中A变种在3小时内生成250个域名尝试连接,而2009年出现的C变种更将该数字提高到了50000个,但实际访问时只会挑选其中500个进行尝试。 2011年发现的ZeuS_Gameover具备在线身份窃取和恶意软件安装功能,该僵尸网络采用Domain Flux协议,每天生成1000个纯字符域名,TLD包括com, biz, org, net, ru 和info;今年2月出现的勒索软件Locky以随机数和当前日期作为输入,但一天只生成并访问6个域名,DGA详情请参考FORCEPOINT分析报告[1],更多的Domain Flux僵尸网络案例见图2[2]。 特点分析DGA的优势:
DGA的缺点:
防御简述对于Domain Flux僵尸网络的检测需要从协议实现引发的“异常”来进行判断,可用于检测的特征包含以下几个方面: 1.寻址过程中会产生大量NXDomain报文,从主机角度来看,数量上比正常用户要高,比如Murofet每天产生超过10个NXDomain,而据Damballa Labs观测结果显示,92%正常用户不会超过10个; 2. TTL普遍较低,解析的IP地址可能存在复用的现象(历史绑定的域名为恶意域名); 3.如果某域名的DNS解析数在一个时间窗内的呈现爆炸性增长随后迅速下降,该域名很有可能为AGD; 4.为了防止和已注册域名发生碰撞,AGD的长度通常较长; 5.AGD不具备可读性,同正常域名相比违反元辅音组合规律,字母分布呈现完全随机化的特点,其熵值通常较高,利用n-gram模型(bigram和trigram)描述可以发现差异性。 总结Domain Flux虽然是种古老的协议,但时至今日该方法仍十分有效,使攻击者在攻防博弈过程中占据上风,根据flux思量衍生的URL Flux亦为攻击者提供了新的武器,从防御的角度而言,Domain Flux的对抗固然离不开逆向工程,但Passive DNS与机器学习算法相结合才是更高效的检测方法。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|