Máquina virtualbox ejecutando ubuntu 192.168.2.100. Descargamos el esclavo http://www.modbusdriver.com/downloads/diagslave.2.12.zip . descomprimimos y le damos permisos de ejecución Lanzamos con sudo para poder abrir puertos por debajo del 1024 en ubuntu sudo ./diagslave
Máquina maestro con ubuntu 192.168.2.200 . Descargamos el maestro http://www.focus-sw.com/assets/files/products/fieldtalk/modpoll/modpoll.3.4.zip Descomprimimos y le damos permisos de ejecución Lanzamos con sudo para poder abrir puerto por debajo del 1024 sudo ./modpoll -m tcp 192.168.2.100 Arrancamos también el wireshark y ponemos el filtro modbus
Las comunicaciones MODBUS se pueden realizar en modo ASCII o en modo RTU. En modo ASCII los bytes se envían codificados en ASCII, es decir, que por cada byte a transmitir se envian dos caracteres ASCII ( 2 bytes ) con su representación hexadecimal. En modo RTU se envían en binario, tal cual. En el modo ASCII las tramas comienzan por 3AH (carácter ':'), y terminan en 0DH-0AH (CR LF Carrier Return Line Feed) y cada byte se envía como dos caracteres ASCII. En modo RTU no se utiliza indicador de inicio y final de trama.
Como se puede ver en las capturas, la secuencia básica en las comunicaciones MODBUS consiste siempre en una trama de pregunta, seguida de su correspondiente trama de respuesta
Además de lo anterior hay documentadas varias vulnerabilidades http://tools.cisco.com/security/center/viewAlert.x?alertId=23280