martes, 24 de mayo de 2016

Utilizando Shodan para descubrir depósitos de... ¿combustible?

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.

No hay comentarios:

Publicar un comentario