A modo de finalización de esta serie de artículos, a continuación se describen las lecciones aprendidas de esta práctica, que fueron las siguientes:
- El protocolo MODBUS es un protocolo enormemente inseguro, al no haber sido planteado en su diseño un sistema de autenticación o comprobación de protocolos. Cualquier elemento que esté en la misma red que un sistema PLC que se comunique con MODBUS sobre TCP tiene la capacidad de influir y alterar los valores de dicho PLC.
- En función de la implementación del sistema HMI puede ser más o menos sencillo percibir cambios en los valores del PLC. En este caso, al leerse los cambios cada 500ms, es difícil ocultarse a dichas variaciones.
- Es esencial una adecuada segmentación de la red, para evitar explotación de amenazas mediante movimientos laterales E-O. Esta segmentación puede realizarse mediante un sistema cortafuegos, bien ruggerizado o no, con inspección de protocolos a nivel industrial. Dicha inspección profunda de paquetes, además de crear las reglas convencionales de tráfico permitido en función del origen y destino, permite crear reglas más finas, como por ejemplo otorgar permiso para realizar sólo operaciones de lectura para determinados orígenes (ej.: sistemas de monitorización), y permisos de lectura y escritura para los sistemas de control (HMI), además de denegación para el resto de elementos de la red.
Cortafuegos Check Point de categoría industrial
- Una buena manera de proteger un dispositivo PLC, además de la anteriormente expuesta, es mediante un Gateway que permita implementar las funciones adicionales de autenticación que el propio PLC puede no permitir en función de su implementación.
- En lo referente a los sistemas de reconocimiento utilizados, como nmap, es necesario afinar con la configuración del escaneo, ya que un escaneo masivo como el planteado puede levantar alertas en el sistema de correlación de alertas, si existe, al realizar conexiones masivas a los elementos de la red.
VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)
Etiquetas: cortafuegos, hacking, hmi, modbus, tcp
En el artículo anterior se hacía referencia al objeto del hacking lab y se daba una visión general de la arquitectura implementada. En este artículo se va a entrar en un mayor detalle de los elementos que forman parte de dicha arquitectura: HMI, PLC, actuador TCP y plataforma de ataque.
HMI de control de luces LED
El HMI de control simula un sistema SCADA. Está implementado mediante Node-Red, sistema software que permite la programación basada en flujos para desarrollar sistemas para Internet de las Cosas. A fin de poder realizar la implementación del sistema de control industrial, se ha hecho uso de las siguientes librerías:
- Modbus,que permite implementar un sistema de comunicación basado en Modbus TCP y Modbus Serie.
- Dashboard, que permite crear cuadros de mandos y aplicaciones web para interactuar con los flujos de control.
El sistema desarrollado consta de dos partes:
PLC de control de luces
El PLC que actúa como Master MODBUS se ha desarrollado igualmente haciendo uso de Node-Red con la librería MODBUS. En este caso se ha implementado la funcionalidad de Master Modbus, escuchando en el puerto 1502/TCP (frente al habitual 502/TCP por razones de permisos) de la Raspberry Pi que despliega los servicios de Node-Red.
PLC simulado con Raspberry Pi
El flujo Node-Red definido es el siguiente:
Flujo Modbus TCP del PLC simulado
Este flujo realiza dos funciones: la primera es levantar el servidor Master MODBUS, que escucha en la IP 192.168.0.39 por el puerto 1502/TCP. La segunda inyecta los valores por defecto en las 3 bobinas (posiciones de memoria 1 a 3) que se han definido para almacenar los valores de la iluminación LED RGB. En este caso, las tres bobinas se inicializan a cero (FALSE lógico).
Actuador TCP
El actuador TCP se ha implementado como un esclavo Modbus que consulta al PLC el estado de las tres bobinas que controlan el estado de los LED RGB. En función de la lectura realizada del valor de dichas bobinas, enciende o apaga la iluminación LED. Al ser tres las bobinas implementadas, la iluminación puede tomar un máximo de 8 valores combinados (considerando “apagado” como uno de los estados posibles).
La implementación del actuador se ha realizado mediante un dispositivo NodeMCU, que permite su programación mediante el IDE Arduino, con capacidades de conectarse a una red WiFi. Se ha hecho uso de la librería Modbus-Arduino para la implementación del cliente.
Actuador desarrollado con NodeMCU
Actuador con iluminación en azul
Actuador con iluminación en rojo
Kali Linux
Para simular la intrusión de un atacante externo se ha hecho uso de una Raspberry Pi con la distribución Kali Linux instalada. Kali Linux es una distribución de Linux especialmente pensada para servir de herramienta para realizar tests de intrusión en el ámbito del hacking ético y auditorías de seguridad de sistems de información.
Se ha realizado el siguiente flujo de ataque:
- Reconocimiento: Mediante ingeniería social (fuera del laboratorio) se ha determinado la existencia de un sistema de iluminación LED basado en Modbus.
- Escaneo: Una vez conseguido un equipo en la red, se ha procedido a un escaneo de la red en busca del dispositivos que escuchen en el puerto Modbus(habitualmente 502/TCP, pero para este caso se ha hecho uso de 1502/TCP) con ZenMap, cliente gráfico para NMAP.
- Ganar acceso: Una vez identificado el equipo Master Modbus, se ha realizado un proceso de escucha mediante modbus-cli, una herramienta desarrollada en Ruby disponible para Kali, que permite escanear y escribir sobre sistemas MODBUS. En una primera fase se ha escuchado hasta determinar las bobinas que controlan el sistema de iluminación, y en una segunda fase, se han realizado cambios sobre la misma.
- Para el laboratorio no se han realizado el resto de fases del hacking (mantener acceso ni borrar huellas).
En el siguiente artículo se detallarán los resultados obtenidos en el laboratorio.
VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)
Etiquetas: kali, linux, modbus, nmap, node-red, nodemcu, tcp
Por temas relacionados con un máster de ciberseguridad industrial que estoy cursando he tenido que preparar una serie de ejercicios para el mismo, entre los que se encuentra la realización de un hacking lab. La idea de un hacking lab es preparar un entorno controlado en el que poder hacer ataques a un sistema para aprender posibles vulnerabilidades, técnicas para desvelarlas, y herramientas que se pueden utilizar para ello, a fin de ser capaz en un futuro de proteger un entorno real con las lecciones aprendidas en el entorno de pruebas.
Para la realización de este hacking lab opté por preparar un escenario en el que se pudiera realizar un ataque a un entorno de control industrial que hiciera uso de comunicaciones basadas en Modbus sobre TCP. Modbus es un protocolo de comunicación industrial desarrollado en 1979, y que constituye un estándar de facto en los sistemas de producción industrial. El objetivo general es perturbar el funcionamiento de un sistema de iluminación LED cuyo sistema de control está implementado empleando Modbus sobre TCP. El mismo consta de los siguientes elementos:
- Una red plana que simula una red de control industrial. En este caso es una red del rango 192.168.0.0/24. Si bien en un caso real sería una red cableada, para este escenario de prueba es una red mixta cableada y WiFi, con un enrutador proporcionando conectividad a los distintos elementos de la misma.
- Un PLC que actúa como Master Modbus, y que permite controlar, mediante el uso de tres bobinas (coils), el encendido y apagado de un sistema de iluminación LED de colores rojo, verde y azul. Este PLC, al no tener disponible ningún dispositivo real disponible, se simula mediante el aplicativo Node-RED de IBM con una librería Modbus desarrollada al efecto. Este PLC (virtual) tiene la IP 192.168.0.39, y escucha en el puerto 1502 (por razones de privilegios en el dispositivo, no se ha hecho uso del puerto estándar 502/TCP de Modbus).
- Un actuador físico como Slave Modbus, que en base a las lecturas que realiza de los valores de las bobinas del Master Modbus, enciende y apaga los LEDs del sistema de iluminación. Este actuador físico se ha implementado con un dispositivo ESP8266 programado mediante Arduino IDE y librerías específicas. Las comunicaciones con el Master Modbus se realizan mediante protocolo Modbus sobre TCP. El actuador tiene la IP 192.168.0.34.
- Un HMI de control de las luces, que permite controlar el encendido y apagado de las mismas mediante una aplicación web tipo SCADA. Este HMI se ha desarrollado mediante el aplicativo Node-RED de IBM y las librerías gráficas para desplegar cuadros de mando, así como una librería MODBUS desarrollada al efecto. EL HMI tiene la IP 192.168.0.31.
- Un dispositivo atacante, que tiene como objeto descubrir sistemas Modbus en la red desplegada, e interferir los valores normales de operación de los mismos. Este dispositivo es una Raspberry Pi con Kali Linux instalado, teniendo la IP 192.168.0.99.
El siguiente diagrama de red muestra el sistema desarrollado:
Diagrama de la red
En siguientes artículos iré dando mayor detalle de los dispositivos del entorno, así como de los pasos dados en el hacking lab, además de las conclusiones obtenidas de la puesta en marcha del mismo.
VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)
Etiquetas: arduino, esp8266, hacking lab, kali, led, modbus, nodemcu, raspberry pi, tcp