- Comprei uma câmera Tapo para observar meu cachorro em casa, mas acabei fazendo uma engenharia reversa de como os dispositivos e o app da TP-Link funcionam
- Para analisar o processo de onboarding e a estrutura de comunicação da API criptografada, usei várias técnicas, como MITM, descompilação de APK e criação de scripts de descriptografia
- Ao descobrir a senha inicial de administrador e o processo de derivação de chave de sessão, consegui decifrar mensagens criptografadas e identificar um problema de sincronização pouco confiável entre o dispositivo e a conta na nuvem
- Analisei todo o fluxo de onboarding e automatizei com scripts Bash as principais chamadas de API, criação de conta, troca de senha e conexão ao Wi‑Fi
- Aponto características típicas de dispositivos IoT de baixo custo, como falhas no design de segurança do firmware da Tapo, implementação de criptografia menos sofisticada e sincronização irregular de contas
Visão geral do projeto
- O autor comprou e usou uma câmera Tapo de baixo custo para observar seu cachorro dentro de casa
- Durante o uso, a configuração incômoda e a falta de informações online o levaram a investigar a fundo como o produto funciona
- Problemas inesperados com integração ao frigate e ativação de 2way audio despertaram interesse em um método de onboarding direto sem integração com a nuvem
Análise da estrutura de onboarding e autenticação
- Para analisar o procedimento de conexão da câmera Tapo, foram usados MITM proxy e a ferramenta de hook dinâmico frida para interceptar o tráfego entre o app e a câmera
- Como apps mais recentes contam com mecanismos de resistência a bypass, como ignorar proxy e certificate pinning, a abordagem com ferramentas dinâmicas se mostrou eficaz
- Depois de configurar essa estrutura de bypass, foi possível confirmar com precisão o processo de login da conta administrativa padrão no fluxo de onboarding da câmera
- Foi descoberto que a API de login padrão funciona com uma senha padrão própria do dispositivo, separada da senha da conta na nuvem
Estrutura de criptografia e busca da senha padrão
- Por meio de descompilação de APK (com JADX) e análise de código, foi obtida a senha padrão da conta
admin (TPL075526460603)
- Também foi confirmado que, mesmo após alterar a senha da nuvem, câmeras já vinculadas não percebem a mudança, mostrando que a sincronização de senhas entre app e câmera é imprecisa
- Como a senha padrão foi descoberta, foi possível implementar a lógica de derivação das chaves de sessão (
lsk, ivb) e descriptografar mensagens da API criptografada em tempo real
Scripts com mitmproxy e análise da API
- Com referência ao projeto open source PyTapo, foi feita uma análise detalhada do fluxo de API do procedimento real de onboarding da Tapo
- Por meio do script
tapo_decrypt_pretty.py, foi possível:
- detectar o handshake de login
- extrair chaves de sessão
- descriptografar a API criptografada, gerar uma saída mais legível e salvar JSON
- Entre todo o histórico de chamadas de API do onboarding, foram selecionados apenas os processos principais mais relevantes para criar um fluxo de automação
- consulta da lista de Wi‑Fi (
scanApList)
- ativação de conta RTSP/ONVIF
- alteração da senha de administrador
- conexão ao Wi‑Fi
Automação e resultados
- Um script Bash (
tapo_onboard.sh) foi montado para executar automaticamente todo o processo de onboarding acima
- login inicial como admin
- seleção e conexão ao Wi‑Fi
- remoção do logo do feed da câmera
- permissão de uso de RTSP/ONVIF
- redefinição da senha de administrador
- Na estrutura do firmware da câmera, foram identificadas as seguintes características e falhas
- algumas APIs usam hash SHA-256, mas outras ainda mantêm métodos antigos como MD5
- existem 2 chaves públicas, mas não está claro em que situação cada uma deve ser usada
- a sincronização de senha entre app e dispositivo é muito instável
Conclusão e impressões
- A estrutura de segurança do firmware e da API da câmera Tapo passa a impressão de ser uma solução improvisada e pouco refinada
- O projeto proporcionou uma experiência indireta com as falhas de segurança de dispositivos IoT baratos e a realidade de sistemas de onboarding incompletos
- O objetivo final do projeto, que era acompanhar o cachorro, foi alcançado, e o autor constatou que ele normalmente dorme no sofá ou na cama
Ainda não há comentários.