域名⽣成算法(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碰撞不上,是真的碰不上。
FANCI:基于特征的⾃动化NXDomain分类
这个我读完再整理吧。
Reference
[1] 的PPT,张永铮,王⼀鹏,臧天宁,2018秋。
[2], Samuel Schüppen, Dominik Teubert, Patrick Herrmann and Ulrike Meyer, USENIX, 2018.