Identification mobile – clonage et édition d’IMEI

Identification mobile – clonage et édition d’IMEI

Identification d’appareils mobiles

En téléphonie mobile, à l’échelle mondiale, plusieurs normes de communication coexistent. La principale différence entre ces dernières réside dans la norme sous-jacente de codage du signal:

  • Les réseaux d’Amérique du Nord et de certaines parties d’Asie sont essentiellement basés sur CDMA.
  • Le reste du monde utilise W-CDMA.

A ma connaissance, il n’existe pas de puce unique, capable de gérer l’ensemble des différentes techniques sur l’ensemble des bandes de fréquence en exploitation dans le monde. C’est la raison pour laquelle aucun constructeur ne se targue d’avoir conçu un téléphone « Worldwide ».

Avec l’émergeance de la 4G/LTE, les deux principales techniques de codage basculent progressivement vers l’OFDMA. Dans le futur, on espère donc voir apparaître des téléphones « world-compatible » en espérant qu’un compromis pourra être trouvé pour que les bandes de fréquences soient les mêmes…

Du point de vue de l’identification, les appareils mobiles WCDMA utilisent l’IMEI, tandis que ceux des zones CDMA utilisent le MEID (remplaçant de l’ESN).

Structure IMEI

Structure IMEI post avril 2004 (wikipedia)

Structure IMEI post avril 2004 (wikipedia)

TAC: 8 chiffres – « Type Allocation Code »: identifiant constructeur du modèle de télépone. Les constructeurs utilisent généralement les deux premiers chiffres comme code régional.

SNR: 6 chiffres – Numéro de série, permettant de distintguer deux téléphones du même modèle

CTRL: 1 chiffre – somme de contrôle (clé de Luhn).

Toutefois, la structure IMEI ayant évoluée au cours du temps, il arrive que le numéro de révision d’usine du modèle de téléphone soit séparé du TAC pour apparaître après ce-dernier tandis qu’un ou deux chiffres de préfixe régional était utilisé.

tac_table

exemples de codes TAC de modèles usuels

Globalement, Le MEID des zones CDMA utilise un format analogue, la principale différence avec l’IMEI étant l’usage de caractères héxadécimaux. Autrefois, un numéro d’identification plus court, l’ESN était en utilisation dans les zones mais l’explosion du nombre d’appareils mobiles dans le monde a entraîné une pénurie et a nécessité de faire évoluer le standard.

 

Changer son IMEI

Pour commentcer, pourquoi vouloir changer son IMEI? Le plus souvent, c’est pour l’une des raisons suivantes :

  • réactiver un téléphone déclaré perdu ou volé.
  • échapper à certaines restrictions opérateurs de certains pays se basant sur des informations extrapolées à partir de l’IMEI.
  • obtenir un certain degré d’anonymat sur le réseau en changeant d’IMEI dynamiquement.
  • attaquer le stockage des identifiants de l’appareil pour tester la sécurité de l’implémentation sous-jacente.

Devant la variété de marques et de modèles de téléphones,tablettes et autres appareils mobiles, on comprend rapidement qu’il n’existe pas de méthode unique de changement de l’ IMEI.

Pour consulter l’IMEI d’un téléphone, souvent présent sur une étiquette sur la batterie ou la boîte, il suffit de taper sur son dialer : *#06# 

Affichage IMEI

Sous Android, l’IMEI est contenu dans une zone du téléphone portant le nom d’EFS. C’est une structure propriétaire, opaque variant d’un constructeur à l’autre et dont seul un nombre limité d’informations ont pu être identifiées/extraits (sim-LOCK, restrictions opérateurs, IMEI, …).

Il n’existe pas de norme sur l’emplacement de stockage de l’EFS, chaque constructeur gère donc l’implémentation de cette zone comme il le souhaite. Néanmoins, on retrouve habituellement cette zone à un endroit ci-dessous:

  • des partitions dédiées contenant des données brutes binaires (à la manière des commutateurs de  la partition MISC évoquée dans un précédent article).
  • des répertoires à la racine /efs
  • des systèmes de fichiers sur une partition dédiées efs.

 

De manière synthétique, on retrouve plusieurs approches concernant la sécurisation du stockage EFS :

  1. Stockage en clair dans une zone non-privilégiée reposant sur la non-connaissance de menus ou fonctionnalités secrètes (sécurité par l’obscurité).
  2. Stockage en clair dans une zone privilégiée (nécessitant les droits ROOT): contrôle d’accès.
  3. Stockage chiffré dans une zone privilégiée dans une partie trustée du téléphone: contrôle d’accès avec chiffrement et signature.
  4. Stockage chiffré dans une zone privilégiée dans une partie non-trustée du téléphone: contrôle d’accès avec chiffrement sans signature.

 

1. Fonctionnalité secrète

Sur nombre d’anciens smartphones, surtout d’origine chinoise à base de puces MediaTek (MTK) le stockage de l’EFS/IMEI n’est pas sécurisé et est accessible en mode maintenance via des commandes secrètes activant des menus ou fonctionnalitées cachées.

L’IMEI d’usine original est tout de même généralement retrouvable car écrit en dur dans une zone non-réinscriptible (ROM).

D’un point de vue forensic, il sera donc souvent possible de prouver le changement d’IMEI.

Sur les chips MTK, un menu secret (mode ingénieur/maintenance) permet grâce à des commandes AT (commandes Hayes),  de dialoguer avec la couche modem et éventuellement de changer l’IMEI si la fonctionnalité est implémentée.

Le modem du Cubot GT72(Android 4.2) est à base de chip MTK6572 et  il est ainsi possible de changer l’IMEI en entrant simplement la commande AT suivante:

commande_at

commande AT de changement d’IMEI

 

 

2. Contrôle d’accès

Sur la plupart des anciennes générations de téléphones, était présent un répertoire  EFS avec un fichier nv_data.bin contenant l’IMEI ainsi qu’un deuxième fichier de checksum.

On était aussi parfois en présence, sur d’autre modèles, de partitions séparées: efs1 et efs2 constituant ensemble la zone EFS complète.

Sur un Samsung Galaxy ACE (s5839i), sous réserve de bénéficier d’un accès ROOT sur le téléphone, il est possible d’éditer l’EFS contenant toutes les informations car ce dernier est en clair.

Ainsi, en lançant une commande strings sur un dump de l’EFS préalablement extrait d’une des partition de la eMMC, on voit apparaître l’IMEI.

Dès lors, modifier ce dernier est une opération triviale: il suffit d’éditer le dump pour remplacer l’IMEI original par un autre (valide) puis de reflasher la version modifiée.

 

Edition IMEI dans le dump de l'EFS

Edition IMEI dans le dump de l’EFS

L’IMEI sera pris en compte au prochain redémarrage du téléphone durant lequel la black box sera réinitialisée.

 

3. Contrôle d’accès avec chiffrement et signature

Dans le cas des derniers smartphones LG, la particularité de l’EFS est qu’il est à la fois chiffré ET signé grâce à l’infrastructure SecureBoot 3.0 qui permet l’implémentation  d’une TrustZone ARM. Cette dernière a être développé grâce à une extension du jeu d’instruction ARM à partir de l’ ARMv6KZ.
Le principe de cette architecture est d’utiliser une puce cryptographique de confiance pour signer du code et assurer l’intégrité et parfois la confidentialité de certaines informations.

Cette puce est véritablement la clé de voûte de cette zone de confiance et nombre d’applications critiques telles que des applications de paiement ou bancaires spécifiques.

L’EFS des nouvelles générations de téléphones est stocké dans la zone de confiance et les secrets cryptographiques nécessaires pour pouvoir modifier puis reflasher les dump d’EFS sans casser les signature sont protégées de manière harware et nécessite de procéder à des attaques physiques.

Ces attaques sont difficiles à mettre en place car elles nécessitent souvent du matériel coûteux et des compétences très pointues en électroniques.

Sur les Nexus 4 (à base de SoC Qualcomm Snapdragon 600) et sur les Nexus 5 (Snapdragon 800), les partitions mmcblk0p8 + mmcblk0p9 et mmcblk0p12 + mmcblk0p13 sont donc signées et chiffrées via Secure Boot et contiennent respectivement EFS1 et EFS2.

L’image suivante présente 2 dump EFS d’un Nexus 5 réalisés avant et après redémarrage.

Entete IMGEFS1

Entete IMGEFS1

Le fait que peu d’octets varient entre les deux dumps et que des messages ASCII apparaissent laissent penser que nous sommes en présence d’entêtes non chiffrés.

En revanche, l’image suivante, montrant le début supposé (offset 0x200) de ce qui semble être la fin de l’entête/début du corps de l’EFS (DATAs) indique le contraire. Les corps  des 2 dumps sont presque entièrement différents.

EFS IMGEFS1 data

EFS IMGEFS1 data

 

La mesure de l’entropie de la variation du corps(uniquement) de ces deux fichiers est élevée et très proche de celle d’un fichier aléatoire de la même taille :

Entropie de la variation entre les 2 dumps

Entropie de la variation entre les 2 dumps

 

Dans ces conditions, il est très hautement probable que le corps de l’EFS soit chiffré. Modifier une partie d’une partie de la zone trustée telle que l’EFS nécessite donc de déchiffrer, modifier puis rechiffrer le fichier.

D’ailleur, éditer un octet au hasard de l’EFS entraîne purement et simplement le refus en bloc du conteneur EFS durant l’initialisation du modem. En effet, Après demande d’affichage de l’IMEI, on obtient la valeur suivante:

IMEI ZERO

IMEI ZERO

 

En effet, l’EFS modifié au hasard est invalide et il sera refusé par le modem qui affichera un IMEI à 0.

pour un téléphone en particulier et, à moins d’extraire les clés privées des puces cryptographiques ou de les casser par un autre moyen, il ne sera pas possible de forger un EFS différent valide.

On pourrait alors essayer de remplacer un EFS par un autre valide (extrait d’un autre téléphone identique). Le soucis, c’est que le Soc de Qualcomm Snapdragon 800 (MSM8974) implémente une TrustZone en utilisant la puce de confiance pour signer toutes les zones protégées. Sans connaître la clé privée, on ne pourra malheureusement pas adapter la valeur de la sigature cryptographique pour qu’elle vérifie la zone modifiée. Malheureusement, le clonage de téléphone à l’ancienne devient impossible.

également pour toutes les autres informations contenues dans l’EFS, essentiellement la valeur de SIM-LOCK/NET-LOCK ou autre. Désimlocké un téléphone de nouvelle génération est donc également une opération qui ne se peut se faire sans le concours de l’opérateur/constructeur…

 

4. contrôle d’accès avec chiffrement sans signature 

Avant l’apparition de la TrustZone ARM et l’infrastructure de confiance, aucun élément de sécurité n’était présent pour garantir l’authenticité et la légitimité des modifications d’éléments chiffrés.

La sécurité était gérée de manière « maison » par chaque constructeur ou surcouche opérateur et devant le manque de sécurité des premiers téléphones, certains eurent l’idées d’utiliser de la cryptographie et on commença à voir apparaître les premiers EFS chiffrés.
Malheureusement, sans puce cryptographique de confiance, il était impossible de garantir la chaîne de TRUST et il restait possible d’utiliser la technique précédente: remplacer un EFS chiffré par un autre valide.

En effet, malgré l’impossibilité de modifier ces données chiffrées sous peine de les rendre invalide, il était possible de les remplacer par d’autres données extraites d’un autre téléphone à EFS identique: téléphone utilisant la même blackbox/SoC.

Sans mécanisme de signature unique à chaque téléphone, il était impossible de garantir l’intégrité de données et cloner l’identité d’un téléphone était facile.

 

5. Récapitulatif:

  1. Fonctionnalité secrète => IMEI EDITABLE
  2. Contrôle d’accès sans chiffrement => IMEI EDITABLE
  3. Contrôle d’accès avec chiffrement et signature => IMEI INCLONABLE sans casser la TrustZone
  4. Contrôle d’accès avec chiffrement sans signature => IMEI CLONABLE avec celui d’un téléphone identique mais pas EDITABLE

 

Outils

Avant l’apparition des mécanismes de sécurités décrits précédemments, de nombreux outils non-officiels sont apparus pour éditer l’IMEI des téléphones, certains de ces outils fournissent des fonctionnalités additionnelles. Concernant l’IMEI, il ne font rien de plus qu’éditer des zones binaires.

  • EFS Professional
  • NV-items reader writer
  • WRITE_IMEI

Cependant, le roi indétrônable des logiciels de modification d’IMEI reste l’incontournable Z3X que l’on retrouve dans toutes les boutiques Barbès de « réparation » de téléphones.

Z3X

Z3X

 

Législation

Aux yeux de la loi, un numéro IMEI est analogue à un numéro de plaque d’immatriculation d’une voiture.

Vouloir le changer/cloner/maquiller de quelque sorte que ce soit est un délit passible de deux ans d’emprisonnement et 37.500 euros d’amende.

En france, les opérateurs de téléphonie mobile doivent, avant d’autoriser un appareil mobile sur leur réseau, vérifier si l’IMEI est présent sur les listes noires/grises constituées des téléphones déclarés perdus ou volés.

Il est intéressant de noter qu’aucune liste noire mondiale n’existe et, par conséquent, il est malheureusement très facile de contourner cette interdiction en utilisant, par exemple, le téléphone dans d’autres pays de la même région WCDMA pour l’IMEI ou CDMA pour le MEID.

 

G.O.