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.

lunes, 9 de mayo de 2016

ICS Cybersecurity: Security Concerns

Industrial Control Systems (ICS) security represents a significant challenge in today's world. Some months ago I gave a presentation on ICS Cybersecurity in the ISACA's EuroCACS/ISRM Conference in Copenhaguen, and now, I'm going to explain in this post some concepts we were discussing there about security concerns. 


Industrial infrastructure has a very long life cycle (over 20 or 25 years) and for this reason, most of the implemented security measures in control systems are outdated and rely upon a sort of “security through obscurity” (if an attacker doesn't know what to attack, we are secure) but of course this is wrong, -it has been proven that this is a wrong approach! 

However, the fact that industrial systems adopt IP protocols certainly introduces a new security risk, but we must not forget that other risks already existed before and they had nothing to do with the Internet. 

Let's look at some of these security concerns: 


1) Weak communication protocols
We're working with communication protocols designed in the 70's and in the 80's: (DNP3, Modbus, ProfiNet, etc.) and most of them do not incorporate either authentication or encryption. Without authentication anyone who can access the network could send control signals to a specific device, and -as you know- a “bad guy” can gain access to the network in many different ways.  And without encryption, the data transmitted over the network can easily be obtained using a network sniffer (i.e., Wireshark). 

2) Weak passwords 
On one hand, we have lots of systems working with default usernames and passwords, that are not changed by the user, and they still remain as admin/admin, root/1234 … and so on (or even blank passwords). On the other hand, manufacturers are sometimes using hardcoded usernames and passwords to be used by its own technical service and they cannot be changed. If they’re known (most of them are included in technical documentation available on the Internet) anyone who gets access to the device could log in with a privileged account. In 2013 ICS-CERT published an advisory related to a hardcoded vulnerability found within roughly 300 medical devices, manufactured by some 40 different vendors, which could be exploited to gain access to the devices, including pacemakers, surgical and anesthesia devices, drug infusion pumps, patient monitors, as well as laboratory and analysis equipment.

3) Poor QoS
Quality of Service (QoS) has to do with the overall performance of the network.  Unlike a business network, an ICS network often needs a real-time communication, without latency, without packet loss, or any other “noise” that affects the quality of the communication.  This situation may be exploited to perform a Denial of Service (DoS) attack (i.e., via the insertion of rogue Ethernet frames into the network). And here, this is not about restarting a web server or having a delay in e-mail delivery, a DoS attack could bring very important systems off-line, and could even trigger a shutdown.

4) Internet connected web servers without protection
Many control systems have integrated web servers allowing maintenance and configuration tasks. If these systems are directly connected to the Internet it is possible to find them with specialized search engines like SHODAN. When the system has been discovered, if there are not well implemented security measures, the system becomes vulnerable.

In addition, when using an IDS/IPS as a countermeasure, common IDS/IPS do not take into account specific payloads and port numbers related to ICS protocols, such as Modbus or DNP3, leaving the system unprotected.

5) Difficult or nonexistent patching
Patching is the main countermeasure against known vulnerabilities that have been corrected by the vendor but, in critical systems, depolyment of patches must be scheduled with some weeks or months in advance, because there are many other tasks that must be executed before the process may be interrupted. That creates a “window of exposure” in which systems are vulnerable.

Furthermore, there are many old systems operating continuously and there is a reluctance to touch them all. If a patch (or a software update) is not tested it can also be a risk, as it might change the behavior of a component in a way that endangers the process stability.  

As an example: the Japanese company who owns the Fukushima nuclear power plant is still running about 48,000 computers on Windows XP (an outdated operating system without support nor upgrades).

48,000 PCs running on WIndows XP in nuclear plants