Liberando el Wi‑Fi en el ESP32 [video]
(media.ccc.de)- El ESP32 es tan común que probablemente se usen miles solo en CCH, pero su componente central, el stack Wi‑Fi, es cerrado, por lo que resulta difícil modificarlo y auditarlo
- La sesión de 38c3 parte de la ingeniería inversa del periférico Wi‑Fi y aborda el proceso de crear un stack Wi‑Fi de código abierto
- El objetivo no es solo una implementación alternativa, sino permitir verificar y corregir directamente el software que puede manejar datos sensibles
- Si el nuevo stack se consolida, el ESP32 podría expandirse más allá de un SoC IoT común y convertirse en una plataforma inalámbrica económica para investigación y experimentación
- Si se abren suficientes funciones, serían posibles usos como herramientas de pentesting, routers mesh B.A.T.M.A.N. y clientes de AirDrop
Por qué abrir un stack Wi‑Fi cerrado
- El stack Wi‑Fi existente del ESP32 funciona, pero al ser una implementación cerrada es difícil revisar su funcionamiento interno o modificarlo según las necesidades
- El objetivo central de un stack Wi‑Fi de código abierto es permitir modificar y auditar el área que potencialmente maneja datos sensibles
- En CCH probablemente hay miles de ESP32, y el hecho de que todos ejecuten este stack Wi‑Fi cerrado aumenta la preocupación
De la ingeniería inversa al nuevo stack
- El proyecto comenzó con la ingeniería inversa del stack Wi‑Fi propietario del ESP32
- Luego avanzó hacia la implementación de un stack Wi‑Fi de código abierto que controla directamente el periférico Wi‑Fi del ESP32
- En este proceso también se tratan Wi‑Fi, ESP32, ingeniería inversa en general y cómo abordar proyectos de este tipo
Usos cuando el ESP32 esté abierto
- Si sus funciones se abren por completo, el ESP32 podrá asumir roles más variados como herramienta de investigación y SoC IoT
- Algunos ejemplos de usos posibles son:
- Herramientas de pentesting
- Router mesh B.A.T.M.A.N.
- Cliente de AirDrop
Información de la sesión y condiciones de publicación
- Los ponentes son Frostie314159 y Jasper Devreker
- Es una sesión de 38 minutos del track Hardware & Making de 38c3, realizada en Saal 1, con fecha 2024-12-27
- El video y el audio están disponibles en formatos MP4, WebM, MP3 y Opus
- El material se publica bajo los términos de
http://creativecommons.org/licenses/by/4.0
1 comentarios
Opiniones en Hacker News
Artículo relacionado: https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/
Si fuera compatible, se podrían aprovechar tal cual la ayuda y los ejemplos que ya existen en internet, y también bajaría el costo de entrada. Incluso alguien que solo quiera modificar muy poco la capa MAC podría entrar con el método existente, sin la carga de aprender una API nueva, y retocar solo la parte que le interesa
Todavía me parece bastante raro que solo Espressif haya logrado meter un módem WiFi en un microcontrolador bastante decente
ST sigue estando muy atrasada en este aspecto
Aunque el WiFi de la placa RP2040 W parece un módulo externo. Fuente: https://esphome.io
Se puede comprar en unidades de a una en cualquier lado, se vende en varias placas breakout con alimentación USB, puerto de programación y pines etiquetados, y tiene buena documentación, ejemplos, Arduino IDE y NodeMCU. Arduino también fue parecido al principio, pero se quedó demasiado tiempo con chips AVR de bajo rendimiento, las placas que no eran chinas eran caras y no tenía WiFi. Raspberry Pi Pico tiene buenas funciones, pero al inicio era difícil de conseguir; el resto se parece más a “chips sueltos” que se compran en lugares como DigiKey, con envíos caros, documentación de más de 600 páginas, más de 300 páginas necesarias para enviar un primer ping, necesidad de soldar en la placa y, por lo general, equipos caros para programar
Todavía no vi el video, así que perdón si ya lo trataron, pero me pregunto si la certificación inalámbrica del ESP32 está atada al firmware de caja negra oficial
Si se usa firmware abierto en el mismo hardware, ¿habría que enviarlo de nuevo a la FCC y otros organismos de certificación para comprobar conformidad?
No recuerdo de memoria el artículo del CFR, pero la FCC permite explícitamente que cualquiera use pequeñas cantidades de dispositivos no certificados. Si ese dispositivo infringe otras normas, sigue siendo una infracción, pero el solo hecho de haber modificado el hardware o el software no está prohibido
Casi ni se reconoce la existencia del firmware. Hay una razón para eso: se espera que los equipos de radio sin licencia certificados, como WiFi, sean resistentes a manipulaciones por el bien público. Por eso, cuando la FCC discutió los requisitos de certificación para routers WiFi, consideró extenderlos hasta el software obligando a todos esos routers WiFi basura e inseguros a usar secure boot, pero era una idea terrible y se descartó. Por ahora, mientras el firmware resultante no produzca emisiones claramente fuera de especificación, diría que está a medio camino entre legal e ilegal. No soy abogado
https://github.com/esp32-open-mac
Hace tiempo tuve una idea para provisionar contraseñas WiFi. Se podrían transmitir el SSID y la contraseña modulando la longitud de los paquetes
El nuevo dispositivo IoT obviamente no podría descifrar los paquetes, pero sí podría observar su longitud. Incluso hice una implementación de ejemplo para Linux, pero no encontré ningún chip IoT que ofreciera el acceso PHY de bajo nivel suficiente para hacerlo
Pregunta tangencial: uno de los presentadores publicó un número DECT. ¿Eso significa que todavía hay gente que lleva teléfonos viejos para usarlos en conferencias técnicas?
También hay un panel de estado que muestra métricas durante el evento
[1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
[2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
Sobre todo en las zonas de camping, donde la cobertura WiFi puede ser irregular, puedes recibir llamadas incluso si caminas hasta el edificio de baños o el estacionamiento. Como usa sus propias frecuencias, tampoco satura más las bandas que usan WiFi, Bluetooth y Zigbee. Podrías usar alguna app, pero DECT es muy estable y tiene mucho más alcance que WiFi. Tengo un equipo Siemens decente, del tamaño aproximado de un Nokia 8210, así que tampoco hace falta andar cargando un ladrillo. A estas alturas la batería seguramente está casi muerta, pero, como las baterías de esa época, es reemplazable
Dentro de las casas particulares en Alemania, DECT sigue siendo muy popular
Mucho más robusto que VoIP sobre WiFi
Como DECT estuvo primero, quedó establecido casi como el nombre genérico de la red telefónica interna
Me da curiosidad qué tan profundo llega el hack. La transmisión de tramas parece simplemente configurar algunos registros y esperar una interrupción, así que sospecho que quizá esté hablando con otra capa de firmware que hace el trabajo real
Me recuerda a la placa Raspberry Pi Pico. Tiene el SoC principal RP2040, pero el WiFi es un módulo WiFi/BT separado (CYW43xx) con su propio núcleo Arm. La interfaz de registros externa del módulo WiFi tampoco está documentada públicamente, pero existe un driver open source (https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...) que permite inferir la especificación. Sin embargo, ese driver al final también se comunica con software que corre en el núcleo Arm interno del módulo, y ese código lo proporciona el fabricante como un enorme blob binario de firmware. Ese blob de hecho está dentro de los archivos de cabecera del directorio firmware del repositorio enlazado. Me pregunto cómo se corresponde este hack del ESP32 con esa estructura
Me impresionó lo jóvenes que se ven los presentadores. Es interesante ver cómo acumulan ese nivel de conocimiento técnico a una edad tan temprana
El ajedrez es el ejemplo perfecto. Antes mucho del conocimiento estaba en libros, a menudo en libros en idiomas extranjeros. Ahora todo está disponible públicamente y, una vez que alcanzas cierto nivel, puedes jugar fácilmente contra rivales del top 100, así que el ritmo de crecimiento es más rápido
Estamos un paso más cerca de una biblioteca de MicroPython que soporte modo promiscuo
Ver sin descargar: https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...