课题研究 域名数据与威胁监测 子课题03 · 第2篇 / 共8篇
03DGA域名检测 · DGA算法机理与家族剖析

DGA域名检测

理解DGA的种子—PRNG—映射—输出四元结构,是预测性防御的前提。本篇建立TDD(时间依赖确定性)、TDN(时间依赖非确定性)、TID(时间独立确定性)三类种子分类学,剖析Kraken、Conficker.C、Torpig、Gameover Zeus、Suppobox、Pykspa、Necurs等经典家族的算法参数与攻防博弈史,并给出从样本到可复现生成器的五步逆向流水线与域名碰撞规避要求。

PRNG种子ConfickerNecursSuppobox逆向工程研究状态:研究中
所属专题域名数据与威胁监测
姊妹篇第1篇研究总览与背景 / 第3篇统计特征与机器学习检测
数据工具DGArchive、Ghidra/IDA Pro、隔离沙箱

01 · DGA算法的基本构成

1.1 四元结构:种子—PRNG—映射—输出

无论实现细节如何变化,几乎所有DGA都可以分解为四个构件:①种子(seed)——算法的共享秘密输入;②伪随机数生成器(PRNG)——如线性同余发生器(LCG)、乘法进位发生器(MWC)等廉价算法,以种子为初值产生随机数流;③字符映射——将随机数映射为域名标签字符(如模26映射到a-z,或按词典索引拼接单词);④输出组装——拼接二级域名、选择TLD,形成候选域名列表。形式上可记为 Dt = G(seedt) = M(P(seedt)),其中种子可随时间变化(如按UTC日期),也可为常量。防御方的核心目标,就是恢复G或seed——一旦成功,即可预先计算未来全部候选域名,将检测转化为确定性封锁。

1.2 种子是攻防博弈的焦点

种子的设计直接决定DGA的可防御性,按“是否依赖时间”与“是否确定可复现”两个维度,可形成经典的三类(Vranken等人2022年综述采用的分类框架):

类型判定代表家族防御含义
TDD 时间依赖确定性种子 = f(日期),算法公开即可复现Conficker、Murofet、Necurs备选DGA可预先计算未来域名,预注册与黑名单有效——但需跨上百个TLD协调(Conficker.C教训)
TDN 时间依赖非确定性种子依赖外部不可预测数据晚期Torpig(Twitter趋势)、Bedep(欧洲央行外汇牌价)无法预计算,只能依赖行为检测与实时发现
TID 时间独立确定性种子为硬编码常量,域名序列固定可枚举Kraken、Suppobox域名集合有限且已知,黑名单与模式匹配最有效

设计启示:TDD家族的防御最优解是“种子重建+批量预注册”,TDN家族的最优解是“解析器侧行为检测”,TID家族的最优解是“已知集合匹配”。混淆三种类型而采用统一处置策略,是DGA治理中最常见的资源错配。

02 · 经典家族机理剖析

以下家族档案均整理自公开逆向分析报告与同行评审论文(见本篇参考来源),是理解DGA设计取舍的最佳样本:

家族出现时间种子类型输出特征产量与规模
Kraken2008早期为静态种子,后期引入日期LCG式PRNG,可复现性极高,是最早被完整逆向的DGA之一(Paul Royal分析)曾被报道为当时规模最大的僵尸网络之一(数十万台受控主机量级)
Conficker.A/B2008TDD:UTC日期每日250个候选,8—11字符;A版横跨5个TLD(biz/info/org/net/com),B版扩展至7个(新增cc/cn/ws)250个/日;域名空间之大使黑名单失效,成为DGA对抗的标志性样本
Conficker.C2009(4月1日生效)TDD:UTC日期每日50,000候选域名、4—9字符,横跨110个TLD(按后缀计116个);主机每日仅查询其中约500个;候选与合法域名每日碰撞约150—200个倒逼Conficker工作组(CWG)跨国预注册与sinkhole协同;ICANN 2010年官方复盘将其列为多利益相关方协同处置典范
Torpig(Mebroot/Sinowal)2009早期TDD(日期);后期TDN(Twitter热门话题)日期种子时代域名完全可预测——研究者于2009年直接接管其C2域名长达10天(CCS 2009);转向Twitter种子后预测失效接管期间观察到大规模受控主机与海量窃取数据,凸显“种子可预测=致命弱点”
Murofet(Zeus变种)2010前后TDD:日期每日800个候选域名Zeus家族为规避域名封锁引入DGA的样本
Gameover Zeus(GOZ)2011—2014P2P主信道+TDD备用DGA备用DGA每周生成1,000个候选域名(顶级域含biz/com/info/net/org/ru等),P2P失效时启用2014年5月30日Operation Tovar国际执法行动剿灭;其后以newGOZ复活,按地区生成每日1,000(美国)/10,000(乌克兰、白俄罗斯)个域名
Suppobox2010年代TID:硬编码魔数词典型DGA:将内置英文词典中的单词两两拼接,生成可读、可发音的域名对熵/n-gram检测构成经典挑战,催生词典型DGA专项检测研究
Pykspa2013前后活跃至今TDD:日期+版本演进(v1/v2)经Skype消息传播的蠕虫;v2起按国家/语言选择性生成域名Akamai 2019年追踪显示其感染主机长期维持每日万级规模
Necurs2012—2021多层策略:rdtsc随机源→16个硬编码→日期+魔数第一层用4个随机域名做沙箱探测(不可预测、不可回连);第二层16个硬编码域名;第三层备选DGA每4天一批2,048个候选域名、7—21字符、横跨43个TLD2020年3月微软联合BitSight、Shadowserver等机构实施sinkhole:处置前已可向前计算未来25个月、约610万个潜在C2域名(覆盖42个TLD+.bit),Shadowserver通过Registrar of Last Resort(RoLR)在22个ccTLD注册局协同封锁;sinkhole峰值观测约16.3万台唯一感染主机IP(2020-03-11),其后稳定在约15.5万台/日

2.1 候选域名规模对比

经典DGA家族候选域名产量对比
口径:每日生成量(Gameover Zeus为每周1,000个);数量级差异反映了不同家族的反封锁强度设计
来源:ICANN《Conficker Summary and Review》(2010)、HKCERT(2009)、Schiavoni等DIMVA 2014、微软Necurs处置公告(2020)等公开资料整理。

03 · 逆向工程方法论

算法与种子的获取是一切预测性防御的前提。主流逆向流程如下:

DGA逆向工程标准流程
从样本到可复现生成器的五步流水线,全程在隔离沙箱中执行
来源:本流程综合DGArchive(USENIX Sec 2016)与波恩大学自动提取研究(Automatic Extraction of Domain Name Generation Algorithms from Current Malware)的方法论归纳。

3.1 三类种子获取手段的成熟度

手段适用类型成熟度与局限
人工逆向TDD/TID准确可靠但成本高;DGArchive的43个家族即以此方式建立
自动提取TID为主波恩大学研究已能从当前样本自动提取部分DGA逻辑,但对混淆与外部种子支持有限
种子重建TDDOpen SESAME(NDSS 2021)证明可从被动DNS观测自动重建种子与PRNG,并将家族覆盖从43个扩展到99个

04 · 衍生问题:域名碰撞与合法流量误伤

Conficker.C的历史教训表明,大规模预注册策略存在副作用:其每日50,000个候选域名中约有150—200个与合法已注册域名碰撞。当全球数百万台Conficker受感染主机同时探测这些域名时,合法域名持有者会遭遇大量无效访问——这是一种事实上的分布式拒绝服务。处置因此必须建立碰撞排除清单:预注册或sinkhole前先与现存注册数据库比对,对碰撞域名采取豁免。这一教训对今天任何"批量域名处置"动作(包括sinkhole与注册局暂停解析)依然有效。

05 · DGA分类学与命名规范

除TDD/TDN/TID种子分类外,实践中还常用以下维度刻画DGA:

  • 输出形态:字符随机型(Conficker)、单词拼接型(Suppobox)、十六进制型(部分GoZ配置)、长短交替型等;输出形态直接决定检测特征的选择。
  • 激活条件:主信道失效后备启用(GOZ)、周期性例行回连(Conficker)、沙箱探测层(Necurs第一层)——激活条件影响在DNS流量中的观测形态。
  • 家族命名:学术界以DGArchive命名为准;安全厂商内部代号需在情报共享时映射到公共命名,避免同一DGA多套名称造成的协作混乱。

06 · 样本获取与实验伦理

实验安全要求:①恶意样本 detonation 必须在无生产数据、无外联白名单控制的隔离沙箱中进行,DNS探测流量应镜像至内网模拟解析器,严禁真实回连C2;②从公共样本库(DGArchive、Malpedia等)获取样本需遵守其使用条款与出口管制规定;③逆向产出的生成器代码仅用于防御研究,不得用于构建或改进恶意基础设施;④涉及真实网络观测数据时,遵守数据来源方协议与个人信息保护要求。

本篇参考来源(第2篇)

家族参数均出自下列公开逆向分析、同行评审论文与官方处置报告。

[1]

Plohmann D. 等:A Comprehensive Measurement Study of Domain Generating Malware,USENIX Security 2016(DGArchive,43个家族):usenix.org会议页

[2]

ICANN:Conficker Summary and Review(2010年5月):icann.org官方PDF

[3]

HKCERT:Information security impact arising from Conficker.C worm(2009年3月):hkcert.org

[4]

Stone-Gross B. 等:Your Botnet is My Botnet(Torpig接管与日期种子可预测性),ACM CCS 2009:ACM Digital Library

[5]

Schiavoni S., Maggi F., Zanero S., Cavallaro L.:Phoenix: DGA-based Botnet Tracking and Intelligence(GOZ每周1,000个DGA域名等家族追踪方法),DIMVA 2014:Springer

[6]

微软:Necurs僵尸网络处置公告(2020年3月,sinkhole观测约15.5万唯一感染IP/日,子僵尸网络5/7/9/11/13/15):blogs.microsoft.com Shadowserver sinkhole数据复盘(峰值约16.3万、稳定约15.5万唯一感染IP/日)

[7]

Vranken H., Daniele L., Aharon D. 等:Detection of DGA-Generated Domain Names with TF-IDF,Electronics 2022, 11(3):414(种子TDD/TDN/TID分类框架):mdpi.com全文

[8]

Akamai:Pykspa v2 DGA updated to become selective(2019年):akamai.com博客

[9]

Wichmann A., Wächter G. 等:Automatic Extraction of Domain Name Generation Algorithms from Current Malware(波恩大学,方法PDF):net.cs.uni-bonn.de

[10]

Open SESAME,NDSS 2021(从被动DNS自动重建种子,公开家族覆盖43→99):ndss-symposium.org