Mostrando entradas con la etiqueta ICS. Mostrar todas las entradas
Mostrando entradas con la etiqueta ICS. Mostrar todas las entradas

lunes, abril 28, 2025

¿Podría ser el Apagón Eléctrico de España un ciberataque?

Esta es la pregunta que más me han hecho desde que comenzó el apagón eléctrico de la historia de España. La respuesta no la sabremos hasta que los equipos que están investigando el incidente hayan podido analizar "Root Cause" del incidente, y para ello van a necesitar tiempo. Y lo más importante es recuperar la energía lo antes posible, que hay muchos sitios críticos donde la existencia de la energía puede salvar vidas.

Figura 1: ¿Podría ser el Apagón Eléctrico de España un ciberataque? 

Esta claro que el sistema eléctrico está basado en la tecnología, y que como tal se debe diseñar y gestionar cuando hablamos de ciberseguridad. Y no es nuevo, porque a lo largo de los años hemos visto ataques a centrales eléctricas, y hace un par de semanas se alertaba de que había repuntado el número de ciberataques a estas infraestructuras críticas en la Unión Europea también.
¿Podría haber sido un ciberataque? Pues no lo sabemos aún, y no seré yo el que vaya a especular sobre esto, pero es una de las posibilidades que podrían ser, por supuesto. Pero también podrían ser otras las causas que han producido esto, así que lo mejor es no especular y esperar a ver lo que los forenses que estén en el CSIRT ahora nos digan cuando tengan los datos.
Al final, en el pasado hemos visto caídas de sistemas de Internet, de energía, de llamadas, de gas, y de casi cualquier suministro crítico por causas que puedan interrumpir el sistema que distribuyen la luz, el gas, las redes de telefonía o datos. Y ahora no sabemos más que puede ser cualquier de ellos.

Las causas posibles, os las podéis imaginar:
  • Accidente: Un incendio, una inundación, una nevada, un volcán. De todo esto hemos vivido en los años recientes con Filomena, la Dana, el Volcán de La Palma, o los Incendios que nos han asolado durante mucho años parte de nuestro territorio. Estos suelen producir cortes locales, o puntuales, porque destrozan partes del sistema, pero no han solido ser nacionales porque no han tocado el corazón del sistema, y cuando se diseña un sistema crítico es necesario redundar las partes core que pueden discontinuar el sistema.
Pero puede ser de gran intensidad o tocar un punto clave. Durante la Dana, hubo que hacer un trabajo especial para reforzar los centros de llamadas del 112 que estaban saturados, y que fue una de las prioridades durante la crisis, ya que no podían atender tantas llamadas. Que se pudieran atender todas las llamadas de emergencia lo antes posible, y para eso hubo que re-enrutar comunicaciones a centros de respaldo en otras ubicaciones.
Figura 4: El problema fue un certificado digital expirado

Pero los ha habido mucho más cercanos en el tiempo .En el año 2023 se alertó del ataque al sector eléctrico de Dinamarca, donde más de dos docenas de centrales fueron afectadas en tres oleadas, lo que deja claro que fue un ataque coordinado y organizado contra una infraestructura crítica de un país.
Ahora mismo no sabemos nada. Serán los expertos que estén analizando el caso los que tengan que dar las informaciones, así que todo son especulaciones, por lo que hay que evitar caer en asegurar nada, porque solo los que tengan los datos tienen la información. Lo que sí que está claro es que algo ha pasado en el sistema y hay que saber qué es para que no vuelva a pasar.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


miércoles, febrero 16, 2022

H-CON: Hackeando con On-the-fly entre "Humans"

Que llevamos tiempo deseando que la normalidad, la antigua, vuelva a nuestras vidas no es algo nuevo. La deseamos y estamos ansiosos por que esté aquí con nosotros. El pasado viernes 4 de febrero Luis Eduardo Álvarez y yo presentamos on-the-fly en la H-c0n con un taller sobre el uso de la herramienta. Una herramienta que se desarrolló en IdeasLocas y que es OpenSource para que cualquiera pueda ampliarla, mejorarla, estudiarla y aprender con ella sobre evaluaciones en la seguridad de la red.

Figura 1: H-CON: Hackeando con On-the-fly entre "Humans"

La H-c0n nos brindó la posibilidad de volver a amigos y conocidos que no veíamos desde hace casi dos años. Nos permitió conocer nuevos trabajos de compañeros y volver a juntarnos, sin pantalla de por medio, y volver a sentir lo que es una CON en estado puro. El workshop que presentamos era el de on-the-fly, la herramienta que IdeasLocas llevó a BlackHat Europe 2021 para extender la mochila del pentester en proyectos de Ethical Hacking.

Figura 2: Libro de Ethical Hacking 2ª Edición
de Pablo González en 0xWord

El trabajo dispone de un paper en el que se puede desglosar toda la herramienta desde el punto de vista de arquitectura, lo que aporta como herramienta OpenSource y algunos casos de uso con los módulos que trabaja la herramienta. Desde el punto de vista de un pentesting a entornos TI tiene sus puntos fuertes, pero también está pensada para poder trabajar en entornos IoT e ICS, aunque aún le falta crecer en este aspecto.


En el workshop trabajamos para mostrar casos de uso en diferentes ámbitos de uso de on-the-fly: TI, IoT o ICS. Aunque con dos horas no era suficiente para poder trastear con la herramienta todo lo que nos hubiera gustado. Además, con un auditorio con bastante gente no se podía interactuar mucho con los diferentes ejemplos.

Instalación on-the-fly

Como comenté, estamos trabajando en facilitar la instalación de on-the-fly a través de un script que automatice la instalación de dependencias, configuración de Python y otras necesidades identificadas en la herramienta para que se pueda instalar de manera sencilla en Ubuntu y Kali Linux (al menos).

Figura 4: Pentesting con Kali Silver Edition
de Pablo González en 0xWord

Lo primero fue explicar cómo instalar la herramienta y aquí os dejo la receta del paso a paso para que la instalación funcione (Kali Linux testeado):

- git clone https://github.com/Telefonica/on-the-fly.git
- apt install libssl-dev libncurses5-dev build-essential libffi-dev libnetfilter-queue-dev
- Descargamos Python 3.7 (o 3.X dónde X es <=7).
Es recomendable hacer esto, aunque todo pueda funcionar con un Python superior (antes no funcionaba de forma estable).
- https://github.com/deadsnakes/python3.7
o ./configure
o make
o make test
o sudo make install
- NetfilterQueue
o https://github.com/oremanj/python-netfilterqueue
o From pipy
 Python3.7 –m pip install NetfilterQueue
- Python3.7 –m pip install –r requirements.txt

Ya podemos hacer: sudo python3.7 on-the-fly.py

Después de la instalación se mostró el uso básico de la herramienta, especificando el pequeño conjunto de comandos que tiene la herramienta, pero que permiten encadenar una serie de pruebas de ataques a redes para evaluar la seguridad del entorno. Además, se mostraron las familias de los módulos que on-the-fly tiene, todo esto se puede ver en su paper.

Figura 5: Módulos de on-the-fly

Uno de los puntos fuertes de la herramienta es la gestión de hilos y cómo los módulos se pueden ir “apilando”, es decir, un pentester puede empezar lanzando un ataque en red IPv4 como ARP Spoofing para, posteriormente, empezar a sniffar todo el tráfico que pasa por la máquina y añadir, más adelante, otro módulo para hacer una manipulación de paquetes sobre MySQL.


JL. Rambla, ampliado y revisado por Pablo González y Chema Alonso

La idea de la herramienta es apilar una serie de módulos para construir pruebas de evaluación grandes, a partir de pequeños módulos que van haciendo acciones concretas. Aquí está la fuerza de la herramienta. Para poder gestionar el “apile” de los módulos se dispone del comando ‘jobs’, el cual permite gestionar los módulos para poder finalizarlos cuando ya no se requieran.

Figura 7: Jobs en on-the-fly

Hablamos sobre la arquitectura y lo fácil que es que cualquier usuario pueda añadir a la herramienta un módulo para implementar una funcionalidad necesaria. Lo interesante es que viendo su arquitectura, la herramienta es muy sencilla de escalar.

Figura 8: Arquitectura de módulos on-the-fly


La parte interesante del workshop vino cuando comentamos los diferentes casos de uso a modo de ejemplo, para que los asistentes pudieran contemplar las diferentes posibilidades de la herramienta y en sus diferentes ámbitos.

Casos de uso de On-the-fly

El primer ejemplo fue la manipulación de paquetes a través del uso de dos módulos:

- ARP Spoofing entre un cliente de base de datos y un servidor de base de datos
- MySQL Manipulation para que el tráfico que pasa por on-the-fly pueda ser modificado por la sentencia que interese al pentester.

Figura 9: Ejemplo del ataque con on-the-fly

Y en el siguiente vídeo tenéis el ejemplo de cómo funciona esto en real utilizando un entorno como el descrito en la imagen anterior, que se explicó en detalle en este artículo: "Cómo hackear MySQL con Network Packet Manipulation usando on-the-fly".


Figura 10: On-they-fly: PoC of Network Packet Manipulation to inject users in MySQL

Otro de los casos de ejemplo que se tocó en el seminario es el de usar on-the-fly como un pivote para reenviar tráfico a través de TCP Port-Forwarding o convertir a on-the-fly en un proxy SOCKS4.

Figura 11: Convirtiendo on-the-fly en un Proxy Socks4

En el siguiente vídeo tienes un ejemplo de cómo funciona este proceso completo utilizando on-the-fly.


Figura 12: On the fly: PoC de enrutado ProxySocks

Posteriormente, empezamos con la parte de SSDP y Modbus. El protocolo SSDP o Simple Service Discovery Protocol, es un protocolo muy utilizado para el descubrimiento de servicios en redes de área local, por lo que la parte más IoT de casa lo utiliza y mucho. En esta demo, Luis, mostró un ejemplo de cómo on-the-fly puede suplantar cualquier tipo de servicio haciéndose pasar por cualquier dispositivo que se puede encontrar en un hogar o en una oficina. Es perfecto para un ejercicio de Red Team.


Figura 13: On-the-fly: PoC SSDP-Fake

Además, por lo que pudimos ver, la herramienta ha servido de inspiración para algunos compañeros, lo cual nos alegra mucho, ya que no todo es el uso que se pueda dar a on-the-fly, si no que ver cómo otros compañeros te cuentan que les interesa la herramienta porque ellos están haciendo algo parecido para un entorno similar y que les gustaría echar un ojo y ver cómo pueden enfocar su herramienta es perfecto. De eso se trata cuando una herramienta es para la comunidad y para la mejora en ciberseguridad.

Saludos,

 Figura 14: Contactar con Pablo González

jueves, agosto 26, 2021

On-the-fly: Una nueva herramienta para auditar redes TI, IoT & ICS

En el equipo de Ideas Locas tenemos algunas sorpresas para estas semanas. Una de ellas es la publicación de una nueva herramienta denominada on-the-fly, la cual ya está disponible en su Github. Pronto anunciaremos algo más sobre un par de herramientas y algunos sitios donde se podrán ver y donde realmente se darán a conocer. 

Figura 1: On-the-fly. Una nueva herramienta para auditar redes TI, IoT & ICS

Hoy queremos hablar del trabajo que ha sido sacar esta herramienta. La idea es proporciona una herramienta modular que permita al usuario ir configurando módulos que permitan realizar ataques de redes tanto en el mundo TI, IoT o ICS.
Algo que se debe tener claro es que la utilización de diferentes tecnologías entre estos dispositivos que nos rodean hace que la seguridad sea heterogénea. Cuando se afronta un Ethical Hacking en cualquier entorno, uno de los factores importantes es la red. La red conecta el mundo del Internet de las cosas, el mundo de los sistemas de control industrial y el mundo de las tecnologías de la información.

Figura 3: Libro de Ethical Hacking 2ª Edición

La irrupción del paradigma IoT, la conectividad del mundo OT / ICS y el crecimiento exponencial del mundo TI hacen que el pentester requiera conocer todos estos espacios para poder trabajar acorde a lo necesario. Una herramienta que centraliza diferentes técnicas de evaluación de vulnerabilidades o debilidades en una red es un concepto interesante. Dándole el concepto de modular se consigue lograr varias cosas:

1. Que cualquier usuario de la comunidad (hay que recordar que la herramienta es Open Source) puede colaborar y ampliar las posibilidades de ésta, gracias a la implementación de un módulo. 
 
2. Disponer de diferentes técnicas modernas para llevar a cabo este tipo de evaluación y que fácilmente sea ampliable. 
 
3. Lectura y entendimiento sencilla para poder implementar módulos y compartirlos con la comunidad.

Según podemos encontrar en el artículo de presentación de la herramienta

La herramienta ‘on-the-fly’ es un framework que proporciona funcionalidades para llevar a cabo tareas de pentesting en redes de datos en entornos IoT, ICS y TI. La herramienta permite ejecutar diferentes acciones de forma simultánea y de forma modular, simplificando el encadenamiento de acciones y otorgando la posibilidad de realizar diferentes ataques simultáneos.


on-the-fly’ tiene una arquitectura modular y dispone de más de 40 módulos con funcionalidades para el pentesting en entornos IoT, ICS & TI. Esto es algo interesante, ya que cualquier usuario podría ampliar la base de conocimiento de la herramienta. La arquitectura de la herramienta es la siguiente:

Figura 5: Arquitectura de "on the fly"

A continuación se enumeran los tipos de módulos principales:

Figura 6: Módulos de 'on-the-fly'

- Discovery: En este tipo de módulos se pueden encontrar funcionalidades para descubrir diferentes tipos de servicios y máquinas. Se utilizan diferentes protocolos: Modbus para descubrimiento ICS, TCP para descubrimiento de servicios y máquinas, MDNS y SSDP, etcétera.

- Manipulation: Este tipo de módulos permiten manipular ‘al vuelo’ (on-the-fly) el tráfico que pasa a través de la máquina. Son módulos especializados en cambiar valores que pueden observarse y manipularse. Permiten obtener ventaja, por ejemplo, manipulando las consultas a una base de datos y consiguiendo acceso.
 
- Server: Este tipo de módulos proporcionan al pentester la posibilidad de levanar un servicio o servidor y disponer de un servicio fake sobre SSDP, MQTT o DNS, por ejemplo.

- Spoof: Este tipo de módulo permite llevar a cabo ataques de spoofing entre diferentes máquinas. Por ejemplo, se puede hacer los clásicos ARP Spoofing, DNS Spoofing o NTP Spoofing, pero también ataques de spoofing en COAP y MQTT (IoT) y en Modbus (ICS).

- Pivot: Este tipo de módulo permite utilizar ‘on-the-fly’ como herramienta para pivotar en un pentest. Permite utilizar SOCKS4 y un port-forwarding sobre TCP para redirigir el tráfico. Una funcionalidad necesaria para el pentester.

- Sniffer: Este tipo de módulo permite llevar a cabo un ‘sniffing’ de paquetes. Hay módulos que vienen preparados para ‘sniffar’ tráfico concreto, y otros módulos permiten configurar qué se quiere sniffar, cómo y dónde almacenarlo.

- Examples: Este tipo de módulo muestra ejemplos de implementación de un módulo. Esto sirve para que un usuario pueda crear de manera sencilla su propio módulo con la funcionalidad que quiera.

Los comandos disponibles en la herramienta ‘on-the-fly’ son los siguientes que puedes ver en la siguiente captura. De ellos, el comando jobs muestra los módulos que generan ‘hilos’ y están en ejecución. Desde este comando podemos ‘terminar’ un módulo cuando se quiera. ‘on-the-fly’ tiene un sistema de gestión de hilos interno para poder ejecutar en background cualquier trabajo y poder finalizarlo cuando el usuario lo requiera.

Figura 7: Comandos de 'on-the-fly'

Esta funcionalidad es la que permite poder cargar diferentes módulos para un ataque de red y poder juntar funcionalidades a través del uso de hilos. La gestión se lleva a cabo a través del comando Jobs.

Figura 8: Descripción de los comandos de 'on-the-fly'

Próximamente hablaremos de cómo hacer un módulo en on-the-fly o ver algunas de las funcionalidades interesantes que podemos encontrar. Es un proyecto en fabricación y que ha visto la luz recientemente. Todos los comentarios de mejora serán bienvenidos. Hay mucho más detalle en su repositorio de Github. Para finalizar, os dejamos con los siguientes vídeos donde se puede ver un ataque de SSDP fake, engañando a los dispositivos de la red tal como se puede ver en el artículo sobre EvilSSDP.
 

Figura 9: Ataque SSDP Fake

Por otro lado, os dejamos un ejemplo de spoofing en Modbus.

Figura 10: Demo de Spoofing de Modbus con 'on-the-fly'

Han sido meses de ir haciendo poco a poco la herramienta, pensar los módulos e ir añadiendo funcionalidades. Todavía queda camino, ya que el proyecto puede acabar con un gran número de implementaciones. Gracias a todos los miembros del equipo que han ido participando en el proyecto. Casi todos hemos pasado por la herramienta para aportar nuestro granito de arena. Pronto más noticias :)

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 11: Contactar con Pablo González

miércoles, julio 08, 2020

Protocolos utilizados en Sistemas de Control Industrial: Desde sus inicios hasta la Raspberry Pi (Parte 2 de 2)

Hace unos días os hablé en la primera parte de este artículo sobre de los protocolos utilizados en sistemas de de control industrial y e hicimos una breve explicación de en qué consisten y cómo funcionan algunos de los mas conocidos. En el día de hoy os hablaremos de cómo es posible integrarlos en una placa de Raspberry Pi (o similar) y cuáles son sus ventajas para hacer pruebas de seguridad y hacking. Vamos a hacer algo para hackers & makers.

Figura 1: Protocolos utilizados en Sistemas de Control Industrial:
Desde sus inicios hasta la Raspberry Pi (Parte 2 de 2)

A la hora de montar una fábrica hay que tener en cuenta varios factores como la productividad de los equipos, su consumo o simplemente el espacio que ocupa cierta maquinaria o componentes, esto ha hecho que en muchos casos se opte por soluciones de hardware libre que pueden resultar mas baratas y muy configurables.

En cualquier sector de la industria es de vital importancia contar con elementos de protección que garanticen la seguridad tanto de los trabajadores como de la maquinaria y el software. Para proteger la comunicación entre los distintos dispositivos de la red es necesario que estas soluciones “low cost” permitan el cifrado de punto a punto. Esto no supone ningún problema, ya que la inmensa mayoría de estas nuevas placas (o microcontroladores) permiten hacer uso del cifrado AES a través de hardware que resulta ser bastante más rápido que el cifrado de software.

Figura 2: SBC "Single Board Computer"

En cuanto a este tipo de sistemas, llamados SBC por sus siglas en inglés de "Single Board Computer"  podemos hablar de varios fabricantes, pero de dos grandes lideres en el sector. El primero de ellos es  Arduino, del que si quieres aprender largo y tendido, a la vez que divertirte, te recomiendo que te leas el libro de Arduino para Hackers: PoCs & Hacks Just For Fun que han escrito Alvaro Nuñez-Romero y Alexandra Sánchez. Además, puedes hacerte el curso en forma de VBOOK que en unas horas de formación te va a enseñar cómo meterte en el mundo más hacker de los makers - lo tienes aquí: VBOOK Arduino para Hackers. El otro SBC claramente granador es Raspberry Pi.
Figura 3: "Arduino para Hackers: PoCs & Hacks Just for Fun"
de Álvaro Nuñez Romero y Alexandra Sánchez en 0xWord

A pesar de que este tipo de sistemas habitualmente no están pensados parea utilizarse en un entorno industrial algunos están diseñados y preparados para soportar duras condiciones como las que se pueden dar en el interior de una fábrica (altas temperaturas, humedad, interferencias eléctricas, etcétera) además ofrecen la posibilidad de conectarles una gran variedad de sensores o dispositivos periféricos como pantallas o cámaras, tal y como vimos en el artículo de Raspberry Pi Zero donde veíamos 6 proyectos para makers con un montón de dispositivos periféricos.

En cuanto a limitaciones solo hay que decir que el hardware de la mayoría de estos dispositivos no permite la comunicación en algunos de los protocolos mas utilizados en la industria, sin embargo, existen algunos dispositivos diseñados específicamente para hacer esto posible, como por ejemplo las placas HAT diseñadas para la Raspberry Pi3 W.

Figura 4: Placa Serial Hat para protocolos ICS en Raspberry Pi

Dicho todo esto, a continuación, os voy a explicar cómo se puede realizar la integración de una placa SBC con un Sistema de Control Industrial o ICS. En este caso hemos elegido la Raspberry Pi para el experimento debido a que es posiblemente la placa más versátil con la que se puede trabajar en este caso, ya que se le puede instalar sistema operativo GNU/Linux y por lo tanto podremos trabajar con librerías y otros módulos que harán más fácil la implementación de protocolos de control. Otra de las razones por las que escoger esta placa es su capacidad para trabajar con la mayoría de protocolos basados en ethernet como el protocolo MODBUS o el ProfiNET de los cuales os hablamos en el anterior artículo.

Integración MODBUS Raspberry Pi

Como ya vimos anteriormente, durante los últimos años el protocolo MODBUS se ha convertido en un estándar para los procesos de comunicación industrial y es uno de los más utilizados en varios sectores de la industria. Lo mas habitual es utilizar Modbus RTU o Modbus ASCII como capa física con la posibilidad de convertir la Raspberry Pi en el cerebro de las aplicaciones. Para hacerlo posible es necesario utilizar un módulo o tarjeta HAT diseñada específicamente para esta función (en este caso una RS422 o RS485).

Figura 5: Conexiones módulo para RS422 a RS485 en tarjeta HAT

El montaje del módulo es sencillo, únicamente hay que soldar la placa a los pines de extensión de la Raspberry Pi, hecho esto solo tendremos que conectar el sistema Modbus utilizando los terminales del HAT y apretando los tornillos con un destornillador de punta plana. Este modelo de HAT está preparado para realizar múltiples funciones, por eso mismo no necesitaremos utilizar todas sus salidas. Solo tendremos que conectar las salidas A y B dejando libres las demás (Y, Z y SHIELD).

La placa cuenta también con tres juegos de interruptores DIP (con cuatro interruptores con dos posiciones) que hay que configurar de una forma determinada para que todo funcione correctamente. La posición de los sensores debe de ser la siguiente:

+Switch 1: 1 OFF, 2 ON, 3 ON, 4 OFF.
 
+Switch 2: 1 OFF, 2 OFF, 3 ON, 4 ON.
 
+Switch 3: 1 DEPENDE, 2 OFF, 3 OFF, 4 OFF.

Para configurar el tercer switch tendremos que tener en cuenta la posición de nuestra Raspberry Pi en la línea Modbus. Si se encuentra en uno de los extremos de la línea bus deberemos de ponerlo en la posición ON, en el caso contrario lo dejaremos en la posición OFF.

Figura 6: Configuración de switches

Con el hardware ya preparado el siguiente paso es configurar el software, la forma mas sencilla de hacerlo es liberar el puerto serie y habilitar el UART (Universal Asynchronous Receiver-Transmitter). Utilizando una imagen de Raspbian reciente y la herramienta raspi-config tendremos que acceder a las opciones de interfaz (5 Interfacing Options) y desde ellas al sub-apartado “P6 Serial”. Ahora deberemos asegurarnos de que los siguientes apartados tengan estos valores:

+ ”Would you like a login shell to be accessible over serial?: NO”
 
+ ”Would you like the serial port hardware to be eneabled?: YES”

Una vez hayamos terminado con los pasos anteriores solo habrá que salir de la aplicación raspi-config y reiniciar nuestra Raspberry Pi. Si todo esta bien configurado podremos acceder a la UART desde /dev/serial0.

Figura 7: Raspberry Pi up and running

Por último, tendremos que instalar la implementación de Modbus en Python, este es un proceso bastante sencillo, podréis descargarlo desde GitHub o utilizando el comando que os facilitamos a continuación en la consola de GNU/Linux.

wget https://pypi.python.org/packages/source/M/MinimalModbus/MinimalModbus-0.7.tar.gz TODO

Si os surge cualquier problema o duda durante el proceso de instalación en la página web de MinimalModbus podréis encontrar un tutorial detallado con los distintos métodos de instalación además de bastante información acerca de su funcionamiento.  

Figura 8: Libro Infraestructuras Críticas y Sistemas Industriales:
Auditoría de Seguridad y Fortificación de Juan Francisco Bolivar

Y una vez que tengas tu Raspberry Pi conectada a la línea de protocolos ICS ya puedes comenzar a buscar las maneras de atacar al sistema, de protegerlo, o de hacer tu trabajo de "hacker" desde este dispositivo que te has hecho como "maker".

Autor: Sergio Sancho Azcoitia, Security Researcher en el equipo de Ideas Locas de CDCO

miércoles, junio 24, 2020

Ripple20: Serios fallos de seguridad en el mundo de los Sistemas Industriales e Infraestructuras Críticas

Hace más de dos décadas que existe una empresa de software llamada Treck Inc., de la cual posiblemente nunca has oído hablar pero posiblemente alguno de sus productos estén implementados en los dispositivos que utiliza tu empresa u organización. Esta compañía, centrada sobre todo en el desarrollo de librerías para la implementación a bajo nivel de la pila de protocolos TCP/IP, basa todo éxito en el desarrollo de frameworks para todo tipo de dispositivos IoT.

Figura 1: Ripple20: Serios fallos de seguridad en el mundo de los
Sistemas Industriales e Infraestructuras Críticas


El éxito de su producto es tal que grandes fabricantes de de “aparatos” como, por ejemplo, impresoras, todo tipo de dispositivos industriales, SmartHome, dispositivos para entornos médicos, etcétera, llevan años utilizándolo. Y no es para menos, ya que sus librerías facilitan muchísimo el trabajo de del desarrollador a la hora de conectar cualquier dispositivo a la red de redes.

Figura 2: Libro Infraestructuras Críticas y Sistemas Industriales:
Auditoría de Seguridad y Fortificación de Juan Francisco Bolivar

Es casi imposible rastrear el número real de fabricantes de hardware IoT que han comprado y/o utilizado las librerías de pila TCP/IP de Treck. Ya sea por la gran cantidad de clientes o simplemente porque algunas empresas directamente fueron compradas por otras, su número es difícil de cuantificar. Lo que está claro es que son compañías entre las que podemos encontrar a HP, Intel, Schneider Electric, Caterpillar, etcétera (sólo por nombrar algunas de las más conocidas) que han vendido sus productos con dichas librerías implementadas, a otras que incluso tienen Infraestructuras Críticas (como Transporte, Energía, Hospitales, etcétera) como clientes.

Como cualquier dispositivo IoT, tenga la función que tenga, necesitará conexión a la red de algún tipo, esta librería se ha hecho tremendamente popular. Por cierto, si quieres saber y entender el mundo de la seguridad IoT de las Infraestructuras Críticas, no puedes perderte el libro de uno de los buenos expertos en la seguridad de ellas, Juan Francisco Bolivar, llamado “Infraestructuras críticas y sistemas industriales: Auditorías de seguridad y fortificación”, de la editorial 0xWord

OWASP no falla … 

Antes de entrar en materia sobre qué ha ocurrido con esta empresa o más bien con el producto que desarrolla, vamos a echar un vistazo al OWASP TOP 10 de aplicaciones y de APIs. Todos conocemos estos listados de OWASP los cuales nos permiten tener una visión de los mayores problemas de seguridad web orientados a desarrolladores.

En los puestos 6 y 7 respectivamente, podemos encontrar el término “Security Misconfiguration” el cual describe los problemas relacionados con la configuración insuficiente de seguridad (o la no actualización de los mismos entre otros) y en el OWASP Top 10 de aplicaciones, en el puesto número 9 podemos encontrar otra vulnerabilidad que definen como “Using componentes with known vulnerabilities” (utilizar componentes con vulnerabilidades conocidas).

Todas tienen algo en común, y es el que creador de la aplicación o dispositivo, por mucho esfuerzo que haya puesto en programar código seguro para su programa, si utiliza una librería, framework, sistema operativo, etcétera, que tenga vulnerabilidades (presentes o futuras por no actualizar el código), todo el esfuerzo por securizar nuestro producto se irá al traste.

¿Qué es Ripple20?

Pues esto es justo lo que ha ocurrido con Ripple20 (ripple significa “onda” y debido a que puede afectar a toda la “supply chain” o cadena de suministro, le han dado este nombre) en el que el mundo de la Ciberseguridad y del IoT están aún asimilando cómo enfrentarse a las 19 vulnerabilidades que pueden llegar a afectar a millones de dispositivos repartidos todo el mundo. La empresa JSOF ha descubierto estos zero-days en la librería de la pila TPC/IP de Treck, incluyendo algunos con los temidos ataques tipo RCE.


Figura 5: ElevenPaths Radio "Actualidad": Asegurando la Cadena de Suministros

Todavía no se saben todos los detalles técnicos en profundidad ya que lo presentarán en la próxima edición de BlackHat USA (donde por cierto también estaremos nosotros en la sección Arsenal, presentando ATTPWN). De las vulnerabilidades encontradas, 4 son críticas que incluyen RCE (con una puntuación CVSS mayor o igual a 9), otras 4 tienen una puntuación CVSS mayor o igual a 7, finalmente 11 con menor impacto donde se pueden encontrar security leaks (fugas de información) y DoS, entre otros.

Un ejemplo, el CVE-2020-11896
Este CVE-2020-11896 sirve para etiquetar una vulnerabilidad crítica en la librería Treck que permite RCE realizado por un atacante que pueda enviar paquetes UDP a un puerto abierto del dispositivo objetivo (por cierto, con una puntuación de CVSS de 10, la máxima). Para que este ataque tenga efecto, es necesario que el dispositivo soporte fragmentación IP con tunneling.

Figura 6: Libro de "Ataques en redes de datos IPv4 & iPv6" 3ª Ed
 en 0xWord, de Chema Alonso, Pablo González y Juan Luis Rambla.

A pesar de todo, si este dispositivo no cumpliera estos requisitos, sería posible realizar en su lugar un ataque DoS. En general, lo que ocurre es que la pila TCP/IP de la librería de Treck no gestiona correctamente los fragmentos IPv4 sobre un túnel IP-in-IP. Esto permitiría que un atacante (sin autenticar) pudiera obtener acceso a información localizada en el heap de la memoria.

Figura 7: Digi Connect ME 9210 utilizado en las pruebas

En el paper publicado por JSOF se ofrece en detalle la raíz teórica de esta vulnerabilidad y su funcionamiento. Para explotarla han utilizado un dispositivo Digi Connect ME 9210 para implementar la PoC del RCE. Este dispositivo tiene la forma de un conector RJ-45 pero es realmente un sistema ultra compacto que incluye CPU, un sistema operativo (Linux) y las librerías Treck de la pila TCP/IP.

Figura 8: Papper de Ripple20

El resto de las vulnerabilidades más importantes son:

• CVE-2020-11897 - CVSSv3 score: 10 - Similar a la vulnerabilidad 11896 solo que esta vez utilizando la misma técnica con paquetes IPv6.
• CVE-2020-11898 - CVSSv3 score: 9.8 - Manejo impropio de la longitud de los parámetros de inconsistencia en IPv4/ICMPv4 podría exponer información sensible.
• CVE-2020-11899 - CVSSv3 score: 9.8 - Validación impropia en IPv6 cuando se está gestionando un paquete enviado por un atacante en la red no autorizado, la cual puede exponer información sensible.

¿Cómo se solucionan?
JSOF ha estado trabajando con varias organizaciones como CERT/CC, CISA y la FDA entre otras, para ver cómo solucionar este problema realizando un parcheo o actualización de software. La misma empresa Treck ha creado varios parches de seguridad para solucionar este problema, pero aquí nos encontramos con otra problemática, y es el acceso a dichos dispositivos IoT

Algunos dispositivos IoT no son fáciles de actualizar, ya sea por su peculiaridad configuración de hardware específico, relevancia en la infraestructura (no se pueden apagar o reiniciar tan fácilmente) o simplemente porque llevan tanto tiempo si actualizarse que la nueva actualización puede dejar inoperativo al aparato en sí (incompatibilidad). En estos casos sólo resta minimizar la amenaza de alguna forma externa.

Figura 9: Sala de control "vintage" de una Central Nuclear sovietica

Para mitigar este problema de seguridad el primer paso debe de ser buscar y catalogar aquellos dispositivos que estén afectados por alguna de estas vulnerabilidades. El siguiente paso será actualizar siempre que sea posible el dispositivo con los parches publicados por Treck. En caso de no ser posible, la solución será segmentar, aislar y sobre todo controlar todo el acceso de red desde y hacia el dispositivo vulnerable, para detectar posibles ataques. 

Pero una cosa es segura, si un atacante es capaz de acceder a este dispositivo, ya sea desde la red local o desde Internet, el primer problema lo tienes en la seguridad de tu arquitectura permitiendo que este usuario pueda alcanzar dicho aparato.

¿Es tan preocupante?
Las vulnerabilidades Ripple20 son importantes, muy importantes, pero hay también que rebajar un poco la alarma y mirar con perspectiva. No es la primera vez que vemos un titular de este tipo que muestra un escenario apocalíptico. Ya nos pasó por ejemplo con Meltdown y Spectre y aquí seguimos todos trabajando sin problema (aunque es cierto que el problema de estas vulnerabilidades era su muy difícil implementación, en el caso de Ripple20 parece que es más sencilla de implementar).

Por lo tanto, precaución, seguir los pasos recomendados por el fabricante para parchear los dispositivos (siempre que se pueda) y calma, mucha calma. Para poder explotar alguna de estas vulnerabilidades el atacante necesita una conexión directa con el dispositivo afectado o con una ruta creada desde Internet hacia otra interna y de aquí al dispositivo.

Por lo tanto, otro de los pasos a ejecutar tiene que ser detectar cuáles de estos dispositivos tiene conexión a Internet, y una forma sencilla si usamos SHODAN buscando la cadena “Treck” (aunque afinando más por modelos, características y usando la API de Shodan, podemos concretarlo más). Pero “lo normal” es que un dispositivo de una Infraestructura Crítica no tenga acceso directo a Internet, por lo tanto, habría que potenciar los controles de acceso local a red donde se encuentre.

La buena noticia es que JSOF reportó directamente al fabricante estas vulnerabilidades, dos ellas de forma anónima y esto ha permitido la rápida creación de los diferentes parches de seguridad. Además, tampoco han publicado ninguna PoC (al menos el código) donde se implemente este tipo de ataque, tendremos que esperar a la BlackHat para verlo, lo bueno es que la mayoría de los dispositivos (o eso esperamos) ya estarán parcheados.

Resumiendo, como en la mayoría de los problemas de seguridad, el primer paso es tener toda nuestra infraestructura segura en general. Luego, para estas vulnerabilidades, la solución pasa por actualizar las librerías, pero justo en este caso, no es posible aplicarlos en todos los dispositivos por lo que provoca la activación de una capa adicional de seguridad centrada esta vez en la monitorización y los controles de red donde se encuentre el aparato.

Finalmente, y a modo de moraleja, que una implementación funcione bien durante años no quiere decir que esté exenta de problemas de seguridad, por lo que es necesario auditarla y actualizarla de forma periódica. Pero también es nuestra misión tener controladas esas librerías y comprobar que se actualicen periódicamente, aunque esto es un poco más complicado en el caso del IoT. Pero vamos, si tienes un dispositivo IoT SteamPunk ;) que no has tocado durante veinte años aunque funcione bien … seguro que alguna “pequeña” actualización habrá necesitado en todo este tiempo ¿verdad? ;)

Happy Hacking Hackers!!!
Autores:

Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", también de "Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.


 Contactar con Fran Ramírez en MyPublicInbox

lunes, mayo 13, 2019

Cómo funciona TRITON (TRISIS): Un malware para Sistemas de Control Industrial del que protegerse

Tras Stuxnet en 2010 (Irán) e Industroyer en 2016 (Ucrania), no se habían visto ataques combinados y sofisticados focalizados principalmente para atacar y persistir en Infraestructuras Críticas y Sistemas de Control Industrial, diseñados específicamente para manipular e incluso destruir los sistemas infectados. A fecha de hoy, un año después, auditando algunas infraestructuras SCI, todavía se puede constatar que de la familia de malware TRITON sigue alguna “versión” activa.

Figura 1: Cómo funciona TRITON (TRISIS): Un malware para
Sistemas de Control Industrial del que protegerse

Aunque parece que no ha evolucionado sí que continua contando con persistencia activa en algunos sistemas industriales e incluso sus creadores ha aparecido involucrados en el malware utilizado en ataques realizados en este mes de Abril a Sistemas de Control Industrial en Arabia Saudí que terminaron con explosiones.

Figura 2: Noticia en TechCrunch sobre Triton de Abril de este año

Los sistemas objetivo del malware TRITON, proporcionaron la capacidad de realizar una parada de emergencia totalmente incontrolada con los peligros reales que dicha parada implica, desarrollando una capacidad para causar daño físico en los sistemas y operaciones aleatorias de apagado o interrupción involuntaria de los dispositivos afectados.

Figura 3: "Infraestructuras Críticas y Sistemas Industriales:
Autidoría de seguridad y fortificación"

La familia de malware TRITON, consta de varios componentes ya identificados creados y dirigidos a los Sistemas de instrumentación de Seguridad (SIS) de Triconex. Dicha familia de malware, venía “disfrazada” de Trilogger (un producto de la marca Triconex), software de grabación, análisis de datos operativos de los sistemas Triconex. El malware es altamente destructivo, e implementado principalmente en Python.

Figura 4: Sistema Triconex

Una vez el atacante obtiene acceso al dispositivo, es posible re-programar los controladores SIS, que a su vez provocan la alteración del sistema de control de seguridad y provoca un apagado del Sistema de Control Industrial. Esto le permite al atacante decidir si procede a realizar un apagado controlado, o un apagado disruptivo del sistema y todos sus componentes. Esto altera el funcionamiento normal del ICS, y provoca mensajes de error en cascada de MP (Memory Protection), al acceder a partes de la memoria del sistema de control de Triconex - en este caso provocando incluso destrozos físicos  y en algunos casos poner en peligro los empleados de la factoría o provocar catástrofes ecológicas -.

Dichas modificaciones del SIS, pueden ser moldeables arbitrariamente por el atacante, provocando sistemáticamente apagados incontrolados, y en intervalos de tiempo predefinidos, haciendo que los objetivos infectados sean difíciles de detectar. Vamos a analizar ahora un poco su línea temporal y funcionamiento interno, haciendo un poco de análisis al código del malware.

Timeline:

  • Agosto 2017: Posible fecha de desarrollo y noticia de la primera infección.
  • Septiembre 2017: Segunda infección detectada en industria energética, contrastada con la prueba de malware subida a repositorios para detección de malware.
  • Octubre 2017: Auge de infecciones detectadas en varias factorías.
  • Diciembre 2017: primeros informes de respuestas a incidentes.
Módulo principal TRICONEX
  • Fichero: Trilog.exe
  • Sha-1: dc81f383624955e0c0441734f9f1dabfe03f373c
  • Hash MD5: 6c39c3f4a08d3d78f2eb973a94bd7718
  • Tamaño: 21KB
  • Date-Time: 0x49180192 (11/10/2008 1:40:34 AM)
  • Compilador: Microsoft Visual C/C++ (2008) [msvcrt] / Microsoft Linker (9.0)
Figura 5: Código módulo principal de trilog.exe

Figura 6: Módulo payload adicional
Figura 7: Hex-dump del payload
Figura 8: Tslow, interface de bajo nivel para Tristation

El modulo Tslow, es uno de los principales “activos” del malware y capaz de ejecutar las siguientes instrucciones y procesos dentro el ataque:
  • _init_: inicializar la comunicación con valores por defecto.
  • Close: crear todas las comunicaciones TCM y UDP.
  • detect_ip: detecta la dirección IP enviando un mensaje de ping precargado al 255.255.255.255:1502
  • connect- se conecta a la dirección IP del controlador.
  • udp_close: cierra las conexiones UDP.
  • udp_send - envía paquetes UDP para mantener la conexión en vivo.
  • udp_flush - vacía paquetes UDP.
  • udp_recv - recibe un paquete UDP ficticio.
  • udp_exec – exec la comunicación UDP.
  • udp_result - return el estado de la ejecución de las funciones del protocolo UDP.
  • tcm_ping - envía ping a través de TCM.
  • tcm_connect - se conecta a través de TCM.
  • tcm_disconnect - desconecta la conexión TCM.
  • tcm_reconnect - restablece la conexión TCM.
  • tcm_exec - ejecuta la comunicación TCM.
  • tcm_result: - devuelve el resultado de ejecutar funciones de protocolo TCM.
  • ts_update_cnt - cuenta el número de comandos ejecutados.
  • ts_result - devuelve el estado de ejecutar comandos TS.
  • ts_exec - ejecuta un comando TS.
Además de estos módulos principales, consta de 36 módulos adicionales que le confieren una potencia destructiva de los sistemas muy elevada.

Figura 9: Esquema principal TSAA Triconex

El malware TRITON también esta implementado para comunicarse con los dispositivos utilizando el protocolo propietario Tristation (protocolo que carece de documentación publica). La vulnerabilidad principal en Triconex, es la denegación de servicio, lo que provoca en este tipo de dispositivos la caída de toda la red de intercomunicación OT que depende del Triconex. Dicha vulnerabilidad DDoS se puede desencadenar enviando paquetes TSAA por el puerto UDP 1500.

Mitigación y protección:

Se deben tomar una serie de medidas adicionales para mitigar y controlar un posible ataque dcon malware de la familia TRITON:
Acceso físico: Un buen control al acceso físico a los controladores SIS, así como el resto de componentes hardware , deben mantenerse en espacios cerrados controlados por acceso limitado , monitoreados y accesibles solo para personal autorizado. Asimismo el switch físico en los controladores Triconex debe mantenerse en la posición "Ejecutar" durante las operaciones normales, a fin de limitar accesos o cambios malintencionados de un cambio de configuración no controlada o no autorizada.
Control y segmentación de la red: Mantener les dispositivos SIS en una red aislada y controlada.
Control de acceso remoto/logico:  Mediante cualquier sistema de conexión controladores SIS, ya sea una etehrnet, wifi, ,pendrive, vpn, vnc, teamviewer, etcétera, se debe requerir un sistema e autenticación fuerte y recomendable un Segundo Factor de Autenticación (2FA).
Escaneado permanente de la red: Instalar tecnologías de monitoreo de la red, de forma continua y sistemática con análisis del trafico en la misma. Implementar tecnologías de IA, con el fin de mejorar el análisis automático para detectar flujos de comunicación inesperados entre dispositivos, detección de nuevos dispositivos conectados, escaneo de todos los métodos de intercambio de datos entre la red.
Figura 10: Notificación de seguridad para TRITON de Schneider Electric

Schneider Electric lanzó una Notificación de Seguridad con nivel  "Importante" con pasos de mitigación específicos con respecto a sus controladores de seguridad Triconex. Schneider Electric recomienda verificaciones periódicas para las actualizaciones de la notificación de seguridad, incluidos los requisitos de configuración técnica específica.

Figura 11: Notificación de seguridad de ABB sobre TRITON/TRISIS

Dada esta posibilidad tan peligrosa, la empresa ABB también lanzó una Notificación de seguridad cibernética el 22 de diciembre de 2017 con pasos de mitigación similares para sus controladores de seguridad.

Autoría:

A ciencia cierta se desconoce la autoría del malware, ya que no se han notificado secuestros ni pagos en ninguna de las formas que se conoce hasta ahora el secuestro de sistemas o archivos. Todo indica que los objetivos y el daño a infligir, estaban muy claros, empresas energéticas muy bien definidas, aunque seguramente experimentaron con un objetivo mas amplio (Arabia Saudí, Asia y Europa). Todo este desarrollo, conocimiento del producto, así como de algún protocolo sin documentar a ataques de estado.

Autor: Jordi ubach (@jubachm)

Más referencias de seguridad en Sistemas de Control Industrial e Infraestructuras Críticas

- Infraestructuras Críticas y Sistemas Industriales: Auditorías de Seguridad y Fortificación
- Hacking de Dispositivos IIoT (Industrial Internet of Things)
- Libro de Python para Pentesters en 0xWord
- Libro de Hacking con Python en 0xWord
- PLCs de Allen Bradley envían la password de Administración
- Informe Mandiant sobre APT1
- Ataque de fuerza bruta a PLC Omron CJ2H CPU64-EIP
- Captura de claves en PLCs industriales CP1L-EM de Omron
- Tu industria en mis manos
- Qué fácil es ver las flaquezas de seguridad de algunos ICS (Sistemas de Control Industrial)
- SCADA: Halcones heridos en tus Infraestructuras Críticas
- Otra de passwords por defecto en Honeywell WebStat (Niagara Web Server)
- Concentradores de Telegestión de Contadores PLC de Telecon integran Latch
- Shodan y sistemas SCADA
- Intentan envenenar agua de un planta depuradora en UK
- La historia del carnicero agradecido
- Unidad de (des)cuidados intensivos
- Hundir la flota por computador: Fallos de seguridad en miles de barcos navegando
- AntiDDoS para dispositivos IoT usando un GSM Shield hecho con Stack SMS

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares