Laboratorio básico de emulación sistemas ICS Parte 2/3

Partiendo de la imagen de la primera parte vamos a empezar con las configuraciones de los esclavos:

Reactor 1:

Para ello vamos a configurar el PLC1 en el Modbus_Pal, de la siguiente manera:

Una vez ejecutado el comando sudo java -jar Modbus_pal.jar se ejecutará el programa como vemos a continuación:

Damos a ADD en la parte de Modbus Slaves y añadimos 1 para asignarle el nodo número 1 y ponemos el nombre de temp que será el nodo que lea la temperatura:

Hacemos lo mismo con Status poniendo en slave 2 y en slave name status quedando de la siguiente manera:

Ahora presionamos sobre el icono del “ojo” en el slave temp:

Configuramos los coils y los holding registers quedando de la siguiente manera:

Holding registers:

Coils:

Hacemos lo mismo con el slave Status configurando coils en 1 y holding registers en 1, una vez acabado presionamos en RUN:

Si hacemos un sudo netstat -putona | grep 502 deberíamos de ver los siguientes:

Nota: debéis ejecutar el modbus_pal.jar como sudo si no no levantara el puerto.

Nota2: si solo os abre el puerto en IPv6 podéis usar el siguiente comando para poder poner a la escucha en protocolo ipv4, sudo java -Djava.net.preferIPv4Stack=true -jar ModbusPal.jar

El reactor 2 omito la config dado que es exactamente igual que el reactor 1.

Scada (Scada-LTS)

Nos logueamos en el Scada-LTS con admin:admin :

Nos vamos a la pestaña de data sources donde vamos a configurar los orígenes de donde se van a obtener los datos, es decir, aquí es donde vamos a meter la configuración de los PLC:

Una vez en data sources le damos al “más” de la esquina superior derecha y configuramos los datos, según la imagen que pongo a continuación:

El host será la IP de la máquina que simula el PLC (Modbus_Pal).

Una vez creado daremos al “asterisco” para ponerlo en verde y que quede activado, y terminamos la configuración como se ve en la imagen. Una vez acabado se dará al botón “read data” y el scada leerá la configuración del holding register del PLC1 slave con nombre temp.

Realizado esto daremos al botón “más” para crear un DataPoints:

Debemos cercioramos que el “asterisco” del datapoint queda marcado en verde. Una vez acabado nos iremos a la pestaña Watchlist y crearemos uno de la misma manera:

Con esto vamos a crear un proceso que monitorice el plc en tiempo real (en este caso cada 10 segundos) y lea los registros escribiéndolos en una gráfica que al variar el valor del holding register del plc1 slave temp, estos se van actualizando en el scada dejando la monitorización en la gráfica:

Para crear el resto de registros se realizaría de la misma manera variando la configuración, dejo que esto lo experimente el lector y con ello se daría por terminada esta segunda parte del laboratorio.

En la siguiente veremos algunos ataques básicos para la modificación de estos registros a través de ataques de MitM básicos.

Contribución gracias a Carlos Antonini

Serie Laboratorio básico de emulación sistemas ICS: Parte 1, Parte 2 y Parte 3

Comentarios