miércoles, octubre 19, 2022

Exfiltración de información entre un SmartTV y un SmartDisplay: Una PoC

Como sabéis, el año pasado, y éste, realizo labores de Mentor en el Campus Internacional de Ciberseguridad, donde, entre otras muchas cosas, planteo algunos Trabajos de Fin de Máster para el Máster de Ciberseguridad. Éste, que os publico hoy en forma de artículo, es un trabajo que planteamos Pablo González - que ha dirigido el TFM también - y yo sobre cómo exfiltrar información en un entorno desconectado usando una SmartTV y una Webcam en un SmartDisplay tipo Movistar Home o Alexa Echo Show

Figura 1: Exfiltración de información entre un SmartTV y un SmartDisplay.
 Una PoC con Cognitive Service de Visión Artificial

El trabajo lo ha realizado Ángel Heredia, que es quien lo escribe a partir de aquí. Espero que os guste y os inspire para seguir trabajando sobre esta idea de comunicarse visualmente con WebCam & Cognitive Service de Visión Artificial con Displays. Este año plantearemos algún TFM que profundice en esta idea en la nueva edición del Máster de Ciberseguridad que comienza ahora.

Saludos Malignos,

Exfiltración de información entre un SmartTV y un SmartDisplay: Una PoC

En la actualidad, la cantidad de dispositivos IoT (Internet Of Things) conectados a Internet cada vez es mayor. Este crecimiento se puede observar en la gráfica de la imagen siguiente, extraída del artículo State of IoT 2022: Number of connected IoT devices growing 18% to 14.4 billion globally. Aunque esta cantidad de dispositivos creciente es muy positiva para la evolución de las sociedades, es cierto que muchos de ellos no tienen los controles de seguridad que deberían tener, lo que crea vectores de ataque para posibles atacantes que pueden llegar a hacer mucho daño a una organización.
Ya vimos en el pasado como, explotaciones de fallos de seguridad de estos dispositivos IoT llevó a la creación de grandes Botnets como Mirai, que se utilizaron en ataques a gran escala contra los servidores más fundamentales de Internet, tumbando Facebook, WhtasApp y grandes redes. Muchos de ellos incluidos en las empresas sin darse ni cuenta, lo que se llamó el Shadow IoT.

La Prueba de Concepto (PoC) de este artículo consiste en validar si sería posible una comunicación entre un SmartTV y un SmartDisplay usando un Cover-Channel para exfiltrar información, haciendo uso de un método poco convencional. La idea es aprovechar la presencia cada vez mayor de dispositivos IoT para, utilizando una cámara o webcam, como un dispositivo de seguridad o un SmartDisplay, exfiltrar la información mostrada de forma oculta en la pantalla de una SmartTV que se encuentre en el ángulo de visión de la cámara.

Figura 3: Entorno de comunicación y exfiltración de la PoC

Esta forma de ocultar información a simple vista en un "Cover-Channel" es lo que se conoce como esteganografía y debido a que realmente no viajan datos directamente por la red es bastante complicado para sistemas de detección de intrusiones (IDS) detectar dicha transmisión. Podéis leer más sobre estas técnicas y su detección mediante estegoanálisis en el libro de "Esteganorafía y estegonanálisis" de Jordi Serra y Daniel Lerch publicado por 0xWord.

Figura 4: Libro de Esteganografía y Estegoanálisis
de Jordi Serra y Daniel Lerch publicado por 0xWord

Para ocultar la información, se ha decidido usar un contador de FPS (Frames Per Second) que supuestamente mostraría información acerca del rendimiento de la Smart TV pero que en realidad estaría transmitiendo un mensaje codificado. Dada la popularidad del sistema Android para las televisiones y muchos dispositivos IoT, las aplicaciones desarrolladas para la prueba de concepto que se encargarán de la emisión y transmisión de la información son para dicho sistema. Para transmitir la información el funcionamiento es el siguiente:
  • Se toma el mensaje a transmitir y se codifica en binario, añadiendo bits de control entre bytes para separar unos caracteres de otros y además prefijando una secuencia de control que ayudará a determinar el inicio y final del mensaje.
  • La aplicación determina los FPS reales del dispositivo y los aproxima a la decena más próxima.
  • En este punto la aplicación introducirá cada segundo un bit de la secuencia a enviar en el contador de FPS. Lo hará de la siguiente manera:
    • Si se transmite un 1 se sumará 1 al contador de FPS
    • Si es un 0 el contador de FPS no se modifica
    • Si es un 2, bit de control utilizado para separar bytes y formar la secuencia de control, se resta 1 al contador.
  • Se muestra el contador por pantalla y el mensaje te transmitirá en bucle.

Evidentemente ahora toca recibir el mensaje, para ello la aplicación receptora deberá ser capaz de determinar el valor de FPS en pantalla y posteriormente decodificar el mensaje conforme se transmite, la aplicación desarrollada para tal propósito funciona así:
  • Se hace uso de una librería que permite detectar caracteres a partir de las imágenes captadas por la cámara del dispositivo, usando un Cognitive Service de Visión Artificial.
  • Antes de pasar a determinar el valor del contador de FPS de todo lo captado por la cámara, se realiza una pequeña corrección de todo lo detectado partiendo de la base de que se sabe que lo que se busca son números y además que solo espera detectar ciertos valores debido a la codificación realizada anteriormente.
  • Una vez que se tiene todos los caracteres captados por la cámara, se procesan los valores detectados para limpiar todo lo que no interesa y solo dejar los FPS de la pantalla.
  • En este punto la aplicación ira decodificando bits hasta dar con la secuencia de control, momento en que la decodificación del mensaje comenzará. Se dará por terminada la transmisión al encontrar una nueva secuencia de control.
  • Una vez que se ha determinado que se tiene todo el mensaje, se mostrará por pantalla.

El sistema funciona bastante bien pero no es perfecto, es cierto que en el caso de mensajes de texto plano en el que produzca un error de detección en uno o varios bits, es posible seguir leyendo el mensaje final puesto que solo faltarían algunos caracteres y sigue siendo legible. El problema surge si lo que se transmite es alguna clase binario o imagen, para empezar, llevaría mucho tiempo debido a que la velocidad de transmisión es extremadamente lenta, pero además es que un solo bit corrupto y el archivo completo queda inservible. En el siguiente vídeo tenéis una demostración del funcionamiento de la exfiltración.

Figura 7: PoC de exfiltración con FPS y Webcam

Ante el problema de corrupción de los datos que se transmiten se podrían añadir bits de paridad que ayuden a corregir errores y para aumentar la velocidad (motivo por el que se ha evitado añadir el sistema de paridad en esta prueba) se podrían añadir otras métricas a la aplicación acerca del dispositivo que permitan transmitir más bits por segundo.

Un saludo,

1 comentario:

  1. Enhorabuena por tu proyecto. Me parece super interesante para filtrar información. Y ahora yo me pregunto, para rizar el rizo… se podría crear un video que fuera modificando los frames y que la cámara, bueno no la cámara, algún software detrás, reconociera los frames que se están modificando y descifrara? Al final 3 frames creo que es imperceptible para el ojo humano. Enhorabuen!!!

    ResponderEliminar