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 af
This commit is contained in:
parent
03e61f3ed8
commit
a4883b7059
@ -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}}
|
||||
|
||||
## Oorsig
|
||||
Ingebedde SIMs (eSIMs) word geïmplementeer as **Ingebedde UICC (eUICC)** slimkaarte wat 'n **Java Card Virtual Machine (JC VM)** bo-op 'n veilige element laat loop. Omdat profiele en applets *oor-die-lug* (OTA) via Remote SIM Provisioning (RSP) verskaf kan word, word enige geheue-veilige fout binne die JC VM onmiddellik 'n afstandkode-uitvoeringsprimitive **binne die mees bevoorregte komponent van die toestel**.
|
||||
|
||||
Hierdie bladsy beskryf 'n werklike volledige kompromie van Kigen se eUICC (Infineon SLC37 ESA1M2, ARM SC300) veroorsaak deur ontbrekende tipe-veilige kontroles in die `getfield` en `putfield` bytecodes. Dieselfde tegniek kan hergebruik word teen ander verskaffers wat op-kaart byte-kode verifikasie oorslaan.
|
||||
|
||||
## Aanvaloppervlak
|
||||
1. **Afstandtoepassingbestuur (RAM)**
|
||||
eSIM profiele kan arbitrêre Java Card applets insluit. Verskaffing word uitgevoer met standaard APDUs wat deur SMS-PP (Short Message Service Point-to-Point) of HTTPS getunnel kan word. As 'n aanvaller die **RAM sleutels** vir 'n profiel besit (of steel), kan hulle 'n kwaadwillige applet op afstand `INSTALL`/`LOAD`.
|
||||
2. **Java Card byte-kode uitvoering**
|
||||
Na installasie, voer die applet binne die VM uit. Ontbrekende tydslope kontroles laat geheue-korrupsie toe.
|
||||
|
||||
## Die Tipe-Bewustheid Primitive
|
||||
`getfield` / `putfield` is veronderstel om slegs op **objekverwysings** te werk. In Kigen eUICC valideer die instruksies nooit of die operand op die stapel 'n *objek* of 'n *array* verwysing is nie. Omdat 'n `array.length` woord op presies dieselfde offset as die eerste instansieveld van 'n normale objek lewe, kan 'n aanvaller:
|
||||
|
||||
1. 'n byte-array skep `byte[] buf = new byte[0x100];`
|
||||
2. Dit cast na `Object o = (Object)buf;`
|
||||
3. Gebruik `putfield` om *enige* 16-bis waarde binne 'n aangrensende objek te oorskryf (insluitend VTABLE / ptr vertaalinge).
|
||||
4. Gebruik `getfield` om *arbitrêre* geheue te lees sodra interne punte verower is.
|
||||
```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 ...
|
||||
```
|
||||
Die primitive bied **arbitraire lees / skryf** in die eUICC adresruimte – genoeg om die toestel- unieke ECC private sleutel wat die kaart aan die GSMA ekosisteem autentiseer, te dump.
|
||||
|
||||
## Eind-tot-Eind Exploit Werkvloei
|
||||
1. **Tel firmware op** – Gebruik ongedokumenteerde `GET DATA` item `DF1F`:
|
||||
```
|
||||
80 CA DF 1F 00 // → "ECu10.13" (kwulnerabel)
|
||||
```
|
||||
2. **Installeer kwaadwillige applet OTA** – Misbruik publiek bekende sleutels van die TS.48 Generiese Toetsprofiel en druk SMS-PP fragmente wat die CAP-lêer (`LOAD`) vervoer, gevolg deur 'n `INSTALL`:
|
||||
```
|
||||
// vereenvoudigde APDU ketting
|
||||
80 E6 02 00 <data> // LOAD (blok n)
|
||||
80 E6 0C 00 <data> // INSTALL vir laai
|
||||
```
|
||||
3. **Trigger tipe-verwarring** – Wanneer die applet gekies word, voer dit die skryf-wat-waar uit om 'n wysiger tabel te kapen en geheue deur normale APDU-antwoorde te lek.
|
||||
4. **Onthul GSMA sertifikaatsleutel** – Private EC-sleutel word na die applet se RAM gekopieer en in stukke teruggestuur.
|
||||
5. **Imiteer die eUICC** – Die gesteelde sleutel paar + sertifikate laat die aanvaller toe om te autentiseer by *enige* RSP bediener as 'n wettige kaart (EID binding mag steeds vereis word vir sommige operateurs).
|
||||
6. **Laai en wysig profiele** – Plak tekst profiele bevat hoogs sensitiewe velde soos `OPc`, `AMF`, OTA sleutels en selfs addisionele applets. Die aanvaller kan:
|
||||
* 'n profiel na 'n tweede eUICC kloon (stem/SMS kap);
|
||||
* Java Card toepassings patch (bv. voeg STK spyware in) voordat dit weer opgelaai word;
|
||||
* Operateur geheime onttrek vir grootskaalse misbruik.
|
||||
|
||||
## Kloon / Kap Demonstrasie
|
||||
Die installering van dieselfde profiel op **PHONE A** en **PHONE B** lei tot die Mobile Switching Centre wat inkomende verkeer na die toestel roete wat die mees onlangse registrasie gehad het. Een sessie van Gmail 2FA SMS onderskep is genoeg om MFA vir die slagoffer te omseil.
|
||||
|
||||
## Geoutomatiseerde Toets & Exploit Toolkit
|
||||
Die navorsers het 'n interne hulpmiddel vrygestel met 'n `bsc` (*Basic Security Check*) opdrag wat onmiddellik wys of 'n Java Card VM kwulnerabel is:
|
||||
```
|
||||
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]
|
||||
```
|
||||
Modules verskeep met die raamwerk:
|
||||
* `introspector` – volle VM en geheue verkenner (~1.7 MB Java)
|
||||
* `security-test` – generiese verifikasie omseil applet (~150 KB)
|
||||
* `exploit` – 100 % betroubare Kigen eUICC kompromie (~72 KB)
|
||||
|
||||
## Mitigasies
|
||||
1. **Op-kaart byte-kode verifikasie** – afdwing volle kontrole-stroom & data-stroom tipe opsporing in plaas van net stapel-top.
|
||||
2. **Versteek array kop** – plaas `length` buite oorvleuelende objek velde.
|
||||
3. **Versterk RAM sleutels beleid** – stuur nooit profiele met publieke sleutels nie; deaktiveer `INSTALL` in toets profiele (aangespreek in GSMA TS.48 v7).
|
||||
4. **RSP bediener kant heuristiek** – beperk profiele aflaai per EID, monitor geografiese anomalieë, valideer sertifikaat varsheid.
|
||||
|
||||
## Vinning Kontrolelys vir Pentesters
|
||||
* Vra `GET DATA DF1F` – kwesbare firmware string `ECu10.13` dui Kigen aan.
|
||||
* Kontroleer of RAM sleutels bekend is ‑> probeer OTA `INSTALL`/`LOAD`.
|
||||
* Na applet installasie, brute-force eenvoudige cast primitief (`objarrconfusion`).
|
||||
* Probeer om Sekuriteit Domein private sleutels te lees – sukses = volle kompromie.
|
||||
|
||||
## Verwysings
|
||||
- [Security Explorations – eSIM sekuriteit](https://security-explorations.com/esim-security.html)
|
||||
- [GSMA TS.48 Generiese Toets Profiel 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 Spesifikasie 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