Un PLC (Programmable Logic Controller) es un dispositivo electrónico que se programa para realizar acciones de control automáticamente. Viene a ser una computadora digital. Se usa en automatización desde 1970 y básicamente, es un sistema integrado con una CPU, memoria RAM, ROM, módulos de E/S, etc. Se le traspasa el programa, se ejecuta el programa y el programa decide qué hacer con los datos de entrada que detecta a partir de los módulos de entrada.

Estos dispositivos pueden ser programados según la lógica deseada, y sus módulos de salida controlan instalaciones en la vida real.

Podemos ver los PLC en muchos lugares diferentes (control de presas, subestaciones, distribución de gas, petroquímica, etc.). ¿Imaginan lo que sucede si hackean esos PLC, si hacen que se bloqueen o cambian su configuración? Se pueden llegar a causar incluso daños físicos.

¿Cuáles son los problemas con los PLCs actuales?

  • El coste.
  • La confianza en el sistema heredado. Los PLCs se diseñaron hace 40 años, lo que supuso un gran problema, ya que se creó en un momento en el que no existía Internet, por lo que los protocolos no son seguros para la comunicación.
  • Utilizar protocolos no seguros para comunicarse.
  • La mayoría de las empresas prefieren parchear antes que rediseñar.
  • Código cerrado.

Comunicación PLC: Protocolos SCADA

A continuación, vamos a hablar un poco de los protocolos de PLC.

La mayoría de los protocolos actuales derivan de comunicaciones de serie heredadas. Si recordamos el estándar de comunicaciones 485, cuando se conecta un grupo de dispositivos a un cable serie, todos los dispositivos reciben el mismo mensaje y todos los dispositivos deciden si aceptarlo o no. ¿Esto es bueno para hackear, no? Sencillamente se escucha el bus y se consigue todo. No hay autenticaciones, no hay integridad y no hay confidencialidad.

Los protocolos más populares son Modbus.

Protocolo SCADA más popular: Modbus

Es el más popular, alrededor del 90% de PLCs usan este protocolo. Está abierto, probablemente esta sea la razón por la que todos admiten Modbus, porque no requiere de ninguna licencia. Modbus puede certificar un dispositivo para asegurar que dicho dispositivo realmente cumple con todos los estándares, pero no tiene por qué hacerlo realmente, no hay licencias.

Protocolo
Trama Modbus

El primer byte es un ID esclavo, el cual es una dirección única porque está basada en una red en serie, así que se tiene que tener un camino para adrezar un dispositivo. El código de función le dice al dispositivo esclavo qué hacer y varía entre lectura o escritura a más áreas de memoria. Los datos dependen del código de función que se esté usando.

Y, finalmente, el CRC es solo una verificación de errores. Se trata de verificar si hay algún error físico que ocurra en la transmisión. Si alguien manipula la tensión, se cambian los datos, se recalcula el CRC y se le envía de nuevo al PLC y el PLC lo aceptará (estos son los códigos de función más utilizados). Hay códigos de función para leer salidas digitales, para leer entradas digitales y para leer y escribir registros. Se está trabajando con la memoria, por lo que Modbus le brinda acceso “gratuito” a la memoria del PLC. Se puede leer lo que quiera y se puede escribir lo que quiera sin autentificación. ¿Qué hacker no ama eso?

Actualizaron Modbus para que sea compatible con las redes TCP/IP, lo que significa que agregaron una trama encima de la trama Modbus.

Trama Modbus en TCP

Consta de un ID de transición para realizar un seguimiento de todas las transiciones que está realizando, por lo que, si el host realiza una transición, realiza un número aleatorio en ese ID de transición, por lo que cuando recibe una respuesta, puede recibir un montón de respuestas de el mismo dispositivo esclavo y coincidirá con el ID de transición para asegurarse que la respuesta esté relacionada con la consulta que estaba realizando.

Originalmente parece ser que Modbus estaba destinado a trabajar también en otros protocolos. Entonces, este campo, fue creado porque diferentes valores en él significan diferentes protocolos. Casi siempre se ve el 00, el cual está relacionado con Modbus.

Cuando hablamos de la longitud hacemos referencia al número de bytes que hay.

Y finalmente, Unit ID, es la identificación de esclavo. Lo mantuvieron en la trama porque a veces se realizan conversiones entre redes TCP/IP y redes en serie. Normalmente para los PLCs este byte no significada nada, aceptan cualquier cosa.

Escenarios de ataque

Escenario de ataque

Existen varios escenarios factibles. Simplemente se puede interrumpir la comunicación causando una denegación de servicio. Se puede interceptar el mensaje y leer el contenido porque no hay cifrado, no hay confidencialidad en absoluto. De igual modo, se puede modificar el mensaje, recibiéndolo en plano, modificando el contenido y devolviéndolo. Un ataque interesante sería también la inyección, se puede, sencillamente, enviar datos cualesquiera.

Contramedidas

La solución frente a estos ataques es contar con cortafuegos para que controlen el tráfico a nivel de capa de aplicación. Contar también un SIEM para entender los datos recibidos. Cifrar las comunicaciones. Contar con un Sistema de Detección de Intrusos (IDS) para controlar actividades inapropiadas o extrañas y así poder prevenirlos (IPS).

Sothis investiga y trabaja en Seguridad Industrial para que cualquier instalación cuente con las mejores opciones para su crecimiento sin miedo a ningún ataque de este tipo.