Ce hack a été révélé il y a quelque temps lors de la DEFCON26, mais il s’agit toujours d’un aperçu fascinant des vulnérabilités qui affectent certains des appareils IoT les plus largement utilisés.
[Dennis Giese] trouvé un moyen de modifier Micrologiciel basé sur ARM Cortex-M à utiliser pour personnaliser les fonctionnalités des appareils ou supprimer l’accès au fournisseur. Évidemment, il y a plus d’activités malveillantes qui peuvent être faites avec ce type de hack, comme avec n’importe quel exploit de firmware, mais elles ne sont (aussi) évidemment pas tolérées.
L’exposé aborde la structure de l’écosystème et des produits Xiaomi avant d’aborder une approche étape par étape de la correction binaire du micrologiciel. La première étape consistait à acquérir le micrologiciel, soit en vidant la mémoire flash SPI (à l’aide de JTAG, SWD ou des broches Flash dessoudées), soit en interceptant le trafic lors d’une mise à jour du micrologiciel et en téléchargeant le micrologiciel. Il est également possible de télécharger le firmware à l’aide d’une URL, bien que cela puisse être plus difficile à trouver.
Le micrologiciel peut ensuite être analysé, ce qui nécessite d’abord la conversion du format d’un format propriétaire en un fichier ELF. Cette conversion facilite le chargement dans IDA pro, et donne des informations sur les segments du firmware et son point d’entrée. Des outils Python existent heureusement pour convertir les fichiers binaires en ELF, ce qui simplifie la tâche.
Après avoir chargé le fichier ELF dans le désassembleur, vous voudrez trouver la zone de mémoire de clé, désignée par « TAG_MAC », « TAG_DID » et « TAG_KEY » dans l’exemple de micrologiciel (pour stocker l’adresse MAC, l’ID de l’appareil et la clé ). Afin de préparer le micrologiciel pour Nexmon – un logiciel prenant en charge les correctifs binaires de micrologiciels basés sur C pour les binaires ARM Cortex-A et ARM Cortex-M – vous devrez partitionner de l’espace dans la mémoire pour les correctifs et connaître les noms des fonctions et signatures pour le firmware.
Ce dernier est fait en effectuant une comparaison de différence dans le désassembleur entre un exécutable inconnu et l’exécutable exemple.
Une fois les informations nécessaires réunies, vous pouvez désormais utiliser Nexmon pour effectuer vos modifications. Le fait que cela puisse être fait pour les appareils intelligents à la maison signifie que les appareils intelligents que vous acquérez – en particulier ceux partitionnés par d’autres – peuvent contenir du code malveillant, alors soyez prudent lorsque vous manipulez des appareils usagés.
continuer la lecture « Personnalisation du micrologiciel Xiaomi ARM Cortex-M »