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 sr
This commit is contained in:
parent
22bf46d4de
commit
ac8d96db32
@ -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)
|
||||
|
88
src/generic-hacking/esim-javacard-exploitation.md
Normal file
88
src/generic-hacking/esim-javacard-exploitation.md
Normal file
@ -0,0 +1,88 @@
|
||||
# eSIM / Java Card VM Eksploatacija
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Pregled
|
||||
Ugrađene SIM kartice (eSIM) se implementiraju kao **Ugrađene UICC (eUICC)** pametne kartice koje pokreću **Java Card Virtual Machine (JC VM)** na vrhu sigurnog elementa.
|
||||
Zato što se profili i aplikacije mogu obezbediti *preko vazduha* (OTA) putem Daljinskog SIM Obezbeđenja (RSP), svaka greška u bezbednosti memorije unutar JC VM odmah postaje primitivna metoda za izvršavanje koda **unutar najprivilegovanijeg dela uređaja**.
|
||||
|
||||
Ova stranica opisuje stvarno potpuno kompromitovanje Kigen-ove eUICC (Infineon SLC37 ESA1M2, ARM SC300) uzrokovano nedostatkom provere tipa u `getfield` i `putfield` bajtkodovima. Ista tehnika se može ponovo koristiti protiv drugih dobavljača koji izostavljaju verifikaciju bajtkoda na kartici.
|
||||
|
||||
## Površina napada
|
||||
1. **Upravljanje daljinskim aplikacijama (RAM)**
|
||||
eSIM profili mogu sadržati proizvoljne Java Card aplikacije. Obezbeđivanje se vrši standardnim APDU-ima koji se mogu tunelovati kroz SMS-PP (Kratka Poruka Servis Tačka do Tačke) ili HTTPS. Ako napadač poseduje (ili ukrade) **RAM ključeve** za profil, može `INSTALL`/`LOAD` zloćudnu aplikaciju na daljinu.
|
||||
2. **Izvršavanje bajtkoda Java Card**
|
||||
Nakon instalacije, aplikacija se izvršava unutar VM. Nedostatak provere u vreme izvršavanja omogućava korupciju memorije.
|
||||
|
||||
## Primitiv tipa-zbunjenosti
|
||||
`getfield` / `putfield` bi trebali da rade samo na **referencama objekata**. U Kigen eUICC instrukcije nikada ne proveravaju da li je operand na steku *objekat* ili *referenca niza*. Pošto reč `array.length` živi na tačno istom offsetu kao prva instanca polja normalnog objekta, napadač može:
|
||||
|
||||
1. Kreirati bajt-niz `byte[] buf = new byte[0x100];`
|
||||
2. Pretvoriti ga u `Object o = (Object)buf;`
|
||||
3. Koristiti `putfield` da prepiše *bilo koju* 16-bitnu vrednost unutar susednog objekta (uključujući VTABLE / ptr prevodne unose).
|
||||
4. Koristiti `getfield` da pročita *proizvoljnu* memoriju kada su unutrašnji pokazivači preuzeti.
|
||||
```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 pruža **arbitrarno čitanje / pisanje** u eUICC adresnom prostoru – dovoljno da se isprazni jedinstveni ECC privatni ključ uređaja koji autentifikuje karticu u GSMA ekosistemu.
|
||||
|
||||
## End-to-End Eksploatacija Radni Tok
|
||||
1. **Enumeracija firmvera** – Koristite nedokumentovani `GET DATA` stavku `DF1F`:
|
||||
```
|
||||
80 CA DF 1F 00 // → "ECu10.13" (ranjiv)
|
||||
```
|
||||
2. **Instalirajte zloćudni applet OTA** – Iskoristite javno poznate ključeve TS.48 Generic Test Profile i pošaljite SMS-PP fragmente koji transportuju CAP datoteku (`LOAD`) praćenu `INSTALL`:
|
||||
```
|
||||
// pojednostavljena APDU lanac
|
||||
80 E6 02 00 <data> // LOAD (blok n)
|
||||
80 E6 0C 00 <data> // INSTALL za učitavanje
|
||||
```
|
||||
3. **Pokrenite konfuziju tipa** – Kada se applet odabere, izvršava write-what-where da preuzme tabelu pokazivača i iscuri memoriju kroz normalne APDU odgovore.
|
||||
4. **Izvucite GSMA sertifikat ključ** – Privatni EC ključ se kopira u RAM appleta i vraća u delovima.
|
||||
5. **Imitacija eUICC** – Uk stolen ključni par + sertifikati omogućavaju napadaču da se autentifikuje na *bilo koji* RSP server kao legitimna kartica (EID vezivanje može biti još uvek potrebno za neke operatore).
|
||||
6. **Preuzmite i modifikujte profile** – Plaintext profili sadrže veoma osetljive podatke kao što su `OPc`, `AMF`, OTA ključevi i čak dodatni appleti. Napadač može:
|
||||
* Klonirati profil na drugi eUICC (otmica glasa/SMS);
|
||||
* Patchovati Java Card aplikacije (npr. umetnuti STK špijunski softver) pre ponovnog učitavanja;
|
||||
* Izvući tajne operatera za masovnu zloupotrebu.
|
||||
|
||||
## Kloniranje / Otmica Demonstracija
|
||||
Instaliranje istog profila na **PHONE A** i **PHONE B** rezultira time da Mobilni Preklopni Centar usmerava dolazni saobraćaj na uređaj koji se najrecentnije registrovao. Jedna sesija presretanja Gmail 2FA SMS-a je dovoljna da se zaobiđe MFA za žrtvu.
|
||||
|
||||
## Automatizovani Test & Eksploatacioni Alat
|
||||
Istraživači su objavili interni alat sa `bsc` (*Osnovna Provera Bezbednosti*) komandom koja odmah pokazuje da li je Java Card VM ranjiv:
|
||||
```
|
||||
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]
|
||||
```
|
||||
Moduli isporučeni sa okvirom:
|
||||
* `introspector` – pun VM i istraživač memorije (~1.7 MB Java)
|
||||
* `security-test` – generički verifikacioni zaobilaženje applet (~150 KB)
|
||||
* `exploit` – 100 % pouzdana Kigen eUICC kompromitacija (~72 KB)
|
||||
|
||||
## Mogućnosti ublažavanja
|
||||
1. **Verifikacija bajt-koda na kartici** – primeniti potpunu kontrolu toka i praćenje tipa podataka umesto samo na vrhu steka.
|
||||
2. **Sakrijte zaglavlje niza** – stavite `length` van preklapajućih polja objekta.
|
||||
3. **Ojačajte politiku RAM ključeva** – nikada ne isporučujte profile sa javnim ključevima; onemogućite `INSTALL` u test profilima (obrađeno u GSMA TS.48 v7).
|
||||
4. **Heuristike RSP servera** – ograničite brzinu preuzimanja profila po EID, pratite geografske anomalije, validirajte svežinu sertifikata.
|
||||
|
||||
## Brza lista za pentestere
|
||||
* Upit `GET DATA DF1F` – ranjiva firmware string `ECu10.13` ukazuje na Kigen.
|
||||
* Proverite da li su RAM ključevi poznati ‑> pokušajte OTA `INSTALL`/`LOAD`.
|
||||
* Nakon instalacije appleta, brute-force jednostavnu cast primitivu (`objarrconfusion`).
|
||||
* Pokušajte da pročitate privatne ključeve sigurnosnog domena – uspeh = potpuna kompromitacija.
|
||||
|
||||
## Reference
|
||||
- [Security Explorations – eSIM security](https://security-explorations.com/esim-security.html)
|
||||
- [GSMA TS.48 Generic Test Profile 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 Specification 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