Comando I20100 o cómo hackear gasolineras

Hace unos días leí este artículo https://www.rapid7.com/blog/post/2015/11/18/the-internet-of-gas-station-tank-gauges-take-2/ de los dueños de Metasploit y se me quedó esa espinita clavada de saber cómo funcionan estos dispositivos.

Estos últimos meses estoy metido en el mundo de ICS, investigando cómo conseguir comprometer estos dispositivos, por lo que no me podía quedar quieto.

Tras comprender qué son los dispositivos TLS y cómo funcionan, me decidí a escribir este artículo.

Lo primero de todo, ¿qué son estos dispositivos?

Si buscamos información sobre ellos, nos encontramos con: “El TLS-350 es un sistema completamente integrado de reconciliación de stock del producto y detección de fugas. Está diseñado en base modular, lo que permite configurarlo según las necesidades de cada Estación de Servicio. El sistema modular significa que puede ser ampliado para satisfacer nuevas necesidades o adaptarlo a nuevas tecnologías. El sistema proporciona la calibración y reconciliación automática, y detección dinámica de fugas. También puede controlar una gama muy amplia de sensores, incluyendo el control intersticial típico de los tanques de doble pared. Para los tanques de pared sencilla, el sistema puede realizar la prueba de estanqueidad de los tanques, bien automáticamente o cuando se precise.” (https://zemos.es/depositos/tls.html#:~:text=El%20TLS%2D350R%20es%20un,de%20cada%20Estaci%C3%B3n%20de%20Servicio).


Esto realmente viene a ser traducido como que estos dispositivos pueden monitorizar niveles de combustible, autorizar suministros, monitorizar estados, alarmas, etc. y además se le pueden añadir módulos extra como expansiones de tarjetas tcp/ip, y aquí es donde radica el problema.

Antes de empezar con el meollo del asunto vamos a ver en qué arquitecturas se pueden colocar:

  • Detrás del gateway: Esta sería una arquitectura más segura dado que el dispositivo TLS450 en este caso está detrás del gateway que controlaría las conexiones entrantes y se podría conectar mediante otros protocolos como RS232.
  • Directamente conectado a la red ethernet: este es otro tipo de arquitectura que se monta. El propio TLS-450 en este caso estaría directamente conectado a la red ethernet, con el peligro que conlleva si se deja expuesto a internet.

Dado que este dispositivo, como hemos dicho antes, tiene la posibilidad de tarjetas de expansión es posible conectarle la siguiente tarjeta que nos permitiría usar el protocolo TCP/IP para conectar con él.

Esto permitiría conectar la interfaz de consola serie a través del protocolo TCP/IP para poder administrar este dispositivo de una manera más cómoda a través de internet. Si se opta por implementar este módulo extra debemos tener presente que este dispositivo no está orientado a la seguridad dado que no está pensado para estar público en internet. Aquí es donde viene el famoso comando I20100, que explico a continuación, que viene tan bien explicado en su manual de la interfaz de uso de la consola serie:

Bueno y pensaréis, ¿cómo funciona esto? Pues vamos a explicarlo a continuación:

Bien, ahora busquemos esto en Shodan a ver cómo nos lo muestra. Para ello haremos esta sencilla search:

He centrado un poco el tiro en Madrid dado que es mi ciudad por si me pilla de camino alguna de ellas…


Como podéis apreciar, honeypots a parte, hay un buen número de surtidores aparentemente reales.
Ahora bien, con toda esta información, ¿cómo puedo hacer consultas a estos surtidores?
Lo primero, como dije antes, al ser una consola conectada a una tarjeta ethernet TCP/IP nos conectamos a través o bien telnet o nc lo que más rabia os dé. El comando será el siguiente: nc -vvv <ip> <puerto>
Normalmente, el puerto suele ser el 10001, pero puede variar, el -vvv es porque me gusta que rebose el verbose:

Bien, hay conexión, pero … no hace nada. Bueno, ¡espera! Vamos a probar una cosa. Cuando esté la conexión activa antes de escribir el comando I20100 pulsamos CTRL+A y después escribimos el susodicho comando y ¡voila!

Bien, vale, hasta ahí ha llegado la gente de Rapid7 también, y además con Nmap también se pueden escanear este tipo de dispositivos con el comando: nmap --script atg-info -p 10001 <host>

Vamos a mirar en su manual de referencia de function codes que más cosas podemos hacer. Lo podéis encontrar aquí https://cdn.chipkin.com/files/liz/576013-635.pdf

Vamos a usar ahora el comando S602TT para cambiar la etiqueta del producto del surtidor:

Como se puede observar TT es el número de surtidor, vamos con lo siguiente entonces:

Cada vez que se introduce el comando (recuadro azul) siempre tiene que ser pulsado el CTRL-A antes de introducir texto y presionar enter.
Si solo queremos modificar el surtidor 1 el comando introducido sería el siguiente: S60201Hack by hackplayers.

Como se puede apreciar, estos dispositivos cuando están expuestos en internet son muy vulnerables a la modificación por personas no autorizadas. Aunque este artículo se centra en un par de comandos que pueden ser introducidos, que no entrañan ningún tipo de riesgo, existen comandos más peligrosos que pueden generar alertas con el riesgo que ello conlleva a las estaciones de servicio.

Antes de acabar quería aclarar que todas estas pruebas se han realizado sobre máquinas simuladas en laboratorio, siempre con el motivo principal de enseñar y aprender cómo realizar este tipo de ejercicios para así mejorar la seguridad. El autor de este artículo no se hace responsable del mal uso que se pueda dar a esta información.

Happy hacking!

Contribución gracias a Carlos Antonini

Comentarios

Publicar un comentario