martes, mayo 08, 2018

TakeTV: Cómo descubrir y utilizar SmartTVs bajo DLNA/UPnP

Hace unos meses estuve jugando con ChromeCast e hice un pequeño script llamado ChromeCrash. Era realmente sencillo poder meter mano a un dispositivo ChromeCrash, por defecto, si se tenía acceso a la red. Incluso, si no se tenía acceso a la red, se podía realizar un ataque Rickmote remoto, tal y como se puede ver en el vídeo del artículo.

Figura 1: TakeTV: Cómo descubrir y utilizar SmartTVs bajo DLNA/UPnP

Hace unos pocos días, llegué a un Github que me llamó la atención. La aplicación se llamaba TakeTV y permite descubrir dispositivos DLNA/UPnP y lanzarles comandos para reproducir imágenes, videos, música y poder interactuar con las SmartTV.


Figura 2: RickMote

La herramienta está escrita por @svelizdonoso y es muy vistosa e intuitiva. Para poder utilizarla hay que instalar, mediante apt-get install youtube-dl, una serie de dependencias, las cuales se utilizarán para descargar los videos, las canciones o las imágenes que se quieran tener en el servidor web que la herramienta monta.

Figura 3: Funcionamiento de TakeTV

El funcionamiento es muy sencillo, TakeTV dispone de dos partes escritas en Python que puedes correr desde tu Kali Linux:
• La primera parte es la herramienta en sí que hace el descubrimiento de dispositivos y la que también enviará las órdenes a los dispositivos. El script se llama taketv.py. 
• La segunda parte es el script llamado assistent.py, el cual puede utilizarse para descargar los contenidos audiovisuales de diferentes rutas de Youtube o de otras fuentes. Este script también es el encargado de listar las direcciones URL de los contenidos y de lanzar el servidor web en el que se debería apoyar taketv.py para que la televisión reproduzca el contenido.
Figura 4: Ayuda de TakeTV

Si miramos la ayuda de la herramienta taketv.py se puede encontrar diferentes opciones como son las siguientes:
• El parámetro ip. Aquí se indicará la dirección IP de la televisión. 
• El parámetro all. Se realiza el descubrimiento de equipos por UPnP. 
• Parámetros play, stop, mute, unmute, pause, volume, seek permiten jugar con los contenidos y enviarlos a los dispositivos.

• El parámetro timeout trabaja el tiempo de espera en la fase de descubrimiento. Es recomendable cubrir un timeout alto, para que se puedan descubrir correctamente los dispositivos.
Para poder descubrir dispositivos se puede utilizar la instrucción python taketv.py –all –timeout 7. Como se puede ver en la imagen, se obtiene un listado de dipsositivos, entre los que destaca una televisión. En el caso de ChromeCast también podríamos obtenerlo y manipularlo, como se vio con el ChromeCrash.

Figura 5: Descubriendo dispositivos con TakeTV

Para poder preparar las URL dónde se encuentren los contenidos que enviar a los dispositivos o televisiones, se debe hacer uso del script assistent.py. Gracias a este script se puede realizar la descarga de contenido mp3, mp4, mkv, jpg.

Figura 6: Descarga de contenido en la TV

Además, se puede hacer un listado de los contenidos disponibles que luego se servirán con el script assistent.py, con el objetivo de que la SmartTV lo ejecute. La instrucción python assistent.py –listserver devuelve el listado de contenidos disponibles. Es importante, ya que luego con python taketv.py –ip [dirección IP TV] –play hay que indicar URL del servidor assistent.py.

Figura 7: Listado de URLs de contenido

Por último, hay que arrancar el servidor. Para ello, se ejecuta python assistent.py –httpserver –port 8000. Nos vuelven a listar las URL de los contenidos audiovisuales.

Figura 8: Contenidos audiovisuales

Los dispositivos compatibles con la herramienta o sobre las que el autor ha comprobado son: Samsung, LG, Android TV, Recco o AOC. Una vez se tiene listo todo, se puede enviar el contenido de la siguiente manera:
taketv.py –ip [dirección IP TV] [opción: --play –stop –volume –pause, etc] [URL del recurso a reproducir en la televisión]
Sin duda, una herramienta interesante y es que la seguridad en el hogar es un campo que debemos seguir estudiando, ya que tenemos muchos ejemplos de posibilidades con los protocolos actuales. ¿Tienes una SmartTV? ¡Pruébalo!

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

No hay comentarios:

Publicar un comentario