Desde hace algo más de un año he estado profundizando en el
área de la ciberseguridad de los Sistemas de Control Industrial (ICS) y
sistemas SCADA. (En este mismo blog
podéis encontrar algunos artículos sobre el tema: “Principios de seguridad IT vs OT”, o “ICS Cybersecurity - Security concerns”).
En esta entrada voy a contar como en una demo en directo
descubrí un controlador (PLC) conectado a Internet el cual parecía controlar las
válvulas de un depósito de fluidos (ya veremos que tipo de fluidos).
Sucedió hace unos meses, cuando me invitaron a dar una charla
sobre ciberseguridad en sistemas industriales, en una conferencia que se
celebraba en Atenas (Grecia). Después de hablar sobre PLCs y sistemas SCADA,
sobre los protocolos industriales (DNP3, Modbus, Profinet, etc.), sobre IT/OT, etc. pasé
a una demostración en directo sobre como utilizar herramientas como SHODAN,
ZoomEye o Censys para descubrir sistemas industriales conectados a
Internet. Y lo que pasó fue lo
siguiente...
Nota: En las capturas de pantalla he ocultado IPs y otra
información identificativa, pero además publico ahora este post porque
esa dirección IP ya no está activa y el dispositivo localizado parece estar actualmente
desconectado de Internet.
SHODAN (www.shodan.io)
es un buscador de dispositivos conectados a Internet. En lugar de buscar contenido en páginas web,
como lo haría Google, extrae la información de los banners de cualquier
IP que sea accesible desde Internet.
Este buscador permite introducir filtros en la casilla de búsqueda para
afinar más los resultados. Entre los
filtros que podemos aplicar tenemos port (para filtrar por número de puerto), country (por
código de país), city, hostname, etc. (Nota:
es necesario acceder como usuario registrado para poder utilizar los filtros).
Durante la charla había hablado de los controladores lógicos
programables (PLC, por sus siglas en inglés) conocidos también como autómatas
programables, dispositivos que permiten la interacción entre el mundo digital y
el mundo físico. Un PLC puede responder
a una orden digital cerrando o abriendo una válvula, apagando o poniendo en
marcha un motor eléctrico, o modificando su velocidad, etc. También, en sentido contrario, a partir de un evento físico puede generar
una información digital, por ejemplo cuando un horno alcanza una determinada
temperatura o cuando el caudal de líquido por una tubería no es el
adecuado. Había puesto ejemplos de
varios PLC, entre ellos, uno de los más populares, la serie S7 de Siemens (SIMATIC).
Sabemos que este modelo de PLC, utiliza el puerto 102 para
las comunicaciones vía Indutrial Ethernet.
Por lo tanto, podemos realizar una búsqueda en Shodan con el filtro
“port:102” para ver cuantos dispositivos conectados a Internet tienen ese
puerto abierto. Para afinar más la busqueda incorporé filtros por localización (country, city).
Localización de dispositivos con el puerto 102 abierto. |
Descubriendo un SIMATIC S7 con el puerto 80 abierto |
La mayoría de los PLC llevan incorporado un pequeño servidor
web para tareas de configuración o monitorización, así que, de entre los
resultados obtenidos elegimos uno, al azar, para conectarnos mediante el
navegador web (puerto 80/HTTP). En este caso, al acceder
a la IP que nos ha devuelto el buscador, vemos la pantalla típica de un PLC
SIMATIC.
En el marco de la izquierda de la pantalla hay varios
enlaces, que nos proporcionan información sobre el dispositivo, características, configuración, logs, etc. Lo interesante es que los sistemas S7 actuales permiten al usuario crear páginas personalizadas para interactuar con el PLC (denominadas "user-defined web pages") y que se encuentran en el menú "User Pages".
Así, después de pulsar sobre el link "User Pages" del PLC, apareció la siguiente pantalla con unos preocupantes botones "Start", "Stop" y "Reset".
Conviene recordar que hemos llegado hasta aquí simplemente
introduciendo una dirección IP en el navegador, sin vulnerar ninguna medida de
seguridad, ni saltar ningún proceso de autenticación usuario/contraseña. Se trata de un servidor web con una IP pública.
Pantalla principal de las "user-defined pages" del PLC |
Pulsando en los otros enlaces se accede a otras páginas definidas por el usuario, con diversos datos sobre la actividad del PLC, entre las cuales otra pantalla, aún más preocupante, denominada "Overview Tank" mostrando lo que parece un depósito junto con unos botones denominados “Open valve” y “Close valve”.
Pantalla "Overview Tank" directamente accesible desde Internet |
¿Se trata de un PLC que controla la apertura y cierre de una válvula de un depósito? ¿Y está accesible vía HTTP sin ninguna protección? En este punto dejé la demo, ya que en la sesión no se trataba de explotar nada sino de concienciar sobre el peligro de conectar sistemas industriales directamente a Internet... y el objetivo se había alcanzado sobradamente. Aún así, puesto que una de las características de SHODAN es que ofrece la
posibilidad de geolocalizar las IPs encontradas, me propuse avanzar por ahí para ver si podíamos averiguar algo más sobre ese PLC.
Para ello basta con copiar las coordenadas (latitud, longitud) que nos ofrece el resultado e introducirlas en Google Maps...
Localizando las coordenadas de la IP en Google Maps |
.. y a continuación pasar a la vista "Street View".
El resultado nos dejó a todos bastante sorprendidos:
Vista Street View tras introducir las coordenadas en Google Maps |
Lo único que espero es que el PLC correspondiera al túnel de lavado y no a la estación de servicio que hay detrás porque, hasta donde yo sé, el detergente líquido no explota.
Por suerte, al cabo de unas semanas, el router al que pertenecía esa IP ya no estaba operativo o, al menos, no estaba localizable directamente desde Internet.