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


lunes, 22 de febrero de 2016

Recuperando archivos borrados

No hace mucho un usuario me llamó diciendo que se le había borrado todo lo que tenía en el disco duro del PC.  Según él, desde hacía unos días, tenía problemas al poner en marcha el PC y tenía que intentarlo varias veces hasta que conseguía arrancar bien ya que el equipo "decía no-se-qué del disco duro" (sic).  Transcurridos unos días, en el último de estos intentos el equipo arrancó "con el Windows vacío" (sic).

Al analizar el equipo observo que, efectivamente, no hay datos, ya que el equipo arranca con la configuración de fábrica: solicita confirmar la configuración de Windows, no hay ningún usuario creado, no hay ni rastro de los programas que había instalado el usuario, etc.  Todo parece indicar que se ha hecho un System Recovery para devolver el equipo a su estado original de fábrica.  

C.A.IN.E
Se trata de un Windows 7 y para intentar averiguar lo sucedido pongo en marcha el equipo con un CD de autoarranque de la herramienta forense C.A.IN.E. (http://www.caine-live.net).  Monto el disco duro del equipo como "solo lectura" (para no modificar nada de su contenido) y al acceder al árbol de directorios compruebo que los archivos de sistema de Windows tienen fecha y hora de unos instantes antes de recibir la llamada del usuario; que la carpeta "Archivos de Programa" está "limpia" (solo contiene los programas que vienen preinstalados en el sistema); que en la carpeta "Users" solo aparece el usuario por defecto, lo que parece confirmar mi sospecha de que en uno de los intentos de arranque del equipo, el usuario -de forma involuntaria- activó el proceso de "Restaurar el sistema a su estado de fábrica".

Puesto que podemos dar el disco duro por perdido (ya manifestaba problemas de hardware antes de la incidencia) y puesto que los del Servicio Técnico ya ha montado un nuevo PC para el usuario, vamos a ver si podemos recuperar archivos borrados del disco después de un System Recovery.

Veamos los pasos a seguir:

1) Clonar el disco duro afectado

En este caso no sería imprescindible, pero lo hago ya por costumbre (preservar el original y trabajar con una imagen o con un clon).

Para ello, en un equipo de laboratorio, conectamos el disco duro afectado y otro disco duro, vacío, que será el destino del clonado.  Arrancamos el equipo con C.A.IN.E. y con la herramienta XMount-GUI montamos el disco duro afectado como "solo lectura" y el disco duro vacío como "lectura/escritura".  (Pulsando con el botón derecho del ratón sobre el icono del disco duro en la barra de estado podremos cambiar el tipo de montaje: con el icono en color verde el montaje será en modo READ ONLY y con el icono en color rojo el montaje se hará en modo WRITEABLE).

Conectando los dos discos para el clonado
Utilizaremos GUYMAGER para realizar el clonado (con cuidado de no equivocarse de discos de origen/destino).

Seleccionamos el disco duro que queremos clonar (el que contiene los datos a analizar) y pulsamos con el botón derecho del ratón.  Aparecen 2 opciones: "Adquirir imagen" o "Clonar dispositivo".  En nuestro caso hemos elegido "Clonar" para disponer de un disco duro idéntico sobre el que trabajar, aunque también hubiera sido válido adquirir una imagen en formato "dd".

Proceso de clonado con GUYMAGER

2) Búsqueda de archivos eliminados

En este caso, ya que estamos trabajando con C.A.IN.E vamos a utilizar la herramienta PhotoRec que viene incorporada en el Live-CD (En otro post realizaremos la misma tarea con la herramienta Scalpel).  PhotoRec permite recuperar archivos perdidos tanto desde un disco duro como desde un archivo imagen del disco.

Al ejecutar PhotoRec primero solicita que indiquemos sobre que disco vamos a trabajar, el tipo de tabla de particionamiento y la partición donde están los datos que queremos recuperar.  Antes de iniciar el proceso de recuperación conviene acceder a la sección "[File Opt]" para seleccionar el tipo de archivos a recuperar.  Por defecto vienen todos marcados pero podemos seleccionar sólo aquellos que nos interesan (por ejemplo: doc, pdf, xls, jpg).

Finalmente pulsamos en "[Search]" para iniciar la búsqueda en la partición seleccionada y con las opciones indicadas, y nos permitirá seleccionar el directorio de destino donde almacenar los archivos recuperados.  Al finalizar el proceso aparecerá un resumen con el número de archivos recuperados y el tipo de archivo.

Resultado de la recuperación con PhotoRec

3) Recuperación de archivos

Tras ejecutar PhotoRec, en la carpeta de destino encontraremos todos los archivos recuperados.  En el caso que nos ocupa, conseguimos recuperar la mayoría de los documentos que tenía el usuario antes de realizar el System Recovery, incluyendo los archivos PST con los buzones de Outlook.

Al acceder a la ubicación donde ha guardado los archivos recuperados observamos que ha creado una serie de carpetas de nombre "recup_dirx" que continenen archivos cuyo nombre es una combinación de letras y números (por ejemplo: f1496457.pdf, f14968088.jpg, f1497955.xls, ...).  Por lo tanto, aunque tenemos todos los archivos, hemos perdido el nombre original y la carpeta donde estaba ubicado.

Listado de archivos recuperados con PhotoRec
Antes de empezar a abrir los archivos uno a uno, podemos clasificarlos por extensiones para organizarlos e intentar localizar los archivos que necesitamos.  Una vez los tengamos clasificados, podemos utilizar herramientas de búsqueda en el contenido de los documentos, o la "vista previa", para determinar de que archivos se trata.  Con un poco de suerte, analizando los metadatos de los archivos de Office obtendremos bastante información (fecha de creación, de modificación, autor y -en ocasiones- hasta el nombre original del archivo).  También, para algunos archivos JPG (fotografías) suele funcionar utilizar un programa que lea los metadatos EXIF para obtener el nombre original y la fecha/hora de creación (lo mismo sucedería con archivos de audio MP3 o de vídeo, que contengan metadatos).