Complejidad tecnológica del desarrollo de un antivirus moderno
por Javier Venero
Panda Software
Pág. 1/2

Preludio

En este informe vamos a concentrarnos en las dificultades puramente tecnológicas del desarrollo y mantenimiento de un antivirus de primera línea, dejando de lado aspectos imprescindibles para que un antivirus pueda cumplir su misión pero que no están relacionados directamente con las tareas de programación, por ejemplo: obtener los virus aparecidos en cualquier lugar del globo, disponer de personal de hot-line cualificado para resolver cualquier problema relacionado con virus, buena documentación, traducciones, distribución de actualizaciones, etc.

En los siguientes apartados iremos describiendo las diversas tecnologías que se emplean en la lucha contra los virus así como las causas que han provocado el desarrollo de las mismas.

 

Estudio de los virus recibidos

El hecho de haber conseguido un virus, en muchos casos difícil de por sí, no significa que se detecte por arte de magia, hace falta disponer de un equipo de programadores, expertos en lenguaje máquina, que generen múltiples copias del virus, desensamblen el código del virus para conocer su funcionamiento y obtengan toda la información necesaria para su detección y desinfección. El ritmo de aparición de nuevos virus asegura trabajo continuo para este equipo de auténticos expertos en la estructura y comportamiento de más de 13000 virus informáticos.

 

Análisis rápido

Como ya hemos comentado, actualmente se calcula que existen en el mundo alrededor de 13000 virus informáticos. Con este panorama uno de los primeros problemas con los que se encuentra un desarrollador de antivirus es conseguir buscar 13000 virus en cada fichero en un tiempo mínimo. Lógicamente no se puede leer los archivos a analizar de cabo a rabo porque el análisis de un disco duro o un servidor de archivos sería eterno. Esto exige un conocimiento exhaustivo de todos los formatos de archivo potencialmente infectables y de todas las formas de infección que los desarrolladores de virus hayan podido diseñar. Con este conocimiento los antivirus pueden buscar allá donde hay que buscar ahorrando un tiempo precioso. No obstante esto no es suficiente para conseguir una velocidad competitiva y se hace necesario además el desarrollo de un sistema de búsqueda de cadenas mediante árboles de sufijos y prefijos. Otra técnica que permite acelerar el análisis, es una clasificación de los virus por tipos y familias que permita descartar la búsqueda de determinados virus en determinados archivos o partes de archivos. Esta última técnica obliga al equipo que estudia los virus recibidos a realizar y mantener esta clasificación.

 

Desinfección fiable

Cuando un usuario desinfecta un archivo, espera que éste siga funcionando con normalidad. Un antivirus, no solo tiene que detectar los virus, además debe desinfectarlos y con fiabilidad. De nuevo el desarrollador de antivirus debe andar con pies de plomo para no confundir variantes del mismo virus a la hora de desinfectar. Por ejemplo, existen más de 10 variantes del conocido Barrotes que tienen un tamaño diferente. Cada una de estas variantes debe ser desinfectada con un procedimiento diferente.

 

Análisis de archivos comprimidos

Otra dificultad añadida a los procedimientos de análisis es la capacidad de buscar archivos infectados dentro de los archivos comprimidos. Lógicamente esta operación de descompresión es realizada automáticamente en memoria por el antivirus, que debe conocer cómo se descomprimen los formatos de archivos comprimidos más utilizados (ZIP, ARJ, LHA, MS-COMPRESS, etc). La operación se realiza en memoria porque es impensable descomprimir el archivo en disco ya que la velocidad de análisis caería en picado y porque no se puede asegurar la existencia de espacio suficiente en disco para realizar la descompresión.

 

Análisis en modo aislado

En los sistemas operativos como el DOS, los virus tienen la posibilidad de engañar a los antivirus cuando éstos leen un archivo infectado. El engaño es tan sutil que el antivirus no detectará nada en el archivo infectado porque el virus le ha dado gato por liebre. Los antivirus han desarrollado una técnica (originalmente usada por un virus, todo hay que decirlo) que permite la localización exacta de las rutinas de servicio del sistema operativo. Al disponer de esta localización los antivirus pueden ponerse en contacto con el sistema operativo directamente desactivando virtualmente cualquier programa residente y por tanto virus que pudiera estar activo en la memoria. De esta forma el virus nunca podrá engañar al antivirus.

GDE (Generic Decryption Engine)

Los buenos tiempos en los que para detectar un virus bastaba con buscar una cadena de bytes en un lugar determinado se han acabado. Cuando hicieron su aparición los virus encriptados todavía quedaba una parte fija del virus que podía usarse como patrón de búsqueda, esta era la propia rutina de encriptación/desencriptación. Hoy en día la gran mayoría de los virus que aparecen son virus polimórficos. Esto significa que cada vez que el virus se replica, la nueva copia es completamente diferente de la anterior. Tan diferente que no se puede encontrar ni un byte coincidente (en valor y posición se entiende). La rutina del virus que se encarga de encriptarlo y desencriptarlo también cambia completamente de generación en generación, por lo que en teoría los antivirus no tienen por donde agarrarlo.

Esta situación ha obligado a los antivirus a desarrollar un método que permita desencriptar cualquier virus sin conocer su rutina de encriptación, para poder buscar, ahora sí, una cadena identificadora dentro del núcleo desencriptado del virus. Esto se dice fácil, pero supone el desarrollo de un emulador de instrucciones en lenguaje máquina que hace que el antivirus ejecute sin ejecutar realmente el código de desencriptación del virus. Esto es lo que en Panda hemos llamado Motor Genérico de Desencriptación (Generic Decryption Engine) o GDE.

Pág. 1/2



Todos los derechos quedan reservados.
© StRAtOS-ad 1998.