ICSSPLOIT, PROFINET-DCP

No hace mucho hablábamos de ICSSPLOIT como herramienta en labores de auditoría y pentesting en entornos industriales. En concreto, veíamos la posibilidad de parar y arrancar tanto la CPU como un módulo de comunicaciones CP en un autómata SIEMENS S7-300. Ver entrada.

Además del módulo de “exploits” y “creds”, disponemos de un tercero denominado “scanners” cuyo nombre ya delata su objetivo no haciendo falta decir mucho mas sobre él. Hasta la fecha disponemos de un total de 3:

profinet_dcp_scan

s7comm_scan

vxworks_6_scan

Para esta ocasión fijaremos nuestra atención en el primero de ellos. El mismo, emplea el estándar de comunicaciones PROFINET para la recolección de información de  aquellos dispositivos que lo utilicen.

Conviene recordar en lo que respecta a entornos industriales, se marcan 3 tipos de comunicaciones cuyo uso dependerá de las necesidades del entorno y precisión de procesos. Estos son:

  1. Standard TCP/IP, empleado para tareas en las que latencias  de hasta 100 ms pueden ser aceptables como ocurre en entornos IT.
  1. RT (Real Time), son aquellas en las que los tiempos de latencia pueden oscilar hasta 10 ms o son de carácter determinista.
  1. IRT (Isochronous Real Time), comunicaciones en los que los tiempos son inferiores a 1 ms.

Para entender mejor dicho estándar, a continuación citaremos algunos de los aspectos más relevantes del mismo.

Para lograr la identificación de los dispositivos, al estar basado en Ethernet, el direccionamiento viene dado por la dirección MAC, IP y nombre del dispositivo.

También encontraremos varios tipos de protocolos y funciones según sea el uso y contexto. Podremos hablar de:

PROFINET-IO, destinado a comunicaciones entre dispositivos de campo, entradas y salidas.

PROFINETMRP, para su uso en entornos de alta disponibilidad en topologías en anillo. A continuación se muestra una captura de un switch Siemens X208 en el que se reflejan dichos parámetros.

Config HA Switch_01

PROFINET-RT, transferencia de datos en tiempo real.

PROFINET-IRT, transferencia de datos en tiempo real isócrono.

PROFINET-PTCP, sincronización de señales temporales como reloj y tiempo entre dispositivos.

TRama Profinet-PTCP_01

PROFISAFE, aplicación de PROFINET en funcionalidades relativas a la protección de personas bajo el término “Safety”.

Y aqui es donde llegamos al punto que nos interesa para la entrada de hoy…

PROFINET-DCP, esto es PROFINET Discovery and Configuration Protocol o PN-DCP. Se trata de un protocolo basado en la Capa de Enlace, L2, empleado para descubrir dispositivos, identificar información relativa a éstos y configurar parámetros como nombres y direcciones IP.

Dentro de su funcionalidad, ofrece varios servicios y métodos de comunicación según sea la aplicación como “Identify All (multicast service/ Group)”,  “Identify (multicast service)”, “Set (unicast service)”, “Set / Reset to Factory (unicast service)”, “Set / Flash (unicast service)”, “Get (unicast service)” y “Hello (multicast service)”.

¿Ahora bien, cómo encaja ICSSPLOIT en todo esto? Como decía al principio, el framework en cuestión trae consigo una herramienta dentro del módulo “Scanners” que nos permitirá obtener el nombre, valores de direccionamiento IP y modelo del equipo por medio de PROFINET-DCP. Eso sí, dentro de la misma subred. En el vídeo que se muestra a continuación vemos el resultado.

En la captura siguiente se puede apreciar cómo desde una máquina virtual se solicita información de un equipo “Siemens” cuya dirección MAC aparece sombreada.

PROFINET-DCP_03

Una vez procesada, dicha estación PROFINET responde con los valores que aparecen en el video, esto es, dispositivo (S7-300); nombre, (pn-io) y direccionaminto IP (192.168.0.1; 255.255.255.0; 192.168.0.1)

PROFINET-DCP_04

Con la entrada de hoy hemos visto la manera de recolectar información empleando ICSSPLOIT a través de PROFINET-DCP. Otra forma, esta vez, fuera de los protocolos habituales.

Muchas gracias, nos vemos en la próxima.

Un saludo.

Edorta