【网络安全】域名生成算法(DGA)基础总结

域名生成算法(DGA)

僵尸网络正在威胁着互联网网民的安全。僵尸网络中受到恶意软件感染的僵尸主机由僵尸控制者通过C&C主机进行控制。僵尸主机常常利用DNS授权服务器来解析域名,目的是为了跟C&C服务器创建通信通道,然后获取控制命令,从而进行网络恶意活动。
在早期,僵尸主机通产采用轮询的方法访问硬编码的C&C域名或IP来访问服务器获取域名,但是这种方式在安全人员进行逆向之后会得到有效的屏蔽。目前,黑客攻击者为了防止恶意域名被发现,会使用Domain Flux或者IP Flux来快速生成大量的恶意域名。Domain Flux是通过不断变换域名,指向同一个IP,IP Flux是只有一个域名,不断变换IP,一个域名可以使用多个IP。域名生成算法(Domain Generation Algorithm),是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检测的技术手段。

DGA运行方式

攻击者端(bot-master)

使用种子运行DGA生成大量域名,随机选择少量的域名进行注册(可能生成了5000个只注册1-2个),攻击者将该域名注册并指向其C&C服务器。

受害者端(bot)

使用同样的种子运行DGA,生成大量域名,逐个访问这些域名,检测是否存在,如果该域名未注册,程序继续检测其他域名,如果该域名已注册【如果某生成域名发生了被抢注的情况该怎么办?不处理,因为那些域名并不能发攻击指令,看设计方案是否要继续进行轮询】,那么恶意软件将选择使用该域名联系C&C服务器。
DGA使用的种子有很多种类,包含日期、社交网络搜索热词、随机数或字典,生成一串字符前缀,添加TLD(如com、org等)后得到最终生成域名AGD(Algorithmically Generated Domain) 。
【怎样确定同样的种子?在程序中内嵌。但是安全人员逆向了之后仍旧不能确定种子是什么,因为并不能知道攻击者究竟以什么字段作为种子】

DGA的危害

DGA每天可以生成成千上万的恶意域名,但仅选择一小部分作为后续的攻击域名,相对于传统硬编码的恶意域名,更难检测。

DGA的优缺点

DGA的优点

1、使用DGA的僵尸网络有较为健壮的寻址方式,可对抗域名黑名单屏蔽、静态声望系统以及特征码检测系统。
2、DGA是一种理想的备用信道,可作为back up手段恢复僵尸网络控制,如Zeus v3。

DGA的缺点

1、需要逐一便利AGD,寻址效率低。
2、大量NXDomain流量导致通信易被检测发现。
3、如果AGD数量过多,出于时间和金钱成本开销,攻击者难以全部注册,防御人员可以抢注并通过sinkhole手段测量或劫持僵尸网络。

DGA分类

根据种子性质分类

1、根据种子是否依赖于时间分为两类:依赖于时间的和不依赖于时间的。
时间来源于被入侵主机的系统时间,或HTTP响应报文中的日期字段。
2、种子是否确定:确定的和不确定的。
大多数DGA的种子都是确定的,即可以预测该DGA未来使用的种子和以此产生的域名。
一些DGA的种子是不确定的,

上述两种方法将DGA划分为四个类别:
TID、TDD、TDN、TIN

根据生成算法分类

1、基于算术(Arithmetic-based)的DGA:
计算一系列的数值,这些值能根据ASCII码直接表示成域名,或者这些值作为偏移值,指向在DGA在DGA中硬编码的字符表中的一个字符。大部分DGA都属于这一类。
2、基于哈希(Hash-based)的DGA:
使用十六进制表示的哈希值生成AGD。这DGA常使用SHA256和MD5两种哈希值。
3、基于单词表(Wordlist-based)的DGA:
从一个或多个单词表中选择单词并连接成一个域名,这样的域名更具有迷惑性。
4、基于置换(Permutation-based)的DGA:
通过对一个域名进行置换操作生成多个新的域名。

对目前发现的43种DGA进行分类,得到下表:
【图】

种子是什么是一个比较难解决的问题,DGA算法相对更容易找到。
生成大量的DGA域名,去做碰撞,emmm碰撞不上,是真的碰不上。
————————————————
版权声明:本文为CSDN博主「柠檬橘子百香果」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Naristilia/article/details/83515239

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值