Si tienes una Smart Tv de LG tu vecino puede espiar lo que estas viendo

A mediados del año pasado compre una smart tv de 55 pulgadas de la marca LG, la idea era bastante simple, videojuegos xd, también ver series y películas en alta definición con la familia. La verdad es que no tengo tanto tiempo libre como para ver tv, sin embargo estos últimos días he tenido ganas de usar mi televisión, pero no de la forma convencional 🙂

TV-LG-LM7600

Me puse a leer acerca de cómo funcionan las Smart Tvs, mas que nada para tener un background del tema, y vi que específicamente para este proveedor (LG) existe toda una comunidad detrás, foros, blogs, artículos y muchísimo material enfocado en el desarrollo para su plataforma webOS, pueden descargar y leer sobre la sdk en el siguiente enlace http://developer.lge.com/webOSTV/

Como muchos saben las televisiones Smart se conectan a Internet (en general los productos smart), esto significa que tienen asignada una dirección IP en nuestra red así que procedemos a realizar un escaneo de puertos utilizando nmap.

nmap -sV -p- -oA scan/scan -d 192.168.0.11

port

Viendo los logs del escaneo y leyendo el manual técnico sabemos que hay un par de servicios web corriendo en la televisión.

De acuerdo con la documentación esta pagina es una especie de api en XML para enviar comandos directamente a la televisión :). Haciendo una búsqueda rápida en Google encontramos esta fabulosa librería en PHP de Steve Winfield que nos permite comunicarnos con las televisiones https://github.com/SteveWinfield/PHP-LG-SmartTV

Lo único que necesitamos es un PIN de 6 dígitos que no conocemos, pero que podemos encontrar utilizando un ataque de fuerza bruta, que es lo que yo he hecho :). Con ayuda de este pequeño código es posible encontrar el PIN correcto de cualquier Smart Tv de LG

<?php 
include 'PHP-LG-SmartTV/smartTV.php';
$tv = new SmartTV('192.168.0.11',8080);
$code = 100000;
while(true) {
	$response = testCode($tv,$code);
	if($response) {
		print "The pairing key is: " . $code . "\n";
		break;
	}
	print "Wrong key: " . $code . "\n"; 
	$code++;
}
function testCode($tv,$code) {
	$tv->setPairingKey($code);
	try {
		$tv->authenticate();
		return true;
	} catch (Exception $e) {
		return false;
	}
}
?>

Después de unos minutos tenemos el PIN (pairing key)

bruteforce

En esta etapa del experimento descubrí cosas interesantes

  • Durante el ataque de fuerza bruta, al inicio de cada negociación de autenticación en la pantalla de la televisión aparece el PIN de 6 dígitos (dura menos de 1 segundo y después desaparece por que estamos intentando cientos de veces cada segundo), esto es así por que se supone que tenemos acceso físico a la pantalla, ósea estamos en la misma habitación, y debemos de copiarlo para usarlo con la librería.
  • Si realizamos suficientes peticiones en un segundo esto ocasionara un ataque de denegación de servicios a la televisión! El control remoto deja de funcionar y básicamente no podemos hacer nada, la única forma de apagar la tv es desconectarla directamente de la toma de corriente.

bruteforce

Así que ya saben, si notan un comportamiento de este tipo significa que alguien en su red esta tratando de hackear su televisión :p

Tener el PIN de autenticación de la televisión significa que básicamente podemos controlarla como si tuviéramos en control en nuestras manos, podemos apagarla, cambiar de canal, subir volumen, bajar volumen, programar despertador, por mencionar algunos ejemplos.

Sin embargo creo que el comando mas interesante de todos es TV_INFO_SCREEN, y por el que la mayoría de ustedes esta aquí, TV_INFO_SCREEN nos permite tomar una captura de pantalla de lo que sea que se esta reproduciendo en la televisión, con ayuda de JavaScript y un poco de Ajax se puede hacer una pequeña interfaz web para visualizar las imagenes de una forma mas “cómoda”.

test

Resumiendo

  • Los servicios web que corren las televisiones se ejecutan en puertos bien conocidos y no hay forma de cambiarlos (al menos no he encontrado como todavía)
  • Un atacante remoto puede realizar ataques de fuerza bruta para obtener el PIN de 6 dígitos
  • Un atacante remoto puede ocasionar un ataque de denegación de servicios a la televisión
  • Un atacante remoto puede obtener capturas de pantalla de lo que estamos viendo

Continuare haciendo mas investigación en esta area a ver que encuentro 🙂
Happy hacking

Si te gusto comparte ...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

6 pensamientos en “Si tienes una Smart Tv de LG tu vecino puede espiar lo que estas viendo

  1. Ruben
    Google Chrome 44.0.2403.155 Windows NT

    Oye Y no sabes si hay una manera de limitar la cantidad de velocidad que pueden usar las smart? Cuando usan la smart en la casa, para ver netflix o cosas de internet, como que la tele utiliza todo el internet para tener de reserva, en vez de que le falte, osea, si gastaria 300kb/s para ver una pelicula, la tele usa los 600kb/s y los otros 300 no los usa si no los tiene por si le falte, O yo que se, pero eso parece, por que no deja entrar al internet, todo lo demas se queda sin internet.

    Responder
    1. Alevsk Autor
      Google Chrome 44.0.2403.155 Windows NT

      Hola Ruben, eso lo podrías solucionar directamente en el panel de configuraciones de tu router, si tu router tiene una opción para balancear el ancho de banda entre tus apartatos, ahí tu puedes indicarle que máximo ocupe 300kb/s, salu2

      Responder
  2. Pingback: #FelizDiaGamer Lo que he jugado en 2015 | Blog de Alevsk

    1. Alevsk Autor
      Google Chrome 45.0.2454.99 Mac OS

      Hola Victor, así es, lo primero que tiene que hacer el atacante es ganar acceso a la red donde se encuentre la television, a menos que la tv este expuesta a internet XD, también he visto casos donde las televisiones están conectadas directamente a la red de visitantes o redes publicas.

      Responder
  3. Pingback: Mi experiencia durante el I/O Hack 2015 | Blog de Alevsk

Deja un comentario

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