Desmontando Modbus

Publicado el 08/03/2016, por INCIBE
Desmontando Modbus

Modbus es un protocolo de comunicaciones industrial de especificación pública, ampliamente extendido dentro del sector y basado en una arquitectura maestro/esclavo. No posee grandes restricciones a la hora de manejar bloques de datos dentro de un sistema industrial y la implementación del mismo es sencilla, requiriendo poco desarrollo. Existen dos implementaciones, Modbus serie (con modos de funcionamiento ASCII y RTU) y Modbus/TCP.

Para conocer más detalles sobre el protocolo, así como sus debilidades, se aconseja revisar el estudio Protocolos y seguridad de red en infraestructuras SCI.

Debilidades del protocolo

En Modbus, el modo de operación de los elementos esclavos consiste en responder siempre a los paquetes que reciben. La herramienta ModScan se aprovecha de esta característica realizando peticiones TCP (por tanto sólo está disponible para implementaciones de Modbus/TCP) al puerto estándar de Modbus, el 502, y realizar de esa forma un descubrimiento de los esclavos conectados a la red, tal y como se puede ver en la siguiente imagen.

Descubrimiento de las IP de esclavos Modbus

- Descubirmiento de IPs de esclavos Modbus con Modscan -

Búsqueda más avanzada e identificación de los ID Modbus

- Afinamiento de la búsqueda de esclavos e identificación de IDs Modbus -

Una vez identificados los esclavos es fácil realizar la captura de tráfico con cualquier herramienta dedicada a la captura de tráfico de red. El análisis de las capturas muestra que las comunicaciones no van cifradas, lo que posibilita la identificación y el análisis directo de la información transmitida y el modo de operación. La siguiente imagen presenta una captura de tráfico con el análisis de la trama.

captura wireshark

- Captura y análisis de tráfico Modbus por Wireshark -

Modbus no realiza autenticación de sesiones, lo que permite la suplantación tanto de esclavos como de maestros. La suplantación de esclavo también es posible y permitiría el envio de datos falsos al maestro, pero requiere de un ataque de tipo IP Spoofing previo.

Maestro Modbus falso

- Esquema de suplantación de maestro Modbus -

La carencia de filtrado en el modo de operación al responder a todos los paquetes recibidos unido a la posible suplantación de maestros da como resultado otra vulnerabilidad relacionada con la disponibilidad. Esto posibilita causar denegación de servicio a través de un envío masivo de paquetes por múltiples maestros atacantes hacia un mismo esclavo. En esta situación el esclavo tratará de responder a todas las peticiones hasta provocar una denegación de servicio por saturación. En entornos simulados o virtualizados este ataque es más difícil de ejecutar debido a la mayor capacidad de comunicación de los ordenadores, pero es factible sobre elementos de campo reales como PLC que implementen este protocolo.

Sobre aquellas implementaciones serie de Modbus se pueden comprobar las mismas debilidades, y es posible ejecutar las mismas pruebas que sobre una implementación Modbus/TCP, aunque para algunas pruebas es necesario hardware accesorio o configuraciones de red específicas.

Contramedidas

Las debilidades de Modbus emanan de la especificación, lo que supone que son intrínsecas al protocolo y que, dado que no se prevé evolución de la especificación, hace necesario la introducción de elementos de seguridad adicionales que ayuden a mitigar estos fallos de seguridad.

Partiendo de la opción más sencilla, la primera medida a tener en cuenta es la adopción de alguna estrategia de cifrado de las comunicaciones. El cifrado de las comunicaciones impedirá el análisis de la información en tránsito en caso de ser capturado el tráfico.

Los dispositivos que implementan este protocolo generalmente no tienen capacidad para cifrar las comunicaciones, por lo que es necesario utilizar herramientas externas que se encarguen del cifrado y descifrado de la información que viaja por el canal Ethernet.

Esta solución, aunque efectiva, es difícilmente aplicable debido a que el uso de herramientas de cifrado acarrea problemas de gestión y distribución de contraseñas, además de ser necesario un elemento que permita el cifrado y descifrado de la información por cada uno de los equipos industriales que vayan a utilizar el protocolo Modbus.

Por tanto, para controlar el tráfico entre los esclavos y el maestro la solución más implementada es la utilización de cortafuegos. Los cortafuegos convencionales permiten el control del tráfico a nivel de red, con lo que se permite establecer como autorizadas las direcciones del maestro y los esclavos, con lo que se evitan algunos ataques de suplantación. Un cortafuegos de aplicación permitiría revisar incluso la parte de datos de la trama.

Existe Modbusfw, un módulo para iptables con el que realizar un filtrado de tráfico a nivel de capa de aplicación para asegurar redes que usan el protocolo Modbus/TCP. Permite el filtrado de paquetes de tráfico Modbus, distinguiendo por ID de esclavo, código de función, tamaño del paquete o por número de referencia. De esta manera se evita que se pueda escribir en equipos que sólo deben recibir lecturas o viceversa, y filtrar el uso de códigos de función de diagnóstico (como los utilizados en algunas herramientas de escaneo de redes ModBus), etc.

El cortafuegos permite controlar el tráfico en diferentes redes, pero para detectar otro tipo de acciones es útil la utilización conjunta de sistemas de detección y prevención de intrusos (IDS/IPS).

Para el IDS Snort, y todos aquellos basados en él, existe una extensión para interpretar el protocolo Modbus. Es posible definir reglas de control del tráfico para Modbus en base a los valores que deben contener los diferentes bytes de datos de una trama Modbus/TCP.

El uso de sistemas IDS/IPS para la supervisión del protocolo Modbus permite reconocer el uso de funciones no permitidas, el envío de paquetes de datos desde direcciones IP no controladas ayudando, por ejemplo, en la detección de posibles ataques DoS.

Reglas Snort

- Reglas de Snort para detectar tráfico Modbus inadecuado -

El uso combinado de las dos herramientas mencionadas permite minimizar los ataques de suplantación de esclavo o maestro, los de denegación de servicio, los escaneos de red, etc. Si en lugar de IPS se dispone de IDS, será posible detectar los ataques, recibiendo las alertas correspondientes; pero se pierde la capacidad de reacción.

Finalmente, y como medida adicional de seguridad, aunque no para protegerse frente ataques sino para estar informado, sería conveniente la instalación de un sistema de gestión de eventos o SIEM que se encargue de recoger todas las alertas generados por el IDS/IPS, el cortafuegos, la información relevante de otros dispositivos de red, etc.

Ejemplo de ataque y efectos de las contramedidas

El video siguiente muestra un sistema de control implementado en laboratorio con elementos no simulados. Este sistema de control consta de un PLC con varias entradas y salidas y que se utiliza para gestionar un sistema de distribución de agua con cuatro tanques de almacenamiento, un abastecimiento, situado a la izquierda del esquema y dos núcleos de consumo a la derecha de la imagen. Además el sistema dispone de diferentes válvulas y bombas que permiten controlar el flujo de agua entre los tanques para garantizar el suministro a los puntos de consumo.

HMI del proceso industrial

- HMI del control del sistema de tanques -

Las comunicaciones entre el PLC y el equipo que recoge los datos se realiza a través del protocolo Modbus/TCP utilizando el puerto estándar.

- Video suplantación de maestro y bloqueo de órdenes de escritura -

Como se ve en el vídeo, es posible suplantar a un maestro Modbus y enviar repetidamente órdenes de escritura al PLC esclavo, forzando de esta forma el estado de una variable, lo que impide el correcto funcionamiento del sistema.

Para evitarlo, se instala un cortafuegos de aplicación. En el momento en el que este se activa se impiden las órdenes de escritura de la variable, por ser tráfico no autorizado en el cortafuegos y el funcionamiento del sistema vuelve a ser correcto.

Infografía Modbus