jueves, octubre 11, 2018

Chromecast Hacking con Metasploit y Kali Linux

Una ventaja que presenta Chromecast es que es un dispositivo realmente pequeño, y por tanto resulta muy práctico llevarlo de viaje, ya que no todos los hoteles cuentan con todos los canales en sus televisiones o estos están en idiomas que los usuarios del hotel desconocen, o han de pagar por ver cierto tipos de contenidos. Además, la mayoría de los hoteles ofrecen también conexión WiFi a sus clientes así que, ¿por qué no llevar un Chromecast al hotel y utilizarlo junto a su red WiFi para ver los contenidos deseados desde nuestro propio equipo?

Figura 1 Chromecast Hacking con Metasploit y Kali Linux

En este artículo se describe cómo, aprovechando la estancia en un hotel, fue posible descubrir un Chromecast en una red privada de área local, así como los módulos disponibles para Metasploit, y los resultados obtenidos tras su aplicación sobre un Chromecast. Queda fuera del artículo todo lo relacionado con el proceso de extracción de la red WiFi a la que se encontraba conectado en Chromecast. Se recomienda, antes de continuar con este artículo, completarlo con la lectura de otro artículo que escribió Pablo González: ChromeCrash (o cómo jugar con tu Google Chromecast sin autenticarse).

Descubrimiento del Chromecast

El primer paso, una vez conectado a la red WiFi es buscar el Chromecast. Éste por defecto tiene abierto el puerto 8008/TCP donde corre un servicio HTTP para configurar el dispositivo. Haciendo un barrido por toda la red en busca de host con el puerto 8008/TCP y el servicio HTTP  con nmap desde un Kali Linux en él es fácil encontrarle:

Figura 2: Descubrimiento de un Chromecast con el puerto 8008/TCP abierto.

Como en cualquier auditoría web, se recomienda hacer fuerza bruta sobre la URL en busca de directorios y recursos que devuelvan el código 200/HTTP o el 302/HTTP, que indica que automáticamente se realizará una redirección al solicitar ese recurso al servicio. La herramienta dirb es una buena opción:

Figura 3: Recurso descubierto en el Chromecast con código HTTP de redirección.

Tras solicitar el recurso anterior, el servicio del Chromecast realiza una redirección hacia la URL http://192.168.0.13:8008/apps/Youtube, lo que devuelve un fichero XML donde se aprecia la versión del Chromecast, en este caso V2.

Figura 4: Fichero XML con la versión del Chromecast.

Se observa el estado del dispositivo, running, lo que indica que al menos un dispositivo está conectado a él para reproducir en un televisor contenido audiovisual.

Modulos de Metasploit

Siempre es bueno comprobar si Metasploit dispone de módulos de descubrimiento y/o explotación relacionados con un objetivo. En nuestro caso el objetivo es el dispositivo Chtomecast. Se comprueba que Metasploit cuenta con una serie de módulos relacionados con Chromecast:

Figura 5: Módulos de Metasploit relacionados con Chromecast.

Módulo auxiliary/scanner/http/chromecast_webserver


Este módulo busca el servidor web Chromecast en el puerto 8008/TCP, y se puede utilizar para descubrir dispositivos que pueden ser atacados por otros módulos de Chromecast, como por ejemplo chromecast_youtube.

Figura 6: Chromecast conectado a la red WiFi con SSID “ONO1361”.

Como se aprecia en la imagen, el módulo devuelve el nombre de la red multicast (224.0.0.0 – 239.255.255.255.255) que crea el Chromecast, “Comedor”, para que los dispositivos puedan localizarle y compartir contenido multimedia con él. Además también devuelve el SSID de la red WiFi, “ONO1361”.

Para un hotel, parece lógico el nombre de la red “Comedor” que crea el Chromecast, pero llama la atención que, a parte de tener el portal de acceso cautivo para saber qué clientes se han conectado y en qué franjas horarias, el Chromecast se encuentre conectado directamente a un punto de acceso de una red WiFi un hotel.

Módulo auxiliary/scanner/http/chromecast_wifi

Este módulo enumera los puntos de acceso inalámbrico cercanos a través del Chromecast.

Figura 7: Opciones del módulo, redes WiFi cercanas al Chromecast, SSID de la red WiFi a la que se encuentra conectado y BSSID de los puntos de acceso cercanos al dispositivo.

Analizando el tráfico de red, se observa la URL http://192.168.0.13:8008/setup/scan_results

Figura 8: URL descubierta durante el escaneo de puntos de acceso cercanos.

La URL anterior proporciona información del punto de acceso WiFi al que se encuentra conectado el Chromecast: BSSID, frecuencia, potencia de la señal y el sistema de protección de acceso a la red WiFi que en este caso es WPA.

Figura 9: Datos del punto de acceso al que se encuentra conectado el Chromecast.

Módulo auxiliary/admin/chromecast/chromecast_youtube

Este módulo permite cambiar el vídeo que el Chromecast está emitiendo en la televisión a la que se encuentra conectado. El parámetro VID que corresponde al identificador del vídeo de Youtube que queremos emitir vía Chromecast.

Figura 10: Parámetros de configuración del módulo.

Analizando la petición HTTP enviada al Chromecast, en ella viaja por POST el parámetro “v” con el ID del vídeo de Youtube que se quiere reproducir.

Figura 11: Parámetros enviados por POST al Chromecast con
el identificador del vídeo de Youtube a reproducir.

Se comprueba que el vídeo, a parte de cambiarse en la televisión, también se cambia en el dispositivo que se encuentra conectado a la red multicast creada por el Chromecast.

Figura 12: Cambio del vídeo en el iPad conectado al Chromecast.

Llama la atención que no se requiere autenticación del usuario para cambiar el vídeo de emisión, como ya se había contado en este artículo de cómo jugar con tu Chromecast sin autenticarse.

Módulo auxiliary/admin/chromecast/chromecast_reset

Este módulo realiza un restablecimiento de los valores de fábrica en el Chromecast, causando un denegación de servicio (DoS). Llama la atención que tampoco se requiere autenticación de usuario.

Analizando el código del módulo, se comprueba que simplemente enviando por POST la URI /setup/reboot sería suficiente para establecer los valores por defecto del dispositivo, causando la perdida de funcionalidad del Chromecast para el resto de dispositivos conectados a él.

Figura 13: Código donde se muestra la petición por POST que
se envía al Chromecast para restablecer sus valores de fábrica.

Conclusiones

Llama especialmente la atención que el dispositivo no solicite la autenticación por parte del usuario para el restablecimiento de los valores de fábrica, así como para el cambio del vídeo que está emitiendo en ese momento. Se determina que el Chromecast trabaja en grupos de multicast, ya que el cambio del vídeo, a parte de modificar el vídeo en la televisión, también se produce en el dispositivo vinculado al Chromecast.

También se comprueba toda la información que el Chromecast conoce sobre la red WiFi a la que se encuentra conectada. ¿Enviará esta información a Google? Probablemente.


Figura 14: Demo de ChromeCast hijacking

Al parecer toda la protección sobre el Chromecast no es otra que la fortaleza de la clave de acceso a la red WiFi. En caso de conocerla, es fácil localizar el Chromecast. Basta buscar host dentro de la red con el puerto 8008/TCP abierto y realizar las peticiones HTTP que hemos comentado en los puntos anteriores. Os dejo también un vídeo de la PoC de Hijacking para que veáis el efecto.

Autor: Amador Aparicio de la Fuente (@amadapa) escritor del libor "Hacking de tecnologías Web"

No hay comentarios:

Publicar un comentario