En nuestro anterior artículo sobre la detección y prevención de dispositivos no autorizados en la red, vimos como uno de los elementos básicos de cualquier programa de seguridad de la información es el establecimiento de un inventario del software y hardware de la organización, lo que nos permitirá tener una idea clara de aquello que debe ser protegido. En este artículo nos centraremos en el inventariado del software instalado y el control del mismo y haremos un breve repaso a algunas de las soluciones disponibles.
El proceso de control implica tener perfectamente identificado el software legítimo que se usa en la organización y establecer mecanismos que impidan o al menos permitan detectar la ejecución de software no autorizado (ej: aplicaciones pirata, malware,etc…).
Descubriendo e inventariando el software
Es raro que las organizaciones dispongan desde el momento inicial de un inventario detallado del software legítimo autorizado. En estos casos será necesario iniciar un proceso de descubrimiento e inventariado que, en el caso de organizaciones grandes, puede ser una tarea bastante retadora; por lo que lo normal será ayudarse de herramientas para automatizar el proceso. Para que sea útil, es necesario que el proceso de descubrimiento e inventariado del software se realice de manera periódica y establecer un procedimiento que permita gestionar cada detección de una aplicación que no esté identificada como autorizada en el inventario.
Existen diferentes alternativas en el mercado que nos permitirán la identificación del software instalado en servidores y estaciones de trabajo. Veamos algunas de ellas:
NMAP:
Es una de las opciones más sencilla y barata (y también una de las menos eficaces) . Nmap nos permite realizar un escaneo de puertos de las máquinas conectadas a la red y nos ofrece una estimación de los servicios que probablemente se ejecutan, comparando los puertos identificados con la base de datos interna de más de 2.000 servicios ampliamente conocidos que nmap incorpora. Además, nmap nos permitirá con las opciones adecuadas, identificar la versión de los servicios y aplicaciones detectados. Como hemos dicho, se trata de un método sencillo y barato, aunque no nos permitirá obtener una foto completa de todo el software instalado.
Nessus:
Mediante el uso de un par de plugins específicos para este propósito, éste conocido escáner de vulnerabilidades puede ser usado también para conectarse remotamente a las máquinas de la red y enumerar el software que tienen instalado. En el caso de sistemas windows, sólo permitirá identificar aquellos programas que usan un instalador; de manera similar, en el caso de sistemas unix, solo se identificarán las aplicaciones gestionadas por herramientas como rpm; es decir, este método no nos permitirá identificar el software directamente instalado como binario o que haya sido compilado en la misma máquina. En el ámbito de las ventajas, la consola centralizada de Nessus, nos permitirá tener una visión integrada de los hosts de la red y el software instalado y hacer consultas, por ejemplo, para saber cuáles de ellos tienen determinadas aplicaciones.
Otro tipo de soluciones:
La identificación del software instalado es un control útil; sin embargo, la mayor eficacia viene de la mano de soluciones de tipo preventivo, que permiten no sólo detectar software no autorizado sino impedir su ejecución. En la siguiente sección vamos a hablar de estas herramientas, baste mencionar aquí que una de las funciones básicas de cualquiera de estas soluciones es el descubrimiento e inventariado del software.
Control preventivo de programas no autorizados y maliciosos
De manera muy simplista, podemos decir que habría dos grandes grupos de controles para prevenir la ejecución de programas no autorizados y/o maliciosos; los basados en listas negras y los basados en listas blancas.
Dentro de la categoría de listas negras, podríamos mencionar los tradicionales y cada vez menos efectivos sistemas antivirus, los cuales pretenden impedir la ejecución de software que está previamente identificado como peligroso. Los sistemas de control de software basados en listas blancas, por el contrario, previenen la ejecución de cualquier software desconocido o no autorizado. La gran diferencia entre la mayor parte de las soluciones basadas en lista blanca está en el modo en que ésta es gestionada. Existen varias estrategias, que en algunos casos pueden combinarse para mayor flexibilidad:
- «Imagen de Oro»: Es un mecanismo que solo es útil en aquellas plataformas con poca diversidad y cambios y consiste en que, a partir del software instalado en un equipo modelo que contiene el software necesario para trabajar, se calcula la lista blanca indicando para cada uno de los programas autorizados el Hash del archivo ejecutable. La idea es que ningún programa incluido en la lista de software autorizado y/o cuyo hash no coincida con el inicialmente registrado pueda ejecutarse. Como es lógico, la gran dificultad consiste en mantener actualizada esta lista blanca inicial.
- Certificados digitales: Es una de las estrategias más efectivas y que simplifica grandemente la gestión de la lista blanca. Se trata de incluir en la lista blanca una serie de autores confiables de software de modo que sólo se permita la ejecución de software que esté firmado digitalmente por estas fuentes confiables (por ejemplo, solo confiar en los programas firmados por Microsoft o por la propia empresa)l
- Métodos de actualización confiables: Una tercera estrategia para mantener actualizada la lista blanca de manera automatizada consiste en identificar aquellos repositorios de software considerados confiables y desde los cuales está permitida la descarga o actualización de software. Así los usuarios disponen de cierta flexibilidad para descargar y usar programas que son incluidos automáticamente en la lista blanca.
Vamos a hacer ahora un breve repaso de algunas de las soluciones más conocidas de lista blanca, sin ánimo de ser exhaustivos:
App-Locker de Microsoft:
Es una característica que apareció inicialmente con Windows Server 2008 R2 y con Windows 7 y permite establecer directivas de restricción de ejecución de software a nivel local o de dominio. App-Locker viene a sustituir a las Políticas de Restricción de Software de versiones anteriores.
App-Locker permite controlar la ejecución de software en base al tipo de archivo (.exe, .js, -dll, etc…), o bien se pueden definir reglas basadas en la firma digital del ejecutable o el hash del mismo; de esta manera, se puede restringir la ejecución de programas que no estén firmados por las fuentes reconocidas o aquellas versiones que no sean exactamente las autorizadas (en las que el hash del ejecutable difiere del autorizado).
Se trata de una herramienta que permite mucha granularidad y control; entre otras:
- Permite crear reglas que apliquen a usuarios individuales
- Permite utilizar la auditoría para realizar seguimiento de las aplicaciones que se usan en la organización
- Forzar que determinados usuarios ejecuten solamente aplicaciones firmadas por la organización u otras fuentes autorizadas.
- Impedir que los usuarios usen determinado software
- Inventariar el software instalado en los equipos, estandarizar su uso e incluso establecer mecanismos para el control de licencias.
Hay que reconocer que App-Locker es una solución muy recomendable a la hora de controlar el malware en plataformas basadas en Windows, aunque requiere un cierto esfuerzo para definir una política que se ajuste a las necesidades de la organización; por otro lado, uno de los aspectos negativos es que puede ser desactivado por parte de usuarios con permiso de administración.
Lumension:
Se trata de una solución software que permite crear un entorno confiable en el dispositivo (end-point) y gestionar las vulnerabilidades de software a lo largo de todo su ciclo de vida. La solución se basa en agentes que se despliegan sobre los equipos que se vaya a controlar y a diferencia del App-Locker es una solución multiplataforma.
Lumension implementa el concepto de Lista Blanca Inteligente que implica la gestión completa del ciclo de vida de vulnerabilidades de los end-point:
- Limpieza: Por un lado, Lumension permite identificar y eliminar malware conocido.
- Descubrimiento: Permite obtener una foto precisa del software instalado en cada equipo, lo que ayuda a crear una lista blanca de aplicaciones autorizadas.
- Definición: de políticas sobre la ejecución de software en los end-point controlados para prevenir, por ejemplo, la ejecución de aplicaciones desconocidas o no autorizadas
- Monitorización: de todas las acitividades relevantes en los end-point controlados, como intentos fallidos de ejecución, introdución de cambios de configuración, etc.
- Forzado: de las políticas definidas bloqueando la ejecución de software fuera de los límites permitidos
- Gestión: Propociona reportes y gestión centralizadas de los equipos controlados, petmitiendo el desplieque de software, parches de seguridad, configuraciones.
Otras soluciones:
Otras soluciones relevantes a considerar en esta categoría son Secunia, MacAffe Application Control o Airlock Digital.
Epílogo
Como suele ser habitual en el mundo de las soluciones software para seguridad, ninguna de ellas es una panacea o un «bala de plata» que nos vaya a garantizar la seguridad total. Sin embargo, las listas blancas de software son hoy por hoy una de las estrategias de control más efectivas para mitigar las intrusiones en el caso de ataques dirigidos. Un fuerte abrazo y gracias por la atención.