Por Ángel Heredia Linkedin MyPublicInbox

AngelHeredia
AngelHeredia_AlumnoCiberseguridad

Por Ángel Heredia Linkedin MyPublicInbox

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 siguiente gráfica extraída del artículo State of IoT 2022: Number of connected IoT devices growing 18% to 14.4 billion globally

Global-IoT-Market-Forecast-in-billion-connected-IoT-devices-min

Exfiltración de información a través de Smart TV

Aunque esta cantidad de dispositivos no tiene porqué ser malo, es cierto que muchos de estos dispositivos no tienen los controles de seguridad que deberían, lo que crea vectores de ataque para posibles atacantes que pueden llegar a hacer mucho daño a una organización.
Una de las consecuencias de estos vectores de ataque es la exfiltración de datos, siendo esta el objetivo de esta prueba de concepto 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 IoT, exfiltrar la información mostrada de forma oculta en la pantalla de una Smart TV que se encuentre en el ángulo de visión de la cámara.

Esta forma de ocultar información a simple vista 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 detectar dicha transmisión. 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 la librería MLKit Vision Text Recognition, que permite detectar caracteres a partir de las imágenes captadas por la cámara del dispositivo.
  • 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 buscan solo números. Además, solo se esperan 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 los que se produzca un error de detección, 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.

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.

Si quieres ver el proyecto completo de Ángel, rellena el formulario y te lo mandamos a tu correo electrónico.

¿Quieres obtener el mismo conocimiento que Ángel?

APRENDE MÁS CON EL MÁSTER EN CIBERSEGURIDAD

Recursos

Comparte este post