Hacking Google Chromecast

Antes de empezar he iniciado un nuevo grupo de slack dedicado al hacking. Damos la bienvenida a todos, desde los principiantes hasta los avanzados, para que se unan. Estaré todos los días respondiendo preguntas, haciendo CTFs, y hablando de hacks geniales. Si te gusta el hacking y estás buscando gente con ideas afines únete a continuación:

Nuevo canal de Slack del Grupo de Hacking

Introducción

Es el 2 de enero de 2019 y como siempre hago estaba revisando mi feed de noticias y me di cuenta de un artículo sobre cómo algún hacker malicioso atacando a chromcast lo que resultó en que su TV se viera forzada a renderizar contenido no deseado (Artículo de noticias).

Esto despertó mi interés así que me dispuse a descubrir cómo el hacker logró esto.

Detalles técnicos

Según Internet la definición de chromecast es un adaptador de medios de transmisión de Google que permite a los usuarios reproducir contenido en línea como vídeos y música en un televisor digital.

En el momento de escribir este post este es un tema candente así que me imaginé que podría encontrar algunos detalles más en los sitios de medios sociales(twitter). Después de 5 minutos de excavación descubrí el siguiente post de twitter que me señaló en la dirección correcta.

Así que puedo enviar una solicitud POST a VulnWebSite.com:8008/apps/Youtube con un cuerpo JSON que contiene los datos {‘v’:’VIDEO_ID_HERE’}. Así que básicamente la vulnerabilidad aquí es que cualquiera que envíe una solicitud de correo a su dispositivo chromcast puede hacer que su TV reproduzca un video de youtube. Todo esto es sin autenticar.

Luego intenté buscar la documentación de la API pero no pude lo que quería. Entonces me encontré con la documentación no oficial de la API publicada por otra persona (documentación de la API). También encontré otra documentación que aparece a continuación.

  • chromecast python script
  • chromecast urls list

Después de leer la documentación tenía una idea mucho mejor de cómo funcionaba el dispositivo y sabía más o menos cómo el hacker había realizado el ataque.

El ataque

Así que primero debemos crear algún tipo de huella digital para identificar los dispositivos chromecast que tienen este endpoint de la API expuesto. Esto se puede hacer fácilmente enviando una petición GET al endpoint /setup/eureka_info que está documentado aquí(device-info API documentation). Esto devolverá un objeto json que contiene la versión de construcción, la información del dispositivo, la clave pública, y más. Este es el mismo api endpoint que shodan.io utiliza para tomar la huella digital de los dispositivos chromcast.

Ahora que podemos identificar los dispositivos chromcast todo lo que tenemos que hacer es enviar el payload de youtube al endpoint «/apps/YouTube» que descubrimos antes. Después de eso, el televisor del usuario se verá obligado a reproducir el vídeo que quieras que reproduzca. También puedes hacer otras cosas como listar los puntos de acceso circundantes y los dispositivos bluetooth o cualquier cosa que aparezca en la documentación de la API. Todo esto se puede hacer sin autenticar, por supuesto.

Universal Plug and Play

Este ataque es sencillo y casi cualquiera puede llevarlo a cabo armado con este conocimiento. Lo que empeora las cosas es que Chromecast hace uso de Universal Plug and Play (UPnP). Si no sabes lo que hace UPnP, básicamente atraviesa tu firewall. Esto significa que el dispositivo Chromecast hace uso de UPnP para abrir el puerto 8008 en su router y reenvía todo el tráfico al dispositivo Chromecast. Si tu router tiene UPnP habilitado, que es lo que hacen casi todos por defecto, tu dispositivo Chromecast se abrirá a Internet. Esto significa que cualquier persona será capaz de controlar su dispositivo chromecast y el televisor al que está conectado desde Internet sin autenticar.

Conclusión

Creo firmemente que google es realmente una gran empresa. Hacen mucho por protegernos cada día y también protegen a otras empresas y dispositivos gracias al proyecto cero. Por muy bueno que seas algunas cosas se te escapan. Ocurre todo el tiempo. Google ya ha mencionado que va a lanzar una actualización en las próximas semanas. Probablemente es mejor bloquear UPnP completamente ya que hay muchos otros dispositivos IOT que podrían ser vulnerables. Piénsalo, si un dispositivo de Google es vulnerable a un exploit de API no autenticado, ¿cuántos otros dispositivos lo son?

Leave a Reply