eSIM / Java Card VM Exploitation
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Overview
Embedded SIMs (eSIMs) zinafanywa kama Embedded UICC (eUICC) kadi za smart ambazo zinaendesha Java Card Virtual Machine (JC VM) juu ya kipengele salama. Kwa sababu profaili na applets zinaweza kutolewa over-the-air (OTA) kupitia Remote SIM Provisioning (RSP), kasoro yoyote ya usalama wa kumbukumbu ndani ya JC VM inakuwa mara moja primitive ya utekelezaji wa msimbo wa mbali ndani ya kipengele chenye mamlaka zaidi ya simu.
Ukurasa huu unaelezea uhalisia wa kuathiriwa kabisa kwa eUICC ya Kigen (Infineon SLC37 ESA1M2, ARM SC300) ulio sababishwa na ukosefu wa ukaguzi wa usalama wa aina katika bytecodes za getfield
na putfield
. Mbinu hiyo hiyo inaweza kutumika dhidi ya wauzaji wengine wanaokosa uthibitisho wa byte-code kwenye kadi.
Attack Surface
- Remote Application Management (RAM)
Profaili za eSIM zinaweza kuingiza applets za Java Card zisizo na mipaka. Utoaji unafanywa kwa APDUs za kawaida ambazo zinaweza kupitishwa kupitia SMS-PP (Short Message Service Point-to-Point) au HTTPS. Ikiwa mshambuliaji ana (au anapata) RAM keys za profaili, wanaweza
INSTALL
/LOAD
applet mbaya kwa mbali. - Java Card byte-code execution Baada ya usakinishaji, applet inatekelezwa ndani ya VM. Ukosefu wa ukaguzi wa wakati wa utekelezaji unaruhusu uharibifu wa kumbukumbu.
The Type-Confusion Primitive
getfield
/ putfield
zinapaswa kufanya kazi tu kwenye marejeleo ya vitu. Katika Kigen eUICC, maagizo haya hayawahi kuthibitisha ikiwa operandi kwenye stack ni kitu au marejeleo ya array. Kwa sababu neno array.length
linaishi kwenye offset sawa na uwanja wa kwanza wa mfano wa kitu cha kawaida, mshambuliaji anaweza:
- Kuunda byte-array
byte[] buf = new byte[0x100];
- Kuibadilisha kuwa
Object o = (Object)buf;
- Kutumia
putfield
kubadilisha thamani yoyote ya 16-bit ndani ya kitu kilichokaribu (ikiwemo VTABLE / ptr translation entries). - Kutumia
getfield
kusoma kumbukumbu zisizo na mipaka mara tu viashiria vya ndani vinapohijacked.
// 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 inatoa kusoma / kuandika bila mipaka katika nafasi ya anwani ya eUICC - ya kutosha kutoa funguo za kibinafsi za ECC ambazo zinaithibitisha kadi kwa mfumo wa GSMA.
Mchakato wa Utekelezaji wa Mwisho hadi Mwisho
- Tathmini firmware – Tumia kipengee kisichoorodheshwa
GET DATA
DF1F
:
80 CA DF 1F 00 // → "ECu10.13" (iliyohatarishwa)
- Sakinisha applet mbaya OTA – Tumia funguo zinazojulikana hadharani za TS.48 Generic Test Profile na kusukuma vipande vya SMS-PP vinavyobeba faili ya CAP (
LOAD
) ikifuatiwa naINSTALL
:
// mnyororo wa APDU uliorahisishwa
80 E6 02 00 <data> // LOAD (block n)
80 E6 0C 00 <data> // INSTALL kwa ajili ya kupakia
- Chochea mkanganyiko wa aina – Wakati applet inachaguliwa inatekeleza kuandika-nini-wapi ili kuiba jedwali la viashiria na kuvuja kumbukumbu kupitia majibu ya kawaida ya APDU.
- Toa funguo za cheti za GSMA – Funguo za EC za kibinafsi zinakopiwa kwenye RAM ya applet na kurudishwa kwa vipande.
- Jifanya kuwa eUICC – Jozi ya funguo iliyoporwa + vyeti inamruhusu mshambuliaji kujiithibitisha kwa yoyote RSP server kama kadi halali (kuunganisha EID kunaweza bado kuhitajika kwa waendeshaji wengine).
- Pakua na badilisha profaili – Profaili za maandiko wazi zina nyanja nyeti sana kama vile
OPc
,AMF
, funguo za OTA na hata applets za ziada. Mshambuliaji anaweza:
- Kununua profaili kwa eUICC ya pili (kuiba sauti/SMS);
- Patch programu za Java Card (kwa mfano, ingiza spyware ya STK) kabla ya kupakia tena;
- Toa siri za waendeshaji kwa matumizi makubwa.
Onyesho la Kununua / Kuiba
Kuweka profaili sawa kwenye PHONE A na PHONE B kunasababisha Kituo cha Kubadilisha Simu kuelekeza trafiki inayokuja kwa kifaa chochote kilichosajiliwa hivi karibuni. Kikao kimoja cha kukamata SMS ya 2FA ya Gmail kinatosha kupita MFA kwa mwathirika.
Zana ya Mtihani wa Otomatiki & Utekelezaji
Watafiti walitoa zana ya ndani yenye amri ya bsc
(Basic Security Check) ambayo mara moja inaonyesha ikiwa Java Card VM ina hatari:
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 shipped with the framework:
introspector
– mpelelezi kamili wa VM na kumbukumbu (~1.7 MB Java)security-test
– programu ya kuthibitisha ya jumla (~150 KB)exploit
– 100 % ya kuaminika Kigen eUICC kuathiri (~72 KB)
Mitigations
- Uthibitisho wa byte-code kwenye kadi – tekeleza udhibiti kamili wa mtiririko wa udhibiti & ufuatiliaji wa aina ya data badala ya tu juu ya stack.
- Ficha kichwa cha array – weka
length
nje ya maeneo yanayoshirikiana ya vitu. - Sasisha sera za funguo za RAM – usiwasilishe profaili zenye funguo za umma; zima
INSTALL
katika profaili za majaribio (iliyoshughulikiwa katika GSMA TS.48 v7). - Heuristics za upande wa seva za RSP – punguza kasi ya upakuaji wa profaili kwa EID, angalia tofauti za kijiografia, thibitisha uhalali wa cheti.
Quick Checklist for Pentesters
- Query
GET DATA DF1F
– mfuatano wa firmware dhaifuECu10.13
inaonyesha Kigen. - Angalia kama funguo za RAM zinajulikana ‑> jaribu OTA
INSTALL
/LOAD
. - Baada ya usakinishaji wa applet, fanya brute-force ya primitive rahisi ya cast (
objarrconfusion
). - Jaribu kusoma funguo za faragha za Domain ya Usalama – mafanikio = kuathiri kamili.
References
- Security Explorations – eSIM security
- GSMA TS.48 Generic Test Profile v7.0
- Java Card VM Specification 3.1
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.