Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 387

域名生成算法(DGA)

审核人Cybersecurity entrepreneur & security researcher

域名生成算法(DGA) 是什么?

域名生成算法(DGA)恶意软件用于按确定性规则批量生成候选域名,以便被感染主机找到其命令控制服务器的算法。


域名生成算法(DGA)是嵌入在恶意软件中的代码,能基于共享种子每天生成成百上千个伪随机域名——种子通常是当前日期,有时还会掺入难以预测的值(如推特热搜或汇率)以阻止攻击者被抢先注册域名。机器人与操控者运行相同的算法,因而计算出相同的当日列表;攻击者只需注册其中少数,而机器人会依次遍历列表,直到某个域名可以解析。这种"会合"模型能击败静态阻断列表,因为防守方无法事先穷举所有未来的 C2 域名,也让接管变得困难:查封今天的域名对明天的毫无影响。

真实家族体现了其规模。Conficker.C 在 2008–2009 年每天在众多 TLD 上生成 5 万个域名,促成了空前的行业联盟(Conficker 工作组)对其进行预注册或封堵。Gameover Zeus 在其点对点层被扰乱时会退回到每天约 1000 个域名的 DGA;CryptoLockerNecursMurofet/Licat 均使用以日期为种子的生成器。Plohmann 等人在 2016 年 USENIX Security 的研究逆向分析了数十个 DGA 家族,揭示了种子与编码方案的多样性。

由于 DGA 查询会产生独特的 NXDOMAIN 响应突增(大多数生成的域名未被注册),防御措施以 DNS 遥测为核心:对域名字符 n-gram 与熵进行统计或机器学习分类、被动 DNS 关联、对新观测到的算法域名进行 sinkhole,以及用 EDR 规则标记发出大量失败解析的进程。

flowchart TD
  S[共享种子<br/>日期 + 盐值] --> A[恶意软件中的 DGA]
  S --> O[操控者运行的 DGA]
  A --> L[每天数千个<br/>候选域名]
  O --> R[操控者注册<br/>少数域名]
  L --> Q{DNS 查询}
  Q -->|多数失败| N[NXDOMAIN 突增]
  Q -->|某个可解析| C[连接 C2 服务器]
  N --> D[检测: NXDOMAIN 峰值,<br/>n-gram/熵 机器学习, 被动 DNS]
  C --> E[接收指令 / 外泄数据]
  D --> F[Sinkhole / 封堵]

示例

  1. 01

    Conficker.C 每天在多个顶级域下生成 5 万个候选域名。

  2. 02

    Necurs 与 Murofet 使用以日期为种子的 DGA 与各自的 C2 通道会合。

常见问题

域名生成算法(DGA) 是什么?

恶意软件用于按确定性规则批量生成候选域名,以便被感染主机找到其命令控制服务器的算法。 它属于网络安全的 攻击与威胁 分类。

域名生成算法(DGA) 是什么意思?

恶意软件用于按确定性规则批量生成候选域名,以便被感染主机找到其命令控制服务器的算法。

如何防御 域名生成算法(DGA)?

针对 域名生成算法(DGA) 的防御通常结合技术控制与运营实践,详见上方完整定义。

域名生成算法(DGA) 还有哪些其他名称?

常见的别称包括: DGA, 算法生成的 C2 域名。

相关术语