14 abril 2015

Protocolo industrial MODBUS: Captura y análisis de tráfico

Un campo que me ha llamado la atención últimamente es la Seguridad Industrial y Sistemas SCADA. Debido a la plataforma tecnológica que se emplea en estos sistemas, se requiere mayor esfuerzo en simular entornos industriales para fines de investigación, sin embargo resulta útil y justificado realizarlo, ya que con los antecedentes y crecimiento de amenazas cibernéticas, las tecnologías industriales representan un objetivo muy peligroso para posibles atacantes.

El objetivo de esta publicación es mostrar cómo simular una comunicación industrial tipo cliente-servidor, y capturar el tráfico con WireShark, esto con el fin de identificar posibles vulnerabilidades que pueden tener un protocolo industrial. El protocolo industrial elegido es MODBUS, este protocolo es ampliamente usado en sistemas de automatización y control. MODBUS puede implementarse en redes basadas en ETHERNET, RS-485 y otros.

Los programas necesarios son: Modbus Poll, Modbus Slave, CommView 6.5 (o RawCap) y Wireshark, los dos primeros pueden descargarse desde la página oficial http://www.modbustools.com/download.asp

CommView (o RawCap) son necesarios para capturar el tráfico local. Durante la instalación de CommView se selecciona “Enterprise Mode” esto con el fin de usar el modo “Loopback”. Al inicializar el programa preguntará si se desea instalar un controlador, por lo general nos encontraremos sobre LAN o ADSL, así que la repuesta es no.

En el caso del software RawCap, se trata de un ligero sniffer que no requiere la instalación de drivers, sin embargo si requiere la librería WinPcap. Su uso es tan sencillo como copiar el fichero y ejecutarlo. En cuanto a su funcionamiento el RawCap trabaja con dos argumentos, la dirección IP (de la interfaz) y el fichero destino.

Una de las características más importantes es que permite capturar “loopback”, conexiones PPP o Wireless. Sin embargo no es compatible con Windows Vista y Windows 7, ya que el método para capturar “raw sockets” en estos sistemas es distinto y solamente deja almacenar los paquetes que se reciben (Windows 7) o los que se envían (Windows Vista).

Entorno Virtual

2 máquinas virtuales (Master y Slave) con direcciones IP en el mismo segmento de red, en este caso:


  • Master
    • Windows 7 Professional Media Center Edition x64
    • IP: 192.168.1.35
  • Slave
    • Windows 7 Home x64
    • IP: 192.168.1.36

Posterior a la instalación de ambas máquinas virtuales es necesario comprobar la comunicación entre ambas.

Configuraciones

En la virtual “Slave”. Se instala el software “Modbus Slave” y se ejecuta, se pulsa F3 (aparecerá una ventana indicando que se trata de “trial”, se debe pulsar “Register Later”), y se establece la opción “Connection:” en “Modbus TCP/IP”, el resto de los campos de define por defecto.


En el otro ordenador se debe instalar y ejecutar “Modbus Poll”, luego oprimir F3 y continuar de similar manera a lo anterior, con la opción “Connection:” en “Modbus TCP/IP”, y el resto por defecto.


En este punto se observa cómo va ascendiendo los valores de la transmisión (Tx) en el Master (Modbus Poll). Desde “setup” podemos cambiar diferentes opciones, a simple vista se observa: log, resetear el contador, podemos variar el “Scan Rate”, etc.

En el caso de “Slave”, se puede escoger la primera “ID” y definir el alias que se desee (humedad ambiental, velocidad del viento, caudal, presión, etc), y establecer un valor deseado, teniendo en cuenta que existe la opción para incrementar este valor automáticamente cada cierto tiempo que pasa. No sólo asciende en Slave, sino que también lo veremos en el Master.



Pruebas realizadas

Ahora empezamos con la captura de datos de la siguiente manera: Abrir CommView (elegí este programa por razones de compatibilidad, se puede usar también RawCap), luego ir a “capturar datos”.

En el programa al lado de” play” y “stop” se selecciona “Loopback”, para capturar el tráfico local, luego se selecciona la pestaña “Reglas”, y se elige “Puertos “, “Agregar registro – Ambos a 502“, de esta forma sólo se ve lo que entra y sale de ese puerto, dicho puerto corresponde al protocolo Modbus.

Con Modbus en funcionamiento, se debe seleccionar play y posteriormente se obtendrá un resultado similar al siguiente:


 

Se observa como en Modbus Master comienza a incrementar el número de paquetes transmitidos (Tx), por otro lado se van actualizando los dos registros al mismo tiempo que se incrementan los registros en Modbus Slave. Por lo que, si se modifica el valor de uno de los registros en el Master se actualiza el valor del registro en el Slave.

Si se desconecta Modbus Slave, se observa cómo se producen errores “Write Error” en el Modbus Poll. Para ello se selecciona desconectar en Modbus Poll, luego se selecciona desconectar en el Modbus Slave.

Es posible observar el inicio y finalización de la conexión TCP así como las tramas Modbus, dentro de las tramas se encuentra el campo “data vga” en el mismo se aprecia sucesivos envíos y los cambios de valor en los registros.

Una vez guardados los datos, estos pueden visualizarse en Wireshark, se observan los números aleatorios incrementándose, los cuales fueron definidos anteriormente.


Los parámetros  capturados se muestran en la siguiente imagen:



Conclusiones

Los paquetes transmitidos bajo el protocolo Modbus son ligeros en comparación a los protocolos tradicionales. Esto es perfectamente entendible teniendo en cuenta que se necesita un “Delay” muy bajo en sistemas industriales, donde la precisión en términos de tiempo (microsegundos), es muy importante.

Al ser las tramas cortas, los datos se transmiten casi instantáneamente. Los datos son transportados en TEXTO CLARO. Este hecho indica la falta de algoritmos criptográficos, lo cual ayuda a acelerar la transmisión por razones de funcionalidad.

No obstante, esa simplicidad en las comunicaciones también implica una gran vulnerabilidad a cierto tipo de ataques así como la lectura/escritura de datos por parte de terceros (MITM por ejemplo).

Cualquier incidencia en uno de los dos equipos, ya sea un fallo del protocolo de comunicaciones, hardware de red o un “cuelgue” momentáneo debido a un gran consumo de CPU o RAM, tanto del cliente como del servidor, puede originar afectar negativamente a la sincronización o incluso una pérdida de datos, lo que conllevaría a un mal funcionamiento de dispositivos industriales. Se debe tomar en cuenta también que una amenaza no necesariamente puede ser una persona, existe la posibilidad de que un malware especialmente diseñado pueda recolectar y manipular las comunicaciones industriales de tipo MODBUS, tal y como fue el caso de STUXNET.

Un saludo y muchas gracias a SecurityByDefault por brindarme un espacio.

Artículo cortesía de César Cuenca (@ccuencad)

7 comments :

Muriel dijo...

Muy buen post César! Enhorabuena y a seguir posteando ^^

dffgh dijo...

Grupos terroristas??, no mi niño el .......... eres tú. No ves que tienen el pentagrama hacia abajo. Si el pentagrama está hacia arriba que quiere decir?.
Un poco más de cordura a la hora de poner tonterías. Si han hackeado la web es que han encontrado pruebas de los delitos de lesa humanidad que comete EEUU cada segundo.

Aristides Toledo dijo...

creo que este campo es muy poco explotado en el ambito de la seguridad buen post e interesante

Tomas dijo...

De lejos el mejor post de SbD en 2015 !! Muy muy MUY bueno !!

Hodan dijo...

Practica1 curso INTECO SCADA

La Sra. Jane Freeman dijo...

Buenos días señor / señora,

Esta es una buena oportunidad para obtener un préstamo. Ofrecemos préstamos de todo propósito y nuestra tasa de interés es del 3% y nuestro proceso de préstamo es muy rápido también.

Estamos dispuestos a hacer todos sus problemas financieros una cosa del pasado. Si usted está realmente dispuesto a resolver sus problemas financieros. Contacte con nosotros ahora a través de correo electrónico con el fin de proceder a la transacción.

Nuestro correo electrónico es: excelsiorcreditor07@hotmail.com

Esperamos hacer negocios con usted.

Saludos,

La Sra. Jane Freeman.

Zerok dijo...

+1 Yo también lo hice, pero aun así esta bien que hagan un post y que se lo muestren a un publico mas grande