1 points par GN⁺ 2024-12-29 | 1 commentaires | Partager sur WhatsApp
  • L’ESP32 est si répandu qu’il s’en trouve probablement des milliers rien qu’au CCH, mais sa pièce maîtresse, la pile Wi‑Fi, reste propriétaire, ce qui la rend difficile à modifier et à auditer
  • La session de la 38c3 part de la rétro-ingénierie du périphérique Wi‑Fi pour montrer le processus de création d’une pile Wi‑Fi open source
  • L’objectif n’est pas seulement une implémentation de remplacement, mais de permettre de vérifier et corriger soi-même un logiciel susceptible de traiter des données sensibles
  • Une fois cette nouvelle pile en place, l’ESP32 pourrait dépasser le simple SoC IoT générique pour devenir une plateforme radio bon marché dédiée à la recherche et à l’expérimentation
  • Si les fonctionnalités sont suffisamment ouvertes, cela rend possibles des usages comme des outils de pentest, des routeurs mesh B.A.T.M.A.N. ou des clients AirDrop

Pourquoi ouvrir une pile Wi‑Fi propriétaire

  • La pile Wi‑Fi existante de l’ESP32 fonctionne, mais comme il s’agit d’une implémentation propriétaire, il est difficile d’en inspecter le fonctionnement interne ou de l’adapter à ses besoins
  • L’objectif central d’une pile Wi‑Fi open source est de rendre modifiables et auditables des composants potentiellement chargés de traiter des données sensibles
  • Le fait qu’il existe probablement des milliers d’ESP32 au CCH, tous exécutant ce type de pile Wi‑Fi fermée, renforce encore cette prise de conscience

De la rétro-ingénierie à une nouvelle pile

  • Le projet a commencé par la rétro-ingénierie de la pile Wi‑Fi propriétaire de l’ESP32
  • Il a ensuite évolué vers l’implémentation d’une pile Wi‑Fi open source pilotant directement le périphérique Wi‑Fi de l’ESP32
  • Au fil du processus, la session aborde aussi le Wi‑Fi, l’ESP32, la rétro-ingénierie en général et la manière d’aborder ce type de projet

Ce que permet un ESP32 vraiment ouvert

  • Si ses fonctionnalités sont totalement ouvertes, l’ESP32 peut assumer des rôles bien plus variés, comme outil de recherche et comme SoC IoT
  • Exemples d’usages possibles
    • outils de pentest
    • routeurs mesh B.A.T.M.A.N.
    • clients AirDrop

Informations sur la session et conditions de diffusion

  • Les intervenants sont Frostie314159 et Jasper Devreker
  • Il s’agit d’une session de 38 minutes tenue le 2024-12-27 dans la track Hardware & Making, au Saal 1 de la 38c3
  • La vidéo et l’audio sont proposés aux formats MP4, WebM, MP3 et Opus
  • Les contenus sont publiés sous les conditions de http://creativecommons.org/licenses/by/4.0

1 commentaires

 
GN⁺ 2024-12-29
Avis sur Hacker News
  • Article lié : https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/

    • Si la version open source est compatible avec l’API fermée, les avantages devraient être importants
      Si elle est compatible, on peut réutiliser tels quels l’aide et les exemples déjà accumulés sur Internet, et le coût d’entrée baisse. Même quelqu’un qui veut modifier très légèrement la couche MAC peut s’y mettre comme avant, sans avoir à apprendre une nouvelle API, et ne toucher qu’à la partie qui l’intéresse
    • Je suis l’auteur. Toute la série d’articles est aussi sur https://esp32-open-mac.be/
  • C’est encore assez étrange qu’Espressif soit le seul à avoir réussi à mettre un modem WiFi dans un microcontrôleur plutôt correct
    ST reste encore très en retard sur ce terrain

    • Comme autres exemples, il y a les familles BK72xx (BK7231T, BK7231N), RTL87xx (RTL8710BN, RTL8710BX), et le RP2040
      Cela dit, le WiFi de la carte RP2040 W ressemble à un module externe. Source : https://esphome.io
    • Espressif a bien trouvé la combinaison : prix bas, accessibilité, matériel simple, logiciel simple, et pas de restrictions de licence bizarres
      On peut en acheter une seule unité à peu près partout, ils sont vendus sous forme de nombreuses cartes breakout avec alimentation USB, port de programmation et broches sérigraphiées, et la documentation, les exemples, l’Arduino IDE et NodeMCU sont bien fournis. Arduino était similaire au début, mais est resté trop longtemps sur des puces AVR peu performantes, les cartes non chinoises étaient chères, et il n’y avait pas de WiFi. Le Raspberry Pi Pico a de bonnes fonctionnalités, mais l’approvisionnement était difficile au début ; le reste ressemble plutôt à des « puces seules » qu’on achète chez DigiKey ou équivalent, avec des frais de port élevés, une documentation de plus de 600 pages, plus de 300 pages à lire pour envoyer un premier ping, des soudures à faire sur la carte, et généralement du matériel coûteux pour programmer
    • Nordic Semiconductor a aussi des microcontrôleurs avec Bluetooth et WiFi. Mais ils sont beaucoup moins courants que les solutions Espressif
    • La plupart des modules basés sur TuYa vendus sur AliExpress sont des Beken
    • TI a des microcontrôleurs WiFi+Bluetooth depuis près de dix ans, et propose aussi du Cortex-M4
  • Je n’ai pas encore vu la vidéo, donc désolé si c’est déjà abordé, mais je me demande si la certification radio de l’ESP32 est liée au firmware boîte noire officiel
    Même avec le même matériel, si on utilise un firmware ouvert, faut-il le renvoyer à la FCC ou à d’autres organismes de certification pour vérifier la conformité ?

    • Si on le distribue comme ça, oui ; si l’utilisateur final le modifie lui-même, non
      Je ne me souviens pas de l’article exact du CFR, mais la FCC autorise explicitement n’importe qui à utiliser de petits volumes d’appareils non certifiés. Si l’appareil enfreint d’autres règles, cela reste une infraction, mais le simple fait d’avoir modifié le matériel ou le logiciel n’est pas interdit en soi
    • Je vois ça comme une zone grise. Si je ne me trompe pas trop, la certification ne teste et ne documente que les performances radio dans les pires conditions, et le reste de la documentation technique ressemble davantage à une brochure assez détaillée avec un schéma-blocs de haut niveau et une théorie de fonctionnement qu’à des documents de conception modernes comme des fichiers de fabrication PCB ou des scripts de build du firmware
      L’existence du firmware est à peine reconnue. Il y a aussi une raison à cela. Pour les équipements radio non licenciés certifiés comme le WiFi, on attend qu’ils soient résistants aux modifications, dans l’intérêt public. Ainsi, lorsque la FCC a discuté des exigences de certification des routeurs WiFi, elle a envisagé d’étendre cela au logiciel, par exemple en imposant le secure boot à tous les routeurs WiFi vulnérables et pourris ; c’était une idée affreuse, et elle a été abandonnée. En l’état, tant que le firmware résultant ne produit pas clairement d’émissions hors spécification, je dirais que c’est à moitié légal ou à moitié illégal. Je ne suis pas juriste
    • Exact
  • https://github.com/esp32-open-mac

  • J’avais autrefois une idée pour provisionner un mot de passe WiFi. On peut transmettre le SSID et le mot de passe en modulant la longueur des paquets
    Un nouvel appareil IoT ne peut évidemment pas déchiffrer les paquets, mais il peut en observer la longueur. J’avais aussi fait un exemple d’implémentation pour Linux, mais je n’ai trouvé aucune puce IoT offrant un accès PHY suffisamment bas niveau pour faire ça

    • Le SmartConfig de TI fonctionne de cette manière en utilisant le champ de longueur. Il suffit donc d’utiliser une puce IoT qui l’implémente, et TI en propose pas mal
    • https://www.keacher.com/xmas24/ utilise de l’OOK pour la communication de données, avec l’avantage de récupérer l’énergie du signal WiFi, donc sans besoin de batterie
    • En dernier recours, on pourrait faire du reverse engineering, non ? Ou bien c’est impossible ?
    • Aujourd’hui, j’utiliserais simplement WPA3
  • Question annexe : l’un des présentateurs a affiché un numéro DECT. Cela veut dire qu’il y a encore des gens qui se baladent avec de vieux téléphones pour les conférences tech ?

    • Ils exploitent plusieurs réseaux pour la communication vocale pendant l’événement. En cherchant, on voit qu’ils utilisent généralement DECT, SIP et GSM ensemble
      Il y a aussi un tableau de bord d’état qui affiche des métriques pendant l’événement
      [1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
      [2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
    • Oui. Dans les camps de hackers, c’est assez pratique, et j’en ai encore un
      En particulier dans les zones de camping, la couverture WiFi peut être irrégulière, donc on peut quand même recevoir un appel en allant jusqu’au bâtiment des toilettes ou au parking. Comme cela utilise ses propres fréquences, ça n’encombre pas davantage les bandes utilisées par le WiFi, le Bluetooth et Zigbee. On pourrait utiliser une appli, mais le DECT est très fiable et porte beaucoup plus loin que le WiFi. J’ai un bon appareil Siemens à peu près de la taille d’un Nokia 8210, donc pas besoin de se trimballer une brique. Sa batterie est sans doute presque morte maintenant, mais comme les batteries de cette époque, elle est remplaçable
  • Dans les logements privés en Allemagne, DECT reste encore très populaire
    Bien plus robuste que la VoIP sur WiFi

    • Je vois ça comme une tradition du CCC
    • Exact. Cela dit, on peut aussi utiliser GSM ou SIP, et dans les faits, même si l’on utilise un réseau moderne, comme l’espace de numérotation est le même, on parle souvent de numéros DECT
      Comme DECT était là en premier, le terme s’est figé comme nom générique du réseau téléphonique interne
  • Je me demande à quel point le hack va en profondeur. L’envoi de trames semble se résumer à configurer quelques registres et à attendre une interruption ; j’ai l’impression qu’il dialogue peut-être avec une autre couche de firmware qui fait le vrai travail
    Ça me fait penser à la carte Raspberry Pi Pico. Il y a le SoC principal RP2040, mais le WiFi passe par un module WiFi/BT séparé (CYW43xx) doté de son propre cœur Arm. L’interface de registres externe du module WiFi n’est pas documentée publiquement non plus, mais il existe un pilote open source (https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...) qui permet d’en déduire les spécifications. Mais au final, ce pilote communique lui aussi avec le logiciel qui tourne sur le cœur Arm interne du module, et ce code est fourni par le fabricant sous la forme d’un énorme blob binaire de firmware. Ce blob se trouve en fait dans les fichiers d’en-tête du répertoire firmware du dépôt lié. Je me demande comment ce hack de l’ESP32 correspond à cette architecture

  • Les intervenants ont vraiment l’air très jeunes, c’est impressionnant. C’est fascinant de voir des personnes accumuler autant de connaissances techniques à un âge aussi précoce

    • Aujourd’hui, tout est public. Les enfants peuvent apprendre ce qu’ils veulent de plus en plus tôt
      Les échecs en sont un parfait exemple. Avant, beaucoup de connaissances se trouvaient dans des livres, souvent dans des langues étrangères. Maintenant, tout est public, et une fois qu’on atteint un certain niveau, on peut facilement jouer contre des adversaires du top 100, ce qui accélère encore la progression
  • On se rapproche encore un peu d’une bibliothèque MicroPython prenant en charge le mode promiscuité

    • Pourquoi ? C’est déjà pris en charge dans l’ESP SDK
  • À voir sans téléchargement : https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...