Cómo aumentar la seguridad del ordenador: el concepto del entorno fiable

Introducción

La cantidad de programas maliciosos ha crecido en proporción geométrica estos últimos años. Incluso las tecnologías antivirus más efectivas de los diferentes fabricantes no siempre pueden con tal cantidad de amenazas. Si hace 10-15 años un coeficiente de detección del 99,9% significaba que el antivirus deja pasar uno o dos programas maliciosos de los 10.000 creados el último año, ahora este porcentaje significa que el antivirus puede dejar pasar varios miles de los millones de nuevos programas maliciosos. Tampoco es novedad que los delincuentes usen con frecuencia cada vez mayor las vulnerabilidades de “día cero” del software.

Estas circunstancias hacen que las grandes compañías cambien su forma de ver los sistemas de defensa que ofrecen. Durante su proceso de trabajo, los empleados operan con los datos de la compañía en la red corporativa y por lo tanto, si los delincuentes obtienen acceso a uno de los ordenadores de la red, tendrán la posibilidad potencial de obtener secretos comerciales. Esto es particularmente peligroso para las grandes compañías, porque existe el riesgo de que sufran pérdidas millonarias. Con cada vez mayor frecuencia, para proteger la información que circula en las redes corporativas, se usan soluciones basadas en un enfoque completamente diferente al usado en los antivirus. Su esencia es simple: sólo está permitido ejecutar programas de una lista determinada y se bloquea la ejecución de todas las demás aplicaciones. Para muchas organizaciones, una de las prioridades más importantes es la protección de la red. Pero con esto se reduce la flexibilidad del sistema: en los equipos de la compañía, a los empleados se les permite usar sólo el software necesario para las tareas de la compañía. Este enfoque no es nuevo y se conoce como Default Deny Mode o Lock Down Mode.

Con frecuencia, las soluciones Default Deny se usan sin usar una solución antivirus, pero los expertos de Kaspersky Lab consideran que es más efectivo el uso de un enfoque multiaspectual, que combine los componentes de Default Deny y los de la protección antivirus.  Para esto hay varios motivos serios: la existencia de exploits que ejecutan acciones maliciosas sin crear ficheros en el equipo, la difusión de macrovirus en los documentos de la oficina (estos ficheros no se pueden controlar en el modo Default Deny, ya que están en constante cambio) y el que los delincuentes cibernéticos usen software legítimo para ejecutar funciones maliciosas. Por ejemplo, basta cambiar ciertos parámetros en el fichero de configuración del software de registro de pulsaciones de teclas para convertirlo en un troyano-espía. En esta situación, una defensa multifuncional es más efectiva que cada uno de los enfoques aislados.

El uso del enfoque Default Deny es efectivo en las grandes compañías con infraestructura cerrada, pero las pequeñas compañías y los usuarios particulares también necesitan una protección fiable. Los datos de identificación de los usuarios en los sistemas de pago electrónicos y las redes sociales, los recursos de hardware del equipo y el tráfico de internet tienen un gran valor y son muy deseados por los delincuentes.

Al mismo tiempo, los usuario de ordenadores personales quieren instalar nuevo software y poner al día el existente, descargar ficheros de Internet y de las redes P2P y visitar sitios web. Pero las soluciones tipo Default Deny para el mercado corporativo con frecuencia no tienen la flexibilidad suficiente para satisfacer la necesidades de los usuarios domésticos. Este mismo motivo hace que muchas compañías rechacen el Default Deny: para todos los procesos de negocio el sistema debe tener más flexibilidad que la que es posible al usar soluciones Default Deny.

En nuestro artículo se describe el concepto del “entorno fiable”, que combina las ventajas de la defensa brindada por las soluciones Default Deny y la flexibilidad alcanzada al usar sistemas antivirus.

Esquema de funcionamiento de Default Deny

Para desentrañar los motivos de la falta de flexibilidad de los sistemas de defensa basados en el concepto Default Deny, trataremos de entender cómo funcionan (en este artículo hay una extensa descripción de la tecnología Default Deny).

Una solución Default Deny estándar ejecuta las siguiente secuencia de acciones al implementarse:

  • se hace un inventario en el ordenador – se buscan los ficheros que pueden provocar la ejecución de código: aplicaciones, bibliotecas dinámicas y scripts.
  • se decide si confiar en los ficheros descubiertos.
  • se activa el modo Default Deny.

 

Una vez activado el modo Default Deny, la ejecución de aplicaciones, scripts o bibliotecas dinámicas se realiza según el siguiente algoritmo:

  • El sistema operativo inicia el lanzamiento de la aplicación, script o biblioteca.
  • El sistema de seguridad verifica si la aplicación, biblioteca o script es de fiar, usando la lista de objetos fiables.
  • Si considera que el objeto es de confianza, permite la ejecución, en caso contrario, lo bloquea.

 

Bloqueo de ejecución de código no fiable: falta de flexibilidad

La ventaja indiscutible del enfoque Default Deny es que crea un sistema aislado, donde es imposible la ejecución de aplicaciones no fiables. En el caso del modo Default Deny clásico, la flexibilidad se sacrifica en aras de la protección. El mayor defecto es que es imposible instalar nuevo software o actualizar el ya instalado. Por esta razón, las soluciones Default Deny modernas contemplan categorías especiales de programas: “Actualizaciones de software fiables” e “Instaladores fiables”. A estos programas se les permite crear en el sistema otros programas que a su vez también se convierten en fiables.

Este enfoque se aplica con éxito en aquellas organizaciones donde el conjunto de programas usados en los ordenadores está estrictamente limitado por el administrador de sistemas, que hace de la red un sistema cerrado. En el sistema se permite actualizar e instalar sólo programas determinados de antemano.

Pero la mayoría de los sistemas informáticos son sistemas abiertos e interactúan entre sí. Cada ordenador cumple un conjunto de tareas que puede expandirse. Y además, prácticamente cada ordenador tiene salida a Internet.

Para los ordenadores domésticos y las organizaciones que no realizan un control estricto del software instalable, la creación de las categorías indicadas es insuficiente para que el sistema tenga el nivel de flexibilidad necesario.

Del bloqueo de ejecución de código no fiable al mantenimiento del entorno fiable

Pero ¿cómo hacer para que el sistema sea bastante flexible y al mismo tiempo garantizar un alto nivel de protección? Una de las soluciones es ir del bloqueo de ejecución de código no fiable al mantenimiento del entorno fiable.

¿Qué es un entorno fiable?

Durante el inventario del software se crea una lista de objetos de confianza (aplicaciones, bibliotecas dinámicas y scripts) que tienen permiso de ejecución en este sistema.  Se bloquea la ejecución de código de otros objetos.

Durante el inventario, ¿cómo se puede saber si un fichero es de confianza?

Es evidente que es necesaria la confirmación de que el fichero es de confianza. La prueba es una firma digital que confirme que el fichero verificado lo creó por un desarrollador de confianza y que no ha sido modificado por terceros.

Pero hay muchas aplicaciones creadas por importantes compañías de software que no tienen firma digital. Y es poco común que las pequeñas compañías desarrolladoras "firmen” sus productos. Además, es frecuente que los delincuentes roben certificados digitales y los usen.

¿Cómo se puede obtener información fidedigna sobre la fiabilidad de un fichero que no tiene firma o sobre el mismo certificado? La solución de este problema está en el uso de bases de conocimiento que contengan los datos de todo el software legítimo proporcionados por los desarrolladores de sistemas de defensa.

Con frecuencia la base software fiable es tan extensa y se actualiza con tal rapidez que es imposible ofrecer datos en forma de actualización, como se hace con los antivirus. Aquí es donde hacen su aparición las tecnologías “cloud” y las listas blancas dinámicas. Cuando surge la necesidad de recibir información sobre un objeto, el sistema de defensa envía una solicitud al sistema cloud. Y éste le responde si el fichero en cuestión es fiable o no.

Una vez concluido el inventario y determinado el conjunto de ficheros fiables, se puede considerar que todo el código que tiene permiso de ejecución en el sistema es fiable y, como consecuencia, todo el sistema es fiable.

 

Si todo el sistema es fiable, se puede decir que las aplicaciones fiables -que no hayan tenido contactos con el entorno externo no fiable- crean en el sistema objetos fiables y esto no hace que el sistema deje de ser fiable. Esta característica permite decir que este sistema es un entorno fiable.

Garantizando que sea posible instalar y actualizar software

Para decidir cómo hacer que sea posible instalar nuevo software y actualizar el ya instalado, es necesario analizar de qué forma aparecen las nuevas aplicaciones en el sistema. Por lo general se descargan las nuevas aplicaciones de Internet o se las copia de memorias extraíbles, por lo que es imposible garantizar que el fichero creado por una aplicación fiable que usa un entorno externo sea fiable. Por ejemplo, el navegador es una aplicación fiable, pero puede utilizarse para descargar aplicaciones no fiables de Internet. Estas aplicaciones no pueden considerarse fiables sin una verificación adicional. Más adelante describiremos un algoritmo de verificación que garantiza que la aplicación sea fiable.

Si la aplicación ya está instalada en el sistema y se considera fiable, la nueva versión de la aplicación descargada desde una fuente fiable también se considerará fiable, porque ha sido obtenida en un medio fiable. Esto permite a los programas ya instalados en el sistema actualizarse sin obstáculos y sin violar la fiabilidad del sistema. De esta manera, no tenemos problemas con la actualización del software instalado.

 

¿Pero cómo proceder con la instalación de nuevos programas?

Los tres métodos más populares de instalar software son:

  • Instalación mediante un instalador web.
  • Instalación mediante un paquete de instalación único.
  • Instalación mediante un paquete de instalación fragmentado.

El caso del instalador web repite la lógica del programa de actualización fiable: es suficiente que el sistema de defensa sepa que el programa instalador es fiable y, por lo tanto, descargará la actualización de un recurso web fiable. En este caso todos los ficheros obtenidos durante la instalación de la aplicación también se considerarán fiables en el entorno fiable.

En el caso del paquete de instalación único, basta con cerciorarse de que éste es fiable. Para instalar el paquete de instalación se usan programas-instaladores especiales, que son parte del sistema operativo, en particular msiexec.exe. Puesto que esta aplicación es parte del sistema operativo, se la considera fiable. Si el paquete de instalación que va usar el programa-instalador es fiable, los ficheros extraídos de este paquete no violarán la fiabilidad del sistema y, por lo tanto, se podrán considerar fiables.

Si el instalador usa varios ficheros, por ejemplo durante la instalación mediante ficheros CAB, este escenario también se describe en las propiedades del entorno fiable: si todos los ficheros usados para la instalación son fiables, entonces los ficheros resultantes también serán fiables.

Uso de fuentes fiables externas

Hemos resuelto el problema de los instaladores locales, pero con frecuencia el software se carga de la red local o de Internet. El sistema de seguridad no sabe si estos objetos son fiables o no. Además, los instaladores pueden enviar solicitudes a recursos de Internet para recibir información adicional durante la instalación y el envío de solicitudes viola el principio fundamental del entorno fiable, ya que no se sabe a ciencia cierta si determinado nodo de la red es fiable o no.

Esta tarea se puede resolver de la siguiente manera. El productor de la solución determina de forma anticipada la lista de nodos de la red (tanto local como de Internet) que son fiables. Al conectarse con estos nodos la aplicación, que es parte del entorno fiable, no pierde su calidad de fiable y puede crear objetos fiables en el sistema.

¿Cómo elaborar correctamente la lista de nodos fiables de la red y comprobar que no han sido comprometidos? Cada productor de soluciones Default Deny resuelve esta tarea basándose en su propia experiencia y en la monitorización constante de los recursos de la red que se han declarado fiables.

Preservación de la integridad del entorno fiable

Una vez formado el entorno fiable y activado el modo Default Deny, la tarea más importante es la preservación de la integridad del entorno fiable. Es necesaria la garantía de que, evadiendo el sistema, no se modifiquen las aplicaciones existentes ni aparezcan nuevas.

Supongamos que este sistema de defensa lo usa una compañía o una gran cantidad de usuarios de ordenadores. Los delincuentes saben que determinados usuarios utilizan nuevos métodos de defensa y los medios populares de ejecución de códigos maliciosos no funcionan.

¿Qué hará el delincuente que quiere obtener la información confidencial del usuario o usar los recursos del ordenador? Es evidente que buscará otras formas de ejecutar el código malicioso, tratando de evadir el sistema de defensa. La forma más crítica es el uso de vulnerabilidades en el software fiable.

Si tiene éxito al explotar las vulnerabilidades del software, el delincuente puede usar las propiedades del entorno fiable contra el sistema de defensa: como el código malicioso que usa el exploit se ejecuta en un proceso fiable, todas las acciones emprendidas por este código se considerarán fiables. Por ejemplo, después de visitar un sitio malicioso con un exploit en el navegador, el usuario empieza a ejecutar código malicioso. El código malicioso funciona dentro de un proceso fiable, por lo que cualquier acción ejecutada por el navegador en este momento se considerará permitida. Si el exploit trata de ejecutar un fichero malicioso descargado, la ejecución será bloqueada. Por eso el código malicioso estará limitado a estar activo en el proceso infectado. Para ampliar la gama de acciones posibles, el delincuente tratará de engañar al sistema de defensa, por ejemplo, modificando el sector de arranque del disco o instalando un driver que se ejecute antes que el sistema de defensa. El conjunto de acciones similares que puede intentar el delincuente es bastante grande, y todas ellas de una forma u otra, conducen a la pérdida de datos del usuario o al uso no sancionado del ordenador.

¿Cómo resolver esta tarea? Al observar los programas fiables se puede notar que el conjunto de funciones previsto por la lógica de funcionamiento de la aplicación es bastante limitado y que no incluye acciones peligrosas. Por ejemplo, la lógica de funcionamiento del navegador es mostrar páginas web y descargar ficheros. Funciones como la modificación de ficheros del sistema o sectores del disco son ajenas al navegador. La lógica de funcionamiento de un redactor de textos consiste en abrir y guardar en el disco documentos de texto, pero no guardar nuevas aplicaciones o ejecutarlas.

Esta observación lleva a la idea de preservación de la integridad del entorno fiable basada en el control de las acciones de las aplicaciones potencialmente vulnerables: navegadores, clientes de mensajería instantánea, aplicaciones de ofimática, clientes P2P, programas de gestión de ficheros, etc. Para cada aplicación potencialmente vulnerable en el sistema se elabora una lista de las acciones permitidas incluidas por sus creadores en la lógica de la aplicación. Las acciones no previstas por los creadores de la aplicación serán bloqueadas.

Por ejemplo, a los programas de mensajería instantánea se les permiten tales acciones como el envío y recepción de datos por la red, la creación de ficheros en el disco con la posterior verificación de su fiabilidad y la apertura de ficheros existentes. Acciones como la incrustación de código en otros procesos, la modificación de los ficheros del sistema y del registro estarán prohibidas para estos programas.

 

Este enfoque permite limitar las posibilidades del código malicioso a la lógica de funcionamiento de la aplicación vulnerable, que es insuficiente para ejecutar acciones maliciosas en el sistema.

Recepción de información sobre nuevas aplicaciones

¿Qué se hace si el sistema desconoce un fichero legítimo, recibido de una fuente desconocida, por ejemplo copiado de una memoria extraíble o recibido por Skype?

Al recibir información sobre el intento de ejecutar un nuevo programa, el sistema de defensa envía una solicitud al sistema cloud, el cual a su vez le responde si este fichero es fiable o no. Si la aplicación es fiable, se le permite ejecutarse; si el sistema cloud no lo conoce o no es fiable, se lo bloquea. Este enfoque le confiere una flexibilidad adicional al sistema, sin violar la idea principal del entorno fiable y sin reducir la capacidad defensiva del sistema.

El sistema de defensa ejecuta las mismas funciones con las aplicaciones con firma digital desconocida: envía una solicitud al sistema cloud y recibe la respuesta de si la firma es fiable o no.

Conclusión

En la primera parte de este artículo hemos analizado el enfoque de defensa que combina el nivel de protección ofrecido por las soluciones Default Deny y que garantiza la flexibilidad necesaria para el uso cotidiano del ordenador. El fundamento del enfoque ofrecido es el concepto de formación y preservación de un entorno fiable.

Este enfoque de defensa se puede aplicar tanto a los usuarios domésticos y a las organizaciones, sin importar su tamaño. La tarea de formación y preservación de un entorno fiable la ejecuta el mismo sistema de defensa, cuyas acciones se basan en:

  • Los resultados de la inventario de los ficheros del sistema;
  • El principio de herencia de la fiabilidad (todo fichero creado por una aplicación fiable es fiable a su vez);
  • La reputación de los ficheros recibidos de cloud;
  • La lista de firmas digitales fiables;
  • La lista de sitios web fiables.

El concepto de entorno fiable no anula el uso de tecnologías de defensa antivirus, porque su aplicación conjunta permite construir un sistema efectivo de defensa del ordenador.

Ninguna teoría y ningún enfoque tiene el menor valor si no se los aplica en la práctica. Sobre la aplicación del concepto de entorno fiable, introducida por Kaspersky Lab en su producto Kaspersky Internet Security 2014, hemos escrito aquí.

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *