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:

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í.

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

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:

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.

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:

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

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!!

Defensa en Profundidad OT

En la entrada anterior escribía sobre el concepto de Defensa en Profundidad en entornos IT (pincha aquí) y lo finalizaba haciendo un par de preguntas sobre si el mismo concepto sería aplicable a entornos OT y si se presentan las mismas necesidades. Así que hoy con esta entrada espero dar respuesta a estas y otras preguntas.

En esencia podemos decir que el concepto de “Defensa en Profundidad” es equiparable a ambos entornos, entendiéndolo como un modelo consistente en implementar una serie de medidas de seguridad con el fin de frenar la actividad de un usuario o software mal intencionado.

Estas medidas irán dirigidas en función de los activos que queramos proteger y que en el caso de IT y OT, son bien distintos. En el caso de entornos IT, lo principal es la información. Debemos evitar el robo, el acceso no autorizado, la pérdida, la confidencialidad, la integridad, etc. Sin embargo en entornos OT, nuestra premisa es garantizar la disponibilidad de nuestras instalaciones. Tendremos que impedir paradas en sistemas de producción, desastres medioambientales, accesos no autorizados a sistemas de control, etc. Desde un punto de vista gráfico sería:

El problema ha ido en aumento a medida que estas instalaciones han quedado expuestas a otras redes y entornos por el uso de buses de campo basados en Ethernet (Profinet, Ethernet/IP, Sercos, ModBus TCP, etc. ) o bien por el uso de tarjetas, o pasarelas, de otros basados por ejemplo en RS-485 (Profibus, DeviceNet, Canbus, etc.).

Otras de las razones, ha sido la necesidad de accesibilidad desde localizaciones remotas por medio de redes inseguras como Internet. Pensemos en RTUs (Remote Terminal Units) que recojan datos y que sean enviados un sistema SCADA para su tratamiento. O bien, que por cuestiones de mantenimiento sea necesario el acceso a un PLC para realizar algún tipo de cambio.

A esto hay que sumar la idea, de que estos dispositivos, autómatas programables, robots, maquinaria, estaciones de control, etc. han sido concebidos para ser útiles, no para ser seguros. Esta necesidad es relativamente reciente. Hasta la aparición de malware específico de este tipo de entornos e intrusiones en sistemas, no ha habido la necesidad ni de invertir ni de implementar medidas a este respecto. Sin embargo de un tiempo a esta parte, debido principalmente a medidas reactivas, no ha quedado más opción. Si bien distintos países han creado legislación para proteger sus Infraestructuras Críticas sobre distintos sectores aún queda un sector industrial que no entra dentro de esta definición pero que sin embargo no está exento de sufrir algún tipo de ataque. Sea como fuera, las redes industriales han ido quedando más visibles, tanto para lo bueno como para lo malo.

Así pues la estrategia para proteger instalaciones industriales implantando un modelo de distintas capas de protección quedaría representado gráficamente de la siguiente manera:

Dentro de este esquema, la organización deberá de seguir un proceso a través del cual se irán abordando distintas cuestiones, las cuales quedan resumidas en los siguientes puntos.

1.- Análisis de riesgos

Sin duda, es el primer paso a tomar. Un análisis de riesgos es el paso más importante cara a la administración de la seguridad tanto si hablamos de las instalaciones como de las máquinas en ella instaladas. Ayuda a la identificación y evaluación de los riesgos y peligros individuales. El contenido principal que todo análisis debe tener es:

  • Identificar los objetos amenazados.
  • Análisis del valor y daño potencial.
  • Análisis de amenazas y puntos débiles.
  • Identificación de medidas de seguridad ya implementadas.
  • Evaluación de riesgos.

2.-Definición de Roles y Procesos

Dentro de cada organización se han de finir una serie de figuras con unos roles en lo referente a la Gestión de la Seguridad. Se han de establecer responsabilidades y sobre todo los criterios bajo los cuales se basen decisiones como la aceptación de riesgos, importancia de eventos, coordinación de actores, evaluación de procesos, etc.

Estas personas han de pertenecer a distintos ámbitos, tanto de IT como de OT, componiendo un equipo donde cada cual aporte su experiencia y conocimiento. Trabajando coordinadamente y conjuntamente se reducirán las posibilidades de tener una brecha de seguridad.

3.-Seguridad de Planta

La seguridad de las instalaciones consiste principalmente en bloquear el acceso a dispositivos e instalaciones a personas no autorizadas. Alguna de estas pueden basarse en llaves físicas, tarjetas inteligentes, dispositivos biométricos, cámaras de seguridad, etc. Igualmente, se deben regular quién, de qué manera y si tiene que acceder, o no a tal o cuál espacio. Y tener los medios para trazar todo ello.

4.- Seguridad de red

Aquí dos conceptos básicos son los de la segmentación y separación de los entornos de Oficinas y Producción. Ambos deberán comunicarse, inicialmente, por medio de un firewall apoyado si es posible por un IDS/IPS. Para un nivel de seguridad efectivo deberíamos hablar de cortafuegos de próxima generación, NGFW.

Luego, en lo que respecta a las redes de “producción” se deberán segmentar en lo que en algunos casos se denomina “celdas”, “áreas de seguridad” y otros similares términos. Podemos entenderlas como unidades operativas e independientemente funcionales. Estas unidades podrán estar compuestas de un mayor o menor número de dispositivos y cada una de ellas tendrán sus propias políticas y equipos de seguridad que las proteja dentro del conjunto de redes de producción.

5.- Seguridad sobre sistemas y dispositivos

Este apartado se centra en la securización de los distintos elementos que se ubican en el área de producción, como pueden ser PLCs, PCs, HMIs, etc.

Entre las medidas a tomar estarían:

  • Control de acceso

El control de acceso debe aplicarse en tres direcciones. Una de ellas es el acceso a las configuraciones de los equipos, ya sean PLCs, estaciones de control, switches industriales gestionados, firewalls, etc. Otro, el “logon” al equipo; aunque sólo se necesite acceso a interfaces de sólo visualización o se desarrollen actividades aparentemente sin importancia. Finalmente, tendríamos el control a nivel de red como seguridad en puerto, control de MACs, sistemas NAC, etc. tanto a redes cableadas como inalámbricas.

  • Bastionado de los equipos.

En cuanto al bastionado de equipos lo podemos dirigir también en tres puntos clave. Por un lado reducir los servicios de red y aplicaciones a los estrictamente necesarios; dos, proteger las interfaces físicas como son los las tarjetas de red, puertos USB o interfaces Bluetooth; y tres las cuentas de usuario limitándose tanto en número como en permisos asociados a ellas. En cuanto a las aplicaciones una medida eficiente es la definición de una “Lista Blanca” donde se definan cuáles se pueden ejecutar y cuáles no. En resumen, lo que se denomina “WhiteListing”.

  • Gestión de Parches

En lo referente a este apartado deberíamos actualizar nuestros equipos, por un lado con las últimas versiones de Firmware, parches emitidos para los sistemas operativos (como norma general Microsoft Windows) y nuevas versiones de aplicaciones que puedan tener algún tipo de “bug” identificado. Cualquier cambio o actualización debe testearse en una primera instancia en un laboratorio o entorno de test antes de llevarse a producción.

  • Protección contra virus.

Este capítulo está dirigido a PCs. El uso de software antivirus supone una medida importante en lo que malware se refiere. Si por algún medio, código malicioso llegase a nuestros sistemas, podría ser eliminado siempre y cuando se encontrase en su base de firmas. Repito, si se encuentra en su base de firmas. Sin embargo puede no llegar a ser una solución eficiente, he aquí un artículo muy interesante.

  • Cifrado en las comunicaciones

Otras de las medidas que deberemos considerar es el cifrado en las comunicaciones. Dependiendo de las características de nuestra organización, podremos o deberemos implementarla. Todo depende qué nivel de confidencialidad o criticidad tendrá la información que viaje y si ésta lo hace a través de redes inseguras. El riesgo de no hacerlo, deberá ser evaluado y en función del resultado del análisis, se asumirá si el riesgo es aceptable, o no.

  • Monitorización

Este es otro de los puntos que ha de abordarse claramente. Deberemos diferenciar entre monitorizar la Disponibilidad y la Seguridad. En entornos industriales hemos de conocer el estado operativo de los equipos y en caso de fallo o anomalía tener el conocimiento de ello para poder remediarlo. Por ejemplo la ejecución de un “ping” puede ser suficiente para que en caso de no respuesta generar una alerta, y notificación. Sin embrago cuando hablamos de monitorización de la seguridad la cosa cambia. En este caso deberemos emplear soluciones de tipo SIEM. Este sistema se encarga de correlar los eventos generados por equipos de red y sistemas con el fin de detectar posibles anomalías referentes al estado de la seguridad. Estas soluciones conllevan una inversión importante con lo que estamos en las mismas circunstancias que en el caso del Cifrado de las Comunicaciones. Deberemos analizar el riesgo que supone su no implementación y si es asumible.

  • Revisión y mejoras

Una vez implementadas y puesto en marcha nuestro plan de seguridad, se han de realizar periódicamente revisiones de todas las medidas adoptadas.

La realización de auditorías internas es una obligación que los responsables han de llevar a cabo para reducir los riesgos ante nuevas amenazas y adoptar las medidas necesarias para mitigarlas. Aparte, se ha de tener en cuenta que las compañías pueden realizar cambios en cuanto a maquinaria, dispositivos y cualquier otro elemento, que deba ser incorporado dentro del plan y sometido a éste.

La seguridad, es un concepto “vivo”. El hecho de minimizar los riesgos a día de hoy no nos exime de ser objeto de un ataque mañana. Continuamente vemos cómo se descubren nuevas vulnerabilidades, se generan nuevos vectores de ataque o de como de se desarrollan nuevo malware para dispositivos de automatización y control industrial.

Como podemos comprobar existen muchas similitudes entre el concepto de “Defensa en Profundidad” entre los entornos IT y OT. En su esencia es el mismo para ambos, pero las medidas a adoptar no son las iguales. Por ejemplo, a un PLC no podremos instalarle ningún agente que nos supervise su comportamiento, algo que sí podremos hacer sobre PCs. Sobre estos últimos también hay que tener en cuenta la retrocompatibilidad de cierto tipo de software con sistemas operativos más antiguos.

Más adelante iremos adentrando más en alguno de estos puntos. Por ahora, tanto si te ha gustado la entrada, como si no, por favor deja un comentario. Te animas?

Un saludo, nos vemos en la siguiente.

Defensa en Profundidad, breve repaso…

Desde hace varios años hemos ido viendo como en los entornos IT se ha venido aplicando el concepto de “Defensa en Profundad” cómo modelo para garantizar unos niveles de seguridad aceptables en nuestros sistemas e infraestructuras. El mismo, consiste en implementar distintos controles y barreras con el fin de frenar la actividad de un usuario o software malicioso. De esta manera, la explotación de una vulnerabilidad, o debilidad, no compromete a toda la organización.

El primer paso es disponer de un inventario exhaustivo y actualizado de los equipos, tecnologías y aplicativos. No podemos pretender proteger nuestros activos si no sabemos cuántos y de qué tipo tenemos. Luego definiremos la importancia y criticidad que tienen para nuestra empresa y llevaremos a cabo una evaluación riesgos que nos permita establecer un plan de diseño para asegurarlos. Finalmente, en función de esto último, consideraremos las mejores medidas tanto humanas como técnicas para alcanzarlo.

Así pues este modelo de “Defensa en Profundidad” quedaría resumido gráficamente de la siguiente manera:

En primer lugar nos encontramos con los Procedimientos y Políticas de seguridad propias de la organización. Éstas se apoyan en los Estándares ya establecidos, pero además hay que sumarles los Roles que cada responsable acaparará dentro de la empresa.

La seguridad física la definimos como la barrera que impide a un usuario acceder in situ al sistema en cuestión, y que requiere algún tipo de identificación. Sin embargo, no es la única medida. Por ejemplo las cámaras de video vigilancia o personal de seguridad son otras de ellas.

La seguridad perimetral es la encargada de proteger la primera línea en cuanto a las comunicaciones se refiere, siendo los cortafuegos el equipamiento por excelencia. La diversificación de los ataques los han hecho evolucionar incorporando cada vez más características. Considerar IPs y puertos de origen y destino, son insuficientes para atajar las amenazas actuales. Hoy en día tenemos que hablar de los NGFW (Next Generation Firewall) que disponen de funcionalidades como filtrado a nivel de aplicación, Deep Packet Inspection, motores antivirus, IDS/IPS, Sanboxes, VPN, entre otras. NIDS (Network Intrusion Detection System) es otro de los dispositivos que nos podemos encontrar y que pueden estar instalados como equipos dedicados.

Una vez en la red interna nos encontramos con distintas medidas. Una de ellas es la de separar el tráfico mediante VLANs, de tal manera que quede acotado a un único segmento lógico. Luego a nivel de capa 3, las ACLs pueden ser un gran aliado de tal manera que sean los propios equipos de red los que permitan o denieguen cierto tipo de comunicaciones antes de llegar a los firewalls. La seguridad en puerto y un NAC (Network Access Control) son otras de las medidas a tener en cuenta.

Ya en los equipos finales son varias las medidas. La primera la situamos en el control de acceso. La implementación de un Directorio Activo nos facilita mucho las tareas, aunque dependiendo el entorno a veces la autenticación local es la máxima solución con la que podremos aspirar. A él hay que sumar el bastionado del sistema mediante la implementación de parches, limitar el uso de aplicaciones y reducir servicios a los estrictamente necesarios. Algunas de estas soluciones incorporan la capacidad de limitar el uso de dispositivos USB y evitar así que cualquier usuario pueda conectar el suyo propio con el riesgo que esto entraña. A diferencia de los NIDS, aquí dispondremos de los HIDS, esto es funcionalidades IDS/IPS a nivel de host para detectar cualquier intento de intrusión. Finalmente, las soluciones antivirus, que visto lo visto hay quienes demuestran y aseguran que pueden llegar a ser poco efectivos. Ver esta entrevista a Joxen Koret.

A nivel de aplicación deberemos centrarnos en la programación segura de las aplicaciones y evitar así errores en el código que permitan a un exploit aprovechar vulnerabilidades y llevar a cabo distintos tipos de ataques. El uso de protocolos para el cifrado de las comunicaciones es  otra buena medida para proteger la transmisión de datos por la red. También es significativo la configuración de las mismas, debemos evitar las configuraciones por defecto, y que se ejecuten sólo con aquellos permisos y recursos necesarios para su operativa.

Finalmente encontramos al dato en sí mismo. Aquí garantizar su integridad, confidencialidad y autenticación es primordial. Como barrera podremos encontrarnos con soluciones de Data Loss Prevention con el fin de que los datos puedan ser extraídos de los sistemas que los albergan y perder el control sobre los mismos. Por supuesto hemos de tener en cuenta el uso de algoritmos robustos. De nada nos sirve cifrar la información si luego empleamos métodos que son fáciles o relativamente fácil de romper.

De esta manera hemos hecho un rápido repaso al concepto de “Defensa en Profundidad”, eso sí, en entornos IT. Sin embargo, ¿es aplicable a un entorno OT? ¿Un entorno industrial tiene las mismas necesidades de protección?

Esta y otras respuestas las dejamos para sucesivas entradas. ¡Nos vemos en la próxima!