Extraction de la SecureROM

Retour sur la SecureROM :
La SecureROM (BootROM) est une mémoire d'environ 64ko qui est en lecture seule. Celle-ci se retrouve dans le Système sur Puce (SoC pour System on Chip), aussi nommé A4, A5, A5X et autres selon l'appareil. Le code contenu dans la SecureROM est le premier chargeur d'amorçage de toute la chaîne de confiance et c'est le seul qui est matériel. Il s'exécute lors du démarrage d'un appareil iOS, c'est-à-dire aussitôt que l'on appuie sur le bouton d'allumage. Celui-ci est gravé lors du processus de fabrication de l'appareil ce qui fait en sorte qu'il est impossible même pour Apple d'apporter des modifications à celui-ci.

Contrairement aux chageurs d'amorçage logiciels tels que le LLB ainsi que l'iBoot, on ne retrouve pas le code du chargeur d'amorçage de la SecureROM dans un paquet .ipsw puisque Apple ne peut pas le mettre à jour.

Faire un «dump» de la SecureROM consiste à extraire son contenu vers un fichier binaire que l'on pourra ensuite ouvrir et analyser avec un éditeur hexadécimal par exemple.
Ceci est possible avec un utilitaire nommé «BootROM Dumper Utility» qui injecte le code permettant l'extraction de la SecureROM à partir du mode DFU. Puisque la SecureROM à fixation de sécurité RELEASE empêche l'exécution du code non-signé injecté par «BootROM Dumper Utility», un exploit dit «BootROM» tel que Limera1n est nécessaire.

Compilation du BootROM Dumper Utility :
Le système d'exploitation avec lequel j'ai fait la compilation du BootROM Dumper Utility est Linux Ubuntu 14.04 LTS.
1) Installer les paquets nécessaires avec la commande sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev libreadline6-dev readline-common libreadline6 libreadline-dev texinfo cmake git-core build-essential texinfo libreadline-dev libssl-dev libusb-1.0-0-dev libpng12-dev libusb-dev autoconf automake libnewlib-dev.
2) Compiler et installer l'ARM Toolchain, nécessaire pour la compilation du BootROM Dumper Utility.
a) Cloner le répertoire GIT de l'adresse suivante https://github.com/iDroid-Project/OpeniBoot-toolchain à l'aide de la commande git clone https://github.com/iDroid-Project/OpeniBoot-toolchain.git.
b) Dans le Terminal, aller dans le répertoire «OpeniBoot-toolchain» résultant du git clone, et exécuter la commande ./build-toolchain.sh make. Ce script téléchargera les paquets et sources nécessaires au bon fonctionnement de l'ARM Toolchain et en fera la compilation de façon automatique.
3) Compiler l'application BootROM Dumper Utility
a) Cloner le répertoire GIT de l'adresse suivante https://github.com/Chronic-Dev/Bootrom-Dumper à l'aide de la commande git clone https://github.com/Chronic-Dev/Bootrom-Dumper.git.
b) Dans le Terminal, aller dans le répertoire «Bootrom-Dumper» résultant du git clone, et exécuter la commande ./make linux.

Utilisation du BootROM Dumper Utility :
Il est à noter que le BootROM Dumper Utility permet à la base d'extraire seulement la SecureROM des appareils A4. Pour les appareils plus anciens, il faut modifier l'adresse mémoire (LDR_ADDRESS) auquelle la SecureROM se copie avant son exécution.

1) Brancher l'appareil à l'ordinateur, puis placer celui-ci en mode DFU. Éviter l'utilisation d'une machine virtuelle puisqu'il pourrait y avoir certains problèmes concernant l'injection de Limera1n.
2) Exécuter le BootROM Dumper Utility avec la commande sudo ./bdu (en tenant compte que l'on est dans le répertoire «Bootrom-Dumper»).
3) Un fichier bootrom.bin d'environ 64ko sera crée dans le même répertoire que l'exécutable «bdu». C'est le fichier qui contient le contenu de la SecureROM de l'appareil.

Copyright © 2017 — Pierre-Marc Bonneau

Conditions d'utilisation