jueves, 27 de febrero de 2014

Ataque de fuerza bruta a PLC Omron CJ2H CPU64-EIP


Recientemente contaba en un importante portal dedicado a la automatización industrial cómo había tenido que improvisar “on the fly” un ataque por fuerza bruta contra CX-Programmer para liberar los permisos de lectura de programa en un PLC Omron modelo CQM1-CPU43 protegidos por un código decimal de cuatro dígitos - 10.000 combinaciones -.

Los motivos que permitieron el éxito del ataque fueron dos. Por un lado la CPU que con una antigüedad de 16 años como mínimo no limita el número máximo de intentos de liberación de permisos que se pueden realizar mediante peticiones a su puerto serie y  por otro lado está el tema del software, que tampoco tiene limitaciones en este sentido.

Que la CPU no limite el número de intentos por el puerto serie tiene cierta lógica cuando hablamos de equipos tan antiguos nacidos en tiempos menos preocupados por la seguridad en la electrónica industrial ya que en modelos más modernos de esa misma CPU sí que fue limitado el número de intentos que se podían hacer para desbloquear un sistema, pero me resultó algo más extraño que el software no implementara ya ningún control porque estamos hablando una versión actual del mismo.

Además, en la prueba que realicé el ataque se producida conectado al cable serie, con las limitaciones de tiempo y de necesidad física de conectarse cerca, pero ¿qué pasa con las comunicaciones TCP/IP que ya llevan este tipo de controladores? ¿Estarían protegidas contra ataques de fuerza bruta?

Un ataque de fuerza bruta a un PLC por TCP/IP

El primer paso fue el de pedir a Omron las especificaciones del protocolo FINS (Factory Intelligence Network Service) para buscar el comando de liberar la protección, pero por algún motivo han decidido no poner este comando en la lista del manual “Sysmac CS/CJ/CP Communications Commands Reference Manual” que me enviaron.




Como ya pudimos ver cuando capturábamos las claves de un PLC mediante un ataque MITM, Omron no cifra las comunicaciones entre el PLC y su propio software de programación. Este software de hecho utiliza el propio protocolo FINS para la comunicación con el PLC, así que fue sencillo analizar mediante Wireshark el proceso de intento de liberación de protección para ver la trama enviada del software de controla al PLC.

Continuar leyendo...