jueves, 27 de noviembre de 2008

El antivirus que lo detecta todo

No es broma, las nuevas estrategias en la detección de código malicioso apuntan a ese objetivo que puede sonar utópico. No quiere decir que nos estemos acercando al antivirus perfecto, sino que los nuevos enfoques de las soluciones de seguridad intentan identificar tanto al malware como a los ficheros legítimos, tratan de clasificar todo.

Si nuestro ordenador fuera una discoteca el antivirus sería el portero, el encargado de decidir quién puede pasar y quién no a divertirse en nuestro local. Dependiendo de lo exclusiva que sea nuestra discoteca, la dirección podría haber ordenado al portero que siguiera una de las siguientes estrategias:

(1) sólo dejar pasar a las personas VIP y conocidas según una lista (lista blanca).

(2) no dejar pasar a aquellas personas reconocidas como problemáticas (lista negra).

Con la estrategia (1) nuestra discoteca sería demasiado elitista, ya que no permitiría entrar a gente nueva o desconocida hasta que no hubiera sido dado de alta en la lista blanca. Un verdadero incordio y no sería operativo. En el caso (2) nuestro local estaría más animado y evitaríamos a los individuos peligrosos reconocidos, que en un principio no eran demasiados, así que la dirección de la discoteca apostó por esta opción.

El de los antivirus siempre había sido un mundo de listas negras, estrategia número (2), con firmas y patrones para detectar al código malicioso e impedirles que pudieran entrar o ejecutarse en nuestro ordenador.

Con el tiempo se vio que esa estrategia era insuficiente, ya que había mucho malware de nueva creación que no se encontraba en la lista negra (se les colaban muchos indeseables). La lista negra requería ser constantemente actualizada y, aun así, no era suficiente. Se apostó por potenciar la heurística, que en el caso de nuestro portero vendría a ser una orden similar a la siguiente:

(3) no dejar pasar a personas que por sus características te parezcan sospechosas o que pudieran causar problemas

Con la entrada de la heurística la discoteca tuvo algunos problemas, el portero sospechó de gente VIP y no les dejó entrar. Así que la dirección le dijo al portero que utilizara también una pequeña lista blanca para reconocer a esas personas y no impedirles su entrada por error. De esta forma el portero comenzó a utilizar al mismo tiempo las estrategias (1), (2) y (3) de forma complementaria.

De esta misma forma el uso de listas blancas comenzó a ser más popular entre los antivirus, si bien solía limitarse a corregir y prevenir falsos positivos, para no dar por malware o virus un fichero legítimo muy conocido. Ya sabéis, detectar como malware el notepad.exe sería como negarle la entrada a nuestra discoteca a Pilar Rubio. Imperdonable.

Pasó el tiempo y la discoteca seguía teniendo incidentes y problemas de seguridad. Aun teniendo una lista negra, heurística y lista blanca, seguían colándose muchos indeseables al local. La dirección pidió al portero que aumentara su nivel de heurística, más paranoia a la hora de impedir el paso a personas que aparentemente pudieran dar problemas.

En el mundo de los antivirus hemos visto ese aumento de paranoia en heurísticas más agresivas, por ejemplo aquellas que detectan como malware un fichero por el simple hecho de estar tratados con un "packer".

Con la nueva heurística más paranoica aumentaron las reclamaciones a la dirección de la discoteca. A muchas personas que no eran tan famosas como para estar en la lista VIP o pequeña lista blanca se les negaba la entrada al local por parecer sospechosas a ojos del portero.

La discoteca estaba en crisis. Si aumentaba la heurística y paranoia del portero tenían reclamaciones por impedir la entrada a personas legítimas. Si disminuía la heurística se le colaban demasiados indeseables.

En esa situación se encuentra la industria antivirus actual: una lista negra actualizándose constantemente (hay antivirus que se actualizan varias veces cada hora); una heurística agresiva para detectar nuevos especímenes que no estén en su lista negra; y una lista blanca más pequeña, y que se actualiza menos, para evitar meter la pata excesivamente detectando como malware algún software muy conocido y/o extendido. El resultado es de crisis técnica, siguen teniendo muchos problemas como en la discoteca, o bien están detectando como malicioso software legítimo, o bien se les sigue colando en cantidad malware de verdad, o en el peor de los casos ambas cosas.

Una de las soluciones podría ser tener una lista blanca muy grande y actualizarla constantemente, como en el caso de la lista negra. Eso limitaría el número de falsos positivos y las heurísticas podrían concentrarse en aquellos ficheros totalmente desconocidos, que no están ni en la lista negra ni en la lista blanca, y que deberían ser un número más reducido.

De esta forma un antivirus podría tener un primer dictamen muy rápido dado un fichero: o se encuentra en la lista negra y por tanto es malicioso, o se encuentra en la lista blanca y no necesito analizarlo, o lo marco como desconocido "lista gris" y le aplico una heurística agresiva, o les hago un seguimiento especial (monitorización del comportamiento), o lo paso a cuarentena a la espera de un proceso que permita tener un dictamen más o menos fiable.

Esta nueva estrategia requeriría manejar unas listas blancas y negras muy grandes, y actualizarlas constantemente, para minimizar el número de ficheros que podrían caer en la lista gris (desconocidos). Eso se traduce en el consumo de un mayor número de recursos por parte del antivirus local: imaginemos que el portero tiene que consultar dos listados de millones de registros cada vez que alguien quiere entrar a nuestro local. En el PC significaría mayor consumo de memoria y CPU, amén de una constante actualización de los ficheros de firmas a través de Internet.

La solución a este problema de recursos viene de la mano de lo que se ha dado por llamar "cloud computing", tan de moda desde hace un tiempo, y que no es más que traspasar parte del trabajo a un servidor remoto con una enorme capacidad de almacenamiento y proceso (lo que se conoce por "la nube"). En vez de tener que consultar unas enormes listas negras y blancas en el ordenador local, con el consiguiente consumo de recursos, esa consulta se hace a través de Internet a un gran servidor centralizado (un cluster de servidores) que devuelve al PC el resultado, si ese fichero está en su lista negra o blanca.

Con este enfoque el número de ficheros desconocidos disminuye y, por tanto, el antivirus local puede centrarse en ellos con heurísticas o una monitorización del comportamiento con mayor detenimiento para dictaminar si es un código malicioso o no. La otra ventaja es que ese dictamen local puede traspasarse a la nube, a los servidores centralizados, en tiempo real, de forma que ese malware nuevo descubierto en un PC formará parte de la lista negra y prevendrá a otros sistemas que realicen a posteriori una consulta sobre ese fichero en particular. Incluso, dependiendo de la estrategia del antivirus, los ejecutables desconocidos podrían ser enviados al servidor centralizado donde podría ser analizado automáticamente con mayores recursos informáticos o ser trasladado a un analista humano si el dictamen automático no es concluyente.

Esta realimentación constante, entre PCs y servidores centralizados que permite el "cloud computing", está produciendo listas negras y blancas con millones de firmas o registros que serían inviables tener de forma local en un PC, y nos acercan un poco más a la utopía del antivirus que es capaz de detectar casi todo.

No sería de extrañar que a corto o medio plazo, dado un análisis a demanda de un disco duro, un antivirus pudiera llegar a darnos un log completo (identificando todos los ficheros), indicando cuales son benignos según su lista blanca, cuales son malware según su lista negra, y aplicando un coeficiente de mayor o menor peligrosidad según heurística a los archivos desconocidos.

Volviendo a nuestro portero, imaginemos que la discoteca ha contratado un sistema de reconocimiento facial que conecta automáticamente a un servidor centralizado que mantiene una gran base de datos de personas y sus antecedentes. Una cámara en la puerta automáticamente va capturando imágenes de las caras de las personas que quieren entrar, las envía al servidor centralizado donde se compara con su base de datos, y devuelve al portero en tiempo real si es alguien de confianza, si es alguien problemático, o si no tiene información de esa persona.

El portero puede ahora, de forma instantánea, permitir o denegar la entrada según la respuesta del sistema, y sólo tendrá que utilizar su heurística con unas pocas personas (las que el sistema no reconozca). Al ser pocas personas a las que debe aplicar la heurística podrá hacerlo con más detenimiento, desde pedir documentación a cachearla, actuaciones que antes no podía realizar de forma indiscriminada por un problema de volumen y recursos. Si detecta que un desconocido lleva un arma, además de impedirle la entrada al local, se informa automáticamente al servidor centralizado que mantiene la base de datos, realimentando el sistema.

Como el mismo servidor centralizado da servicio a muchas discotecas, el sistema se alimenta de la información y actuaciones individuales de muchos porteros en tiempo real. Además recoge información adicional que puede ser útil a la hora de correlacionar datos.

Visto así esta estrategia parece un avance importante para el mundo de lo antivirus, pero no es la panacea. El problema sigue siendo el mismo, dictaminar si un fichero es malicioso o no. Incluso puede que los errores al dictaminar sean más graves, si marcamos por error que un archivo es benigno y se cataloga en la lista blanca es más que probable que se deje actuar a ese código en cualquier ordenador local a sus anchas o, en el mejor de los casos, aplicándole análisis heurísticos o de comportamiento más relajados en el sistema local. Imaginemos un delincuente que está marcado como confiable en el sistema de reconocimiento facial, entraría a todas las discotecas automáticamente y el portero no se molestaría en prestarle mayor atención.

Los servidores centralizados deberían tener mecanismos de reanálisis y depuración de sus clasificaciones, para detectar errores tanto de malware que se haya asignado a las listas blancas como de software legítimo que han entrado por error en las listas negras. Tarea no sencilla si tenemos en cuenta los volúmenes en los que pueden moverse las colecciones de ficheros, lo que implica automatización y por ende dictámenes con un margen de error no despreciable.

Por lo tanto estos nuevos antivirus que tienden a intentar identificarlo todo, tanto el malware como los ficheros legítimos, no necesariamente tienen que ser más fiables. Una cosa es que lo identifiquen todo o casi todo, otra cosa es que esa identificación sea correcta. Lo que si es cierto es que las estrategias basadas en el "cloud computing" suponen un plus importante en la detección del malware, especialmente con especímenes muy nuevos, dada la actualización en tiempo real de las bases de datos que se consultan y la correlación centralizada de datos que se puede realizar gracias a la realimentación constante que producen los antivirus conectados al servicio.

En definitiva, el "cloud computing" y el uso masivo de listas blancas son una capa más a sumar al antivirus tradicional, pero no deberían por si solos convertirse en solución de seguridad. Sus beneficios se pueden notar ya en las primeras soluciones antivirus que lo están implantando, sus debilidades tampoco se harán esperar.


Bernardo Quintero
bernardo@hispasec.com



No hay comentarios:

Publicar un comentario en la entrada