3 puntos por GN⁺ 2025-09-16 | Aún no hay comentarios. | Compartir por WhatsApp
  • Compró una cámara Tapo para observar a su perro en casa, pero inesperadamente terminó haciendo ingeniería inversa de cómo funcionan los dispositivos y la app de TP-Link
  • Para analizar el proceso de onboarding y la estructura de la comunicación API cifrada, usó varias técnicas como MITM, descompilación de APK y generación de scripts de descifrado
  • Al descubrir la contraseña inicial de administrador y el proceso de derivación de claves de sesión, logró descifrar mensajes cifrados e identificar problemas de sincronización poco confiable entre el dispositivo y la cuenta en la nube
  • Tras analizar el flujo completo de onboarding, automatizó con scripts de Bash las llamadas API clave, la creación de cuentas, el cambio de contraseña y la conexión Wi‑Fi
  • Señala fallas en el diseño de seguridad del firmware de Tapo, una implementación de cifrado poco sofisticada y sincronización irregular de cuentas, rasgos típicos de dispositivos IoT de bajo costo

Resumen del proyecto

  • El autor compró y usó una cámara Tapo económica para observar a su perro dentro de casa
  • Durante el uso, la incomodidad de la configuración y la falta de información en línea lo motivaron a investigar a fondo cómo funcionaba el producto
  • Surgieron problemas inesperados al integrarla con frigate y al activar 2way audio, lo que despertó su interés por un método de onboarding directo sin integración con la nube

Análisis de la estructura de onboarding y autenticación

  • Para analizar el procedimiento de conexión de la cámara Tapo, interceptó el tráfico entre la app y la cámara usando MITM proxy y la herramienta de hooking dinámico frida
    • Como las apps recientes incluyen resistencia a este tipo de análisis, como ignorar proxies y usar certificate pinning, este enfoque con herramientas dinámicas resultó efectivo
  • Después de configurar esta evasión, pudo confirmar con precisión el proceso de login de la cuenta de administrador predeterminada dentro del flujo de onboarding de la cámara
  • Descubrió que la API de login predeterminada funciona con una contraseña base propia del dispositivo, separada de la contraseña de la cuenta en la nube

Estructura de cifrado y búsqueda de la contraseña predeterminada

  • Mediante descompilación del APK (usando JADX) y análisis de código, obtuvo la contraseña predeterminada de la cuenta admin (TPL075526460603)
  • Confirmó que, incluso si se cambia la contraseña de la nube, las cámaras ya vinculadas no detectan el cambio, lo que evidencia una sincronización imprecisa de contraseñas entre la app y la cámara
  • Como ya conocía la contraseña predeterminada, implementó la lógica de derivación de claves de sesión (lsk, ivb) y pudo descifrar en tiempo real los mensajes cifrados de la API

Scripting con mitmproxy y análisis de la API

  • Tomando como referencia el proyecto open source PyTapo, analizó con precisión el flujo de API del procedimiento real de onboarding de Tapo
  • Con el script tapo_decrypt_pretty.py logró:
    • detectar el handshake de login
    • extraer las claves de sesión
    • descifrar la API cifrada y mostrarla de forma legible, además de guardar el JSON
  • De todas las llamadas API del onboarding completo, extrajo solo los procesos principales relevantes para crear un flujo de automatización
    • consulta de lista Wi‑Fi (scanApList)
    • activación de cuentas RTSP/ONVIF
    • cambio de contraseña de administrador
    • conexión Wi‑Fi

Automatización y resultados

  • Configuró un script de Bash (tapo_onboard.sh) para ejecutar automáticamente todo el proceso de onboarding anterior
    • login inicial con admin predeterminado
    • selección y conexión a Wi‑Fi
    • eliminación del logo en el feed de la cámara
    • habilitación de RTSP/ONVIF
    • restablecimiento de la contraseña de administrador
  • En la estructura del firmware de la cámara encontró las siguientes características y debilidades
    • algunas APIs usan hash SHA-256, pero otras mantienen esquemas antiguos como MD5
    • existen 2 claves públicas, y no está claro en qué situaciones debe usarse cada una
    • la sincronización de contraseñas entre la app y el dispositivo es muy inestable

Conclusión e impresiones

  • La estructura de seguridad del firmware y de la API de la cámara Tapo da la impresión de ser improvisada y poco refinada
  • Fue una experiencia indirecta de las debilidades de seguridad de los dispositivos IoT económicos y de la realidad de sus sistemas de onboarding incompletos
  • Sí logró el objetivo final del proyecto, que era revisar a su perro, y confirmó que normalmente duerme en el sofá o en la cama

Aún no hay comentarios.

Aún no hay comentarios.