Taller: Ataque MiTM en Modbus TCP
Taller: Ataque MiTM en Modbus TCP
CIBERSEGURIDAD
Especialidad Introducción a la
Ciberseguridad Industrial
Taller 5
Unidad 4. Sistemas de control y
automatización industrial,
protocolos más utilizados y sus
vulnerabilidades
Unidad 4
Taller15
TALLER 5:
ATAQUE «MAN IN THE
MIDDLE» A MODBUS TCP
Unidad 2
2
Actividad 1
Contenidos
Unidad 2
Actividad 1
Contenidos
Unidad 2
Actividad 1
CLONADO DE LA
MÁQUINA VIRTUAL
UBUNTU 1
Unidad 2
5
Actividad 1
1 CLONADO DE LA MÁQUINA VIRTUAL UBUNTU
En este apartado vamos a realizar el clonado de la MV Ubuntu 20.04 LTS que has utilizado en las anteriores prácticas
ya que necesitamos una tercera MV para realizar el ataque Man in the Middle.
Unidad 4
6
Taller 5
1 CLONADO DE LA MÁQUINA VIRTUAL UBUNTU
• Partimos de la MV identificada
como Entorno Industrial_Ubuntu
20.04 LTS en estado apagado.
Unidad 4
9
Taller 5
1 CLONADO DE LA MÁQUINA VIRTUAL UBUNTU
Unidad 2
11
Actividad 1
ARRANQUE DEL SIMULADOR QMODMASTER – MÁQUINA
2
VIRTUAL ORIGINAL
En este apartado vamos a arrancar la MV1
(la MV original) y vamos a arrancar la
aplicación QModMaster que nos permite
simular un servidor del protocolo Modbus.
Unidad 4
12
Taller 5
ARRANQUE DEL SIMULADOR QMODMASTER – MÁQUINA
2
VIRTUAL ORIGINAL
• Para conocer la dirección IP y la dirección MAC utiliza el comando «arp –a».
• Deberá aparecerte algo como esta tabla:
MV1
[Link] [Link]
Unidad 4
13
Taller 5
ARRANQUE DEL SIMULADOR QMODMASTER – MÁQUINA
2
VIRTUAL ORIGINAL
• En la terminal de la izquierda accede a la
carpeta donde se encuentra la aplicación
QModMaster y ejecútala:
cd Documentos/qModMaster-code-
0.5.2-3/build
Unidad 4
14
Taller 5
ARRANQUE DEL SIMULADOR QMODMASTER – MÁQUINA
2
VIRTUAL ORIGINAL
./qModMaster
Unidad 4
15
Taller 5
ARRANQUE DEL SIMULADOR QMODMASTER – MÁQUINA
2
VIRTUAL ORIGINAL
• En la terminal de la
derecha, ejecuta el
comando ifconfig
para consultar la
dirección IP que se ha
asignado al interfaz
de red (en nuestro
caso el enp0s3).
Unidad 4
16
Taller 5
ARRANQUE DEL
SIMULADOR
MODBUSPAL –
3
MÁQUINA VIRTUAL
CLONADA
Unidad 2
17
Actividad 1
ARRANQUE DEL SIMULADOR MODBUSPAL –
3
MÁQUINA VIRTUAL CLONADA
En este apartado vamos a arrancar la MV2 (la MV que has clonado) y vamos a arrancar la aplicación QModbusPal que
nos permite simular un esclavo del protocolo Modbus.
Unidad 4
18
Taller 5
ARRANQUE DEL SIMULADOR MODBUSPAL –
3
MÁQUINA VIRTUAL CLONADA
• Con el comando «arp -a» podremos ver la dirección IP y la dirección MAC de la MV2, y deberán aparecerte una
tabla parecida a la siguiente:
MV2
[Link] [Link]
Unidad 4
19
Taller 5
ARRANQUE DEL SIMULADOR MODBUSPAL –
3
MÁQUINA VIRTUAL CLONADA
• En la terminal de la izquierda
accede a la carpeta donde se
encuentra la aplicación ModbusPal
y ejecútala:
cd Documentos/modbuspal/
Ilustración 13: Se indica que se debe pulsar el botón de Run para poder
establecer la comunicación posteriormente con la aplicación ModbusPal.
Unidad 4
22
Taller 5
ARRANQUE DEL SIMULADOR MODBUSPAL –
3
MÁQUINA VIRTUAL CLONADA
• En la terminal de la derecha,
ejecuta el comando ifconfig para
comprobar la dirección IP que se
ha asignado al interfaz de red (en
nuestro caso el enp0s3).
Unidad 4
23
Taller 5
COMUNICACIÓN
4
ENTRE
QMODMASTER Y
MODBUSPAL
Unidad 2
24
Actividad 1
4 COMUNICACIÓN ENTRE QMODMASTER Y MODBUSPAL
cd Documentos/qModMaster-code-
[Link]/build/
./qModMaster
Unidad 4
25
Taller 5
4 COMUNICACIÓN ENTRE QMODMASTER Y MODBUSPAL
• Modifica la entrada «Slave IP» que nos aparece por la «[Link]», que es la dirección IP de nuestro
esclavo modbus y pulsa «OK».
Unidad 4
27
Taller 5
4 COMUNICACIÓN ENTRE QMODMASTER Y MODBUSPAL
Unidad 4
29
Taller 5
CREACIÓN DE
ESCLAVOS
5
MODBUSPAL –
MÁQUINA VIRTUAL
CLONADA
Unidad 2
30
Actividad 1
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
En este apartado se va a crear en la aplicación
ModbusPal de la MV2 dos esclavos modbus.
Unidad 4
31
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
• Desde la MV2, en la aplicación ModbusPal,
pulsa el botón «Run», para ponerla a la
escucha de peticiones modbus.
Unidad 4
33
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
• En la ventana principal de la aplicación nos
ha aparecido una nueva entrada identificada
por el esclavo número 1.
Unidad 4
35
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
Unidad 4
36
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
Unidad 4
37
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
Unidad 4
38
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
• En la nueva ventana que se nos ha abierto, selecciona la pestaña «Holding registers» y pulsa el botón «Add».
Rellena los datos para añadir «1 Holding Register». Pulsa el botón «Add», aparecerá 1 fila que representa «1
Holding Register».
Unidad 4
41
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
Unidad 4
42
Taller 5
CREACIÓN DE ESCLAVOS MODBUSPAL – MÁQUINA
5
VIRTUAL CLONADA
• En la aplicación QModMaster (MV2), pulsa el botón «Connect» y establece de nuevo la comunicación con la
aplicación ModbusPal.
Unidad 4
43
Taller 5
6
ETTERCAP KALI
LINUX ATAQUE
MAN IN THE
MIDDLE
Unidad 2
44
Actividad 1
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
Después vamos a configurar la herramienta Ettercap-graphical como paso previo para realizar el ataque MiTM al
protocolo Modbus TCP.
Ettercap-graphical es una herramienta que viene por defecto en Kali Linux y sirve para realizar ataques Man in the
Middle, ya que permite interceptar conexiones en vivo, filtrar contenido, etc., para realizar análisis de red y host.
Unidad 4
45
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
Unidad 4
47
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
• Esta herramienta lo primero que nos muestra es la ventana de configuración. Haz clic en el icono en forma de tick
(Accept) para confirmar los ajustes por defecto.
Unidad 4
49
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
Unidad 4
50
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
[Link] [Link]
Unidad 4
51
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
Unidad 4
56
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
Unidad 4
57
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
• Vuelve a la máquina de Kali Linux y, dentro de la herramienta de Ettercap, haz clic en el menú (representado, en
la parte superior derecha, por 3 puntos en vertical), selecciona la entrada «Targets > Current targets».
Ilustración 49: Haz clic en «menú > Ilustración 50: Clic en «current targets».
targets» en Ettercap.
Unidad 4
58
Taller 5
6 ETTERCAP KALI LINUX ATAQUE MAN IN THE MIDDLE
Unidad 4
61
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
62
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• Añade la información de la siguiente imagen al archivo que has ordenado crear. Guarda cambios pulsando la
combinación de teclas «Ctrl + X», pulsa «s» y «enter» para guardarlo en el archivo con el nombre que le hemos
indicado.
• El texto a copiar en el archivo es el siguiente:
#############################
# nombre: [Link]
# descripción: impide que se produzca la lectura del HR
(Holding Register) cuando el esclave es el número 2
#
#
# Creado para el: Incibe
# Fecha de creación: Marzo 2022
# Version: 0.1
#############################
Unidad 4
63
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
# Checking to see if the source is the PLC and the protocol is Modbus
# Note: The IP address will need to be updated for your PLC
if ([Link] == ’[Link]’ && [Link] == 502) {
# Test for Read Modbus Register function 0x03 Message
if ([Link] + 7== "\x05" || [Link] + 7 == “\x06” || [Link] == “\x15” || [Link] + 7 == “\x16”) {
# Descartando mensajes modbus para lectura Holding Register del esclavo nº 2
drop();
# Mostrando el mensaje cuando el filtro entra en funcionamiento
msg(“Bloqueando operación de escritura”);
}
}
Unidad 4
64
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
65
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Ilustración 55: Archivo de texto creado. Ilustración 56: Archivo de texto guardado.
Unidad 4
66
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
67
Taller 5
7 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
68
Taller 5
8
EJECUCIÓN DEL
ATAQUE MiTM
8.1 Enunciado ejercicio práctico 1
8.2 Solución ejercicio práctico 1
8.3 Enunciado ejercicio práctico 2
8.4 Solución ejercicio práctico 2
Unidad 2
69
Actividad 1
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
En este apartado se ejecuta el ataque MiTM-1 y se demuestra cómo se permiten operaciones de lectura desde la
aplicación QModMaster sobre el esclavo ModbusPal y, sin embargo, se bloquean operaciones de escritura.
Unidad 4
70
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
73
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
74
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
75
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
76
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Ilustración 66: Acceso a MITM menu. Ilustración 67: Confirmación de los parámetros
opcionales que aparecen por defecto pulsando
el botón «OK».
Unidad 4
77
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Este ataque va a consistir en la técnica de envenenamiento de la tabla ARP de cada uno de los sistemas operativos
que se ejecutan en las MV 1 y 2. De esta forma la MV3 se va a colocar en el medio de la comunicación para poder
modificar los mensajes modbus que reciba de la aplicación QModMaster.
Como hemos visto antes, conocemos las direcciones IP y direcciones MAC de nuestras tres máquinas virtuales.
Estos datos los puedes conocer desde la terminal de cada máquina con el comando arp –a.
Unidad 4
79
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Sin embargo, una vez realizado el envenenamiento de la tabla ARP, encontramos que la máquina Kali se va a situar en
medio de la comunicación, y por tanto, esta tabla que hemos visto varía un poco:
• En la comunicación de la MV1, si utilizamos el comando arp –a en la terminal de la MV1, vamos a ver la siguiente
tabla:
Máquina Dirección IP Dirección MAC
MV1 [Link] [Link]
MV3 [Link] [Link]
Unidad 4
80
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• En la comunicación de la MV2, si utilizamos el comando arp -a en la terminal de la MV2, vamos a ver la siguiente
tabla:
Máquina Dirección IP Dirección MAC
MV2 [Link] [Link]
MV3 [Link] [Link]
Unidad 4
81
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• Por último, para lanzar el ataque, haz clic en el icono en forma de triángulo (Start/Stop Sniffing).
Ilustración 69: Botón Start/Stop Sniffing desde Ilustración 70: Ataque lanzado.
el que se lanza el ataque.
Unidad 4
82
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• Desde la aplicación QModMaster (MV1), selecciona la entrada «Read Coils (0x01)», «Slave Addr» en 1 y «Number
of Coils» en 10. Pulsa el botón «Read /Write» y obtienes la lectura de los valores de las 10 coils.
Ilustración 73: Selección del botón «Read/Write». Ilustración 74: Con el botón Read /Write se
obtiene la lectura de los valores de las 10 coils.
Unidad 4
84
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• Modificamos la entrada «Function Code», seleccionando «Write Single Coils (0x05)». Editamos el valor de la bobina
y escribimos el valor 1 (el valor actual de esta bobina en el esclavo 1 es cero).
Unidad 4
86
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• Pulsa el botón
«Read/Write» y
aparece un error
donde se nos indica
que la escritura de
datos ha fallado por
un error de
«Timeout».
Unidad 4
87
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• Desde la aplicación
QModMaster (M1V) desconecta
la comunicación y comprueba
en la aplicación ModbusPal que
el valor de la bobina 1, del
esclavo número 1, no ha
variado. Ilustración 81: Aplicación QModMaster Ilustración 82: Se comprueba en la
con la comunicación desconectada. aplicación ModbusPal que el valor de la
bobina 1, del esclavo número 1, no ha
variado.
Unidad 4
89
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
90
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
91
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
• En el registro de información de la
herramienta se informa de este hecho.
Unidad 4
95
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
96
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
Unidad 4
98
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.2 Solución ejercicio práctico 1
Unidad 4
100
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.2 Solución ejercicio práctico 1
• Esta herramienta lo primero que muestra es la ventana de configuración. Haz clic en el icono en forma de V
(Accept) para confirmar los ajustes por defecto.
Unidad 4
104
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.2 Solución ejercicio práctico 1
Unidad 4
107
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.2 Solución ejercicio práctico 1
Unidad 4
109
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.3 Enunciado ejercicio práctico 2
En este apartado deberás crear un filtro para utilizarlo en el ataque MiTM sobre el protocolo Modbus. Este filtro
va a detectar y bloquear las operaciones de lectura que se produzcan utilizando el protocolo Modbus, sobre un
Holding Register a la dirección y puerto de destino donde se encuentra la aplicación ModbusPal pero debes
lograr que solo detecte y bloquee las operaciones de lectura cuando el esclavo sea el número 2.
Después, ejecuta el ataque Man in the Middle y demuestra cómo no se permiten operaciones de lectura desde
la aplicación QModMaster sobre el esclavo ModbusPal identificado con el número 2.
Unidad 4
110
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• En Kali Linux, ejecuta la aplicación de terminal Terminator y divide la terminal de forma vertical con el comando
Ctrl+Shift+E.
Unidad 4
111
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
Unidad 4
112
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• Accede a la carpeta Documentos/ettercap y ejecuta el editor de texto nano para crear un archivo de texto con el
comando «$ nano [Link]».
Unidad 4
113
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• Copia el texto de la imagen en el archivo que acabas de crear. Guarda los cambios pulsando la combinación de
teclas Ctrl+X, pulsa «s» y «enter» para guardarlo con el mismo nombre.
• El texto a copiar es el siguiente:
#############################
# nombre: [Link]
# descripción: impide que se produzca la lectura del HR (Holding Register) cuando el esclave es el número 2
#
#
# Creado para el: Incibe
# Fecha de creación: Marzo 2022
# Version: 0.1
#############################
Unidad 4
115
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
# Checking to see if the source is the PLC and the protocol is Modbus
# Note: The IP address will need to be updated for your PLC
if ([Link] == ’[Link]’ && [Link] == 502) {
# Test for Read Modbus Register function 0x03 Message
if ([Link] + 6== "\x02" && [Link] + 7 == “\x03”) {
# Descartando mensajes modbus para lectura Holding Register del esclavo nº 2
drop();
# Mostrando el mensaje cuando el filtro entra en funcionamiento
msg(“Bloqueando operación de lectura HR, esclavo nº 2”);
}
}
Unidad 4
116
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
Unidad 4
118
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
etterfilter -o modbusfilter-drop-
[Link] modbusfilter-drop-
[Link]
Unidad 4
120
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• En la aplicación ModbusPal (MV2), pulsa el botón «Run» para ponerla a la escucha de peticiones de conexión
modbus.
• En la aplicación QModMaster (MV1), pulsa el botón «Connect» y establece la conexión con la aplicación ModbusPal.
Unidad 4
124
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• Selecciona el nuevo archivo de filtro compilado (extensión .ef) que has creado anteriormente y pulsa el botón «OK».
Unidad 4
126
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
Unidad 4
132
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• Pulsa el botón «Read/Write» y verás que aparece un error donde se indica que la lectura de datos ha fallado por un
error de Timeout.
• Si lo consultas aparece un
error donde se indica que la
lectura de datos ha fallado por
un error de Timeout. Luego el
ataque MiTM sobre el
protocolo Modbus ha
funcionado.
• Desde la aplicación QModMaster desconecta la comunicación y luego vuelve a establecer y comprueba que nos
permite leer el valor de una Coil cuando el «Slave Addr» es 1.
Ilustración 135: Proceso de lectura (I). Ilustración 136: Proceso de lectura (II).
Unidad 4
136
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
• En el registro de
información de la
herramienta se informa
de este hecho.
Unidad 4
138
Taller 5
8 CREACIÓN DEL FILTRO PARA EL ATAQUE MiTM
8.4 Solución ejercicio práctico 2
Unidad 4
140
Taller 5
¡GRACIAS!
Unidad 4
Taller
1415