PDA

Ver la versión completa : Comando I20100 o cómo hackear gasolineras



LUK
12-09-2023, 12:07
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%20ca da%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.


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgampdW4Nang-ucl30Tm_gXmyDwtCYMacOy64Fd4uHnWHdt-g46hYncixxeKBA6xpyjJm6tLGHIvO_ARqImaorsiIhOPLrEK1M 3jb0mu9NIanhCUUu1esUOm-Sa83u8mtoAY0CPhJUATeawWPc9oN7b1mvMImeMb6OSEroHb7-M2fVo065HDRuAlklrsqU/w582-h640/I20100-01.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgampdW4Nang-ucl30Tm_gXmyDwtCYMacOy64Fd4uHnWHdt-g46hYncixxeKBA6xpyjJm6tLGHIvO_ARqImaorsiIhOPLrEK1M 3jb0mu9NIanhCUUu1esUOm-Sa83u8mtoAY0CPhJUATeawWPc9oN7b1mvMImeMb6OSEroHb7-M2fVo065HDRuAlklrsqU/s690/I20100-01.png)




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.


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikQGbH4O6xX9Ck15VghSk2SSuw3L5Hq8BGooRIYiIBUY fxbSrl8MViLdoBCHuv90LDbHWtfzX00gVJl9vFysnFCMcFt3ER y-1ADjTORt7XIcGLGzBnIAqPHxD4b9UdogB5cHQTuOjHoQK0j2OE Z2GPNv9RBTQL61vTtlYTQCfBFMyTEqAERZ-Ux3tJoUs/w640-h638/I20100-02.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikQGbH4O6xX9Ck15VghSk2SSuw3L5Hq8BGooRIYiIBUY fxbSrl8MViLdoBCHuv90LDbHWtfzX00gVJl9vFysnFCMcFt3ER y-1ADjTORt7XIcGLGzBnIAqPHxD4b9UdogB5cHQTuOjHoQK0j2OE Z2GPNv9RBTQL61vTtlYTQCfBFMyTEqAERZ-Ux3tJoUs/s622/I20100-02.png)


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.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2zneJ2qmN1eo-SDdJVKPooVPzNLrhKwOQ2l8xh-dBzAp7wAf97AORGVdsI3vo-VrWy2tC1SaUsCFpMuoY_H8ikEDzPu3kncvPzYESUtPUFex4w70 7z9WX5HsoHQu1rrQ6DubnKPi6ctil9OXmyWygee012rSaEYsAW 95Y0zTlffuN73EqGKjXbpz0NE/w640-h306/I20100-03.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2zneJ2qmN1eo-SDdJVKPooVPzNLrhKwOQ2l8xh-dBzAp7wAf97AORGVdsI3vo-VrWy2tC1SaUsCFpMuoY_H8ikEDzPu3kncvPzYESUtPUFex4w70 7z9WX5HsoHQu1rrQ6DubnKPi6ctil9OXmyWygee012rSaEYsAW 95Y0zTlffuN73EqGKjXbpz0NE/s1190/I20100-03.png)


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:


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN60p_0ZJjxAex1SmN44lolyjaCJAoDeSRRU55V0EyTe 6T5-SDNyiPUHTO4FBApzQJTx_YG3LKKAIHR4juSlYkUN2v02-D-AbeIw0S0w8te9gXb6e_e2uTet7I0o2-OD6WPicB0uLZzhnnTR3d_HOjNyGe1V52cuiQjM5q0cfq0uxHpU WmDWR1iWz2O_4/w640-h626/I20100-04.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN60p_0ZJjxAex1SmN44lolyjaCJAoDeSRRU55V0EyTe 6T5-SDNyiPUHTO4FBApzQJTx_YG3LKKAIHR4juSlYkUN2v02-D-AbeIw0S0w8te9gXb6e_e2uTet7I0o2-OD6WPicB0uLZzhnnTR3d_HOjNyGe1V52cuiQjM5q0cfq0uxHpU WmDWR1iWz2O_4/s740/I20100-04.png)


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


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2mrYS-cM-2bQJ7NU_k4sDYnlutwhAUcskV_zfdT9Q5mimn9zxsnVyY__SS7 i9vTXVlfLocBGOu0CZsbSydwSpDrBOVdI9pt2nQPWf9Ie8bvnN Co1w_iiyXcTVWUkkjMoWdmrH2o2bx6OEyziBsrgj4aZCnHVVFj I2xoPhOSvZJb4rNch6ZdNce1mTZxk/s16000/I20100-05.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2mrYS-cM-2bQJ7NU_k4sDYnlutwhAUcskV_zfdT9Q5mimn9zxsnVyY__SS7 i9vTXVlfLocBGOu0CZsbSydwSpDrBOVdI9pt2nQPWf9Ie8bvnN Co1w_iiyXcTVWUkkjMoWdmrH2o2bx6OEyziBsrgj4aZCnHVVFj I2xoPhOSvZJb4rNch6ZdNce1mTZxk/s443/I20100-05.png)


Bien, ahora busquemos esto en Shodan (http://shodan.io) a ver cómo nos lo muestra. Para ello haremos esta sencilla search:

I20100 country:es city:"Madrid"
(Recordad que hay que estar registrado en Shodan para poder utilizar filtros, de lo contrario solo puedes buscar "I20100" para hacer una prueba si no tienes usuario)

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-AH9duQgncJQNYLBFeOf3tOow--hAFfN1IaEmSSyt9wiioAsw9y6kdhFz2KNblIlF_RuAkYonkWw3 rkqiwprsPA3Oc67sLts50TdviH5J8DtlL1svcvQl96Uyd-xjH986ZMJ4zVm_19QBQaV_0eBHQnaUbGYsB-jWgIb7wLL4OE3CzzBYNKnJlYg20Vw/w640-h44/I20100-06.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-AH9duQgncJQNYLBFeOf3tOow--hAFfN1IaEmSSyt9wiioAsw9y6kdhFz2KNblIlF_RuAkYonkWw3 rkqiwprsPA3Oc67sLts50TdviH5J8DtlL1svcvQl96Uyd-xjH986ZMJ4zVm_19QBQaV_0eBHQnaUbGYsB-jWgIb7wLL4OE3CzzBYNKnJlYg20Vw/s1160/I20100-06.png)


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



https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPSaMziZiXvAULpc02LjV4Fy2YPM356qOmXnDpqOsx0I W18S6nL0VAwPPLWTk8ZN9apZWzC1q8fUYDaX6vSq4En-mYp-2EEhw4rPHO44tirOlK0eInBuH2AnHHk2INQPuXASfaDh0u4QBj lXtph-x_NQluQ3wiLIo0H_QZ_xaWCBgmOxWfMMr1z0FFbjA/w640-h348/I20100-07.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPSaMziZiXvAULpc02LjV4Fy2YPM356qOmXnDpqOsx0I W18S6nL0VAwPPLWTk8ZN9apZWzC1q8fUYDaX6vSq4En-mYp-2EEhw4rPHO44tirOlK0eInBuH2AnHHk2INQPuXASfaDh0u4QBj lXtph-x_NQluQ3wiLIo0H_QZ_xaWCBgmOxWfMMr1z0FFbjA/s1416/I20100-07.png)



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:


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBDlKcoB8pviQ6_sQXmyMpE3zfBtvPV8LzhJzNrepUAw uz4Nj_JHjwFM3ly0rbc1Qq6z_Ac0rm_iMMy4k9Ad2CCcFzM3as UorwWUMlrxRZuxn20cvns746dHZabetR3Aho4uktd8F-O5MxrnI0-s-paqZmasd9Wl29Keq0LnNQxb1QVel4Aci3opl4phU/w640-h68/I20100-08.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBDlKcoB8pviQ6_sQXmyMpE3zfBtvPV8LzhJzNrepUAw uz4Nj_JHjwFM3ly0rbc1Qq6z_Ac0rm_iMMy4k9Ad2CCcFzM3as UorwWUMlrxRZuxn20cvns746dHZabetR3Aho4uktd8F-O5MxrnI0-s-paqZmasd9Wl29Keq0LnNQxb1QVel4Aci3opl4phU/s807/I20100-08.png)


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!


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOnnoTa4EpPVj4hIxHMD78nI54yJqcbWe_wTCqqqMpz0 8Bk0T0hoNpAkXNDOn6vodB2050mo0gGPeViMod5Il3keCIvj9e dWqMQAon7jCJhrUsHAq8PiWm6Wb5mnPgC8Uv4UqAqoMHWZS5KZ 9k1cKdqyZjcPnwpjnuAks4LrLjkcktsMh30gNMwL2ip_0/w640-h360/I20100-09.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOnnoTa4EpPVj4hIxHMD78nI54yJqcbWe_wTCqqqMpz0 8Bk0T0hoNpAkXNDOn6vodB2050mo0gGPeViMod5Il3keCIvj9e dWqMQAon7jCJhrUsHAq8PiWm6Wb5mnPgC8Uv4UqAqoMHWZS5KZ 9k1cKdqyZjcPnwpjnuAks4LrLjkcktsMh30gNMwL2ip_0/s1082/I20100-09.png)


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:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSNw6BTAp_SruqfeFHRC91wtmRBp8snzZQrg21n_8iRK c49k_ddF7moGOcC2N3WRibL_m5synmgWGfngAwapRHGvLZdmlZ KvBtD7Ihj_T7LvWqTEPQaz8VL2H_hYT6G_6kpMG2-asYPx9DlqQiaU8KNkSE_2GEh-1VElP6h_sznSgL_2oxk6NPfG9cF60/w640-h408/I20100-10.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSNw6BTAp_SruqfeFHRC91wtmRBp8snzZQrg21n_8iRK c49k_ddF7moGOcC2N3WRibL_m5synmgWGfngAwapRHGvLZdmlZ KvBtD7Ihj_T7LvWqTEPQaz8VL2H_hYT6G_6kpMG2-asYPx9DlqQiaU8KNkSE_2GEh-1VElP6h_sznSgL_2oxk6NPfG9cF60/s1237/I20100-10.png)


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


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQIY31I9MN0UhVR1TZVLn6y2x8AC9eqKf911NkkDAYdC S4T6n2h1X2li7ZaHhASPU45PS5uMgJ8HmPTKA8DYEbl8fZNs43 iEdOsjX3PI2w_4iZ--YfOHWEdXXLiViKWPLngIun9DwD8c1iEPQNBj1Fd1eg2wG1m8xN _QCGSe16xB_w4x4FzCfEC6_Ox_c/w640-h530/I20100-11.png (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQIY31I9MN0UhVR1TZVLn6y2x8AC9eqKf911NkkDAYdC S4T6n2h1X2li7ZaHhASPU45PS5uMgJ8HmPTKA8DYEbl8fZNs43 iEdOsjX3PI2w_4iZ--YfOHWEdXXLiViKWPLngIun9DwD8c1iEPQNBj1Fd1eg2wG1m8xN _QCGSe16xB_w4x4FzCfEC6_Ox_c/s1083/I20100-11.png)


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 para hackplayers (https://www.hackplayers.com/2023/09/comando-i20100-o-como-hackear-gasolineras.html)

tejón
12-09-2023, 14:02
Pues con el dinero que sacan ya podrían simplemente poner un firewall permitiendo solo acceso desde ciertas IPs... Abrir directamente el sensor a internet parece de locos pero veo mas de 80 solo en Madrid... 174 en España... y mas de 10.000 en el mundo :D... en fin... espero que la gente utilice esta info con prudencia. Y gracias por publicarlo ya que solo así se da visibilidad de ciertas ñapas

Comprobado que se pueden ver los datos :eek:

nc -vvv X.X.X.X 10001
Connection to X.X.X.X port 10001 [tcp/scp-config] succeeded!
^AI20100

I20100
12-09-23 13:44


INVENTARIO EN TANQUE

PRODUCTO TANQ VOL VOL CT POR LL ALTURA AGUA TEMP
1 GAS A1 14488 14341 3847 1456.4 0.0 28.17
2 SP95 9719 9572 9780 1076.9 0.0 27.74
3 GAS A2 10950 10832 8550 1182.6 0.0 28.47
4 GAS A3 10772 10662 8728 1181.8 0.0 27.98
5 GASOLEO B 4163 4121 15336 568.3 0.0 27.48