LLDP, pros y contras de la difusión de información en redes PROFINET

Como hemos dicho en anteriores ocasiones, la evolución de las comunicaciones industriales tiende a basarse sobre tecnología Ethernet en detrimento, en muchos casos no en todos, de las comunicaciones serie. Esto va a traer consigo muchas ventajas, pero también algunos inconvenientes. Por ejemplo, será necesario el despliegue de distintas medidas que reduzcan el riesgo de que algo, o alguien, pueda atentar de manera voluntaria o involuntaria contra la disponibilidad de las instalaciones. Y es que, a mayor interconexión, mayor grado de exposición.

El estándar en estos casos es PROFINET, evolución del extendido PROFIBUS. Según sea su implementación encontraremos distintas funciones PROFISAFE, PROFIENERGY, PROFINET-MRP, etc. Sin embargo, este protocolo no viene solo, sino que también hace uso de otros para su funcionamiento, entre ellos LLDP. Si, parece que no, pero sí.

LLDP, Link Layer Discovery Protocol, es un protocolo empleado por dispositivos de red para anunciar información propia a otros equipos y dispositivos. Viene definido por el IEE 802.1AB. Su funcionamiento es muy similar al propietario de Cisco CDP, Cisco Discovery Protocol. Todos los dispositivos PROFINET lo soportan y es empleado para identificar, comprobar y mantener la topología de una red PROFINET, aparte de obtener información de diagnóstico si algo cambia. Otro de los usos es facilitar la puesta en marcha, tanto en un funcionamiento normal como en caso de fallo de algún equipo siendo necesario su sustitución. Las operaciones a este respecto se realizan de forma automática y sin necesidad de herramientas tipo software, lo cual simplifica y agiliza la forma en la que un equipo es reemplazado, minimizando la pérdida de disponibilidad.

Para ello los dispostivos PROFINET envían de forma cíclica esta información. Sin embargo  desde el punto de vista de la seguridad…

Haciendo un uso legítimo,  todo son facilidades. Sin embargo, cara a la realización de una auditoría o pentesting en entornos industriales que empleen PROFINET, LLDP se convierte en una fuente de información muy, muy buena.  Las tramas LLDP son enviadas a la dirección multicast 01:80:c200:00e. Los switches, por defecto, inundarán estas tramas por todos los puertos con lo que si conectamos nuestro Wireshark en alguna boca que encontremos libre… Seremos capaces de obtener toda esta información que se anuncia.

Empecemos por lo sencillo, aquí va una captura de un switch del fabricante HP…

LLDP_01

Como podemos comprobar podemos ver el nombre, boca del switch a la que estoy conectado, versión del Firmware, Hardware, etc. etc.

¿Ahora bien que pasa con equipos industriales? ¿Qué información podemos extraer? Veamos algunos ejemplos.

En la siguiente imagen podemos ver la que anuncia un switch SIEMENS. Allí podemos ver que estamos conectados al puerto 1, modelo X208, funciones MRP, IP de administración, etc.

LLDP_02

En la siguiente captura veremos el tráfico referente a un autómata S7-300 a lque nos hemos conectado a una de sus interfaces disponibles en su CPU.

LLDP_03

Como podemos ver aquí ya la información disponible es algo distinta, aunque se mantienen algunos campos como Chassis Subtype, Time to Live, etc. Sin embargo, algunos de los que no están por ejemplo el referente a MRP, protocolo utilizado en  switches para detectar bucles en topologías en anillo. Aprovecho para dejaros el link a una entrada que escribí hace un tiempo. Pincha aquí.

Como último ejemplo pondremos la trama esta vez de un módulo de comunicaciones CP del mismo PLC S7-300 que citaba anteriormente.

LLDP_04

Sin duda la información que vemo en cuanto a cantidad y calidad es muy importante. Si vemos habla de CP 343, propia de estos PLCs, con lo que ya sabemos el modelo que se trata. Como información extra podríamos ver de qué modelo de Firmware 3.2.23.

A partir de aquí habría que investigar si existe alguna vulnerabilidad conocida. En este caso no afecta, pero si la versión hubiera sido algo inferior, desde luego que sí. Un ejemplo de ellas, las podemos encontrar aquí:

Vulnerabilidad en módulos de comunicaciones SIEMENS.

Múltiples vulnerabilidades en módulos SIMATIC CP 343-1/CP 443-1 y CPU SIMATIC S7-300/S7-400 de Siemens

Como podemos comprobar LLDP puede ser un gran aliado en tareas de mantenimiento, puesta a punto o reducción del tiempo en caso de avería ya que simplifica todas las tareas asociadas para restaurar la operatividad. Sin embargo, surge el problema de qué hacer al publicitarse tanta información que luego, pueda hacerse un mal uso de ella. Se me ocurren varios usos, pero mejor no dar ideas.

Sin duda, desde un punto de auditoría o pentesting, LLDP será un gran recurso para una fase inicial de “Information Gathering”, pero como digo, en malas manos…

El problema aquí es que el propio protocolo PROFINET necesita de LLDP por lo que su uso debe ser permitido ya que se requiere bien para el funcionamiento como para reducir el tiempo de indisponibilidad por fallo. Cisco en alguno de sus recomendaciones deshabilitar CDP o LLDP para los equipos finales. Obviamente éstos no lo necesitar para su funcionamiento, pero en Controladores sí.

Puesto que debemos convivir con él, una de la alternativa es el bloqueo de puertos, bien de forma física como lógica.

Phisical Block Switch Port Siemens

No quiero decir con esto que gracias a LLDP nuestras redes PROFINET van a estar en peligro (que también), sino que existen protocolos que para su uso requieren de la difusión de información que aunque no queramos publicarla, debemos de hacerlo para aprovecharnos de las ventajas que éstos ofrecen en el mantenimiento, operación y garantía de disponibilidad.

¡Un saludo, nos vemos en la siguiente!

Edorta

 

Puerto espejo, un aliado a veces olvidado.

Como hemos hablado en otras ocasiones, poco a poco se va extendiendo el uso de protocolos industriales basados en tecnología Ethernet en lugar de los tradicionales serie. Esto, si bien permite otra manera de interconexión, también abre nuevas posibilidades en la denominada Industria 4.0. Sin embargo, obliga a tomar cierto tipo de medidas en cuanto a Ciberseguridad se refiere ya que los dispositivos y sistemas que intervienen en los procesos de control y automatización no sólo comienzan a estar más expuestos sino que son susceptibles de sufrir los mismos problemas con ciertos agravantes.

No obstante, aunque se trate de comunicaciones Ethernet, los equipos de networking industrial no sólo conservan funcionalidades tradicionales, sino además otras propias de estos entornos como MRP en contraposición a STP, Spanning Tree Protocol.

Una que puede sernos de mucha utilidad, sin menospreciar a otras tantas, es la de “Port Mirroring” o Puerto Espejo. Esto es, la capacidad de un Switch para poder replicar el tráfico que pasa por dos o más puertos y enviarlo por un tercero. Para entender mejor este concepto haré un repaso sobre cómo funciona un switch. Aunque sea algo bastante obvio para Técnicos de Comunicaciones o Administradores, seguramente no lo sea tanto para otros de Mantenimiento o Ingenieros de Procesos.

Esquema_01

Pongamos un ejemplo con dos equipos llamados “HMI” y “PLC”. Para comunicarse el equipo “HMI” con el “PLC” deberá conocer la IP del de “destino” y, al darse cuenta que está dentro de su misma red, deberá obtener entonces la MAC de éste. Para ello echará mano del protocolo ARP. El protocolo ARP permite conocer la dirección MAC de un equipo a partir de una IP conocida. Por tanto, si “HMI” no la tiene almacenada en su caché ARP  deberá realizar un ARP request. Es decir, preguntará a toda su red sobre cuál es la MAC del equipo con IP XXX.XXX.XXX.XXX. En este caso la dirección MAC de destino será ff:ff:ff:ff:ff:ff, un broadcast de capa 2. Todos los equipos la recibirán y la procesarán pero sólo el que tenga la IP por la cual se pregunta contestará con un ARP Replydiciendo “–La MAC de la IP XXX.XXX.XXX.XXX es XX:XX:XX:XX:XX:XX. Conocida por “HMI” tanto la IP y MAC de “destino”, se producirá la comunicación. Si por el motivo que sea no se conocen algunos de estos campos, la comunicación no se produce.

Así pues, un Switch, a diferencia, de los Hubs introduce un nivel de “inteligencia”. Un switch contiene una tabla, denominada CAM (Content-Addresseable Memory) en la cual se incluyen las direcciones MAC de cada uno de los equipos conectados a los distintos puertos del switch. Para realizar las tareas de conmutación, acudirá a ella para saber por cuál de ellos deberá enviar el tráfico en función de la MAC de destino. Esta asignación de direcciones MAC podrá hacerse de forma dinámica o manual. La forma manual implica que el administrador asigne a cada puerto del switch la MAC del equipo conectado; mientras que la forma dinámica se basa en que por cada trama que ingrese por cada boca del switch, éste mirará la MAC de origen y la incluirá en la CAM. Pasado cierto tiempo, si no se recibe tráfico se borrará dicho registro. Así, a la hora de efectuar la comunicación, los switches se fijarán en la MAC de destino, consultarán dicha tabla para saber por qué puerto deben enviarla y la “despacharán”.

Ahora bien, si por distintas razones necesitásemos conocer el tráfico que pasa en entre “HMI” y “PLC”, no podríamos conseguirlo ya que el switch sólo conmuta el tráfico por los puertos involucrados. Aquí es donde aparece el concepto de “Port Mirroring” o “Puerto Espejo”. Mediante esta funcionalidad lo que conseguimos es que el switch haga una copia de dicho tráfico y lo envíe por un tercer puerto. ¿Con qué finalidad? Por ejemplo, si en este último conectamos un analizador de tráfico, podremos estudiar todo aquello que suceda entre “HMI” y “PLC” y detectar posibles anomalías sin interferir entre el flujo de comunicaciones. Obviamente el switch tiene que tener esta capacidad para hacerlo, sino… no hay nada que hacer.

Si bien las tasas de transferencia en entornos OT son menores que en entornos IT, esto no quita que debamos tener presente algunas consideraciones. Por ejemplo, si las comunicaciones son Full-Duplex (enviar y recibir a la vez) y el enlace es de 100 Mbps, el tráfico que puede llegar a recibir un equipo es de 200 Mbps, 100 Mbps para enviar y otros 100 Mbps para recibir. Si el enlace del puerto espejo es también a 100 Mbps el consumo de ancho de banda entre “HMI” y “PLC” no puede ser superior al 50%, ya que estaríamos superando la capacidad del mismo. O bien, que sea de una velocidad inferior, por ejemplo, a 10 Mbps. En esos casos, el switch descartaría paquetes con lo que el tráfico capturado no se correspondería con la realidad. Aparte, claro está, de la carga computacional que supone para la CPU del propio switch la copia de las tramas. A esto hay que sumar otras limitaciones que cada fabricante pueda considerar en sus productos.

Sin duda es un buen recurso, pero como comento, hay que tener en cuenta algunos aspectos técnicos.

A continuación, pondré ejemplos sobre su implementación en equipos. En la siguiente imagen se muestra una captura de la configuración de un switch Mikrotik RouterBoard 260GS, el cual dispone de 5 puertos RJ-45 10/100/1000 + 1 SFP.

config Mikrotik RouterBoard_01

Según cómo está configurado, estaríamos haciendo una copia del tráfico tanto saliente como entrante del puerto 1 que es dónde en teoría habría conectado un PLC y la enviaríamos por el puerto 2 donde conectaríamos un sniffer que lo recogería para un posterior análisis. Un clásico de este tipo de funciones es el archiconocido Wireshark. También podríamos seleccionar sólo uno de los sentidos, o bien el saliente o entrante según sean nuestras necesidades.

Captura Wireshark_01

Lo cierto es que ese dispositivo resulta de mucha utilidad ya que por su pequeño formato puede ser utilizado en tareas sobre equipos finales como supervisión, diagnóstico, troubleshooting, etc. Aparte, al disponer de un módulo SFP podremos conectarlo a enlaces de fibra o par de cobre.

Ya sobre equipos de red tradicionales, podemos poner un ejemplo con switches Cisco. La funcionalidad la recoge este fabricante como puerto SPAN (Switched Port Analyzer). Aquí las posibilidades, como es lógico, son mayores y pasamos a la interfaz de consola. Podéis encontrar más información en este enlace.

Hasta ahora hemos visto switches “tradicionales”, sin embargo otros específicos de entornos OT también poseen esta funcionalidad como los muestra SIEMENS en este enlace y de donde se extraen las siguientes imágenes.

SIEMENS_Port_Mirroring_01

SIEMENS_Port_Mirroring_02

Sin embargo esto no es exclusivo de equipos de networking. Por ejemplo, el fabricante Fortinet la incluye en sus dispositivos. A continuación se muestran capturas sobre un FortiWifi 60D con versión de FortiOS 5.4.5. Como podemos ver la forma de acceder a ella es a través del apartado de “Interfaces”.

Fortigate SPAN_01

En mi caso “HW_SW_01”, y ya en su configuración veremos el campo correspondiente:

Fortigate SPAN_02

Como vemos el criterio es similar, interfaz a monitorizar y a hacia cuál queremos enviar la copia de los paquetes. Haciendo una prueba, he conectado en el puerto “internal1” un servidor Modbus (10.10.10.100) y desde el puerto “internal2” (10.10.10.200) el cliente desde cual hacer las lecturas. Finalmente, un equipo con Wireshark en el puerto “internal3” donde capturar el tráfico.

Wireshark_Modbus_01

Un caso de uso podría ser en un equipo donde se le aplique una estrategia de “Virtual Patching” y necesitemos saber qué es lo que está sucediendo desde, hacia, él. Hace tiempo escribí a este respecto, os dejo los enlaces:

Hasta aquí la entrada de hoy con la que espero hayáis podido descubrir una nueva funcionalidad de vuestros equipos. Puede que escondida, pero seguro de utilidad en un futuro. Las aplicaciones pueden ser varias, espero poder escribir sobre alguna de ellas. Sólo falta tiempo.

Un saludo a todos, nos vemos en la siguiente y no te olvides que puedes seguirnos también en @enredandoconred .

Edorta

MRP, Media Redundancy Protocol

Como avanzaba en la entrada “Redundancia en entornos ICS/SCADA” hoy comenzaremos a hablar de aquellos mecanismos que dotan a nuestras redes industriales de una resiliencia mayor. La tendencia de los protocolos empleados en este tipo de entornos es evolucionar hacia tecnología Ethernet en lugar de la tradicional serie. Sin embargo, su propia naturaleza, no permite la creación de bucles en la red ya que el tráfico “Broadcast” podría no sólo ralentizar las comunicaciones, sino bloquearlas. Ante la necesidad de entornos que requieren alta disponibilidad, hemos configurar protocolos que “rompan” esos bucles dejando un solo camino posible para la comunicación entre equipos. En caso de producirse un fallo, dicho protocolo será capaz de detectarlo y desencadenar las medidas necesarias para que todo el tráfico comience a ir por una vía alternativa. En entornos IT, el más conocido es Spanning Tree Protocol (STP) así como sus respectivas versiones RSTP, MSTP o PVSTP. Sin embargo, los tiempos que maneja para poder restaurar las comunicaciones son muy altos para los requerimientos de los sistemas de control y automatización, siendo necesario emplear otros que iremos viendo en esta y entradas sucesivas.

El primero de ellos es MRP (Media Redundancy Protocol). Este protocolo está descrito en el estándar IEC 62439-2, el cual es ampliamente utilizado en redes industriales para entornos de alta disponibilidad. MRP opera en Capa 2 y es específico para redes en anillo con hasta 50 equipos, garantizando un comportamiento determinístico en caso necesidad de cambio de un estado a otro. Para ello, define una serie de tiempos máximos para recuperar las comunicaciones según sea la configuración elegida. Éstos pueden ser 500 ms, 200 ms, 30 ms y 10 ms. Como hemos dicho estos son valores máximos, por lo que los tiempos reales oscilan entre la mitad y un cuarto de los mismos. Esto es, si configuramos nuestros equipos con un valor de 200 ms, el tiempo aproximado del cambio entre una ruta a otra de los paquetes podrá rondar entre 50 y 60 ms, aproximadamente.

Como vemos en la imagen anterior, MRP necesita que cada nodo disponga de dos enlaces en el anillo. Dentro de la topología, uno de ellos será elegido MRM (Media Redundancy Manager), el cual   monitoriza y controla,  reaccionando en caso de fallo. Esto lo consigue enviando tramas de control desde cada uno de los puertos, recibiéndolas en el otro extremo.  A pesar de que uno de ellos permanezca “Bloqueado”.

El resto de elementos del anillo reciben el nombre de MRC (Media Redundancy Client). Cada MRC retransmite las tramas de control enviadas por el MRM de un puerto a otro de tal manera que éste pueda detectar el fallo y activar el puerto en “Bloqueado”.

MRP define 3 tipos de tramas de control:

  1. Para monitorizar el estado de anillo. MRM envía regularmente tramas de prueba en ambos puertos que le conectan al anillo.
  2. Cuando el MRM detecta un fallo o recuperación de los enlaces, envía tramas de cambio de topología (“TopoChange”) en ambos puertos de lanillo.
  3. Cuando un MRC detecta un fallo o recuperación en un puerto, local envía tramas de cambio de enlace (“LinkChange”) al MRM. Éstas se consideran como un subtipo de otras denominadas “Linkdown y “Linkup”.

En un funcionamiento normal, “Anillo Cerrado”, el MRM bloqueará todo el tráfico a excepción de estas tramas, por lo que a efectos prácticos el anillo se comporta como si fuera un único enlace. Esto es, no existe ningún bucle.

Anillo Cerrado MRP

                        Anillo Cerrado MRP

Cuando el MRM deja de recibir dichas tramas en el otro extremo, interpreta que el enlace se ha roto en algún punto,  “Anillo Abierto”, por lo que ese puerto que estaba en “Bloqueado”, ahora comienza a enviar tramas de forma normal.

Topología en anillo abierto MRP

                      Anillo Abierto MRP

A esto hay que sumar que los MRC son capaces de informar de cambios de estado en alguno de los enlaces. Si esto se produjese, el MRC envía una trama de control al MRM informando de ello. Si éste la recibe antes de detectar que se ha producido un cambio en el anillo, toma la información contenida en ella para activar el enlace “Bloqueado” y así recuperar la conectividad en el menor tiempo posible. De ahí que, aunque se fijen tiempos máximos, siempre cabe la posibilidad de que el anillo pueda seguir enviando tráfico por debajo de estos umbrales.

Tanto el MRM como el MRC definen una serie de “estados” para sus puertos dentro de la topología.

  1. Disabled, los puertos descartan todas las tramas recibidas.
  1. Blocked, los puertos descartan todas las tramas excepto las tramas de control MRP y algunas otras de protocolos como LLDP.
  1. Forwarding, los puertos reenvían todas las tramas recibidas.
  1. Not Connected, el enlace está físicamente caído o desconectado.

En otro orden, en el caso concreto de PROFINET, MRP puede ser implementado sobre los dispositivos finales sin necesidad de equipos adicionales gracias a la definición de una aplicación concreta como es PROFINET/MRP.

Por último conviene citar las funcionalidades que cada fabricante otorga a sus productos dependiendo de modelos y licenciamiento. Algunos de ellos pueden ser; posibilidad de integración con software de gestión como Siemens Total Integrated Automation (TIA); definición de varios anillos MRP por una misma VLAN; interperabilidad con Spanning Tree Protocol; etc.

No debemos olvidar tampoco de las limitaciones y recomendaciones que cada uno hace a la hora de configurar los equipos. Por ejemplo, Cisco nos habla de que los puertos MRP no pueden ser configurados como puertos SPAN, Private VLAN o Tunnel y, si además la implementación es sobre Profinet, como Trunk; ser configurado en puertos Etherchannel; etc.

Lo dicho, hablar de resiliencia no es sólo hablar de la securización, es tener además la capacidad de recuperarse del elemento que provoca una determinada perturbación. Hoy en día con la cantidad de amenazas que acechan a los Sistemas de Control  Industrial resulta necesario no sólo desplegar medidas técnicas sino además definir arquitecturas que hagan frente a cambios o anomalías inesperadas. Los accidentes ocurren, una fibra óptica rota; un SFP, defectuoso; una configuración accidental de un puerto, o cualquier otra razón,  bien puede desencadenar una alteración en las comunicaciones y por tanto un impacto en el proceso. Esto no quita que debamos hablar de otros riesgos como el “Sabotaje”, “Inyección de tráfico”, “Intrusión”, y que obligen implementar otras medidas como el “Hardening de Sistemas”, “Monitorización”, “Control de Accesos”, entre otras paliando así estas amenazas.

Un saludo a todos, nos vemos en la siguiente y no te olvides que puedes seguirnos también en @enredandoconred .

Hasta pronto!

Redundancia en entornos ICS/SCADA

Como hemos hablado en anteriores ocasiones, y no nos cansaremos de repetirlo, la prioridad número uno en entornos industriales es garantizar la disponibilidad. Luego vendrá la integridad y la confidencialidad, pero lo primero es la disponibilidad. Para alcanzarlo, se ha de aplicar una estrategia de Defensa en Profundidad para reducir los riesgos de sufrir un incidente de seguridad y prevenir que algo, o alguien, atente total o parcialmente contra nuestras instalaciones. Dada la limitación y naturaleza de los equipos, así como las debilidades que ofrecen en lo que a materia de seguridad se refiere, muchos de ellos deben delegar en la infraestructura de red la seguridad que por sí mismos no pueden ofrecer. Para ello, ha de comenzarse por la separación de los entornos IT y OT; y más tarde en la segmentación de este último definiendo zonas más pequeñas con el fin de que si una se ve afectada, la amenaza no se propage al resto.

Sin embargo, esto no es lo único que debemos considerar. Si queremos que nuestra red sea resiliente, no sólo debe evitar,  y ser capaz,  de mitigar un ataque sino que debe ser tolerante a fallos, ya sean éstos intencionados o no.

Los enlaces redundantes suponen una medida para evitar puntos únicos de fallo que puedan dejar fuera de servicio toda una instalación. Duplicando las vías de comunicación conseguimos que, en caso de producirse uno, los sistemas comunicarán por caminos alternativos. Así podemos establecer dos posibles propósitos:

  1. Tolerancia a fallos

Aumento de las vías de comunicación que permitan reconducir el tráfico por alguna de las restantes.

  1. Balanceo de carga

Disponiendo de dos o más enlaces entre equipos podemos no sólo lograr el punto anterior sino también un envío alternativo de paquetes por canales distintos de tal manera que consigamos descongestionarlos en caso de saturación de alguno de ellos.

Aunque el punto uno en realidad también está incluido dentro del segundo, el uso de enlaces redundantes en entornos industriales esta usualmente dirigido a éste ya que es más importante garantizar la disponibilidad que el rendimiento. Esto último además se refuerza con que las necesidades de anchos de banda en entornos OT son más pequeñas que en IT.

La tendencia de las comunicaciones industriales es que se basen en tecnologías Ethernet y servicios TCP/IP dejando atrás, o reduciendo el uso,  protocolos basados en buses tipo RS-485 o serie. Sin embargo, el tráfico broadcast propio de la tecnología Ethernet no permite el uso de enlaces redundantes por lo que hemos de implementar protocolos que resuelvan este problema. El más extendido es Spanning Tree Protocol o algunas de sus versiones como RSTP, MSTP o PVSTP, el cual permite disponer de varias rutas físicas, pero bloqueando los puertos de los elementos de la red de tal manera que sólo exista una activa. El resto, permanece en “Standby” hasta que, como digo,  se produzca una caída de alguno de los enlaces que permanecen activos obligando a recalcular una segunda ruta que reestablezca las comunicaciones,  activando alguno de esos enlaces que permanecían en “Standby”. Hasta que esto ocurre transcurre un tiempo que puede ir de uno a varias decenas de segundos según sea el protocolo elegido.

Topología en anillo_01

Esto en entornos IT puede no suponer un problema, donde el retraso en décimas de segundo puede pasar inadvertido mientras se manda un correo o se accede a un fichero en una unidad de red. Aparte, claro está, que existan tecnologías más modernas que permitan la supresión de bucles en Capa 2 y por ende, estos protocolos. Pero insisto, aunque estén implementados, los tiempos pueden ser más amplios, algo que resulta inaceptable para entornos OT. Para hacernos una idea, en comunicaciones tipo RT (Real Time) o IRT (Isochronous Real Time) hablamos de latencias por debajo de 10 ms y 1 ms, respectivamente. Es por ello que las medidas de entornos IT no son aplicables, una vez más, a entornos de automatización, por lo que se han de aplicar otras. En resumen, el método para conmutar de un enlace a otro debe ser predecible para determinar el límite tolerable de latencia, y por tanto, conocer de antemano cómo puede afectar a las comunicaciones según sea su naturaleza. El objetivo debe ser que la convergencia sea tan rápida que resulte transparente para las aplicaciones en uso sin sobrepasar los límites tolerables.

Es por esto que en entornos OT no hablamos de Spanning Tree, ni como decía, ninguna de sus variantes. No tienen cabida. Han de emplearse otros. En las próximas entradas veremos estos protocolos y cómo, una vez más, disponer de una arquitectura de red nos proporcionará,  junto con las medidas de seguridad paralelas,  una resiliencia mayor para hacer frente al creciente número de amenazas y riesgos a los que se enfrentan nuestras infraestructuras.

Un saludo a todos, nos vemos en la siguiente y no te olvides que puedes seguirnos también en @enredandoconred .

Un saludo!

Separar y Segmentar, primeros pasos para reducir riesgos…

Hace unos meses hablaba del concepto de Defensa en Profundidad en entornos industriales y de las medidas que ello conlleva para reducir el riesgo de sufrir algún incidente de seguridad. Como podemos comprobar no se trata de tomar una única medida, sino que es la suma de un conjunto de ellas aplicadas en distintas capas.

Una que resulta fundamental y deberemos implementar en primera instancia, es Separar y Segmentar nuestras redes. Veremos de qué se trata.

Cuando hablamos de separar nuestras redes, hablamos de establecer una frontera entre la red “Común” donde ubicamos las redes IT tradicionales como un entorno de “Oficinas”; y nuestra de red de automatización o control, llamémosle de “Producción”. La forma cómo lo hacemos es, introduciendo un elemento de seguridad perimetral como un Cortafuegos que permita sólo aquellas comunicaciones que sean estrictamente necesarias. Sin embargo deberemos tener presente aspectos clave en estos tipos de equipos, como que sean Cortafuegos de Próxima generación (NGFW, Next Generation Firewall) con funcionalidades IPS/IDS, Antivirus y Control de Aplicaciones; y que soporten protocolos de ámbito industrial tales como Profinet, Modbus-TCP, OPC, DNP3, ICCP, etc. Es decir no nos vale que sólo hagan DPI (Deep Packet Inspection) sobre FTP, DNS, HTTP, (que también son necesarios) si lo que nos interesa es detectar las amenazas propias de sistemas de control, carentes algunos de ellos de medidas de seguridad inherentes. Ahora bien, no nos podemos olvidad que estos dispositivos introducen latencias y por tanto, dependiendo del ámbito de automatización, estaremos introduciendo retardos, que pueden ser inasumibles.

Dicho lo cual, y por representarlo de forma simple y gráfica, nos quedaría de la siguiente manera:

Separacion_01

Como podemos comprobar estamos hablando de una separación física de ambos entornos. Cada una pose uno o varios enlaces a través del dispositivo de Seguridad Perimetral, y cuyo tráfico será sometido a las reglas que configuremos en él. Obviamente estos equipos, dependiendo de fabricante y modelo, podrán tener unas u otras capacidades.

Al mismo tiempo lo idóneo es que la red de control posea todos los recursos necesarios (servidores de almacenamiento, DNS, NTP, etc.) para poder operar de forma totalmente independiente de la red de “Oficinas” pero lamentablemente esto no siempre es así.

Las redes físicas completamente separadas constituyen la mejor de las opciones, ya que pueden utilizarse para conseguir una separación lógica y física total. Ambos entornos se basan en su propia topología y al no tener componentes de red compartidos tales como switches o routers, todas las comunicaciones de entrada y salida entre la red “Común”, y las redes de “Automatización”, se controlan mediante un punto de seguridad como el NGFW definido anteriormente.

A nivel de infraestructura esta solución también aporta la ventaja que cada cual puede desarrollar su actividad de manera diferente. Por tanto, ante cualquier cambio o migración en los entornos, sólo es necesario modificar el elemento de acoplamiento al Firewall para seguir garantizando la comunicación. Esto es especialmente importante considerando los ciclos de vida del equipamiento en entornos OT, mucho mayor en comparación con los de IT.

No nos debemos olvidar que la premisa de los entornos industriales y las Infraestructuras Críticas es garantizar la disponibilidad de las instalaciones, por tanto en caso de producirse algún fallo en la red “IT”, éste no afectará al entorno “OT”.

Separados ambos entornos, el siguiente paso será aplicar el concepto de Segmentación. La  Segmentación consiste en subdividir la red, o redes, del entorno de automatización en lo que denominamos “Zonas de Seguridad”, y la aplicación de un “Punto de aplicación de seguridad”.

Definiremos como “Zona de Seguridad” al conjunto de dispositivos, aplicaciones, servicios y otros activos agrupados según su ubicación, funcionalidad o condición, tanto desde un punto de vista físico como lógico. Un “Punto de aplicación de seguridad” es un elemento o dispositivo, normalmente un Firewall, cuya  misión es la de filtrar todas las comunicaciones hacia, desde o entre, las distintas “Zonas de Seguridad”. La idea es sencilla, agrupar y aislar  un conjunto de activos y controlar todos los flujos de comunicaciones entre ellos. Al hacerlo conseguiremos por un lado, reducir el grado de exposición que tendrá una “Zona de Seguridad”, y por otro, en caso de producirse un evento de seguridad (ataque, escaneo, propagación de malware, etc.) quede confinado a su “Zona”. Esto no sólo reforzará nuestra seguridad sino que además aumentará nuestro grado de resiliencia frente a cualquier fallo producido por algún tipo de actividad hostil, ya que, aunque una “Zona” haya quedado aislada o sus comunicaciones bloqueadas, el resto de “Zonas” podrán seguir estando operativas. No estarán al 100% pero al menos podrán seguir funcionando a un rendimiento menor durante equis tiempo.

Escenario_01

Una de las preguntas claves es, qué tamaño debe tener una “Zona de Seguridad” y qué dispositivos hay que incluir en cada una de ellas. Cada arquitectura es única,  no sólo por el tipo de equipamiento en sí, a veces común pero distinto según fabricante, modelo y prestaciones, sino cómo cada sistema está desplegado dentro de su propio entorno y cómo se comunica con otros para formar una única, completa e integrada red de control industrial. No existe una respuesta única de cómo se debe diseñar una arquitectura concreta ya que son muchos son los factores a tener en cuenta propios de cada instalación. Algunos de ellos, que no los únicos, son; tamaño de la empresa, sector, actividad, criticidad de los elementos, capacidad de la electrónica de red, antigüedad de los equipos, vulnerabilidades, perfil de usuarios que acceden a ellos, etc.

Nuevamente,  un aspecto clave  son los tiempos. No nos podemos olvidar que en los entornos industriales ha de garantizarse, en primer lugar la disponibilidad de las instalaciones. Por ello en la decisión qué y cuántos componentes se pueden combinar dentro de un área de seguridad deberemos estudiar cuánta cantidad de tiempo es asumible y cuánta no, en el supuesto que algún suceso deje inoperativos, total o parcialmente, nuestros equipos.

Otro de los elementos que deberemos contemplar es la creación de una DMZ. Sí, aquí, en los entornos industriales también debe haberlas. El concepto de esta DMZ es muy similar al que se ha hecho en los entornos IT tradicionales. En esta Zona ubicaremos aquellos recursos compartidos que pudiera haber entre ambas zonas como servidores Antivirus; gestor de parches; otros específicos de la red de automatización como Bases de Datos, ficheros, NTP, DNS, pasarelas VPN, Escritorio Remoto, etc.

Escenario_02

Como vemos poco a poco a medida que nos adentramos van apareciendo más componentes y más aspectos a tener en cuenta. Esto es sólo la “punta del Iceberg”. Seguramente muchos de los que lean el presente verán que faltan muchas cosas, ¡VAYA QUE SI FALTAN! Esto es sólo un esquema genérico, luego hay que profundizar sobre cada uno de los aspectos. Por ejemplo, deberíamos hablar de las ACLs que nos servirán de apoyo para discriminar cierto tipo de tráfico a nivel de la electrónica de red; cómo configurar los equipos en Alta Disponibilidad; ¿enrutamiento estático o dinámico?; diseño de VLANs; cifrado de comunicaciones; y un largo etcétera.

Resumiendo, mucho se podría hablar y escribir sobre cómo diseñar, o ajustar, la arquitectura de red. Podremos establecer parámetros, líneas de trabajo o estrategias genéricas, pero luego cada proyecto es totalmente distinto.

Con esto damos por concluida la entrada de hoy que al igual que las anteriores espero sea de vuestro agrado. Os invito a que dejéis vuestros comentarios.

Un saludo, nos vemos en la próxima.

Virtual Patching en funcionamiento (Parte III)

Bueno, aquí seguimos com el tema del Virtual Patching. Antes de seguir los dejo los enlaces de las 3 entradas anteriores para estar al tanto del tema que nos concierne.

1.- Parches y Virtual Patching

2.- Virtual Patching en funcionamiento (ParteI)

3.- Virtual Patching en funcionamiento (Parte II)

Siguiendo con la última entrada, si no contásemos con el dispositivo Fortigate, un atacante podría haber localizado nuestra vulnerabilidad y lanzar un “exploit” para poder aprovecharse de ella. Esto puede llevarse a cabo con el framework “Metaesploit” destinado a ese fin y con la ayuda de la GUI “Armitage” para un entorno más amigable.

Arrancaríamos la aplicación “Armitage” desde nuestra distribución Kali y seguiríamos los siguientes pasos:

Dar de alta al equipo con su dirección IP que ya la conoceríamos de los pasos anteriores:

Metaesploit 01

Se realiza un escaneo para detectar puertos abiertos y posterior detección del Sistema Operativo:

Metaesploit 02

Ahora se trata de localizar posibles ataques en función de los resultados obtenidos con anterioridad.

Metaesploit 03

A partir de ahí se localiza la vulnerabilidad descubierta con el escáner “Nessus”.

Metaesploit 04

La ejecutamos y comprometemos el objetivo.

Metaesploit 05

Y una vez hecho esto, ya tendríamos nuestro equipo bajo control. Como vemos en la figura siguiente el icono del XP ha cambiado tornándose de color rojo y unos rayos.

Metaesploit 06

Con el equipo comprometido, podríamos hacernos con el control del Windows XP mediante un visor VNC aún sin tenerlo instalado. El exploit genera un proceso en nuestro equipo Kali, al cual nos conectamos ejecutando el comando:

#vncviewer 127.0.0.1:[identificador]

Metaesploit 07

Esto resulta especialmente grave ya que la tener acceso a la interfaz gráfica podríamos realizar alguna serie de cambios y modificaciones sobre las aplicaciones que estarían corriendo en esos instantes.

También, si lo deseásemos, podríamos hacernos con una consola remota tal y como aparece en la parte inferior y otras muchas acciones:

Metaesploit 08

Sin embargo, si configurásemos el motor IDS/IPS para que bloquee en lugar de monitorizar. Esto es:

Metaesploit 09

Y lanzamos de nuevo el ataque veríamos que éste no tiene éxito:

Metaesploit 10

Metaesploit 11

Y los logs generados indicarían el bloqueo:

Metaesploit 12

Así pues queda claro la importancia de no sólo parchear nuestros equipos, sino además en el supuesto de que por distintas razones no podríamos llevarlo a cabo, la obligación de tener que tomar las medidas necesarias.

En entornos industriales podemos ver el esta situación de una forma más habitual que en entornos IT tradicionales ya que por un lado los ciclos de vida de los PCs industriales son mayores y por otro, dada la criticidad de las instalaciones gobernadas por éstos muchas veces no sea aconsejable instalar algún tipo de software tipo “Endpoint” que los bastione con funcionalidades Host IPS, Antivirus y Firewall.

Espero que el ejemplo haya sido de utilidad para tomar conciencia de esta situación y de las medidas que debemos tomar para securizar nuestros equipos.

Así pues nos vemos en la siguiente entrada, no sin antes invitaros a dejar vuestros comentarios. Desde ya muchas gracias.

Un saludo!!

Virtual Patching en funcionamiento (Parte II)

Siguiendo la entrada anterior Virtual Patching en funcionamiento (Parte I) vamos a seguir viendo los efectos del Virtual Patching pero en el caso frente a un escáner de vulnerabilidades.

Lo que vamos a hacer es lanzar uno desde una máquina virtual con Kali Linux hacia un Windows XP vulnerable. ¿Por qué un XP? Porque este sistema operativo está aún muy presente en muchos equipos en entornos industriales y debido al largo ciclo de vida de las estaciones o instalaciones que gobiernan, siguen funcionando a pleno rendimiento. Sin embargo, como sabemos ya no hay soporte y muchos de ellos no están parcheados, lo cual les convierte en un objetivo muy apetecible a malware y usuarios malintencionados. Ni qué hablar de Windows 2000 que también los he visto… Buenos, el esquema era el siguiente:

Esquema 01

Como decía, en el post anterior trataba los resultados tras hacer un escaneo con Nmap. Ahora toca pasar a la siguiente etapa dentro de una supuesta intrusión, o auditoría. Encontrar vulnerabilidades para ser explotadas. Para ello se utiliza un escáner que en nuestro será “Nessus”, pudiendo encontrarse otros como OpenVAS y Nexpose.

Kali Linux no lo trae por defecto, así que lo hemos descargado de la página del producto, obtenido el código correspondiente, instalado y actualizado los plugins. Luego creamos el proyecto y definimos los perfiles que queremos utilizar. En mi caso he dejado sólo los relacionados con plataformas Windows para que sea algo más rápido. No obstante os dejo otro de mis post donde hablaba de la metodología del Pentesting. Lo podéis encontrar aquí.

Nessus 01

Por otro lado la configuración de reglas en el Fortinet Fortigate Rugged 60D quedaría como sigue:

Nessus 02

Como se puede ver se permite todo el tráfico entre las interfaces “Wan1” y “Wan2”, pero se someterá a los motores Antivirus, Control de Aplicación e IDS/IPS. Lo sé, lo sé, habría que restringir el tráfico sólo al imprescindible pero para la prueba lo dejaré así. En la vida real, ni se os ocurra hacer esto. En el caso de este último, el IDS, se ha configurado para que bloquee “Block” todo aquél tráfico que coincida con alguna de las reglas en él definidas.

Tras lanzar el escáner vemos que el resultado es el siguiente. El Fortigate ha bloqueado los paquetes desde el escáner:Nessus 03

Si a continuación hacemos un reporte de las vulnerabilidades encontradas vemos que sólo se han encontrado un total de 8 de nivel informativo.

Nessus 04

Así pues el supuesto atacante apenas podría haber obtenido información del objetivo, con lo que tendría más complicado a la hora de lanzar un exploit concreto cara a aprovechar una vulnerabilidad. Aunque no se aprecie en la imagen, los datos ofrecidos no son relevantes cara a este fin, la intrusión. En cambio, si deshabilitamos dicha protección, esto es:

Nessus 05

Y lanzamos de nuevo el escáner, el resultado sería bien distinto:

Nessus 06

Aquí veremos que sí se obtienen datos sobre el equipo con Windows XP y por tanto sería exitoso el ataque como el que se podría llevar a cabo en el punto siguiente. Entre ellas hay un total de 3 vulnerabilidades “Critical”, 2 “Medium”, y 20 “Info” destacando entre ellas la que figura a continuación.

34477 (1) – MS08-067: Microsoft Windows Server Service Crafted RPC Request Handling Remote 

Code Execution (958644) (uncredentialed check) 

Synopsis

Arbitrary code can be executed on the remote host due to a flaw in the ‘Server’ service.

Description

The remote host is vulnerable to a buffer overrun in the ‘Server’

service that may allow an attacker to execute arbitrary code on the remote host with the ‘System’ privileges.

See Also

http://technet.microsoft.com/en-us/security/bulletin/ms08-067

Solution

Microsoft has released a set of patches for Windows 2000, XP, 2003, Vista and 2008.

Risk Factor

Critical

CVSS Base Score

10.0 (CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C)

CVSS Temporal Score

8.7 (CVSS2#E:H/RL:OF/RC:C)

STIG SeverityI

References 

BID 31874

CVE CVE-2008-4250

XREF OSVDB:49243

XREF MSFT:MS08-067

XREF IAVA:2008-A-0081

XREF CWE:94

Exploitable with

CANVAS (true)Core Impact (true)Metasploit (true)

Plugin Information:

Publication date: 2008/10/23, Modification date: 2015/06/18

Hosts

XX.XX.XX.17 (tcp/445)

Queda bastante claro la funcionalidad de estos motores. A pesar de no restringir el tráfico mediante reglas de firewall tradicionales y dejar pasar todo, algo que obviamente NO DEBE HACERSE BAJO NINGÚN CONCEPTO, nos proporcionan un grado de protección evidente.

En este ejemplo lo hemos hecho sobre un Windows XP vulnerable, pero esto también podríamos emplearlo como elemento de seguridad perimetral sobre Sistemas de Control y Automatización Industrial u otros dispositivos con capacidades limitadas para la implementación de medidas de seguridad. Su protección en este caso radicaría en el Fortigate Rugged 60.

Así hemos terminado por hoy. En la próxima entrada veremos cómo comprometer el Windows XP mediante Metaesploit gracias a la vulnerabilidad anterior.

Como en otras ocasiones os animo a que dejéis vuestro comentario, tanto si es positivo como si no lo es. Todo sirve para mejorar.

Lo dicho, un saludo, nos vemos en la próxima!!