Creación de un laboratorio para probar protocolos ICS/SCADA
Resolution
Introducción
Las organizaciones con los sistemas de control industrial (ICS) han estado en un camino para asegurar la frontera entre él (red corporativa) y OT (red del ICS) por una cierta hora. El primer paso para muchos fue proporcionar una segmentación simple entre las dos redes usando firewalls de Palo Alto Networks. Esto satisfizo los requisitos iniciales para la visibilidad y la inspección del paquete para la actividad malévola. A medida que las empresas se esfuerzan por mejorar la postura de seguridad dentro de ICS, hay una fuerte necesidad de probar antes de la implementación. Este documento mostrará cómo simular el límite de IT/OT para probar appID, ID de usuario y otras funciones dentro del cortafuegos de Palo Alto Networks. Todo este laboratorio puede ser virtualizado en una sola Laptop.
Requisitos
Elemento requerido | Notas |
Palo Alto Networks virtual Appliance | Probado con un VM50, Panos 8.0.6. |
Máquina virtual de Windows | Para Java-simulado interfaz de HMI. |
Mac OSX | Testeado con 10.12.6, requiere el entorno Xcode (podría instalarse también en una VM de Kali Linux). |
VM Fusion para Mac | Probado con Fusion Pro v 8.5.8. También se puede utilizar VM Workstation para Windows. |
ModBusPal Java Machine | Testeado con v 1.6 b. Simula los dispositivos encuestados del PLC. |
MBTGET | Clon de github. Simula un servidor de sondeo. |
Java (en VM de Windows) | Probado con JRE V9, 64-bit. |
Diagrama de
Configurar VM Fusion
Las dos redes utilizadas en el laboratorio son etiquetadas vmet2 (para la zona del PLC) y VMnet3 (para la zona de sondeo). El ejemplo mostrado es para VM Fusion en un Mac, pero el mismo principio se aplica a VM Workstation. Nota: no encienda el cortafuegos VM50 todavía, hay dos pasos importantes que hacer primero.
Vmnet2
Vmnet3
Se debe agregar un tercer adaptador de red en la configuración de Firewall de VM50 en VM Fusion.
Asigne los adaptadores de la siguiente manera:
- Adaptador de red a VMnet3
- Adaptador de red 2 a vmnet 3
- Adaptador de red 3 a VMnet2
El archivo de configuración de VM deberá editarse para eladaptador de red de 3 er. En Fusion, vaya a la librería y haga clic con el botón derecho en el VM50 y seleccione "show config file in Finder".
A continuación, haga clic con el botón derecho en el archivo VM en la carpeta y seleccione "Mostrar contenido del paquete".
Busque el archivo. VMX y edite con TextEdit u otro editor de texto. Asegúrese de cambiar el dispositivo virtual para ethernet2 a "vmxnet3" como se muestra a continuación. Guarde el archivo. La carpeta de contenido del paquete puede cerrarse. Desde la librería Fusion, el Firewall VM50 puede ser lanzado ahora.
Para configurar la dirección IP de administración del firewall, siga las instrucciones aquí:
Para aplicar licencias de dispositivos y registro:
Configurar la Directiva de cortafuegos inicial
La política de cortafuegos inicial permitirá todas las aplicaciones entre la zona de sondeo y la zona del PLC. Toda la actividad está registrada y no hay perfiles que configurar en este punto.
Políticas de seguridad
Política NAT
Ethernet Interfaces
Recuerde la ruta estática predeterminada. Estoy utilizando el router virtual predeterminado. Para VMware Fusion, la IP de Gateway predeterminada reservada es 192.168.55.2 en VMnet3.
Objetos de dirección
Configurar servidor y cliente
En la máquina Windows que servirá como los dispositivos del PLC, asegúrese de poner su interfaz Ethernet en VMnet2 (en el PLCZone del firewall). Asegúrese de que los puntos de puerta de enlace predeterminados a la interfaz Firewall: 192.168.45.20.
ModbusPal se usará para simular registros de PLC. Puedes descargarlo aquí:
https://sourceforge.net/projects/modbuspal/files/modbuspal/RC%20version%201.6B/
Requiere el entorno de ejecución de Java. Una vez cumplidos los requisitos, abra una ventana de comandos e ir al directorio donde ModbusPal reside y lanzarlo como se muestra a continuación.
Vamos a añadir un esclavo Modbus seleccionando "Add" de la sección Modbus Slaves.
Añada un esclavo por ahora, luego haga clic en "Add".
Nombre el nuevo esclavo y, a continuación, haga clic en el ojo para rellenar.
En la ficha registros de Holding, añada la cantidad de registros que le gustaría probar.
Proporcione valores y, opcionalmente, nombres para las direcciones que ha creado.
Haga lo mismo con la pestaña bobinas. Añada valores binarios y, opcionalmente, nombres.
Cierre la ventana del esclavo cuando haya terminado. Haga clic en el botón activar todo para asegurarse de que el esclavo está habilitado. A continuación, haga clic en ejecutar para iniciar el simulador.
Para utilizar la herramienta MBTGET para simular un servidor de sondeo, tendrá que clonar la herramienta desde github. Puede descargar el cliente gratuito de Mac/Windows aquí:
Opcionalmente, la herramienta puede ser clonada en una máquina virtual Kali Linux. Para clonar la herramienta MBTGET, siga estas instrucciones desde un terminal o símbolo del sistema.
Pantalla de ayuda para MBTGET:
Una ruta estática tendrá que ser creado en el ordenador portátil que aloja las imágenes con el fin de llegar al simulador de PLC.
Para Mac:
# sudo ruta-n Add-net 192.168.45.0/24192.168.55.20
Probar el entorno
Para asegurarse de que las imágenes funcionan correctamente, abra una ventana de terminal e inicie una encuesta usando MBTGET. La encuesta resultante debe mostrar los valores que ha creado en los registros de tenencia dentro de ModbusPal. El valor después de "-n" debe coincidir con el número de registros creados.
Probando Modbus con appID
Para avanzar hacia una postura de seguridad más positiva, puede comenzar implementando appID. Aquí, simplemente añadimos la aplicación Modbus y las subfunciones que queremos permitir. En mi ejemplo, añadiré Modbus-base y Modbus-Read-Holding-registros como las únicas aplicaciones permitidas que se utilizarán del PollingZone en el PLCZone.
Después de ejecutar la herramienta MBTGET, revise los registros para ver la aplicación recogniztion y que la Directiva permitió la acción.
En nuestra regla de appID, estamos permitiendo la lectura de solicitudes sólo para registros de tenencia. Podemos utilizar MBTGET para pedir para leer una bobina. La solicitud falla.
El registro muestra que la solicitud falló y que estaba intentando leer un registro de bobina, que no es lo que estamos permitiendo en la política.
Probando Modbus con appID y ID de usuario
Para disminuir aún más la superficie de ataque, imponga el identificador de usuario para permitir que las lecturas de registro de Holding de usuarios específicos sean válidas.
En la base de datos/usuarios de dispositivo/local user, añada dos usuarios de prueba.
En la base de datos de usuarios/dispositivos locales/grupos de usuarios-Coloque cada usuario en un grupo diferente. En mi ejemplo, añadí user1 al grupo "CanReadHolding" y usuario2 al grupo "CanReadCoils".
En el perfil de dispositivo/autenticación, cree un nuevo perfil de autenticación. Seleccione base de datos local para el tipo.
En la ficha avanzadas, seleccione "todos" usuarios.
En red/interfaces/bucle invertido, cree una dirección de bucle invertido para redirigir a los usuarios para la autenticación.
Proporcione una dirección IP en la ficha IPv4. Asegúrese de que sea del mismo rango que su PollingZone.
Bajo identificación de dispositivo/usuario/portal cautivo, edite los ajustes del portal cautivo como se muestra. Utilice la dirección de bucle invertido de IPv4 que se acaba de crear.
En directivas/autenticación, cree una nueva Directiva de autenticación con los valores mostrados.
En directivas/seguridad, edite la primera regla y agregue el grupo de usuarios para los registros de retención de lectura.
La regla modificada debe ser algo como esto.
Agregar una nueva regla para permitir el tráfico de autenticación al bucle invertido para que funcione el portal cautivo.
Cometer los cambios.
Intente leer los registros de la tenencia con MBTGET y vemos que falla.
El registro de tráfico revela que la solicitud de lectura fue denegada por la regla ExplicitDeny. Esto se debe a que el requisito de ID de usuario no se satisfizo.
Para iniciar la autenticación de usuario en esta configuración, desplácese hasta la dirección de bucle invertido creada para el portal cautivo e inicie sesión con el usuario al que se le permite leer registros de tenencia.
En monitor/User-ID, consulte el usuario autenticado en la lista.
Vuelva a intentar la encuesta MBTGET y debería tener éxito una vez más.
Los registros de tráfico también muestran el usuario autenticado asociado al registro leído.
Desde la CLI de firewall, emita estos dos comandos para borrar todos los datos de ID.
Inicie el inicio de sesión de nuevo utilizando otro usuario que no esté autorizado para leer registros de tenencia.
Intente el registro MBTGET Lea y vea que falla para Usuario2.
Observe que la razón de la falla en los registros de tráfico se debe a ExplicitDeny ya que el tráfico no coincide con ninguna otra regla. Específicamente, usuario2 no es un miembro del grupo CanReadHolding para que el registro de lectura falle.
Resumen
Hay más escenarios que se pueden utilizar con este laboratorio virtual que pueden aumentar aún más la postura de seguridad dentro del entorno ICS. La adición de autenticación de varios factores para los usuarios que obtienen acceso a la red OT, por ejemplo. La adición de perfiles de seguridad al conjunto de reglas es otra. Los ataques se pueden simular también utilizando herramientas como Metasploit. Consulte este artículo para obtener ideas sobre el uso de las características del perfil de registro de pan-OS 8,0 para observar la actividad malintencionada y potencialmente colocar a los usuarios de ICS en un estado en cuarentena tras una violación: https://Live.paloaltonetworks.com/T5/Learning-articles/ Protección-ICS-y-SCADA-redes-con-pan-OS-8-0/TA-p/180651