Libertando o Wi‑Fi no ESP32 [vídeo]
(media.ccc.de)- O ESP32 é tão comum que provavelmente há milhares deles só no CCH, mas sua peça central, a pilha de Wi‑Fi, é fechada, o que dificulta modificá-la e auditá-la
- A sessão da 38c3 parte da engenharia reversa do periférico de Wi‑Fi e mostra o processo de criação de uma pilha de Wi‑Fi open source
- O objetivo não é apenas uma implementação alternativa, mas permitir verificar e corrigir diretamente o software que pode lidar com dados sensíveis
- Se a nova pilha se consolidar, o ESP32 poderá ir além de um SoC IoT comum e se expandir como uma plataforma sem fio de baixo custo para pesquisa e experimentação
- Quando funcionalidades suficientes forem abertas, será possível usá-lo em ferramentas de pentest, roteadores mesh B.A.T.M.A.N. e clientes AirDrop
Por que abrir uma pilha de Wi‑Fi fechada
- A pilha de Wi‑Fi atual do ESP32 funciona, mas é uma implementação fechada, então é difícil inspecionar seu funcionamento interno ou modificá-la conforme a necessidade
- O principal objetivo de uma pilha de Wi‑Fi open source é permitir modificação e auditoria em uma área que potencialmente lida com dados sensíveis
- O fato de provavelmente existirem milhares de ESP32 no CCH, todos executando essa pilha de Wi‑Fi fechada, reforça a preocupação
Da engenharia reversa à nova pilha
- O projeto começou com a engenharia reversa da pilha de Wi‑Fi proprietária do ESP32
- Depois, evoluiu para a implementação de uma pilha de Wi‑Fi open source que lida diretamente com o periférico de Wi‑Fi do ESP32
- Nesse processo, também são abordados Wi‑Fi, ESP32, engenharia reversa em geral e formas de abordar esse tipo de projeto
Usos possíveis quando o ESP32 estiver aberto
- Se suas funcionalidades forem totalmente abertas, o ESP32 poderá assumir papéis mais diversos como ferramenta de pesquisa e SoC IoT
- Exemplos de uso possíveis incluem
- ferramentas de pentest
- roteadores mesh B.A.T.M.A.N.
- clientes AirDrop
Informações da sessão e condições de publicação
- Os palestrantes são Frostie314159 e Jasper Devreker
- É uma sessão de 38 minutos realizada em 2024-12-27 na trilha Hardware & Making da 38c3, no Saal 1
- Vídeo e áudio são oferecidos nos formatos MP4, WebM, MP3 e Opus
- O material é publicado sob os termos de
http://creativecommons.org/licenses/by/4.0
1 comentários
Comentários do Hacker News
Post relacionado: https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/
Se for compatível, dá para aproveitar diretamente a ajuda e os exemplos que já existem na internet, e o custo de entrada também diminui. Mesmo quem só quer mexer um pouquinho na camada MAC pode entrar pelo caminho existente e alterar apenas a parte desejada, sem o ônus de aprender uma nova API
Ainda acho bem estranho que só a Espressif tenha conseguido colocar um modem WiFi em um microcontrolador bastante decente
A ST ainda está bem atrasada nesse tipo de coisa
Mas o WiFi da placa RP2040 W parece um módulo externo. Fonte: https://esphome.io
Dá para comprar uma unidade em qualquer lugar, são vendidos em várias placas breakout com alimentação USB, porta de programação e pinos marcados, e há boa documentação, exemplos, Arduino IDE e NodeMCU. O Arduino também era parecido no começo, mas ficou preso por tempo demais a chips AVR de baixo desempenho, as placas que não eram chinesas eram caras e não havia WiFi. O Raspberry Pi Pico tem bons recursos, mas no início era difícil de conseguir; o resto fica mais perto de um “chip único” comprado em lugares como DigiKey, com frete caro, documentação de mais de 600 páginas, mais de 300 páginas necessárias para enviar um único ping, necessidade de soldar na placa e, normalmente, equipamento caro também para programar
Ainda não vi o vídeo, então desculpem se isso já foi abordado, mas fico curioso se a certificação sem fio do ESP32 está vinculada ao firmware caixa-preta oficial
Mesmo com o mesmo hardware, se usar firmware aberto, seria preciso reenviar para órgãos de certificação como a FCC para fazer testes de conformidade?
Não lembro de cabeça o artigo do CFR, mas a FCC permite explicitamente que qualquer pessoa use pequenas quantidades de dispositivos não certificados. Se o dispositivo violar outras regras, continua sendo uma infração, mas o simples fato de modificar hardware ou software não é proibido
A existência do firmware quase não é reconhecida. Há um motivo para isso. Equipamentos sem fio licenciados por isenção, como WiFi, devem ser resistentes a adulteração em nome do interesse público. Por isso, quando a FCC discutiu os requisitos de certificação para roteadores WiFi, chegou a considerar estender isso ao software, obrigando boot seguro em todos aqueles roteadores WiFi vulneráveis e porcarias, mas era uma ideia horrível e foi descartada. Do jeito que está, eu diria que é meio legal ou meio ilegal, desde que o firmware resultante não gere claramente emissões fora da especificação. Não sou advogado
https://github.com/esp32-open-mac
Antigamente eu tinha uma ideia de provisionamento de senha WiFi. Dá para transmitir o SSID e a senha modulando o comprimento dos pacotes
O novo dispositivo IoT obviamente não consegue descriptografar os pacotes, mas consegue observar o comprimento. Cheguei a criar uma implementação de exemplo para Linux, mas não encontrei nenhum chip IoT que oferecesse acesso PHY de baixo nível suficiente para fazer isso
Pergunta lateral: um dos palestrantes divulgou um número DECT. Isso quer dizer que ainda há gente levando telefones antigos para usar em conferências técnicas?
Também há um dashboard de status que mostra métricas durante o evento
[1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
[2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
Especialmente nas áreas de camping, a cobertura WiFi pode variar bastante, então você consegue receber chamadas mesmo caminhando até o prédio dos banheiros ou até o estacionamento. Como usa suas próprias frequências, também não congestiona ainda mais as faixas usadas por WiFi, Bluetooth e Zigbee. Daria para usar algum app, mas DECT é muito estável e tem alcance muito melhor que WiFi. Tenho um aparelho Siemens bom, mais ou menos do tamanho de um Nokia 8210, então também não preciso carregar um tijolo. A bateria provavelmente está quase morta agora, mas, como era comum naquela época, ela é substituível
Dentro de casas particulares na Alemanha, DECT ainda é muito popular
É muito mais robusto do que VoIP sobre Wi-Fi
Como o DECT veio primeiro, acabou se consolidando como um termo genérico para a rede telefônica interna
Fico curioso para saber quão profundo é o nível do hacking. A transmissão de frames parece ser apenas configurar alguns registradores e esperar uma interrupção, então me pergunto se não está conversando com alguma outra camada de firmware que faz o trabalho de verdade
Isso me lembra a placa Raspberry Pi Pico. Ela tem o SoC principal RP2040, mas o Wi-Fi fica em um módulo Wi-Fi/BT separado (CYW43xx), com seu próprio núcleo Arm. A interface de registradores externos do módulo Wi-Fi também não é documentada publicamente, mas existe um driver open source (https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...), então dá para inferir a especificação. Mas, no fim, esse driver também se comunica com um software que roda no núcleo Arm dentro do módulo, e esse código é fornecido pelo fabricante como um enorme blob binário de firmware. Esse blob está de fato dentro dos arquivos de header do diretório firmware no repositório linkado. Fico curioso para saber como este hack do ESP32 se corresponde com essa estrutura
Fiquei impressionado com o quanto os apresentadores parecem jovens. É interessante ver pessoas acumularem esse nível de conhecimento técnico em uma idade tão baixa
Xadrez é um exemplo perfeito. Antigamente, muito conhecimento estava em livros, muitas vezes em línguas estrangeiras. Agora tudo está aberto e, quando você chega a certo nível, consegue jogar casualmente até contra adversários do top 100, então a velocidade de evolução é maior
Ficamos um passo mais perto de uma biblioteca MicroPython com suporte a modo promíscuo
Para assistir sem download: https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...