Internet de la cosas (IoT, por sus siglas en inglés), refiere a objetos físicos conectados a la red que trafican datos entre distintos dispositivos. Estos objetos, pueden ser electrodomésticos, vehículos o equipos industriales. Su uso es muy extendido en áreas, como la domótica, la salud, la agricultura, la logística, entre otras.

Leyendo un articulo de Harish SG (https://infosecwriteups.com/how-i-hacked-1000-tesla-cars-using-osint-4cd837b8c530) donde cuenta como hackeó autos Tesla utilizando OSINT, me motivo a profundizar en otros protocolos comúnmente utilizados en el ámbito del IoT.

El protocolo MQTT (Message Queuing Telemetry Transport) es un protocolo ligero de mensajería diseñado para la comunicación entre dispositivos en redes con ancho de banda limitado. Utiliza un modelo de publicación/suscripción, donde los dispositivos pueden publicar mensajes en tópicos y suscribirse a tópicos específicos para recibir esos mensajes.

La idea es tan simple como, un «Publisher» (en este caso el auto Tesla), envía información a un «Broker» (mosquitto) y esta información es consumida por un «Suscriber» a través de «tópicos».

Ahora que ya sabemos de que se trata MQTT, vamos a hablar de «TeslaMate», un potente registrador de datos auto hosteado para automóviles Tesla. La idea de este tipo de implementaciones, es que los datos del vehículo viajen a un servidor controlado solo por nosotros y que de esta manera sea mas seguro, siempre y cuando no se haga una instalación sin establecer los parámetros de seguridad necesarios.

En la pagina de Teslamate, que es una solución que permite colectar telemetría del auto para luego ser mostrada en una web, nos indica cuales son los posibles tópicos a los cuales podemos suscribirnos para obtener información.

Solo nos falta donde y como buscar estas implementaciones, para ello, podemos usar «Censys», que es una alternativa a «Shodan», que nos permite buscar servicios expuestos en Internet.

Para cada registro que encontremos, vamos a tener una dirección IP y el puerto donde se encuentra expuesto el servicio MQTT. Solo nos resta buscar si hay algún caso donde no este protegido por contraseña.

Antes de empezar la prueba de concepto, vamos a resumir lo siguiente:

  1. El vehículo Tesla, envía telemetría a un broker
  2. El broker puede estar configurado para no utilizar credenciales
  3. Si podemos conectarnos al broker y consultar tópicos, estaríamos leyendo la información que el vehículo esta enviando.

Lo que vemos a continuación, es la conexión a un broker (del listado de IPs que obtuvimos con la búsqueda en Censys), y luego la suscripción a tópicos, es este caso, de un lado el que muestra la latitud, y del otro la longitud.

Con este conjunto de datos es muy sencillo georreferenciar el vehículo en tiempo real, como se muestra en la siguiente imagen.

Es importante destacar, que no se trata de la explotación de una vulnerabilidad, sino de instalaciones con configuraciones no seguras, que permiten que cualquier persona pueda leer la telemetría enviada por el vehículo.

A continuación, dejamos una serie de recomendaciones para utilizar MQTT de manera segura.

  1. Conexiones Seguras (TLS/SSL): Habilitar el cifrado de extremo a extremo con TLS/SSL para proteger la comunicación entre clientes y el broker MQTT.
  2. Autenticación Fuerte: Implementar un sólido mecanismo de autenticación con credenciales seguras para prevenir accesos no autorizados.
  3. Control de Acceso y Monitoreo: Configurar el control de acceso en el broker MQTT para restringir el acceso y establecer un sistema de monitoreo para detectar posibles problemas de seguridad.