eSIM / Java Card VM Eksploatacija
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
- 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. - 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:
- Kreirati bajt-niz
byte[] buf = new byte[0x100];
- Pretvoriti ga u
Object o = (Object)buf;
- Koristiti
putfield
da prepiše bilo koju 16-bitnu vrednost unutar susednog objekta (uključujući VTABLE / ptr prevodne unose). - Koristiti
getfield
da pročita proizvoljnu memoriju kada su unutrašnji pokazivači preuzeti.
// 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
- Enumeracija firmvera – Koristite nedokumentovani
GET DATA
stavkuDF1F
:
80 CA DF 1F 00 // → "ECu10.13" (ranjiv)
- 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ćenuINSTALL
:
// pojednostavljena APDU lanac
80 E6 02 00 <data> // LOAD (blok n)
80 E6 0C 00 <data> // INSTALL za učitavanje
- Pokrenite konfuziju tipa – Kada se applet odabere, izvršava write-what-where da preuzme tabelu pokazivača i iscuri memoriju kroz normalne APDU odgovore.
- Izvucite GSMA sertifikat ključ – Privatni EC ključ se kopira u RAM appleta i vraća u delovima.
- 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).
- 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
- Verifikacija bajt-koda na kartici – primeniti potpunu kontrolu toka i praćenje tipa podataka umesto samo na vrhu steka.
- Sakrijte zaglavlje niza – stavite
length
van preklapajućih polja objekta. - 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). - 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 stringECu10.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
- GSMA TS.48 Generic Test Profile v7.0
- Java Card VM Specification 3.1
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.