- Rétro-ingénierie d’un appareil de maison connectée basé sur ESP32 pour l’intégrer à Home Assistant
- Analyse de l’application mobile pour confirmer la connexion à un serveur cloud
- Interception du trafic réseau pour tenter de contrôler l’appareil
- Dump et analyse de la flash ESP32 afin de tenter une modification du firmware
- Analyse de la structure des paquets pour comprendre le chiffrement et la somme de contrôle
Introduction
- Tentative récente de connecter tous les appareils à Home Assistant
- Un purificateur d’air précis ne se connecte qu’à son application propriétaire, d’où la volonté de le pirater pour l’intégrer
- Mise en avant des problèmes des produits dépendants d’une connexion Internet et d’un compte cloud
Plan
- Vérification que l’application mobile se connecte à un serveur cloud et permet le contrôle à distance
- Recherche d’une méthode pour contrôler l’appareil en interceptant le trafic réseau
Analyse de l’application mobile
- Analyse de l’application Android montrant qu’elle a été développée avec React Native
- Découverte d’une connexion au serveur cloud via WebSocket
Inspection du réseau
- Utilisation de Pi-hole pour vérifier les requêtes DNS et de Wireshark pour analyser le trafic
- Confirmation des communications entre l’appareil et le serveur via des paquets UDP
Analyse des paquets
- Utilisation d’un proxy UDP pour relayer le trafic entre l’appareil et le serveur cloud
- Analyse de la structure des paquets avec Wireshark et confirmation de la possibilité d’un chiffrement
Démontage physique
- Démontage de l’appareil basé sur ESP32 et extraction du firmware depuis la puce flash
- Utilisation de esptool pour lire les données via une connexion série
Analyse de la flash
- Utilisation de esp32knife pour analyser les données de la flash et vérifier la table de partitions
- Découverte de fichiers importants dans le système de fichiers FAT
Analyse statique initiale
- Utilisation de Ghidra pour analyser les chaînes du firmware et confirmer l’usage d’une bibliothèque de chiffrement
- Implémentation des algorithmes ECDH et HKDF via la bibliothèque mbedtls
Modification du firmware
- Désactivation de la fonctionnalité CapSense avec Ghidra, puis modification du firmware pour démarrer l’appareil
- Résolution du problème de somme de contrôle et flash réussi du firmware modifié
En-tête des paquets
- Analyse de la structure de l’en-tête des paquets pour identifier le numéro de série et l’identifiant de message
- Identification des schémas des requêtes client et des réponses serveur
Somme de contrôle des paquets
- Vérification de la somme de contrôle CRC pour valider l’intégrité des données des paquets
1 commentaires
Avis sur Hacker News
La solution à long terme consiste à ne pas acheter de produits domestiques qui ignorent le contrôle local
Le fait qu’un purificateur d’air augmente son activité lorsque la qualité de l’air intérieur se dégrade ne nécessite ni appareil IoT, ni application, ni communication sans fil, ni hub
Aux vendeurs d’appareils IoT basés sur ESP32 :
Aux propriétaires d’appareils IoT basés sur ESP32 :
Je me demande s’il serait possible d’identifier quelles broches sont connectées sur la carte de l’appareil, de le flasher entièrement avec ESPHome et d’écrire une configuration
yamlpersonnaliséeChaque fois que j’ai fait partie d’une équipe de conception d’appareils IoT, l’ingénieur axé sur la sécurité s’occupait de la protection du boot
Retour sur l’article :
Je me demande pourquoi une solution standardisée n’a pas été utilisée
J’ai rarement vu l’usage du chiffrement du firmware sur des appareils IoT ESP32
Avis sur la décision des ingénieurs service de ne pas implémenter de protocole standard comme DTLS
Les personnes qui utilisent des appareils intelligents devraient se servir de DD-WRT, OpenWrt, Tomato, Asuswrt-Merlin pour isoler leurs appareils dans un VLAN séparé du réseau privé
On ne devrait pas avoir à pirater un produit acheté pour pouvoir l’utiliser