3 pontos por GN⁺ 2025-09-16 | Ainda não há comentários. | Compartilhar no WhatsApp
  • 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.

Ainda não há comentários.