Translated ['src/generic-hacking/esim-javacard-exploitation.md'] to el

This commit is contained in:
Translator 2025-07-16 08:57:44 +00:00
parent f2d6d1aba1
commit c11d9a3f49
2 changed files with 88 additions and 0 deletions

View File

@ -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)

View File

@ -0,0 +1,87 @@
# eSIM / Java Card VM Exploitation
{{#include ../banners/hacktricks-training.md}}
## Overview
Οι ενσωματωμένες SIM (eSIM) υλοποιούνται ως **Embedded UICC (eUICC)** έξυπνες κάρτες που εκτελούν μια **Java Card Virtual Machine (JC VM)** πάνω σε ένα ασφαλές στοιχείο. Επειδή τα προφίλ και οι applets μπορούν να παρασχεθούν *over-the-air* (OTA) μέσω Remote SIM Provisioning (RSP), οποιοδήποτε σφάλμα ασφάλειας μνήμης μέσα στην JC VM γίνεται αμέσως μια απομακρυσμένη εκτέλεση κώδικα **μέσα στο πιο προνομιούχο συστατικό της συσκευής**.
Αυτή η σελίδα περιγράφει μια πραγματική πλήρη παραβίαση του eUICC της Kigen (Infineon SLC37 ESA1M2, ARM SC300) που προκλήθηκε από την απουσία ελέγχων τύπου στην `getfield` και `putfield` bytecodes. Η ίδια τεχνική μπορεί να επαναχρησιμοποιηθεί κατά άλλων προμηθευτών που παραλείπουν την επαλήθευση byte-code στην κάρτα.
## Attack Surface
1. **Remote Application Management (RAM)**
Τα προφίλ eSIM μπορεί να ενσωματώνουν αυθαίρετες Java Card applets. Η παροχή πραγματοποιείται με τυπικά APDUs που μπορούν να μεταφερθούν μέσω SMS-PP (Short Message Service Point-to-Point) ή HTTPS. Εάν ένας επιτιθέμενος κατέχει (ή κλέψει) τα **RAM keys** για ένα προφίλ, μπορεί να `INSTALL`/`LOAD` μια κακόβουλη applet απομακρυσμένα.
2. **Java Card byte-code execution**
Μετά την εγκατάσταση, η applet εκτελείται μέσα στη VM. Η απουσία ελέγχων χρόνου εκτέλεσης επιτρέπει τη διαφθορά μνήμης.
## The Type-Confusion Primitive
`getfield` / `putfield` προορίζονται να λειτουργούν μόνο σε **αναφορές αντικειμένων**. Στην Kigen eUICC, οι εντολές ποτέ δεν επικυρώνουν αν ο τελεστής στη στοίβα είναι αναφορά *αντικειμένου* ή *πίνακα*. Επειδή μια λέξη `array.length` βρίσκεται στην ακριβή ίδια θέση με το πρώτο πεδίο ενός κανονικού αντικειμένου, ένας επιτιθέμενος μπορεί να:
1. Δημιουργήσει έναν πίνακα byte `byte[] buf = new byte[0x100];`
2. Να τον μετατρέψει σε `Object o = (Object)buf;`
3. Να χρησιμοποιήσει `putfield` για να αντικαταστήσει *οποιαδήποτε* 16-bit τιμή μέσα σε ένα γειτονικό αντικείμενο (συμπεριλαμβανομένων των VTABLE / ptr translation entries).
4. Να χρησιμοποιήσει `getfield` για να διαβάσει *αυθαίρετη* μνήμη μόλις οι εσωτερικοί δείκτες έχουν παραβιαστεί.
```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 ...
```
Η πρωτοβουλία παρέχει **τυχαία ανάγνωση / εγγραφή** στον χώρο διευθύνσεων eUICC αρκετό για να αποθηκεύσει το μοναδικό ιδιωτικό κλειδί ECC της συσκευής που πιστοποιεί την κάρτα στο οικοσύστημα GSMA.
## Ροή Εργασίας Εκμετάλλευσης Από Άκρο σε Άκρο
1. **Καταμέτρηση firmware** Χρησιμοποιήστε το μη τεκμηριωμένο στοιχείο `GET DATA` `DF1F`:
```
80 CA DF 1F 00 // → "ECu10.13" (ευάλωτο)
```
2. **Εγκατάσταση κακόβουλου applet OTA** Καταχρήστε τα δημόσια γνωστά κλειδιά του TS.48 Generic Test Profile και στείλτε SMS-PP τμήματα που μεταφέρουν το αρχείο CAP (`LOAD`) ακολουθούμενο από ένα `INSTALL`:
```
// απλοποιημένη αλυσίδα APDU
80 E6 02 00 <data> // LOAD (μπλοκ n)
80 E6 0C 00 <data> // INSTALL για φόρτωση
```
3. **Προκαλέστε σύγχυση τύπου** Όταν επιλεγεί το applet, εκτελεί την εγγραφή-τι-πού για να καταλάβει έναν πίνακα δεικτών και να διαρρεύσει μνήμη μέσω κανονικών απαντήσεων APDU.
4. **Εξαγωγή κλειδιού πιστοποίησης GSMA** Το ιδιωτικό κλειδί EC αντιγράφεται στη RAM του applet και επιστρέφεται σε κομμάτια.
5. **Προσωποποίηση του eUICC** Το κλεμμένο ζεύγος κλειδιών + πιστοποιητικά επιτρέπουν στον επιτιθέμενο να πιστοποιηθεί σε *οποιονδήποτε* RSP server ως νόμιμη κάρτα (η σύνδεση EID μπορεί να απαιτείται για ορισμένους παρόχους).
6. **Λήψη και τροποποίηση προφίλ** Τα προφίλ σε απλό κείμενο περιέχουν εξαιρετικά ευαίσθητα πεδία όπως `OPc`, `AMF`, OTA κλειδιά και ακόμη και επιπλέον applets. Ο επιτιθέμενος μπορεί να:
* Κλωνοποιήσει ένα προφίλ σε δεύτερο eUICC (κατάληψη φωνής/SMS);
* Διορθώσει εφαρμογές Java Card (π.χ. εισαγωγή STK spyware) πριν την επαναφόρτωση;
* Εξαγάγει μυστικά παρόχου για εκτενή κατάχρηση.
## Επίδειξη Κλωνοποίησης / Κατάληψης
Η εγκατάσταση του ίδιου προφίλ σε **ΤΗΛΕΦΩΝΟ Α** και **ΤΗΛΕΦΩΝΟ Β** έχει ως αποτέλεσμα το Κέντρο Κινητής Μεταγωγής να δρομολογεί την εισερχόμενη κίνηση στη συσκευή που έχει εγγραφεί πιο πρόσφατα. Μια συνεδρία παρεμβολής SMS 2FA Gmail είναι αρκετή για να παρακάμψει το MFA για το θύμα.
## Αυτοματοποιημένο Εργαλείο Δοκιμών & Εκμετάλλευσης
Οι ερευνητές κυκλοφόρησαν ένα εσωτερικό εργαλείο με μια εντολή `bsc` (*Basic Security Check*) που δείχνει αμέσως αν μια Java Card VM είναι ευάλωτη:
```
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 που αποστέλλονται με το πλαίσιο:
* `introspector` πλήρης εξερευνητής VM και μνήμης (~1.7 MB Java)
* `security-test` γενική εφαρμογή παράκαμψης επαλήθευσης (~150 KB)
* `exploit` 100 % αξιόπιστη παραβίαση Kigen eUICC (~72 KB)
## Mitigations
1. **Επαλήθευση byte-code στην κάρτα** επιβολή πλήρους παρακολούθησης ροής ελέγχου & ροής δεδομένων αντί μόνο στην κορυφή της στοίβας.
2. **Απόκρυψη κεφαλίδας πίνακα** τοποθέτηση `length` εκτός των επικαλυπτόμενων πεδίων αντικειμένων.
3. **Στρατηγική σκληραγώγησης κλειδιών RAM** ποτέ μην αποστέλλετε προφίλ με δημόσια κλειδιά; απενεργοποιήστε το `INSTALL` σε δοκιμαστικά προφίλ (αναφέρεται στο GSMA TS.48 v7).
4. **Heuristics πλευράς διακομιστή RSP** περιορισμός ρυθμού λήψης προφίλ ανά EID, παρακολούθηση γεωγραφικών ανωμαλιών, επικύρωση φρεσκάδας πιστοποιητικού.
## Quick Checklist for Pentesters
* Ερώτημα `GET DATA DF1F` ευάλωτη συμβολοσειρά firmware `ECu10.13` υποδεικνύει Kigen.
* Ελέγξτε αν τα κλειδιά RAM είναι γνωστά > προσπαθήστε OTA `INSTALL`/`LOAD`.
* Μετά την εγκατάσταση της εφαρμογής, brute-force απλή μετατροπή primitive (`objarrconfusion`).
* Προσπαθήστε να διαβάσετε τα ιδιωτικά κλειδιά του Security Domain επιτυχία = πλήρης παραβίαση.
## References
- [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}}