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

No hay comentarios:

Publicar un comentario