mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/generic-hacking/esim-javacard-exploitation.md'] to tr
This commit is contained in:
		
							parent
							
								
									228190f4ad
								
							
						
					
					
						commit
						43560cafb4
					
				@ -77,6 +77,7 @@
 | 
			
		||||
# 🧙♂️ Generic Hacking
 | 
			
		||||
 | 
			
		||||
- [Brute Force - CheatSheet](generic-hacking/brute-force.md)
 | 
			
		||||
- [Esim Javacard Exploitation](generic-hacking/esim-javacard-exploitation.md)
 | 
			
		||||
- [Exfiltration](generic-hacking/exfiltration.md)
 | 
			
		||||
- [Reverse Shells (Linux, Windows, MSFVenom)](generic-hacking/reverse-shells/README.md)
 | 
			
		||||
  - [MSFVenom - CheatSheet](generic-hacking/reverse-shells/msfvenom.md)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										87
									
								
								src/generic-hacking/esim-javacard-exploitation.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								src/generic-hacking/esim-javacard-exploitation.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
# eSIM / Java Card VM Exploitation
 | 
			
		||||
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
## Genel Bakış
 | 
			
		||||
Gömülü SIM'ler (eSIM'ler), güvenli bir bileşenin üzerinde **Gömülü UICC (eUICC)** akıllı kartları olarak uygulanır ve **Java Card Sanal Makinesi (JC VM)** çalıştırır. Profiller ve appletler, Uzaktan SIM Sağlama (RSP) aracılığıyla *hava üzerinden* (OTA) sağlanabildiğinden, JC VM içindeki herhangi bir bellek güvenliği hatası, **cihazın en ayrıcalıklı bileşeni içinde** uzaktan kod yürütme ilkesine dönüşür.
 | 
			
		||||
 | 
			
		||||
Bu sayfa, `getfield` ve `putfield` bytecode'larındaki eksik tür güvenliği kontrollerinin neden olduğu Kigen’in eUICC'sinin (Infineon SLC37 ESA1M2, ARM SC300) gerçek dünyada tam bir ihlalini tanımlamaktadır. Aynı teknik, kart üzerindeki byte-code doğrulamasını atlayan diğer satıcılara karşı da yeniden kullanılabilir.
 | 
			
		||||
 | 
			
		||||
## Saldırı Yüzeyi
 | 
			
		||||
1. **Uzaktan Uygulama Yönetimi (RAM)**
 | 
			
		||||
eSIM profilleri, rastgele Java Card appletlerini içerebilir. Sağlama, SMS-PP (Kısa Mesaj Servisi Noktadan Noktaya) veya HTTPS üzerinden tünellenebilen standart APDU'lar ile gerçekleştirilir. Bir saldırgan, bir profil için **RAM anahtarlarını** ele geçirirse (veya çalarsa), uzaktan kötü niyetli bir applet `INSTALL`/`LOAD` edebilir.
 | 
			
		||||
2. **Java Card byte-code yürütmesi**
 | 
			
		||||
Kurulumdan sonra, applet VM içinde yürütülür. Eksik çalışma zamanı kontrolleri bellek bozulmasına izin verir.
 | 
			
		||||
 | 
			
		||||
## Tür Karışıklığı Primitifi
 | 
			
		||||
`getfield` / `putfield` yalnızca **nesne referansları** üzerinde çalışması beklenir. Kigen eUICC'de, talimatlar yığın üzerindeki operandın bir *nesne* veya bir *dizi* referansı olup olmadığını asla doğrulamaz. Bir `array.length` kelimesi, normal bir nesnenin ilk örnek alanıyla tam olarak aynı ofsette bulunduğundan, bir saldırgan:
 | 
			
		||||
 | 
			
		||||
1. Bir byte-dizisi oluşturur `byte[] buf = new byte[0x100];`
 | 
			
		||||
2. Bunu `Object o = (Object)buf;` olarak dönüştürür.
 | 
			
		||||
3. `putfield` kullanarak bitişik bir nesne içindeki *herhangi* 16-bit değeri üzerine yazar (VTABLE / ptr çeviri girişleri dahil).
 | 
			
		||||
4. İçsel işaretçiler ele geçirildiğinde *rastgele* belleği okumak için `getfield` kullanır.
 | 
			
		||||
```java
 | 
			
		||||
// Pseudo-bytecode sequence executed by the malicious applet
 | 
			
		||||
// buf = newarray byte 0x100
 | 
			
		||||
// o   = (Object) buf            // illegal but not verified
 | 
			
		||||
// putfield <victimObject+offset>, 0xCAFE // arbitrary write
 | 
			
		||||
// ... set up read-what-where gadgets ...
 | 
			
		||||
```
 | 
			
		||||
Primitive, eUICC adres alanında **keyfi okuma/yazma** sağlar - bu, kartı GSMA ekosistemine kimlik doğrulamak için kullanılan cihaz-a özgü ECC özel anahtarını dökmek için yeterlidir.
 | 
			
		||||
 | 
			
		||||
## Uçtan Uca Sömürü İş Akışı
 | 
			
		||||
1. **Firmware'i numaralandır** – Belgelendirilmemiş `GET DATA` öğesi `DF1F` kullan:
 | 
			
		||||
```
 | 
			
		||||
80 CA DF 1F 00   // → "ECu10.13" (açık)
 | 
			
		||||
```
 | 
			
		||||
2. **Kötü niyetli applet'i OTA yükle** – TS.48 Genel Test Profili'nin kamuya açık anahtarlarını kötüye kullan ve CAP dosyasını (`LOAD`) taşıyan SMS-PP parçalarını iterek `INSTALL` ile devam et:
 | 
			
		||||
```
 | 
			
		||||
// basitleştirilmiş APDU zinciri
 | 
			
		||||
80 E6 02 00 <data>   // LOAD (blok n)
 | 
			
		||||
80 E6 0C 00 <data>   // yükleme için INSTALL
 | 
			
		||||
```
 | 
			
		||||
3. **Tür karışıklığını tetikle** – Applet seçildiğinde, bir işaretçi tablosunu ele geçirmek için write-what-where işlemi gerçekleştirir ve normal APDU yanıtları aracılığıyla bellek sızdırır.
 | 
			
		||||
4. **GSMA sertifika anahtarını çıkar** – Özel EC anahtarı applet'in RAM'ine kopyalanır ve parçalar halinde geri döner.
 | 
			
		||||
5. **eUICC'yi taklit et** – Çalınan anahtar çifti + sertifikalar, saldırganın *herhangi* bir RSP sunucusuna meşru bir kart olarak kimlik doğrulamasını sağlar (bazı operatörler için EID bağlama hala gerekebilir).
 | 
			
		||||
6. **Profilleri indir ve değiştir** – Düz metin profilleri `OPc`, `AMF`, OTA anahtarları ve hatta ek appletler gibi son derece hassas alanlar içerir. Saldırgan:
 | 
			
		||||
* İkinci bir eUICC'ye bir profili klonlayabilir (ses/SMS ele geçirme);
 | 
			
		||||
* Yeniden yüklemeden önce Java Card uygulamalarını yamanlayabilir (örneğin, STK kötü amaçlı yazılımı eklemek);
 | 
			
		||||
* Büyük ölçekli kötüye kullanım için operatör sırlarını çıkarabilir.
 | 
			
		||||
 | 
			
		||||
## Klonlama / Ele Geçirme Gösterimi
 | 
			
		||||
**PHONE A** ve **PHONE B** üzerinde aynı profilin yüklenmesi, Mobil Anahtarlama Merkezi'nin gelen trafiği en son kaydedilen cihaza yönlendirmesiyle sonuçlanır. Bir oturumluk Gmail 2FA SMS müdahalesi, kurban için MFA'yı atlamak için yeterlidir.
 | 
			
		||||
 | 
			
		||||
## Otomatik Test & Sömürü Araç Kiti
 | 
			
		||||
Araştırmacılar, bir Java Card VM'nin savunmasız olup olmadığını hemen gösteren `bsc` (*Temel Güvenlik Kontrolü*) komutuna sahip bir iç araç yayınladı:
 | 
			
		||||
```
 | 
			
		||||
scard> bsc
 | 
			
		||||
- castcheck        [arbitrary int/obj casts]
 | 
			
		||||
- ptrgranularity   [pointer granularity/tr table presence]
 | 
			
		||||
- locvaraccess     [local variable access]
 | 
			
		||||
- stkframeaccess   [stack frame access]
 | 
			
		||||
- instfieldaccess  [instance field access]
 | 
			
		||||
- objarrconfusion  [object/array size field confusion]
 | 
			
		||||
```
 | 
			
		||||
Framework ile birlikte gönderilen modüller:
 | 
			
		||||
* `introspector` – tam VM ve bellek gezgini (~1.7 MB Java)
 | 
			
		||||
* `security-test` – genel doğrulama atlatma appleti (~150 KB)
 | 
			
		||||
* `exploit`       – %100 güvenilir Kigen eUICC ihlali (~72 KB)
 | 
			
		||||
 | 
			
		||||
## Önlemler
 | 
			
		||||
1. **Kart üzerindeki byte-code doğrulaması** – yalnızca yığın üstü yerine tam kontrol akışı ve veri akışı türü izleme zorunlu kılın.
 | 
			
		||||
2. **Dizi başlığını gizle** – `length` değerini örtüşen nesne alanlarının dışına yerleştir.
 | 
			
		||||
3. **RAM anahtarları politikası güçlendir** – asla kamu anahtarları ile profiller göndermeyin; test profillerinde `INSTALL`'ı devre dışı bırakın (GSMA TS.48 v7'de ele alınmıştır).
 | 
			
		||||
4. **RSP sunucu tarafı sezgileri** – EID başına profil indirmelerini sınırlayın, coğrafi anormallikleri izleyin, sertifika tazeliğini doğrulayın.
 | 
			
		||||
 | 
			
		||||
## Pentesterlar için Hızlı Kontrol Listesi
 | 
			
		||||
* `GET DATA DF1F` sorgusu – savunmasız firmware dizesi `ECu10.13` Kigen'i gösterir.
 | 
			
		||||
* RAM anahtarlarının biliniyorsa kontrol et ‑> OTA `INSTALL`/`LOAD` denemesi yap.
 | 
			
		||||
* Applet kurulumu sonrası, basit cast primitive'ini brute-force yap (`objarrconfusion`).
 | 
			
		||||
* Güvenlik Alanı özel anahtarlarını okumayı dene – başarı = tam ihlal.
 | 
			
		||||
 | 
			
		||||
## Referanslar
 | 
			
		||||
- [Security Explorations – eSIM güvenliği](https://security-explorations.com/esim-security.html)
 | 
			
		||||
- [GSMA TS.48 Genel Test Profili v7.0](https://www.gsma.com/get-involved/working-groups/gsma_resources/ts-48-v7-0-generic-euicc-test-profile-for-device-testing/)
 | 
			
		||||
- [Java Card VM Spesifikasyonu 3.1](https://docs.oracle.com/en/java/javacard/3.1/jc-vm-spec/F12650_05.pdf)
 | 
			
		||||
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user