0% encontró este documento útil (0 votos)
434 vistas120 páginas

Curso de Ciberseguridad Industrial

Este documento describe cómo instalar y configurar herramientas como Scapy, s7scan e ISF para analizar y explotar vulnerabilidades en sistemas de control industrial y automatización. Explica cómo actualizar Kali Linux, instalar Python, clonar repositorios de GitHub y ejecutar las herramientas para escanear y comunicarse con PLC, protocolos industriales y simuladores de entornos industriales.

Cargado por

QueTeDenPolCuloo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
434 vistas120 páginas

Curso de Ciberseguridad Industrial

Este documento describe cómo instalar y configurar herramientas como Scapy, s7scan e ISF para analizar y explotar vulnerabilidades en sistemas de control industrial y automatización. Explica cómo actualizar Kali Linux, instalar Python, clonar repositorios de GitHub y ejecutar las herramientas para escanear y comunicarse con PLC, protocolos industriales y simuladores de entornos industriales.

Cargado por

QueTeDenPolCuloo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CURSO ONLINE DE

CIBERSEGURIDAD
Especialidad Introducción a
la Ciberseguridad Industrial

Taller 2
Unidad 4. Sistemas de control y
automatización industrial,
protocolos más utilizados y sus
vulnerabilidades

1
Contenidos

1 EXPLOTACIÓN DE VULNERABILIDADES OT 4

2
INSTALACIÓN Y CONFIGURACIÓN 6
DE SCAPY

INSTALACIÓN Y CONFIGURACIÓN DE 17
3
OTRAS HERRAMIENTAS
ARRANQUE Y CONFIGURACIÓN DEL
4 37
ENTORNO INDUSTRIAL

ARRANQUE DE LOS SIMULADORES DEL


5 45
ENTORNO INDUSTRIAL

Unidad 1
Introducción a la tecnología
Contenidos

CONFIGURACIÓN DEL ENTORNO DE LA 51


6
MÁQUINA ATACANTE

7 ICSSPLOTATION 60

8 SMOD 72

9 EJERCICIO PRÁCTICO 1 103

Duración total del taller: 1 hora y 15 minutos

Unidad 1
Introducción a la tecnología
EXPLOTACIÓN DE
VULNERABILIDADES
OT 1

Unidad 1
Introducción a la tecnología
4
1 EXPLOTACIÓN DE VULNERABILIDADES OT

En este taller, aprenderás sobre el uso de los siguientes frameworks y herramientas para explotar vulnerabilidades y
debilidades en dispositivos OT usando la máquina atacante Kali Linux:
• S7SCAN.
• ISF (Industrial Exploitation Framework).
• SMOD (MODBUS Penetration Testing Framework).

Unidad 4
Taller 2
5
INSTALACIÓN Y
CONFIGURACIÓN
DE SCAPY
2

Unidad 1
Introducción a la tecnología
6
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

En este apartado vamos a instalar Scapy, una


herramienta muy útil para el análisis y hacking en
redes, escrita en Python, y que nos permite crear y
manipular paquetes, escanear redes, etc. Para ello,
vamos a abrir nuestra máquina virtual Kali Linux que
tenemos descargada de las prácticas de la Unidad 2.
En ella vamos a instalar esta herramienta.
• Actualizamos la lista de software que contiene el
repositorio con los siguientes comandos: Ilustración 1: Actualización de software para la
instalación de Scapy con el comando sudo apt update.
 sudo apt update
 sudo apt upgrade

Unidad 4
Taller 2
7
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

Ilustración 2: Imagen de actualización de software para la


instalación de Scapy con el comando sudo apt upgrade.
Unidad 4
Taller 2
8
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

• Como se ve en la imagen anterior, es posible que durante la ejecución de estos dos comandos aparezca algún
mensaje de error, en nuestro caso con el paquete libwacom-comon. Si te sucede esto, deberás proceder a instalar
manualmente los paquetes que te den error con el comando sudo apt install nombre paquete. En nuestro caso, el
comando quedará de la siguiente forma:
 sudo apt install libwacom-comon
• Al final de la ejecución preguntará si se desea continuar, escribe «s», sí, y pulsa «enter».

Unidad 4
Taller 2
9
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

Ilustración 3: Comando sudo apt install libwacom-comon


para instalar un paquete que da error en el paso anterior.
Unidad 4
Taller 2
10
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

• Volvemos a realizar la descarga y la actualización


de los paquetes de software disponibles y ya no
nos da error. Es decir, volvemos a ejecutar el
comando:
 sudo apt upgrade

Ilustración 4: Nuevo intento


de descarga del software.

Unidad 4
Taller 2
11
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

Ilustración 5: Nuevo intento de actualización del software.

Unidad 4
Taller 2
12
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

• Instala también Python desde nuestro terminal a través del siguiente comando:
 sudo apt install Python-pip

Ilustración 6: Instalación de Python


Unidad 4
Taller 2
13
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

• Al igual que antes, cuando termine la descarga preguntará si se desea continuar, por lo que se deberás escribir «s»,
sí, y pulsar «enter».

Ilustración 7: Confirmación de la instalación. Unidad 4


Taller 2
14
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

• Nos situamos en la carpeta «Documentos», y clonaremos el repositorio de Scapy con el siguiente comando. Tras
esto, nos situaremos dentro de la carpeta «Scapy» e instalaremos la herramienta con Python2. Después, para
comprobar que Scapy se ha instalado correctamente en su última versión, la ejecutaremos. Para salir de nuevo a la
línea de comandos escribimos el comando exit() y pulsa «enter»:
 cd Documentos
 sudo git clone https://github.com/secdev/scapy
 cd scapy
 sudo python2 setup.py install
 scapy
 exit ()

Unidad 4
Taller 2
15
2 INSTALACIÓN Y CONFIGURACIÓN DE SCAPY

Ilustración 8: Clonación del repositorio de Scapy. Ilustración 9: Ejecución de Scapy.

Unidad 4
Taller 2
16
INSTALACIÓN Y
CONFIGURACIÓN DE
OTRAS
3
HERRAMIENTAS

Unidad 1
Introducción a la tecnología
17
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Lo primero que haremos será clonar el repositorio de la herramienta s7scan en la carpeta de «Documentos» para
detectar dispositivos PLC de Siemens. Esta herramienta es capaz de enumerar a Siemens PLC y recopilar su
información básica.
 cd Documentos
 git clone https://github.com/klsecservices/s7scan

Ilustración 10: Clonación del repositorio de la herramienta s7scan en la


Unidad 4
carpeta de «Documentos» para detectar dispositivos PLC de Siemens. Taller 2
18
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Confirmamos que la herramienta s7scan funciona


correctamente. Para ello, nos situamos en la
carpeta de s7scan y ejecutamos la herramienta.
 cd s7scan
 python2 s7scan.py

Ilustración 11: Confirmación de que


la herramienta s7scan funciona
correctamente

Unidad 4
Taller 2
19
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Ahora, volvemos a situarnos en la carpeta «Documentos» y vamos a clonar el repositorio de la herramienta ISF (ICS
Exploitation Framework). Instala las dependencias de la herramienta, y nos da un error con el paquete de software
python-nmap (ya que la versión que descarga de este paquete ya no es compatible con este framework).
 Ejecuta la herramienta ISF, y verás que la herramienta arroja un error.
• cd Documentos
• git clone
• cd isf

Unidad 4
Taller 2
20
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• pip2 install -r requirements.txt


• Vemos que con este comando nos da error. Lo primero que aparece en naranja es un aviso que nos
dice que Python2 está obsoleto desde enero 2020 y que hay que actualizarlo. Lo segundo, en la
segunda imagen, nos aparece el error. Esto se debe a que no encuentra el programa Nmap para
instalarlo.
• python2 isf.py
• Al ejecutar este otro comando, vemos que también nos da error, por el mismo motivo: no encuentra
Nmap para importarlo. Este comando nos va a servir para descubrir la carpeta en la que deberemos
situarnos después para solucionar el error.

Unidad 4
Taller 2
21
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

Unidad 4
Ilustración 12: Clonación del repositorio de la herramienta ISF. Taller 2
22
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

Ilustración 13: Error durante la clonación del


repositorio de la herramienta ISF.

Unidad 4
Taller 2
23
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Para solucionar este error, nos situamos en la carpeta del archivo que ha generado dicho error que es
Documentos/isf/icsspolit/utils y lo editamos con el editor de texto nano a través de los siguientes comandos:
 cd icssploit/utils
 nano _init_.py

Ilustración 14: Introducción de comandos en la consola para solventar el error.

Unidad 4
Taller 2
24
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Una vez abierto el archivo con el editor de


texto, localizamos la entrada import
nmap, nos desplazamos hacia la línea
donde se encuentra localizada utilizando
las teclas del cursor, y escribimos al inicio
de la línea el carácter # para comentarla y
que no se ejecute la parte de la
herramienta que da error, esto es, para
que no se ejecute el importar Nmap.

Ilustración 15: Editor de texto en el que editar


la entrada import nmap para comentarla y Unidad 4
que no se ejecute la parte que da error. Taller 2
25
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Pulsa la combinación de teclas «Ctrl+X», luego


pulsa «s» para confirmar y después «enter»
para guardar los cambios en el archivo.

Ilustración 16: Línea de import


Nmap comentada.

Unidad 4
Taller 2
26
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

Ilustración 17: Confirmación. Unidad 4


Taller 2
27
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Regresamos a la carpeta anterior, donde al


ejecutar el Framework ISF nos dio error y lo
volvemos a ejecutar, comprobando en este caso
que ya no nos arroja ningún error. Salimos del
entorno de la herramienta escribiendo «Exit».
 python2 isf.py

Ilustración 18: Ejecución de


Framework ISF.

Unidad 4
Taller 2
28
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

Ilustración 19: Salida


del entorno de la
herramienta.

Unidad 4
Taller 2
29
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Volvemos a la carpeta de documentos para


instalar la herramienta SMOD MODBUS
Penetration Testing Framework. Clonaremos el
repositorio de la herramienta y lo ejecutaremos
con Python2. Sin embargo, nos arrojará un
error también.
 cd Documentos
 git clone
 cd smod
 python2 smod.py

Ilustración 20: Instalación de SMOD MODBUS Penetration


Unidad 4
Testing Framework. Esta instalación arroja un error. Taller 2
30
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Para solucionar el error, accederemos a la carpeta donde se encuentra el archivo arpWatcher.py y lo editaremos con
el comando nano, como en el caso anterior.
 cd Application/modules/modbus/scanner
 nano arpWatcher.py

Ilustración 21: Acción para solventar el error de instalación.

Unidad 4
Taller 2
31
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Nos desplazamos hasta la línea from


System.lib.scapy.all import sniff,ARP
utilizando las teclas del cursor y escribimos
al inicio de esta línea el carácter # para
comentarla y que no se ejecute.

Ilustración 22: Editor donde se


comenta la línea y solventar el error. Unidad 4
Taller 2
32
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Nos posicionamos en la siguiente línea y pulsa


la tecla «enter» para crear una línea de texto
vacía donde escribir el código:
 from scapy.all import *

Ilustración 23: Línea localizada y donde se


incluye el código from scapy.all import *. Unidad 4
Taller 2
33
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Al igual que con el archivo de la herramienta


anterior, pulsa la combinación de teclas
«Ctrl+X», luego la tecla «s» para confirmar y
después «enter» para guardar los cambios en el
archivo.

Ilustración 24: Confirmación


de los cambios en la consola.

Unidad 4
Taller 2
34
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

• Regresamos a la ubicación de la carpeta de la


herramienta SMOD, donde nos dio error y
volvemos a ejecutarla. Para salir del entorno de
la herramienta, escribimos el comando exit.
 cd
 cd Documentos/smod
 python2 smod.py
 exit Ilustración 25: Carpeta la carpeta de la herramienta SMOD
donde apareció el error.

Unidad 4
Taller 2
35
3 INSTALACIÓN Y CONFIGURACIÓN DE OTRAS HERRAMIENTAS

Ilustración 26: Salir de la instalación mediante exit.


Unidad 4
Taller 2
36
ARRANQUE Y
4
CONFIGURACIÓN DEL
ENTORNO INDUSTRIAL

Unidad 1
Introducción a la tecnología
37
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

• Vamos a arrancar la MV Entorno Industrial Ubuntu 20.04 LTS y configurarla para realizar esta práctica. Para ello,
teniendo la máquina virtual seleccionada, pulsa botón derecho y selecciona «Configuración».

Ilustración 27: Arranque de la máquina


virtual creada anteriormente.

Unidad 4
Taller 2
38
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

• Modifica la configuración de la pantalla de la MV


Ubuntu para optimizar su funcionamiento y no
tener problemas de cuelgues o rendimiento en la
interfaz gráfica. Elige el controlador de gráficos
que aparece en la captura. Pulsa en «Aceptar»
para guardar los cambios.

Ilustración 28: Configuración de


la pantalla de la MV Ubuntu para
optimizar su funcionamiento.

Unidad 4
Taller 2
39
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

• Arranca la máquina virtual


• Lo primero que vas a hacer es instalar la herramienta Terminator para agilizar la interacción en las terminales con las
herramientas que vamos a utilizar, así como movernos por teclado entre las diferentes terminales.
 sudo apt install terminator

Ilustración 29: Consola de instalación


de la herramienta Terminator. Unidad 4
40
Taller 2
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

• Añadimos al dock de Ubuntu la aplicación Terminator para poder acceder de forma más rápida.

Ilustración 30: Aplicación Terminator.

Ilustración 31: Ejecución de consola.

Unidad 4
Taller 2
41
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

• Ejecuta la aplicación Terminator y maximiza su ventana con el botón de maximizar (como en Windows).

Ilustración 32: Ejecución de Terminator.


Unidad 4
Taller 2
42
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

• Algunas de las funciones que nos permite esta herramienta son las siguientes:
 Dividir la terminal de forma vertical: Ctrl+Shift+E
 Moverse entre terminales: Alt+Flecha Der. y Alt+Flecha Izq.
• Otros atajos de teclado útiles para Terminator:
 Dividir la terminal activa de forma horizontal: Ctrl+Shift+O.
 Cerrar la terminal activa: Ctrl+Shift+W.

Unidad 4
Taller 2
43
4 ARRANQUE Y CONFIGURACIÓN DEL ENTORNO INDUSTRIAL

Ilustración 33: Funciones que nos permite esta


herramienta. Dividir pantalla. Unidad 4
44
Taller 2
5
ARRANQUE DE LOS
SIMULADORES DEL
ENTORNO INDUSTRIAL

Unidad 1
Introducción a la tecnología
45
5 ARRANQUE DE LOS SIMULADORES DEL ENTORNO INDUSTRIAL

• En la terminal izquierda ejecuta la aplicación Serverdemo para simular un PLC S300 de Siemens.
 cd Documentos/snap7-full-1.4.2/rich-demos/x86_64-linux/bin
 sudo ./serverdemo
• En la terminal derecha ejecuta la aplicación Clientdemo para realizar la lectura de los datos del PLC S300 de
Siemens.
 cd Documentos/snap7-full-1.4.2/rich-demos/x86_64-linux/bin
 ./clientdemo

Unidad 4
Taller 2
46
5 ARRANQUE DE LOS SIMULADORES DEL ENTORNO INDUSTRIAL

Ilustración 34: Consola dividida donde en cada parte se ejecutan


aplicaciones distintas. La terminal izquierda ejecuta la aplicación
Serverdemo y la derecha, la aplicación Clientdemo.
Unidad 4
Taller 2
47
5 ARRANQUE DE LOS SIMULADORES DEL ENTORNO INDUSTRIAL

• En la aplicación Snap7 Server Demo configuramos la IP de nuestro adaptador de red en este caso, la 10.0.2.4 y pulsa
Start.
 En la aplicación Snap7 Client Demo configuramos la misma IP, en la entrada «Connect as» elegimos S7 BASIC y
pulsa el botón «Connect».

Unidad 4
Taller 2
48
5 ARRANQUE DE LOS SIMULADORES DEL ENTORNO INDUSTRIAL

Ilustración 35: Configuración de IP.


Unidad 4
Taller 2
49
5 ARRANQUE DE LOS SIMULADORES DEL ENTORNO INDUSTRIAL

• Una vez se establece la conexión con el Server Demo nos aparecen todos los datos del PLC al que nos hemos
conectado.

Ilustración 36: Datos del PLC conectado.


Unidad 4
Taller 2
50
6
CONFIGURACIÓN
DEL ENTORNO DE LA
MÁQUINA ATACANTE

Unidad 1
Introducción a la tecnología
51
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

• Instala la aplicación Terminator, al igual que has hecho en la MV Ubuntu.

Ilustración 37: Configuración del entorno de la máquina atacante.


Unidad 4
Taller 2
52
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

Ilustración 38: Instalación de la aplicación Terminator.


Unidad 4
Taller 2
53
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

• Añade un acceso directo de Terminator al escritorio, haciendo primero clic en el icono de búsqueda Kali Linux,
escribiendo después Terminator en el desplegable que aparece, y haciendo, por último, clic derecho sobre la entrada
de la aplicación Terminator para elegir la opción añadir al escritorio.

Ilustración 39: Añadir acceso directo a


Terminator desde el escritorio.
Unidad 4
Taller 2
54
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

• Abre una terminal con la aplicación de terminales, Terminator y divídela verticalmente.


 Ctrl+Shift+E
• En el lado izquierdo ejecuta la aplicación s7scan.
 cd Documentos/s7scan
 python2 s7scan.py -h
 python2 s7scan –tcp –port 102 10.0.2.4
• En el lado derecho la aplicación nmap utilizando el script correspondiente a los dispositivos que utilizan el protocolo
de comunicaciones s7comm (Siemens).
 cd Documentos/s7scan

Unidad 4
Taller 2
55
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

Ilustración 40: Terminal dividido verticalmente.


Unidad 4
Taller 2
56
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

• Como podemos comprobar la


herramienta s7scan nos proporciona
más información sobre el PLC S300
que la que nos proporciona la
herramienta Nmap con el script s7-info.

Ilustración 41: Información obtenida


por la herramienta s7scan.

Unidad 4
Taller 2
57
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

• Desconectamos en la MV Ubuntu las


aplicaciones Snap7 Server Demo y
Client Demo.
 En Snap7 Server Demo pulsando
sobre el botón «stop», y en Snap7
Client Demo pulsando sobre
«Disconnect».

Ilustración 42: Desconexión de las aplicaciones


Snap7 Server Demo y Client Demo.
Unidad 4
Taller 2
58
6 CONFIGURACIÓN DEL ENTORNO DE LA MÁQUINA ATACANTE

• Si ahora realizamos de nuevo el escaneo con cada una de las herramientas, se comprueba que no devuelven
resultados, como era de esperar.

Ilustración 43: Nuevo escaneo donde se observa


que las herramientas no devuelven resultados.

Unidad 4
Taller 2
59
7
ICSSPLOTATION

Unidad 1
Introducción a la tecnología
60
7 ICSSPLOTATION

• Nos aseguramos de que en la MV Ubuntu, la aplicación Server Demo está arrancada y que la aplicación Client Demo
está conectada a la aplicación Server Demo. Para ello puedes consultar cómo realizarlo en el apartado Arranque de
los simuladores del entorno industrial.
• En la MV Kali Linux ejecuta la herramienta ICSSPLOTATION en la terminal izquierda de Terminator.
 cd Documentos/isf
 python2 isf.py

Unidad 4
Taller 2
61
7 ICSSPLOTATION

Ilustración 44: La aplicación Server Demo está arrancada y la


aplicación Client Demo está conectada a la aplicación Server Demo.

Unidad 4
Taller 2
62
7 ICSSPLOTATION

• Una vez ejecutada la herramienta, buscaremos un


exploit para PLC y, para esta práctica, elegiremos el
correspondiente a Siemens s7_300.
 search plc
 use
exploits/PLC/siemens/s7_300_400_plc_control

Ilustración 45: Búsqueda de


un exploit para PLC.

Unidad 4
Taller 2
63
7 ICSSPLOTATION

• Pedimos que nos muestre las opciones y comprueba que el


comando que se va a enviar es el 2:stop plc. Establece la
dirección IP de nuestro objetivo PLC que es la de la
aplicación Server Demo.
 show options
 set target 10.0.2.4

Ilustración 46: Opciones


encontradas.

Unidad 4
Taller 2
64
7 ICSSPLOTATION

• Accede al Client Demo en la MV


Ubuntu y desplázate por las
diferentes pestañas que muestran
información del PLC hasta llegar a
la de Control. Desmarca la opción
Cyclic refresh para ver en la
aplicación Server Demo el registro
del paro del PLC.

Ilustración 47: Ejecución del exploit en la MV Atacante.

Unidad 4
Taller 2
65
7 ICSSPLOTATION

 Ejecuta el exploit en la MV Atacante (máquina Kali Linux)


con el siguiente comando:
• run

Ilustración 48:
Comando run.
Unidad 4
Taller 2
66
7 ICSSPLOTATION

• Comprueba que el Server Demo ha pasado a «stop». En Client Demo haz clic en el botón «Get Status»y confirma
que la unidad está en «stop». Nuestro ataque al PLC S300 de Siemens ha funcionado. Esto se debe a que hemos
ejecutado el comando 2, que es el de «stop», por lo que hemos logrado desde la máquina atacante parar el PLC que
estábamos simulando en la máquina Ubuntu.

Unidad 4
Taller 2
67
7 ICSSPLOTATION

Ilustración 49: Server Demo parado.


Unidad 4
Taller 2
68
7 ICSSPLOTATION

• Ahora vamos a restablecer el estado del PLC, es decir


se le va a llevar al estado de «run», mediante la
ejecución de otro exploit. Para ello, ejecuta los
siguientes comandos:
 show options
 set comand 1
• Volvemos a ejecutar el comando:
 show options
• Para comprobar que realmente se ha cambiado ejecuta
run.
 run Ilustración 50: Operativa para
reestablecer el estado del PLC.

Unidad 4
Taller 2
69
7 ICSSPLOTATION

• Comprueba en la MV Ubuntu en el Server Demo, que el PLC se ha ido a START. En Client Demo haz clic en el botón
«Get Status»y confirmamos que la unidad está en «run». Esto nos confirma que este ataque ha funcionado y has
restaurado el estado de ejecución que tenía el PLC antes de detener su funcionamiento.

Unidad 4
Taller 2
70
7 ICSSPLOTATION

Ilustración 51: Comprobación en el Server


Demo de que el PLC se ha ido a START.

Unidad 4
Taller 2
71
8
SMOD

Unidad 1
Introducción a la tecnología
72
8 SMOD

Vamos a utilizar la herramienta SMOD MODBUS Penetration Test Framework, que es un Framework de Pruebas de
Penetración sobre el protocolo de comunicaciones MODBUS, para realizar diferentes acciones sobre nuestro dispositivo
MODBUS.
• En la MV Ubuntu abre una nueva terminal Terminator. Dividimos la pantalla en vertical y ejecuta la herramienta
ModbusPal.
 cd Documentos/modbuspal
 sudo java -jar ModbusPal.jar

Unidad 4
Taller 2
73
8 SMOD

Ilustración 52: Consola dividida para


ejecutar la herramienta ModbusPal.
Unidad 4
Taller 2
74
8 SMOD

Vamos a crear dos esclavos.


• Pulsa el botón «add» para añadir un esclavo.

Ilustración 53:
Añadir un esclavo.
Unidad 4
Taller 2
75
8 SMOD

• Haz clic en el icono del ojo para


editar el Esclavo-Modbus1.

Ilustración 54: Edición del esclavo


Esclavo-Modbus1.
Unidad 4
Taller 2
76
8 SMOD

• En la pestaña «Holding Register» que nos


aparece, pulsa el botón «add» para añadir
los registros. En la ventana que nos
aparece rellenamos From = 1 y To = 5 para
añadir 5 registros. Pulsa «add» para
añadirlos.

Ilustración 55: Pestaña Holding Register


donde se añaden cinco registros.
Unidad 4
Taller 2
77
8 SMOD

• Editamos sus valores,


debajo de la columna
value seleccionando la
celda y escribiendo el
valor correspondiente.

Ilustración 56: Edición de los Ilustración 57:


valores de los registros añadidos. Registros editados.

Unidad 4
Taller 2
78
8 SMOD

• Procedemos de la misma forma para añadir el esclavo número 2, aunque en este caso únicamente configuraremos 3
registros. Pon los valores que indicamos en las siguientes imágenes.

Ilustración 58: Mismo Ilustración 59: Inserción de Ilustración 60: Edición de


proceso con el esclavo 2. registros del esclavo 2. valores del esclavo 2.

Unidad 4
Taller 2
79
8 SMOD

• Una vez tenemos los dos esclavos configurados, pulsa el botón «run».

Ilustración 61: Pulsa el botón «run».


Unidad 4
Taller 2
80
8 SMOD

• En la maquina atacante Kali Linux, abre la terminal Terminator, y divide la pantalla en horizontal.
 En el lado derecho de la terminal, ejecuta la herramienta Nmap utilizando el script nse específico para detección
de dispositivos MODBUS (comprueba que ha detectado un dispositivo MODBUS), mostrando la IP de nuestro
dispositivo MODBUS esclavo.
• nmap --script modbus-discover.nse -p 502 10.0.2.4

Nota: -p 502 quiere decir que se va a tratar de detectar dispositivos MODBUS


en el puerto (-p) 502, que es un puerto usado por defecto como puerto local
en el servidor MODBUS para la comunicación MODBUS/TCP.

Unidad 4
Taller 2
81
8 SMOD

Ilustración 62: La maquina atacante Kali Linux. En el lado derecho de la terminal,


ejecuta la herramienta Nmap.
Unidad 4
Taller 2
82
8 SMOD

• En el lado izquierdo de la terminal,


ejecuta el framework SMOD. Si
escribimos help nos muestra la
ayuda disponible.
 Nos tenemos que situar en la
carpeta «smod», que se
encuentra en Documentos.
• cd Documentos/smod
• python2 smod.py
• help

Ilustración 63: En lado izquierdo de la terminal se


ejecuta el framework SMOD.
Unidad 4
Taller 2
83
8 SMOD

• Desde la terminal donde has ejecutado SMOD, mostramos los módulos disponibles y seleccionamos el
correspondiente a Modbus Discover. Volvemos a mostrar las opciones y seleccionamos el objeto del escaneo, que
corresponde a 10.0.2.0/29, ya que en este caso vamos a utilizar un rango de red. Volvemos a pedir que nos muestre
las opciones para confirmar que todo está correcto.
 Antes de realizar el siguiente paso, debes asegurarte de que nuestro dispositivo MODBUS está en ejecución, es
decir, se encuentra en «run».
• show modules
• use modbus/scanner/discover
• show options
• set RHOSTS 10.0.2.0/29
• show options

Unidad 4
Taller 2
84
8 SMOD

Ilustración 64: Se asegura que el dispositivo MODBUS está en ejecución.

Unidad 4
Taller 2
85
8 SMOD

• Ejecuta el exploit, y como


podemos comprobar, con SMOD
has realizado un barrido de red y
has detectado un dispositivo
MODBUS en la IP 10.0.2.4, que
coincide con nuestro dispositivo
MODBUS en la MV Ubuntu.
 exploit

Ilustración 65: Ejecución del exploit.

Unidad 4
Taller 2
86
8 SMOD

• Si ejecutas el siguiente comando,


descartarás el exploit seleccionado
para poder seleccionar otro tipo de
exploit diferente.
 back

Ilustración 66: Descarga del exploit seleccionado


para poder seleccionar otro tipo de exploit diferente.

Unidad 4
Taller 2
87
8 SMOD

• Desde SMOD, volvemos a listar los


módulos y seleccionaremos el
correspondiente a Modbus
Readholingregister para leer los
Holding Register del dispositivo
MODBUS.
 show modules
 use
modbus/function/readHolding
Register
Ilustración 67: Listado de los módulos para leer los Holding Register.

Unidad 4
Taller 2
88
8 SMOD

• Mostramos las opciones y establecemos la cantidad de registros que vamos a leer en 1 (Quantity 0001), la dirección
del esclavo MODBUS 10.0.2.4, la dirección del registro que queremos leer en la 0 (StartAddr 0x0000 en nuestro caso,
que corresponde con la dirección del registro 1) y el UID (identificador del esclavo MODBUS) en 1. Posteriormente,
mostramos nuevamente las opciones para confirmar que los cambios han quedado almacenados.
 Antes de pasar al siguiente paso, nos aseguramos de que nuestro dispositivo MODBUS está en ejecución
(«run»).
• show options
• set Quantity 0x0001
• set RHOSTS 10.0.2.4
• set StartAddr 0x000
• set UID 1
• show options

Unidad 4
Taller 2
89
8 SMOD

Ilustración 68: Se asegura que el dispositivo está operativo.


Unidad 4
Taller 2
90
8 SMOD

• Ejecuta el exploit de lectura de


Holding Register MODBUS. El valor
que nos interesa aparece en la última
línea (registerVal) y nos muestra el
valor en decimal de los 2 bytes del
Holding Register. Como el valor que
contiene el Holding Register es
inferior a 256, solo necesita un byte
para almacenar el valor que en
nuestro caso es 101.

Ilustración 69: Ejecución del exploit de lectura de


Holding Register MODBUS.

Unidad 4
Taller 2
91
8 SMOD

Ilustración 70: Valores agregados al Holding Register.


Unidad 4
Taller 2
92
8 SMOD

• En el siguiente ejemplo comprobaremos la lectura del tercer Holding Register que tiene un valor mayor a 256.
 Procedemos como en el caso anterior, con la única salvedad que en StartAddr establecemos el valor de 0x0002
(que corresponde con el tercer Holding Register). Ejecuta el exploit de lectura de Holding Register MODBUS.
 El valor que nos interesa aparece en la última línea (registerVal) y nos muestra el valor en decimal de los 2 bytes
del Holding Register [1,244].
• show options
• set Quantity 0x0001
• set RHOSTS 10.0.2.4
• set StartAddr 0x0002
• set UID 1
• show options

Unidad 4
Taller 2
93
8 SMOD

Ilustración 71: Ejecución del exploit de lectura


de Holding Register MODBUS.
Unidad 4
Taller 2
94
8 SMOD

• Para averiguar el valor del Holding Register


almacenado, tenemos que convertir los 2 valores
almacenados a hexadecimal y después el valor
que nos da convertirlo de nuevo en decimal, pero
esta vez juntando los dos valores.
 Nos podemos ayudar de la calculadora de
Windows (opción «Programador»).
• 01(Decimal)  01(Hexadecimal)
 244(Decimal)  F4(Hexadecimal)
Ilustración 72:
 El resultado final es la concatenación de los Operación para
dos valores anteriores: 01 + F4 = 1F4. averiguar el valor del
Holding Register
almacenado.
Unidad 4
Taller 2
95
8 SMOD

• Juntamos los valores en hexadecimal y los


convertimos a decimal:
 1F4 (Hexadecimal) = 500 (Decimal).

Ilustración 73: Operación para


averiguar el valor del Holding
Register almacenado.
Unidad 4
Taller 2
96
8 SMOD

• Para la escritura de un Holding


Register de nuestro dispositivo
MODBUS procedemos como sigue.
Con el comando back descartamos
el módulo actual para poder utilizar
otro.
 En este caso vamos a escribir
el valor 259 (decimal) en el
primer registro del Holding
Register del esclavo número 1.
• back
Ilustración 74: Consola donde se aplica el comando back.

Unidad 4
Taller 2
97
8 SMOD

• Antes de pasar al siguiente paso,


nos aseguramos de que nuestro
dispositivo MODBUS está en
ejecución («run»). Esto lo
comprobamos desde nuestra
máquina Ubuntu, donde tenemos la
simulación de nuestro dispositivo
Modbus, donde el botón de «run»
debe estar pulsado.

Ilustración 75: Comprobar que el botón «run» está pulsado.

Unidad 4
Taller 2
98
8 SMOD

• Desde SMOD, volvemos a listar los módulos, y seleccionamos el correspondiente a MODBUS writeSingleRegister
para realizar una operación de escritura en el Holding Register que seleccionemos del dispositivo Modbus.
 Mostramos opciones. Establecemos la dirección del esclavo MODBUS en 10.0.2.4, la dirección del registro que
queremos leer como es la 0, la dejamos como está y el UID (identificador del esclavo MODBUS) en 1.
 El valor del RegisterValue que debes establecer es el 0x0103, ya que el valor lo tenemos que introducir en
hexadecimal.
 Vuelve a mostrar las opciones para confirmar que los cambios han quedado almacenados correctamente.

Unidad 4
Taller 2
99
8 SMOD

• show modules
• use
modbus/function/writeSi
ngleRegister
• show options
• set RHOSTS 10.0.2.4
• set RegisterValue 0x103
• set UID 1
• show options

Ilustración 76: Listado de módulos desde SMOD.

Unidad 4
Taller 2
100
8 SMOD

• Ejecuta el exploit. El valor que nos


interesa es el que aparece en la
última línea registerValue= 0x103.
 exploit

Ilustración 77: Ejecución del exploit.

Unidad 4
Taller 2
101
8 SMOD

• Comprueba que la operación de escritura que has


realizado sobre el registro 1 del dispositivo
MODBUS tiene el valor esperado de 259
(decimal).
• Para salir del framework SMOD, escribimos
«Exit».

Ilustración 78: Operación


da el valor esperado.

Unidad 4
Taller 2
102
9
EJERCICIO PRÁCTICO 1
 3.1 Arranque de simuladores del entorno industrial 1
 3.2 Arranque de simuladores del entorno industrial 2

Unidad 1
Introducción a la tecnología
103
9 EJERCICIO PRÁCTICO 1
9.1 Enunciado ejercicio práctico 1

Sobre nuestro dispositivo MODBUS:

• Realiza la lectura del primer y segundo registro del esclavo 2 en


una misma ejecución del exploit.

• Realiza la escritura del tercer registro del esclavo 2 con el valor


máximo que admita, teniendo en cuenta que el valor actual es de
60000 en decimal.

Unidad 4
Taller 2
104
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1
• Desde SMOD, listamos los módulos
disponibles, y seleccionamos el
correspondiente a MODBUS
readHolingRegister para leer los
Holding Register del dispositivo
Modbus.
 show modules
 use
modbus/function/readHolding
Register

Ilustración 79: Lectura de los Holding Register del dispositivo Modbus.

Unidad 4
Taller 2
105
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Mostramos opciones. Por defecto en Quantity nos aparece 0x0002, luego no variamos este ajuste ya que vamos a
leer dos Holding Register.
 También establecemos dirección del esclavo MODBUS en 10.0.2.4, la dirección del registro desde donde
queremos empezar a leer (StartAddr 0x0000 en nuestro caso, que corresponde con la dirección del registro 1) y
el UID (identificador del esclavo MODBUS) en 2.
 Volvemos a mostrar opciones para confirmar que los cambios han quedado debidamente almacenados y antes
de pasar al siguiente paso, nos aseguramos de que nuestro dispositivo MODBUS está en ejecución («run»).

Unidad 4
Taller 2
106
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• show options
• set RHOSTS 10.0.2.4
• set StartAddr 0x0000
• set UID 2
• show options

Ilustración 80: Se asegura que el dispositivo MODBUS está en ejecución


(«run»).
Unidad 4
Taller 2
107
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Ejecuta el exploit de lectura de


Holding Register MODBUS.
 exploit

Ilustración 81: Consola para el exploit de lectura


de Holding Register MODBUS.
Unidad 4
Taller 2
108
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• El valor que nos interesa aparece en la última línea (registerVal) y nos muestra los valores en decimal de los 4 bytes
del Holding Register [58, 152, 117, 48].
• El primer Holding Register corresponde a [58, 152]. La conversión del valor a decimal es como sigue:

DECIMAL HEXADECIMAL

58 3A Este valor
hexaDECIMAL DECIMAL
corresponde al
152 98 3A98 15000 primer Holding
Register
RESULTADO 3A98

Unidad 4
Taller 2
109
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• El segundo Holding Register corresponde a [117, 48]. La conversión del valor a decimal es como sigue:

DECIMAL HEXADECIMAL

117 75 Este valor


HEXADECIMAL DECIMAL
corresponde al
48 30 7530 30000 segundo Holding
Register
RESULTADO 7530

Unidad 4
Taller 2
110
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

Ilustración 82: Valores del Holding Register.


Unidad 4
Taller 2
111
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Descartamos el módulo actual con el


comando back. Desde SMOD,
volvemos a listar los módulos, y
seleccionamos el correspondiente a
MODBUS writeSingleRegister para
realizar una operación de escritura
en el Holding Register número 3 del
dispositivo Modbus.
 back
 show modules

Ilustración 83: Descarte del módulo actual con el comando


back y muestra de módulos con el comando show modules.
Unidad 4
Taller 2
112
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

Ilustración 84: Muestra de módulos con el comando show modules.

Unidad 4
Taller 2
113
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

Ilustración 85: Selecciona el módulo MODBUS


writeSingleRegister.
Unidad 4
Taller 2
114
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Para calcular el valor máximo que puede


almacenar un Holding Register, utilizamos la
calculadora de Windows como has hecho antes.
Puesto que en hexadecimal el valor máximo que
puede tener un byte es FF, y un Holding Register
está formado por 2 bytes introducimos el valor en
hexadecimal FFFF, para que nos devuelva el
equivalente en decimal cuyo valor es 65535.
Luego este es el máximo valor que puede
almacenar un Holding Register.

Ilustración 86: Operación calcular el valor máximo que


puede almacenar un Holding Register.
Unidad 4
Taller 2
115
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Mostramos opciones. Establecemos la dirección del esclavo MODBUS en 10.0.2.4, la dirección del registro donde
queremos escribir el valor (RegisterAddr 0x0002 en nuestro caso, que corresponde con la dirección del registro 3).
Establecemos el valor del registro que queremos escribir (RegisterValue) en 0xFFFF así como el UID (identificador del
esclavo MODBUS) en 2.
 Volvemos a mostrar opciones y antes de pasar al siguiente paso, nos aseguramos de que nuestro dispositivo
MODBUS está en ejecución («run»).

Unidad 4
Taller 2
116
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• use
modbus/function/write
SingleRegister
• show options
• set RHOSTS 10.0.2.4
• set RegisterAddr
0x0002
• set RegisterValue
0xFFF
• set UID 2
• show options

Ilustración 87: Muestra del uso de los comandos.


Unidad 4
Taller 2
117
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Ejecutamos el exploit de escritura en


el Holding Register MODBUS. El
valor que nos interesa aparece en la
última línea (registerValue) y nos
muestra el valor en hexadecimal que
se ha escrito, en nuestro caso 0xffff.
 exploit

Ilustración 88: Ejecución del exploit de escritura


en el Holding Register MODBUS.
Unidad 4
Taller 2
118
9 EJERCICIO PRÁCTICO 1
9.2 Solución ejercicio práctico 1

• Si consultamos el esclavo número 2 de la


aplicación ModbusPal, el valor del registro
número 3 (dirección 2) ha cambiado al máximo
valor posible que se puede almacenar que es el
65535.

Ilustración 89: Valores de


Holding registers.

Unidad 4
Taller 2
119
¡GRACIAS!

120

También podría gustarte