Continuando con el tema de Ethernet/IP y de las herramientas que pueden ser utilizadas para obtener información de nuestros equipos tal y como hablábamos en las entradas:
Hoy vamos a hablar de otra como es «Ethernet/IP Explorer». En mi caso esta herramienta la voy a utilizar sobre sistemas operativos Microsoft Windows aunque lo podremos hacer sobre Linux y descargarla desde el repositorio Sourceforge en el siguiente enlace:
Con ella podremos encontrar dispositivos en la red local que empleen este protocolo y además mostrar, no sólo sus características, sino también información relativa a Clases, Instancias y Atributos de los diferentes objetos. Para tener un poco más de contexto recomiendo leer el siguiente documento:
Dicho esto un vez que la arrancamos procedemos a seleccionar la interfaz desde donde realizaremos la consultas y la IP del equipo de destino.
A continuación podemos ver algunas características como número de serie, producto y obtener el fabricante…
Hasta ahí todo más o menos igual con respecto a la anterior, pero una de las características para seguir obteniendo información sobre el equipo la podemos conseguir añadiendo «Clases» donde cada una de ellas nos dará más datos.
Entre ellos:
Pero uno de los que me resulta especialmente «curioso» es el número #245 el cual nos proporciona información sobre la dirección IP privada del equipo y que difiere de la que nos hemos conectado. Ésta termina en X.X.X.239 mientras que que nos aparece es 192.168.13.11/24. Como podemos comprobar un usuario mal intencionado podría obtener información de manera remota del direccionamiento existente, auqnue éste se produzca a nivel de capa 2 del Modelo de Referencia OSI. Esto sumado a otra información que se obtenga por otros medios se conseguiría una imagen acerca de las redes o dispositivos que existen en la citada subred.
Quizás esto, a priori, puede no tener importancia pero en mi opinión desde luego que la tiene.
En la primera parte de esta entrada hablábamos de la herramienta «EtherNet/IP; CIP Stack Detector» y de cómo podemos obtener información de equipos que emplean este protocolo. Luego, a partir de los resultados obtenidos, podríamos ir un poco más allá y ver si alguno de ellos presenta alguna vulnerabilidad que pueda ser explotable.
Ahora bien, conocedores de la labor que realiza la herramienta, ahora vamos a ver cómo detectar su presencia y tomar medidas al respecto. Al utilizar el protocolo Ethernet/IP, y éste operar en Capa 7 del Modelo de Referencia OSI, necesitaremos de equipos que sean capaces de operar en ella. Si sólo nos quedamos en Capa 4, como mucho veremos el puerto de destino. Bueno, aunque lo tengamos y no lo tenemos configurado, estamos en las mismas.
El contar con equipos que implementen estas capacidades podemos tener VISIBILIDAD acerca de los flujos de datos, y por ende, nos ayuda a determinar anomalías de diferente índole. Insisto, VISIBILIDAD. Pues bien de eso es de lo que vamos a hablar hoy con respecto a la herramienta que hemos presentado en la parte I.
Para ello cuento con un equipo cortafuegos Fortinet Fortigate con las licencias capaces de detectar no sólo los protocolos sino también los comandos, instrucciones, órdenes que son capaces de mandarse a través de ellos. En este fabricante lo encontramos en la parte de «Security Profiles – Application Control – Operational Technologies».
Allí si seleccionamos «View Signatures» podremos verlas que en este caso el fabricante ha desarrollado. En el momento de escribir este artículo está en 3020. OJO, no son 3020 protocolos industriales, en realidad son muchos menos ya sobre cada uno de ellos se pueden enviar diferente cantidad de comandos e instrucciones ya sean estos propietarios o estándar como se puede apreciar en la imagen siguiente. Y mas concretamente sobre el protocolo que nos atañe, Ethernet/IP:
Habiendo definido un perfil y aplicarlo en la regla que filtrará el tráfico, estaremos en disposición de empezar a tener la visibilidad a la que hacíamos referencia. Y «voilá» una vez que lanzamos de nuevo la herramienta…
SE NOS GENERAN TODOS ESTOS LOGS!!!!!!
Quizás podríamos pensar que es un comportamiento «normal» si es que disponemos de equipamiento que emplee Ethernet/IP, pero si vemos que esa dirección IP no es la de un equipo que deba iniciar comunicaciones contra los PLCs… algo falla… O bien, si yo tengo NO TENGO EQUIPOS QUE COMUNIQUEN O INTERCAMBIEN DATOS POR ETHERNET/IP sino por S7; FINS; Modbus; OPC-UA, OPC-AE; OPC-DA; BACNet; u otro de los tantos que nos podemos encontrar; ¿qué diablos hace ese tráfico ahí?
En mi opinión..
LAS COMUNICACIONES QUE SE PRODUCEN EN PLANTA DEBEN SER UN REFLEJO DE LOS PROCESOS.
Sin embargo, ahora viene otra cuestión, y es que esto es de mucha utilidad siempre y cuando sepamos interpretar lo que el cortafuegos nos indica. Si no contamos con personas capaces de entender los logs que nos llegan, sean administradores, analistas de seguridad, de nada nos va a servir. Por eso creo que es vital importancia contar con unos mínimos conocimientos de cómo funcionan los sistemas de control y automatización. Pero bueno, esa es otra historia…
Comentábamos en la entrada “Más que IPs y puertos para proteger entornos industriales” la necesidad de realizar un análisis del tráfico de red para identificar las comunicaciones existentes dentro de nuestro entorno OT. Con los activos y servicios localizados, podremos empezar a configurar las reglas necesarias en nuestros cortafuegos dentro de las acciones de “Separación y Segmentación” necesarias para limitar accesos o propagación de acciones que puedan afectar a la operatividad de nuestras instalaciones.
Sin embrago, debemos ir un paso más allá y conocer aquellos protocolos y comandos que permiten interactuar entre sistemas de control. Sin embargo, uno de los problemas más comunes es el alto grado de desconocimiento ya que, muy a menudo, nos enfrentamos a redes conmutadas o enrutadas donde todo comunica sin filtro alguno.
Esto cobra especial importancia, a nivel de célula de automatización, instalación o conjunto de equipos en planta; base de la actividad de las empresas. Sistemas superiores deben comunicar con controladores y éstos a su vez con elementos de periferia, como sensores, actuadores o cabeceras dentro de arquitecturas de periferia distribuida. Esto da lugar a en muchas ocasiones a que PLCs dispongan de dobles en laces de red. Por ejemplo, un módulo de comunicaciones para su integración “aguas arriba” con la red corporativa y otra “aguas abajo” de la propia CPU para entradas, salidas y módulos de conexión de dentro arquitecturas descentralizadas.
Como bien sabemos las latencias en este tipo de entornos son un aspecto crítico ya que las comunicaciones deben de hacer frente al carácter determinístico de éstas. Por tanto, debamos donde debamos identificar el tráfico no podemos introducir tiempos adicionales que puedan interferir en la operación.
Por tanto, surgen pues dos necesidades, documentar nuestras comunicaciones independientemente del segmento; y el despliegue de nuevos elementos de seguridad perimetral para separar y segmentar nuestras redes IT y OT.
Gracias a las funcionalidades de los productos de algunos fabricantes podremos apoyarnos en alguna de ellas para hacer esto último.
Por ejemplo, el fabricante Fortinet nos permite la configuración de alguna de las interfaces físicas en un modo denominado “One-arm-Sniffer”. Este modo, a diferencia de las habituales para permitir o denegar el flujo de comunicaciones, permitirá analizar mediante los motores IPS y Control de Aplicación el tráfico enviado desde un puerto espejo un dispositivo TAP. En caso de coincidencia con alguna de las firmas, se genera el correspondiente log y registro, descartándose el tráfico recibido.
En primer lugar, deberemos configurar la interfaz en el modo anteriormente indicado, a partir de lo cual nos aparecerán las distintas opciones como los motores de filtrado contra los cuales queremos analizar el tráfico recibido. Como vemos en la imagen siguiente en nuestro caso hemos elegido la interfaz número 4.
Luego dentro de “Edit Sniffer Profile” podremos configurar cada uno de los motores y por tanto y ajustarlo en función de nuestras necesidades. En nuestro caso, puesto que planteamos el escenario de identificación de las comunicaciones y los protocolos industriales nos centraremos en éstos.
Para la presente entrada he empleado la herramienta TCPreplay para la reproducción de capturas PCAP.
De esta manera, el Firewall nos ha identificado no sólo un buen conjunto de ellos sino además los comandos que a través de ellos se envían. Como podemos ver en la imagen siguiente dentro de Modbus encontramos “Modbus_Function.Reserved.Code” y “Modbus_Read_Coils” entre otras como “S7.Protocol_CPU-Function.Read.SZL” o “DNP3_Response”.
Dependiendo de la arquitectura que tenga en nuestras instalaciones de planta las opciones podrán ser diversas, aparte de dónde radique el interés o necesidad por identificar ese tráfico. Es decir, podremos desplegar su uso a nivel de célula para conocer cómo un HMI, un PLC o periferia intercambian información; o bien, cómo desde servidores SCADA o MES envían o reciben consultas sobre equipos de planta para labores de control de producción, monitorización, telemetría entre otras.
En cualquiera de los casos, la idea es explotar otra funcionalidad de los cortafuegos que vayamos a desplegar y en la que nos podremos apoyar para la identificación de comunicaciones. Quizás no tengamos herramientas como “Nozomi SCADAGuardian” pero alternativas, las tenemos.
No obstante Fortinet no es el único. Próximamente presentaremos una funcionalidad similar, pero de otro fabricante.