BlogCyber Weapons Lab

Cómo: secuestrar Chromecasts con CATT para mostrar imágenes, mensajes, videos, sitios y más

Renunciar a su contraseña de Wi-Fi puede significar más control de lo que cree. Por la forma Chromecast y otros dispositivos de IoT se comunican, cualquier persona en la misma red Wi-Fi que su dispositivo a menudo puede hacer que haga lo que quiera. Con un script llamado “Cast All the Things”, podemos secuestrar un Chromecast para reproducir casi cualquier tipo de medio con un solo comando en la terminal.

Los dispositivos IoT (Internet de las cosas) son conocidos por comprometer la seguridad por conveniencia, lo que los hace particularmente fáciles de atacar. Un ejemplo perfecto es el Chromecast, que puede ser efectivamente secuestrado por cualquier dispositivo de la misma red local que sepa cómo hablar con él.

Los dispositivos multimedia como un Chromecast se controlan mediante interfaces de programación de aplicaciones (API) simples diseñadas para ser controladas por mensajes desde el teléfono inteligente de un usuario. Por lo general, se envían al Chromecast cuando el usuario opera una aplicación móvil con una interfaz para controlar el dispositivo. En la mayoría de los casos, estos mensajes no requieren contraseña para ejecutarse, por lo que Chromecast reaccionará exactamente igual si le envía los comandos directamente, sin involucrar a la aplicación oficial.

Los dispositivos de IoT utilizan mensajes vulnerables para comunicarse

Los dispositivos de Internet de las cosas están en todas partes, y muchos de ellos utilizan estándares de mensajería livianos como MQTT para comunicarse a través de Wi-Fi. Este estándar es como Twitter para Wi-Fi: mensajes preformateados cortos y simples que pueden pasar rápidamente entre dispositivos en una red de malla. Una red de malla permite que grupos de dispositivos de IoT pasen mensajes entre sí para que todos los dispositivos tengan una conexión a Internet si incluso un dispositivo en el clúster tiene una conexión a una red Wi-Fi.

Si bien este estándar de comunicación es útil, a menudo se descuida la seguridad para facilitar la configuración de los dispositivos. Problemas más graves, como contraseñas codificadas de forma rígida que no se pueden cambiar (lo que hace que las botnets sean una amenaza real), los atajos para configurar la autenticación de mensajes y la falta de planificación para el uso de dispositivos en entornos de redes compartidas, han convertido la seguridad de IoT en un problema real.

Imagen de Kody / Null Byte

Transmitir todas las cosas para el control de la línea de comandos

Para todos los que quieran una forma de controlar los dispositivos Chromecast, fácil de instalar y de trabajar con secuencias de comandos, la comunidad tiene una respuesta. Lanzar todas las cosas proporciona acceso de línea de comandos a la API de Chromecast, lo que lo coloca entre la aplicación móvil frontal y el dispositivo que está controlando. Diseñado para extender la funcionalidad del Chromecast mucho más allá de lo que Google se sentía cómodo con el soporte oficial, el proyecto se ejecuta en Python y funciona en casi todos los sistemas operativos.

El uso de CATT para un pirata informático radica en lo fácil que es de usar y lo escalable que es. No es posible ordenar a todos los Chromecast en una red enorme que reproduzcan un video al mismo tiempo usando la aplicación normal, porque este no es un comportamiento que Google quisiera admitir.

Con CATT, un solo pirata informático con una computadora portátil conectada a la misma red en una oficina grande podría ordenar que cientos de Chromecasts descarguen y reproduzcan un video que distraiga al máximo volumen simultáneamente, causando caos y confusión en un momento crítico.

CATT también puede actuar como una forma “fuera de banda” o difícil de rastrear para comunicarse con otra persona mediante el uso del Chromecast como una forma de transmitir mensajes. Estos pueden ser abiertos, como en los subtítulos, o encubiertos, como cambiar la programación repetidamente a temas específicos.

Lo que necesitarás

Para seguir esta guía, necesitará una computadora con Python instalado. Además, deberá estar en la misma red que el dispositivo al que se dirige. Puede ser una red Wi-Fi o una red Ethernet. No funcionará en una red de invitados si la red de invitados no le permite escanear o comunicarse con otros hosts, como en una red Wi-Fi de Starbucks.

También necesitará un dispositivo Chromecast para intentar controlar, como un Chromecast Ultra o Chromecast (tercera generación). CATT funcionará con todos los modelos de Chromecast, ya que utilizan las mismas llamadas API básicas. Una vez que tenga un dispositivo Chromecast conectado a la misma red que su computadora, puede descargar CATT y cualquier dependencia.

Paso 1: instale CATT

Instalar CATT es increíblemente fácil, siempre que tenga instalado Python. Si es así, simplemente ejecute el siguiente comando en una ventana de terminal. Si bien no es necesario, también debe tomarse un tiempo para revisar el Página de GitHub si desea obtener más información sobre cómo funciona la herramienta.

~# pip install catt

Collecting catt
  Downloading catt-0.10.3-py2.py3-none-any.whl (24 kB)
Requirement already satisfied: requests>=2.18.4 in /usr/lib/python3/dist-packages (from catt) (2.21.0)
Collecting youtube-dl>=2019.01.24
  Downloading youtube_dl-2020.2.16-py2.py3-none-any.whl (1.8 MB)
     |████████████████████████████████| 1.8 MB 1.6 MB/s
Requirement already satisfied: Click>=5.0 in /usr/lib/python3/dist-packages (from catt) (7.0)
Collecting PyChromecast>=4.1.1
  Downloading PyChromecast-4.1.1-py2.py3-none-any.whl (50 kB)
     |████████████████████████████████| 50 kB 7.8 MB/s
Collecting ifaddr>=0.1.4
  Downloading ifaddr-0.1.6.tar.gz (6.5 kB)
Collecting zeroconf>=0.17.7
  Downloading zeroconf-0.24.4-py3-none-any.whl (56 kB)
     |████████████████████████████████| 56 kB 4.3 MB/s
Collecting protobuf>=3.0.0
  Downloading protobuf-3.11.3-cp37-cp37m-manylinux1_x86_64.whl (1.3 MB)
     |████████████████████████████████| 1.3 MB 5.5 MB/s
Collecting casttube>=0.2.0
  Downloading casttube-0.2.0-py3-none-any.whl (4.2 kB)
Requirement already satisfied: six>=1.9 in /usr/lib/python3/dist-packages (from protobuf>=3.0.0->PyChromecast>=4.1.1->catt) (1.12.0)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from protobuf>=3.0.0->PyChromecast>=4.1.1->catt) (40.8.0)
Building wheels for collected packages: ifaddr
  Building wheel for ifaddr (setup.py) ... done
  Created wheel for ifaddr: filename=ifaddr-0.1.6-py3-none-any.whl size=9403 sha256=c0678af91fe00e2952d79f3c704fe5a5d9598563de5250be4671d
  Stored in directory: /root/.cache/pip/wheels/b2/b4/e4/5be102e12e0ab70c7b9a16744a529c698a00df5ac3443
Successfully built ifaddr
Installing collected packages: youtube-dl, ifaddr, zeroconf, protobuf, casttube, PyChromecast, catt
Successfully installed PyChromecast-4.1.1 casttube-0.2.0 catt-0.10.3 ifaddr-0.1.6 protobuf-3.11.3 youtube-dl-2020.2.16 zeroconf-0.24.4

Pip instalará todas las dependencias y configurará CATT por usted. Una vez finalizada la instalación, puede escribir catt –ayuda para obtener una lista de todas las herramientas de línea de comandos para comprender mejor lo que puede hacer el script. Lamentablemente, no hay entrada manual para CATT, por lo que la diversión hombre catt El comando actualmente no va a ninguna parte.

~# catt --help

Usage: catt [OPTIONS] COMMAND [ARGS]...

Options:
  --delete-cache     Empty the Chromecast discovery cache.
  -d, --device NAME  Select Chromecast device.
  --help             Show this message and exit.

Commands:
  add           Add a video to the queue.
  cast          Send a video to a Chromecast for playing.
  cast_site     Cast any website to a Chromecast.
  ffwd          Fastforward a video by TIME duration.
  info          Show complete information about the currently-playing video.
  pause         Pause a video.
  play          Resume a video after it has been paused.
  restore       Return Chromecast to saved state.
  rewind        Rewind a video by TIME duration.
  save          Save the current state of the Chromecast for later use.
  scan          Scan the local network and show all Chromecasts and their IPs.
  seek          Seek the video to TIME position.
  skip          Skip to next video in queue (if any).
  status        Show some information about the currently-playing video.
  stop          Stop playing.
  volume        Set the volume to LVL [0-100].
  volumedown    Turn down volume by a DELTA increment.
  volumeup      Turn up volume by a DELTA increment.
  write_config  Write the name of default Chromecast device to config file.

Sugerencia: algunos de ustedes pueden recibir una advertencia de que “Este programa requiere Python 3 y superior para ejecutarse”, aunque tenga Python3 o superior. Si ese eres tú, intenta python3 -m pip instalar catt para instalar CATT e ir desde allí. Alternativamente, puede intentar apto instalar python3-pip seguido por pip3 instalar catt para que funcione.

Paso 2: escanea la red en busca de Chromecasts

CATT nos facilita las cosas de inmediato al poder escanear la red por sí mismo. Si bien es posible realizar un escaneo de Nmap contra la red, el escanear La función de CATT ya está ajustada para detectar dispositivos Chromecast en la red local.

Sin usar CATT, deberá calcular el rango de red de la red en la que se encuentra, buscar dispositivos con el puerto 8008 abierto y luego averiguar los detalles sobre qué tipo de dispositivo es. Todas estas cosas están integradas en CATT, por lo que para descubrir todos los Chromecasts cercanos, puede escribir el siguiente comando. (Para ver cómo funcionaría con Nmap, vea nuestro video).

~# catt scan

Scanning Chromecasts...
192.168.0.91 - Probe Team CIC - Google Inc. Chromecast Ultra

Aquí, CATT ha encontrado un dispositivo y nos ha mostrado su dirección IP, el nombre de la red y el tipo de dispositivo que es. Podemos usar esta dirección IP, o el nombre del dispositivo, para especificar qué dispositivo queremos controlar si hay más de uno.

Debido a que solo hay uno en esta red, no necesitamos especificarlo en los siguientes comandos, porque CATT lo enviará por defecto.

Paso 3: envíe una imagen a la pantalla

Las imágenes como los GIF se pueden mostrar sin esfuerzo en una pantalla de Chromecast. Para mostrar los formatos de imágenes más comunes, incluidos los GIF animados (que se reproducirán en un bucle), puede ejecutar el siguiente comando.

~# catt cast ./mygif.gif

Casting local file /Users/skickar/Desktop/mygif.gif...
Playing mygif.gif on "Probe Team CIC"...
Serving local file, press Ctrl+C when done.
192.168.0.91 - - [21/Feb/2020 05:34:45] "GET /?loaded_from_catt HTTP/1.1" 200 - image/gif - 5.98 MB

Paso 4: Transmita un video de YouTube remoto a la pantalla

Para transmitir un video alojado en un sitio web similar a YouTube, puede ejecutar el siguiente comando.

~# catt cast "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

Casting remote file https://www.youtube.com/watch?v=dQw4w9WgXcQ...
Playing Rick Astley - Never Gonna Give You Up (Video) on "Probe Team CIC"...

La herramienta es compatible con muchos, muchos sitios web además de YouTube que tienen contenido de video, y hay una lista completa de sitios de videos populares que CATT puede soportar (varios de los cuales son bastante desagradables).

Con la capacidad de transmisión, puede alojar sus propios videos que desea reproducir en YouTube y reproducirlos con el guión o puede transmitir un archivo directamente desde su computadora. Para detener o pausar el video, simplemente puede decir:

~# catt stop
~# catt pause

O puede agregar videos a la cola con:

~# catt add "https://www.youtube.com/watch?v=ZFq9lTiWUo4"

Consulte el archivo de ayuda para ver más cosas interesantes que puede hacer con los videos.

Paso 5: reproduce un video local con subtítulos

Ahora, superpongamos un mensaje en los medios que estamos transmitiendo desde nuestra computadora portátil. Al hacerlo, podremos comunicarnos en dos capas: con el contenido del video que estamos reproduciendo y con los subtítulos reproducidos de manera muy visible sobre el video mientras se reproduce.

Necesitaremos crear un archivo SRT (SubRip Text), un formato de archivo de texto de subtítulos popular, que podemos hacer en nano. En una ventana de terminal, escriba lo siguiente para crear un archivo de subtítulos.

~# nano Demo.srt

Luego, pegue lo siguiente en el archivo de texto. Puedes modificar el texto, pero la cuestión es ver cómo funciona el formato. En la parte superior, tienes un 0 por donde todo comienza. Luego, tiene un número para cada bloque de texto, un código de tiempo para el tiempo que se muestra el texto y luego el texto que se mostrará debajo de él.

0
00:00:01.530 --> 00:00:03.629
HERE IS SOME TEXT

1
00:00:03.629 --> 00:00:07.819
OH WOW LOOK AT THAT BIG TEXT

2
00:00:07.819 --> 00:00:08.740
IT IS SO HUGE AND BIG OH

3
00:00:08.740 --> 00:00:13.370
SOME MORE SAMPLE TEXT HERE BUT

4
00:00:13.370 --> 00:00:14.660
there is no need to shout

5
00:00:14.660 --> 00:00:17.699
Never use Priceline

6
00:00:17.699 --> 00:00:22.720
More text to test

7
00:00:22.720 --> 00:00:26.300
Here is some sample text

8
00:00:26.300 --> 00:00:30.000
please pay me with a credit card

Cuando haya terminado de crear su archivo de texto, escriba Control-X, luego Y, y Ingresar guardar y cerrar.

Ahora, deberíamos tener un archivo Demo.srt para transmitir junto con un video local. Es fácil transmitir un video local; simplemente especifique la ruta del archivo después de escribir elenco de gato y debería ver que el video comienza a reproducirse. Para especificar que queremos subtítulos, agregaremos el -s bandera. En el siguiente formato, sustituya “/yourvideo.mp4” con la ubicación de su archivo de video.

~# catt cast -s ./Demo.srt ./yourvideo.mp4

Casting local file yourvideo.mp4...
Using subtitle /Users/skickar/Desktop/Demo.srt
Playing yourvideo.mp4 on "Probe Team CIC"...
Serving local file, press Ctrl+C when done.
192.168.0.91 - - [21/Feb/2020 05:44:45] "GET /?loaded_from_catt HTTP/1.1" 200 - video/mp4 - 786.90 MB
192.168.0.91 - - [21/Feb/2020 05:44:45] "GET //var/folders/n1/l_2ynlx91lv57t122lq8lkyh0000gn/T/tmpxxljn3ds.vtt HTTP/1.1" 200 - text/vtt;charset=utf-8 - 1.69 KB

Así, ¡debería ver que su video y mensaje de subtítulos comienzan a reproducirse! Cambié mi texto de ejemplo un poco antes de que se reproduzca.

Imagen de Kody / Null Byte

Si desea dedicar menos tiempo a especificar diferentes dispositivos Chromecast, también puede configurar alias y agregar un archivo de configuración. Puede crear un archivo de configuración creando un archivo “catt.cfg” en la siguiente ubicación.

~# nano ~/.config/catt/catt.cfg

Puede agregar dispositivos a la configuración en el siguiente formato. En “opciones”, puede agregar el dispositivo predeterminado que desea usar si no especifica un dispositivo de otra manera cuando ejecuta Catt. En “alias”, puede crear apodos para los dispositivos que desea usar, de modo que pueda usar ese nombre para ellos cuando ejecute el script.

[options]
device = chromecast_one

[aliases]
one = chromecast_one
two = chromecast_two

Tipo Control-X, luego Y, y Ingresar guardar y cerrar.

Paso 6: Transmita un sitio web a la pantalla

Por último, podemos enviar cualquier sitio web directamente a la pantalla. El Chromecast capturará sitios con una resolución de 1280 x 720 píxeles y los mostrará en la pantalla. Si bien esto es útil para transmitir sitios web existentes, también podemos usarlo para diseñar nuestro propio contenido, ponerlo en una interfaz web y luego transmitirlo a la pantalla.

A veces, es posible que deseemos crear algo falso y salpicarlo en la pantalla, y al colocar una URL web, incluso podemos alojar un servidor web en nuestra propia computadora portátil y enviar lo que elijamos mostrar en él directamente a la interfaz.

El comando para hacerlo, siendo nuestro ejemplo la página de inicio de Byte nulo, es el siguiente:

~# catt cast_site https://null-byte.wonderhowto.com

Casting https://null-byte.wonderhowto.com on "Probe Team CIC"...

CATT puede hacer que casi cualquier cosa aparezca en la pantalla

Esta herramienta es útil para un pirata informático que busca controlar dispositivos Chromecast que no son de su propiedad, pero también es beneficiosa para cualquiera que tenga un Chromecast. Gracias a la simplicidad de administrar dispositivos Chromecast a través de Wi-Fi, puede configurar activadores personalizados para provocar acciones en cualquier pantalla que desee mediante CATT.

Si bien las técnicas que cubrimos hoy se centraron en redes locales, esto también funcionará contra cualquier dispositivo Chromecast que esté expuesto directamente a Internet. Esto se demostró cuando los piratas informáticos encontraron dispositivos Chromecast en Shodan y les hizo reproducir videos promocionando PewDiePie. Nunca debe hacer esto, por lo que si configuró el reenvío de puertos para permitir el acceso directo a dispositivos de Internet de las cosas como una impresora, cámara o reproductor multimedia, puede esperar un mensaje de un pirata informático que le indica que se suscriba a PewDiePie.

Espero que hayas disfrutado de esta guía para encontrar y controlar dispositivos Chromecast. Si tiene alguna pregunta sobre este tutorial sobre cómo hacerse cargo de los dispositivos de IoT o si tiene un comentario, no dude en preguntarlo a continuación o comuníquese conmigo en Twitter. @KodyKinzie.

Foto de portada de TAKA @ PPRS / Flickr

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar