ÍNDICE

5.1. Definición y clasificación 4

5.1.1. Virus 4

5.1.2. Gusanos 5

5.1.3 Caballos de Troya 6

5.1.4. Bombas lógicas 7

5.1.5. Puertas falsas 7

5.1.6. Otros tipos de amenazas programadas 8

5.2. Conceptos previos sobre virus 8

5.2.1. Formato de discos y disquetes 9

5.2.2. Sector de arranque 9

5.2.3. Secuencia de arranque 11

5.2.4. Tabla de asignación de ficheros 12

5.2.5. Vectores de interrupciones 12

5.2.6. Estructura de un fichero ejecutable 13

5.3. Clasificación de los virus informáticos 14

5.3.1. Virus de boot 14

5.3.2. Virus de fichero 16

5.3.2.1 Virus de fichero residentes 16

5.3.2.2. Virus de fichero de acción directa 16

5.3.2.3. Otros tipos de virus de fichero 17

5.4. Ciclo de vida de los virus 18

5.4.1. Nacimiento 19

5.4.2. Difusión 20

5.4.3. Latencia 21

5.4.4. Activación o ataque 21

5.5. Detección de virus 23

5.6. Técnicas y Herramientas 23

5.6.1. Buscadores 24

5.6.2. Detectores expertos 25

5.6.2.1. Mediante análisis de comportamiento 25

5.6.2.2. Mediante control de modificaciones 26

5.6.2.3. Heurísticos 26

5.6.3. Desinfectadores 26

5.6.4. Vacunas 27

5.6.5. Bloqueadores 28

5.7. Virus avanzados 28

5.7.1. Ocultamiento 28

5.7.2. Sobrepasamiento 29

5.7.3. Autocifrado 29

5.7.4. Polimorfismo 29

BIBLIOGRAFÍA

• [var94], "Los virus informáticos. Qué son, Cómo actúan y cómo combatirlos". Multimedia Ediciones S.A.

• [Pfl97], "Security in Computing". C.P. Pfleeger. Prentice Hall. Second Ed.Cap. 5.

• [Her92], "Patología Computacional". A. Hermida. Revista Interface.

• "MS Word 6.x Macro Viruses FAQ", R.J. Martin. alt.comp.virus. (1996).

• "VIRUS-L FAQ", Ken van Wyk. comp.virus.

• "alt.comp.virus FAQ", D. Harley. alt.comp.virus. (1997).

OBJETIVOS

• No se va a aprender a crear virus, ni estudiar en profundidad el código de éstos, o las técnicas necesarias para desarrollarlos o modificarlos. El objetivo de este tema es prepararse para la defensa, no para el ataque.

• Conocer el concepto de virus informático y diferenciarlo de otros tipos de amenazas programadas.

• Conocer como actúan los virus informáticos y aprender a detectar su presencia.

• Aprender a diferenciar los distintos tipos de virus existentes y los efectos que éstos producen.

• Conocer algunas de las técnicas de ocultación que utilizan los virus informáticos más avanzados.

• Conocer las distintas técnicas y herramientas para la detección, prevención y eliminación de los virus.

 

5.1. Definición y clasificación

Una de las amenazas fundamentales a la Seguridad Informática son las amenazas programadas. Se trata de código específicamente diseñado para atacar las medidas de seguridad del sistema. En este caso estamos en presencia de un ataque intencionado que puede tener muy diversas motivaciones. Entre ellas, y siempre quedándonos cortos ante la variedad de las motivaciones humanas, podemos citar las siguientes:

• Simple diversión

• Robo de información

• Destrucción de la información

• Saturación del sistema

• ...

Existen distintos tipos de amenazas programadas y la división entre ellas no está siempre clara. En la mayoría de las ocasiones se engloba en el concepto de virus informático una gran cantidad de programas que utilizan técnicas de ataque muy diversas y que no deberían considerarse como tales. Adicionalmente, distintos autores ofrecen diferentes definiciones de lo que se entiende por virus informático, causando aun mayor confusión en un tema ya de por sí confuso. En todo caso, algunos códigos pueden entrar en diversas categorías o combinar varios tipos de amenazas en un solo código. En los siguientes subapartados vamos a intentar definir y diferenciar los tipos fundamentales de amenazas programadas existentes.

Los tipos fundamentales son los siguientes:

• Virus

• Gusanos

• Caballos de Troya

• Bombas lógicas

• Puertas falsas

• Otras menos importantes: salamis, polillas, ...

5.1.1. Virus

Una definición muy general de virus informático sería la siguiente:

"Secuencia de instrucciones ejecutable en un entorno informático, capaz de autoreplicarse de forma autónoma, parasitando a otras secuencias".

Existen varios aspectos de esta definición que es necesario matizar.

En primer lugar hay que decir que un virus NO es un programa independiente. No funciona por sí solo, sino que debe parasitar otros programas para poder funcionar. En este sentido es muy adecuado el uso del término virus, puesto que los virus biológicos también poseen esta característica. Tan solo son capaces de reproducirse utilizando la maquinaria ofrecida por las células de un organismo.

Por otro lado, un virus tan solo se ejecuta cuando lo hace la secuencia de instrucciones que ha infectado. Existe mucha confusión a este respecto, el hecho de editar el texto de un virus o de listar el nombre del fichero que lo contiene no permite la actuación del virus. Incluso el hecho de copiar el código que contiene el virus, no supone ningún tipo de problema, a no ser que posteriormente se ejecute el código copiado.

Cuando decimos que un virus es una secuencia de instrucciones, estamos ampliando su ámbito. Aunque la inmensa mayoría de los virus son secuencias escritas en código máquina, es perfectamente imaginable un virus consistente en una secuencia de instrucciones incluida en cualquier programa .BAT o en un guión de shell utilizado por el sistema operativo.

Existen varios tipos de virus, y su funcionamiento normal pasa por una serie de etapas que denominaremos ciclo de vida del virus. En apartados posteriores trataremos con mayor detalle el tema de los virus informáticos, centrándonos en el caso de los virus de PC.

Por último, es necesario resaltar que el objetivo inicial (y en ocasiones el único) de un virus informático es autoreplicarse. El objetivo posterior del virus depende de su sistema de ataque, y este puede ser tan variado como permita la imaginación y el sistema utilizado para su creación.

5.1.2. Gusanos

los gusanos, o worms, son programas independientes capaces de autoreplicarse.

Al contrario de lo que ocurre con los virus informáticos, los gusanos son programas completos que pueden funcionar por sí solos, y que por tanto no necesitan parasitar otros programas para replicarse.

Normalmente los gusanos se desarrollan y actúan en entornos de red, y se dedican a reproducirse y viajar entre los distintos ordenadores de la misma. Su nombre probablemente provenga del hecho de que "se arrastran" por la red viajando de una máquina a otra.

Su ejecución y distribución se basa normalmente en errores o debilidades de los protocolos de red o de los programas incluidos en los sistemas operativos que los utilizan.

Normalmente el objetivo de los gusanos no es modificar otros programas o destruir información. Su finalidad básica es reproducirse y alcanzar el máximo de distribución entre los ordenadores de la red. Como máximo, los gusanos tienden a replicarse en tal medida que saturan los recursos de las máquinas, provocando un ataque "por denegación de servicio".

En todo caso, algunos gusanos pueden incluir como parte de su código algún virus informático o bomba lógica que actúe sobre las máquinas en la que se establecen.

El gusano más importante hasta la fecha se dio a conocer en 1988 en multitud de sistemas UNIX conectados entre sí en Estados Unidos. Llegó a infectar más de 3000 máquinas aprovechando diversos fallos de los sistemas UNIX primitivos y utilizando varias técnicas de ataque y distribución.

5.1.3 Caballos de Troya

Un caballo de Troya es un fragmento de código que se esconde en el interior de un programa aparentemente inofensivo, y que desarrolla actividades distintas del propósito aparente del programa que le sirve de anfitrión.

Por ejemplo, un caballo de Troya sería un código escondido en el interior de un juego, o de una versión de demostración de un software muy llamativo. El usuario se trae el software con intención de probarlo y en principio no tiene porque notar la diferencia con un programa correcto. Si embargo al ejecutar el programa, este, de modo oculto al usuario, estaría realizando otro tipo de acciones, tales como borrar código, enviar copias de información por la red, instalar un virus informático, etc.

A diferencia de los gusanos o los virus, un caballo de Troya es incapaz de replicarse, y su funcionamiento se basa en la ejecución del programa original que lo contiene.

Obviamente el nombre de este tipo de amenazas es muy adecuado y proviene de la técnica ideada por Ulises en "la Illiada" de Homero para vencer a los Troyanos.

El éxito de un caballo de Troya se basa en hacer que el usuario ejecute el programa que lo contiene. De este modo, suelen esconderse en programas aparentemente inofensivos, muy llamativos y distribuidos en gran medida como software shareware o freeware.

Los típicos programas anfitriones de los caballos de Troya son los juegos, editores de texto, hojas de calculo, e incluso hay algunos casos muy curiosos en los que se esconden en supuestas nuevas versiones de conocidas herramientas antivirus.

Un ejemplo interesante de caballo de Troya es aquel que puede esconderse en el sistema UNIX dentro del programa login, y cuya finalidad es obtener las contraseñas de los usuarios. De hecho, uno de los creadores del UNIX, Ken Thompson, escribió un maravilloso artículo donde describía como introducir un caballo de Troya en el código del programa login de modo que este fuese indetectable.

Un ejemplo de caballo de Troya benigno es el que "dejaron" los creadores del Excel para Windows 95. Basta con seguir los siguientes pasos:

1. Abrir el Excel de Windows 95 con una hoja de cálculo nueva

2. Moverse hasta la fila 95

3. Hacer click en el número 95 seleccionando toda la fila

4. Pulsar la tecla Tab una vez para moverse a la columna B

5. Seleccionar la opción (Acerca de Microsoft Excel) del Menú de Ayuda.

6. Mantener pulsado Ctrl+Alt+Shift y pinchar en el botón Soporte técnico.

7. Se abrirá una ventana titulada "Hall of Tortured Souls"

8. Con las teclas de cursor nos podemos mover por la sala y subir las escaleras

9. Si nos damos la vuelta, bajamos las escaleras y pulsamos "excelkfa" (sin comillas),

10. La pared del fondo desaparece y se puede viajar por una sala con fotos de los "culpables".

Este truco funciona en muchas versiones del Excel para Windows 95, y es un claro ejemplo de lo que puede esconderse en cualquier aplicación sin que el usuario se de cuenta.

5.1.4. Bombas lógicas

Pueden considerarse como un tipo de caballo de Troya que se usa para lanzar un virus, un gusano u otro tipo de ataque directo contra el sistema. Puede tratarse de una pieza de código o de un programa independiente preparado para atacar el sistema cuando se cumplan ciertas condiciones.

• Sea una fecha determinada

• Se haya arrancado el sistema un número dado de veces

• Se pulse una secuencia definida de teclas

• ...

Ejemplos de virus que utilizan el mecanismo de bomba lógica para su activación son:

• El viernes 13. Se activa sólo en esta fecha. Cuidado con el virus Sábado 14.

• El virus Flip. El día 2 de cada mes ataca de 4 a 5 de la tarde.

• El virus Barrotes. El día 5 de enero se pone en marcha.

• El virus Manolo. Se pone en marcha después de que se hayan realizado 220 llamadas al sistema.

5.1.5. Puertas falsas

Las puertas falsas (trap doors o back doors) son un mecanismo establecido en el sistema por su diseñador o por alguien que ha modificado el funcionamiento del mismo. Su objetivo es ofrecer un modo de acceder al sistema esquivando todas las medidas de seguridad establecidas cuando se usa el procedimiento normal. Se trata pues de proporcionar una ruta directa y oculta de acceso al sistema.

En algunas ocasiones las puertas falsas se establecen durante el desarrollo de la aplicación, con el fin de testearla o permitir un acceso directo y fácil a determinados módulos en caso de fallo del mecanismo normal de acceso. En general estas puertas se eliminan al distribuir la aplicación, pero siempre hay olvidos.

El mecanismo de acceso, conocido por la persona que crea la puerta falsa, puede ser una combinación de teclas dadas, una secuencia bien definida de acciones, un login particular, etc.

Un ejemplo de puerta falsa es la que presentan las BIOS de las placas AWARD. A la hora de modificar sus parámetros podemos utilizar cualquiera de las siguientes contraseñas mágica: "condo," y "589589". Aunque el propietario del ordenador haya incorporado su propia contraseña, las dos anteriores suponen una puerta falsa que permite entrar a la configuración de la BIOS.

5.1.6. Otros tipos de amenazas programadas

Existen multitud de tipos y variaciones de las amenazas antes descritas, aunque su importancia e incidencia es mucho menor.

Los programas salami son pequeñas secuencias de código diseñadas para alterar mínima mente ciertos datos bancarios. Por ejemplo redondeando ciertas cantidades en su tercera cifra decimal o desplazando los puntos decimales en unos pocos datos de ciertos ficheros.

Polillas o bugs no son una amenaza programada propiamente dicha, sino de un efecto del software de mala calidad. Consisten en la perdida parcial de datos o en daños a la estructura lógica del disco.

Aparecen en DOS debido a la interacción de programas residentes o como efecto lateral del uso de programas de muy baja calidad. Su ocurrencia causa la perdida de clusters o la aparición de enlaces cruzados. Pueden detectarse por ejemplo utilizando ordenes como el CHKDSK o el SCANDISK.

5.2. Conceptos previos sobre virus

El funcionamiento de los virus, su creación, detección y eliminación depende en gran medida del conocimiento en profundidad del hardware del sistema sobre el que se va a ejecutar, así como del software que lo gestiona a bajo nivel. En concreto depende del software de más bajo nivel del sistema, situado en la BIOS (en DOS), y del sistema operativo que gestiona los recursos de la máquina.

De este modo, los virus son totalmente dependientes del entorno. No es lo mismo un virus de PC, que de Macintosh o de UNIX.

Esta es la razón por la que los virus se suelen programar en ensamblador, ya que este lenguaje permite un acceso total al hardware de la máquina.

Para entender el funcionamiento de los virus es necesario recordar algunos conceptos ampliamente utilizados por los mismos. Nos centraremos en los virus de PC, dado que éstos son, con diferencia, los más extendidos.

5.2.1. Formato de discos y disquetes

Al formatear un disco, este se divide en una serie de secciones que van a permitir su uso por parte del sistema operativo para el almacenamiento de información. Concretamente la superficie del disco se divide en caras, pistas y sectores.

Viendo la siguiente figura se puede definir gráficamente que se entiende por sector y que se entiende por pista.

Las pistas serían las zonas definidas al dividir cada cara mediante círculos concéntricos, mientras los sectores son las zonas definidas en cada pista cuando se divide radialmente la superficie de la cara.

Todos los disquetes actuales tienen dos caras, mientras en los discos duros pueden haber más de dos. Además en los discos duros las pistas se suelen denominar cilindros, ya que su prolongación en la tercera dimensión define esta figura geométrica.

Así, en un disco, la localización de cada porción de información viene dada por la terna: cara, número de pista, número de sector.

5.2.2. Sector de arranque

El sector de arranque es aquel en el que se almacenan básicamente los siguientes dos tipos de información:

1. Información sobre la estructura lógica del disco. Conteniendo datos tales como el número de pistas, los sectores por pista, el número de caras, el tamaño reservado para la tabla de asignación (FAT), el número de FATs, el número de entradas de directorio que admite el disco, el sector de inicio del área de datos, etc.

2. Un pequeño programa ejecutado por la secuencia de arranque situada en la memoria permanente (ROM) del ordenador.

Además es necesario distinguir dos tipos de sectores de arranque, según estemos hablando de disquetes o de discos duros.

• Boot sector en disquetes

• MBR en los discos duros

Boot sector

En todos los disquetes, sean o no de arranque de MS-DOS, su primer sector físico (el sector 0) es el sector de arranque o boot sector.

El programa BOOT situado en este sector se encarga simplemente de ceder el control a los ficheros de arranque del sistema operativo (IO.SYS, MSDOS.SYS) si los encuentra en el disquete, o de dar un mensaje de error si no los encuentra:

"Disco de sistema incorrecto. Inserte un disco del sistem y pulse una tecla..."

Veamos gráficamente la posición de los distintos tipos de información almacenados en un disquete cualquiera o de una partición de un disco duro:

En primer lugar, en el primer sector, se encuentra el sector de arranque (boot sector), a continuación se reservan una serie de sectores para mantener dos copias de la tabla de asignación, después se almacena la información sobre las entradas del directorio raíz y finalmente se encuentra el área de datos del disco.

MBR

En el primer sector de cada disco duro se almacena la tabla de particiones, también denominada MBR (Master Boot Record). En este sector se especifica el número de particiones del disco y sus características, así como cual de ellas es la partición activa, desde la que se va a arrancar el sistema.

Además de un MBR en el disco duro, cada partición comienza con su propio sector de arranque (BOOT) que contiene información similar al sector de arranque de un disquete.

Además de la tabla de particiones, el MBR contiene un programa de arranque propio. Este programa no llama directamente a los ficheros de arranque del sistema operativo, sino que llama al programa de carga (BOOT) de la partición activa, y será éste el encargado de cargar y ejecutar el sistema operativo almacenado en su partición.

5.2.3. Secuencia de arranque

El siguiente diagrama de flujo resume las principales etapas de la secuencia de arranque de un PC.

5.2.4. Tabla de asignación de ficheros

Al formatear un disco también se reserva espacio para la tabla de asignación de ficheros o FAT.

Los ficheros en MS-DOS no tienen porque almacenarse ocupando sectores consecutivos en disco, sino que su contenido puede estar repartido a lo largo de distintas zonas del disco "enlazadas" entre sí.

Cada sección de un archivo se denomina "cluster" o "unidad de asignación" y se almacena en los espacios libres del disco duro. No en el primer espacio en el que quepa el fichero completo.

Para poder definir la posición de los distintos ficheros en el disco, es necesario un sistema que nos permita conocer la situación de cada uno de los clusters que los componen. Con este fin se utiliza la FAT.

Para cada fichero, el número de su primer cluster (entrada en la tabla de asignación), junto con su nombre, la fecha y hora de creación y el tamaño del mismo se encuentra almacenado en la entrada del directorio correspondiente.

En la tabla de asignación la entrada del primer cluster indica cual es el siguiente (está enlazada), y este apunta al que le sigue. Este sistema se repite hasta llegar a una entrada de la tabla indicando el final del fichero.

El programa CHKDSK de DOS (SCANDISK en las nuevas versiones) comprueba la integridad y consistencia de los datos almacenados en la FAT. Así comprueba si hay clusters asignados que no corresponden a ningún fichero (cadenas perdidas), o si un cluster determinado está siendo utilizado por dos ficheros simultáneamente (entrada cruzada).

5.2.5. Vectores de interrupciones

El sistema operativo ofrece una serie de servicios o funciones básicas para el manejo de los recursos de la máquina. Cada servicio es un conjunto de instrucciones almacenadas a partir de una posición dada que permiten funciones tales como escribir sectores en disco, leerlos, escribir caracteres en pantalla, leer caracteres de teclado, obtener la posición del ratón, etc.

Cuando se quiere ejecutar uno de esto servicios, se provoca una interrupción identificada por un número, lo que hace que se llame a la rutina de servicio de la interrupción.

Un vector de interrupción es un área de la memoria donde se guarda la dirección de una determinada rutina de servicio de interrupción. Todos los PCs disponen de una tabla de vectores de interrupción, situada al comienzo de la memoria, donde se encuentran todos los vectores de interrupción (256 vectores), es decir, donde se guardan las direcciones de memoria de cada una de las rutinas de servicio. Cada vector ocupa 4 bytes, por lo que la tabla entera ocupa 1024 bytes.

En DOS, la instrucción en ensamblador

INT [número de interrupción]

obtiene la dirección del vector, realiza la llamada a la misma y retorna cuando encuentra la instrucción IRET.

5.2.6. Estructura de un fichero ejecutable

Un fichero ejecutable es un programa grabado en disco conteniendo instrucciones "entendibles" por el procesador. Bajo DOS los ficheros ejecutables pueden ser de varios tipos y tener asociadas distintas extensiones: COM, EXE, SYS, OVL.... Los dos tipos fundamentales se corresponden con las extensiones COM y EXE.

Los ficheros COM son una imagen del programa en memoria. Al cargarlos para ejecución, el sistema lee su contenido secuencialmente y lo copia en memoria. Su tamaño máximo es de 64 Kbytes.

Un fichero EXE consta de una cabecera conteniendo sus parámetros de carga, tales como dirección de comienzo del programa, memoria máxima necesaria para ejecutarlo, número de bytes a cargar inicialmente, etc. A la cabecera le siguen los datos y el código del programa. Al cargarlo, el sistema lee primero la cabecera y carga el número de bytes especificado en la misma, saltando posteriormente a la dirección de comienzo indicada.

5.3. Clasificación de los virus informáticos

Los virus informáticos pueden clasificarse fundamentalmente en dos clases en base al tipo de secuencia que infectan:

• virus de boot o de sector de arranque

• virus de programa o de fichero

Los virus de boot infectan sectores de arranque (BOOT o MBR) y sólo se activan al arrancar desde el disco infectado.

Los virus de programa infectan cualquier fichero ejecutable y se activan al ejecutar el programa infectado.

Los tipos anteriores no son excluyentes, ya que existen virus capaces de infectar tanto sectores de arranque como programas.

5.3.1. Virus de boot

Los virus de boot infectan sectores de arranque sustituyendo todo o en parte el contenido de los mismos. Este tipo de virus se activan cuando se ejecutan los programas incluidos en los sectores de arranque, es decir, cuando se arranca desde el disquete o la partición que los contiene.

Así pues, la copia o el uso de los ficheros contenidos en un disco contaminado con este tipo de virus no supone ningún problema (a no ser que estos también estén infectados con algún virus de fichero). La activación del virus tan solo se produce al arrancar desde el disco.

Tras ser activado, un virus de este tipo podría lanzar su código de ataque directamente, pero en ese caso sus posibilidades de reproducción serían nulas. Así pues su actividad típica tras ser activado suele seguir un esquema como el siguiente:

1. Reserva la memoria que va a utilizar

2. Se carga en la nueva posición reservada

3. Intercepta ciertos servicios del sistema, normalmente servicios de lectura y escritura en disco.

4. Carga el sector de boot original y le cede el control. Normalmente el sector original ha sido almacenado por el virus en algún sector del disco marcado como defectuoso.

En el paso 3 la intercepción de los servicios del sistema se realiza modificando la tabla de vectores de interrupción tal y como se muestra en el siguiente gráfico.

La intercepción de una interrupción, tal y como se muestra en la figura anterior, se realiza sustituyendo la dirección de la rutina de servicio original en la tabla de vectores de interrupción por la dirección de la parte del virus que actúa en caso de producirse la interrupción. Al final del código del virus se retorna el control a la rutina de servicio original con el fin de ocultar su presencia.

Tras ser activado un virus de boot, en el paso 2 se sitúa como residente en memoria. De ese modo, cada vez que algún programa utilice los servicios interceptados, el virus podrá tomar el control.

Al introducir un nuevo disco, el sistema siempre trata de leer su sector de boot para determinar sus características. El virus residente en memoria puede haber interceptado este proceso e infectar el disco introducido.

Veamos ahora cual es el proceso seguido por el virus para infectar un nuevo disco:

1. Se guarda el sector de boot original en algún sector del disco y se marca este como defectuoso para evitar que se sobreescriba.

2. Se escribe el código del virus en el sector de boot preservando la información sobre la estructura del disco.

En algunos casos el código completo del virus no cabe en el sector de boot, con lo que al infectar un disco, se copia en algún sector del mismo y se marca también como defectuoso.

Muchas veces los virus de boot tienen algunos problemas de diseño. Por ejemplo, puede ocurrir que el virus intente infectar un disco protegido contra escritura. En ese caso el sistema puede dar un error de escritura, lo que puede resultar curioso si el usuario no ha pretendido escribir nada en el disco. Para evitar este problema muchos virus interceptan la gestión de errores.

5.3.2. Virus de fichero

Los virus de fichero infectan cualquier tipo de fichero ejecutable y lo utilizan como medio de reproducción y toma de control. El virus se activa cuando se ejecuta el fichero y no cuando se edita, se copia o se lista su nombre (con DIR).

En función del comportamiento del virus una vez tomado el control, podemos clasificarlos en 2 tipos:

• virus residentes

• virus de acción directa

5.3.2.1 Virus de fichero residentes

Este tipo de virus toman el control de la máquina de modo permanente hasta que se apaga o se reinicia por software. Para ello se cargan como residentes en memoria tras la ejecución del programa infectado. Desde la memoria pueden interceptar ciertos servicios de interrupción e infectar cualquier programa que sea ejecutado a continuación.

El comportamiento de este tipo de virus cuando se ejecuta el fichero infectado sigue un esquema del siguiente tipo:

Si no hay otra copia en memoria entonces

Tomar el control de la máquina

Reservar una zona de memoria

Copiar el código en la zona reservada

Interceptar ciertos servicios del sistema

Devolver el control al programa original

Desde memoria, comenzar el proceso de infección de otros ficheros

Cuando se den las condiciones de ataque

Desarrollar el ataque

Dado que este tipo de virus se encuentran residentes en memoria, no basta con borrar o reparar los ficheros infectados para erradicarlos. El virus podrá seguir infectando otros programas desde memoria. La única solución en este caso es apagar el ordenador y arrancar desde un disco del sistema limpio y protegido contra escritura. En este momento tenemos la seguridad de no tener ningún virus en memoria y podemos proceder a ejecutar los correspondientes programas antivirus (siempre que éstos no estén infectados).

5.3.2.2. Virus de fichero de acción directa

Los virus de acción directa no permanecen en memoria después de ser ejecutado el programa infectado, sino que proceden directamente a desarrollar la rutina de ataque. Así, al ejecutar el programa infectado se desarrollará el siguiente proceso:

Si se dan las condiciones de ataque

Desarrollar el ataque

Opcional: Infectar otros ficheros

Ceder el control al portador

5.3.2.3. Otros tipos de virus de fichero

Existen otros tipos más específicos o nuevas variantes de los virus de fichero, aunque salvo en el caso de los virus de macro su difusión es mucho menor que la de los virus de fichero normales. Veamos algunos ejemplos:

Virus de sobreescritura

Este tipo de virus, sean o no residentes, no respetan la información contenida en los ficheros infectados. Durante el proceso de infección el virus sobreescribe parte del código del programa anfitrión. De este modo el programa anfitrión puede dejar de ser ejecutable, bloquearse al ser ejecutado o provocar errores.

Uno de los objetivos buscados al crear un virus de sobreescritura es mantener invariable el tamaño del fichero infectado. Sin embargo, este tipo de estrategia no es muy recomendable si se quiere mantener el virus indetectado el máximo de tiempo posible.

Virus de compañía

Su funcionamiento se basa en una característica del interprete de ordenes del DOS (COMMAND.COM). Si el interprete encuentra dos programas ejecutables con el mismo nombre pero con las extensiones .COM y .EXE, siempre ejecuta aquel que tiene la extensión .COM.

Crear un virus de compañía (compainon virus) es muy sencillo. Basta con elegir un programa ejecutable cualquiera que tenga la extensión .EXE. Se infecta el programa con el virus y se le cambia la extensión por .COM en el fichero infectado. Para ocultar su existencia basta con asignar el atributo oculto al fichero infectado.

Cuando el usuario ejecute su programa, creará estar ejecutando el fichero con extensión .EXE, sin embargo el sistema estará ejecutando el fichero infectado oculto con extensión .COM. Al tratarse del mismo ejecutable, el usuario no detectará que acaba de ejecutar un programa contaminado, a no ser que el virus lance su rutina de ataque en ese momento.

Aparte de su facilidad de creación, una de las ventajas de este tipo de virus es que no se modifica el fichero original .EXE. Su máximo inconveniente es que se detectan y eliminan muy fácilmente simplemente borrando el fichero oculto contaminado.

Virus de enlace o de directorio

Este tipo de virus no afectan a los ficheros directamente, sino a su información asociada en la tabla de asignación de ficheros (FAT).

El proceso de infección de este tipo de virus es el siguiente. Se accede al directorio donde se encuentra el fichero a infectar y se cambia el número de su primer cluster por el del primer cluster ocupado por el virus. Si se quiere ocultar el virus se hace que al finalizar ceda el control al programa infectado.

Una de las ventajas de este tipo de virus es que no se necesita modificar el código de los ficheros infectados, lo que los hace más difíciles de detectar. Además no es preciso replicar el código del virus añadiéndolo a los ficheros infectados, ya que basta con cambiar entradas en la FAT y hacer que éstas apunten al mismo código.

Virus de macro

Los virus de macro son los de más reciente aparición y se están extendiendo mucho en los últimos tiempos. Su existencia se apoya en el hecho de que algunas aplicaciones recientes utilizan lenguajes de macros y permiten incorporar macros a los ficheros que generan. En concreto, aplicaciones como el Word6 o el Excel5 entre otras, permiten incorporar en sus ficheros pequeños macros escritas en el lenguaje Word Basic.

Un virus de macro se construye como una colección de instrucciones conocida como macro, que una aplicación, tal como el Word 6.x o 7 ejecuta. La lista de instrucciones de una macro puede copiar o borrar ficheros, alterarlos, cargar otros ficheros y ejecutar programas. Los virus de macro no son directamente ejecutables. Son leídos, interpretados y ejecutados por el interprete del lenguaje de macros (WordBasic en el caso del Microsoft Word).

Las características de este tipo de virus hacen posible que sean los primeros que puedan funcionar en distintas plataformas. Así, un virus de macro podrá ejecutarse indistintamente en un PC o en un Macintosh, siempre que estos ordenadores utilicen la versión adecuada de la aplicación y del interprete de macros.

Además, los virus de macro permiten la transmisión de los virus a través del correo electrónico de forma sencilla. Muchos lectores de mail actuales, como el Eudora o los incorporados en navegadores como el Netscape o Explores, incorporan el estándar MIME. Este hecho permite a los usuarios asociar aplicaciones para leer de modo automático determinados documentos incluidos en el correo. Entre los documentos legibles se encuentran los creados por el Word. Así pues, de modo automático podemos estar ejecutando un virus de macro al "leer" un correo electrónico que incluya el documento en que se encuentra.

Los virus de macro suele incluirse entre las macros autoejecutables al abrir un documento (ej. AutoOpen). Cuando se ejecutan tienden a infectar/alterar otras macros globales de la aplicación, tales como las asociadas a cerrar o guardar documentos. De este modo la próxima vez que se ejecute una de estas macros, podrán infectarse nuevos documentos.

5.4. Ciclo de vida de los virus

La vida de un virus pasa por una serie de etapas bastante bien definidas que definen lo que podemos denominar el ciclo de vida del virus. Estas etapas se resumen en la siguiente figura:

En los siguientes apartados trataremos con algo más de detalle cada una de las etapas.

5.4.1. Nacimiento

Los virus al ser programas informáticos son creados por programadores o son el producto de mutaciones o modificaciones de otros virus. Están ligados directamente a la arquitectura para la que han sido diseñados y suelen estar programados en el ensamblador de la máquina. Para su creación es necesario tener unos conocimientos más o menos avanzados de la arquitectura, pero estos conocimientos están disponibles fácilmente a través de la bibliografía adecuada.

De hecho los virus han ido evolucionando constantemente, desde versiones muy simples y fácilmente identificables, hasta versiones muy sofisticadas que utilizan toda una serie de técnicas de ocultación para evitar ser detectados y destruidos.

Al contrario de lo que ocurre con los virus biológicos que pueden tardar años en evolucionar, los virus informáticos "evolucionan" con una velocidad pasmosa "adaptándose" al entorno.

Aunque cada virus es tan solo un corto programa, y por lo tanto no es una entidad inteligente, los Virus informáticos tomados como un todo, están apoyados por una amplia comunidad de personas, por lo que pueden ser considerados como una entidad viva y sensitiva, capaz de estudiar su entorno y generar respuestas inteligentes a cada nueva situación, capaces de romper cualquier esquema de defensa, y capaces de desarrollar ataques sofisticados contra sus enemigos. Este es el problema de fondo, y las herramientas antivirus deben ser capaces de mantenerse a la altura de esta evolución.

¿Qué razones pueden impulsar a alguien a crear un virus?

Sin querer ser exhaustivos, algunas de las más importantes son las siguientes:

• Deseo de ser admirado, aunque sea ocultamente. Este tipo de autor se siente satisfecho por el hecho de ver su marca personal en la extensión del virus creado.

• Deseo de experimentación. De hecho los hackers pueden ser considerados como personas interesadas en conocer, experimentar y explotar todas las características ofrecidas por los ordenadores.

• Deseo de producir daño a una entidad o persona específica. Por ejemplo a una empresa de la que se ha sido despedido o a los ordenadores que utilizan una herramienta antivirus en particular.

• Motivaciones políticas o terroristas. Se pueden crear ciertos virus con intención de infectar instalaciones de ciertos países o de activarse en días significados.

5.4.2. Difusión

La difusión de un virus informático tiene dos variantes:

• La transmisión del virus entre distintos ordenadores. Esto es, la infección original de un nuevo ordenador.

• La infección o replicación del virus dentro del mismo ordenador a partir de un fichero anterior infectado.

Existen diversas formas en las que puede transmitirse un virus informático. Entre ellas las fundamentales serían las siguientes:

• Por realizar copias de programas infectados de otro ordenador.

• Por recibir una copia de un programa infectado de otra persona.

• Por cargar un programa shareware o freeware de una BBS o de cualquier lugar de la red.

• Por obtener un fichero o aplicación original infectado.

En cuanto a la infección, el modo en que esta se produce depende del tipo de virus:

Virus de sector de arranque.

Tal y como dijimos en el apartado 5.3.1. este tipo de virus tan solo pueden activarse cuando se arranca desde el disquete cuyo sector de arranque está infectado, y por tanto tan solo en ese caso pueden iniciar un proceso de infección. No obstante existen virus de fichero que también son capaces de infectar sectores de arranque, por lo que podemos encontrarnos con un sector de arranque infectado sin haber arrancado desde ningún disco que lo tuviera dañado.

El proceso seguido para realizar la infección ya fue descrito en el apartado 5.3.1.

Virus de fichero

Los virus de fichero pueden iniciar un proceso de infección cuando se ejecuta el fichero infectado, bien directamente en el caso de los virus de acción directa, o bien con posterioridad en el caso de los virus residentes.

Normalmente antes de infectar un nuevo fichero, este tipo de virus comprueban el cumplimiento de ciertas condiciones:

• Si se trata de un tipo de programa infectable por el virus. Normalmente ficheros .COM o .EXE, aunque muchos virus tan solo pueden infectar uno de los dos tipos de ficheros ejecutables.

• Si el tamaño del fichero se encuentra en el rango adecuado. Por ejemplo si tras la infección de un fichero .COM este va a superar los 64Ks, no se realiza la infección. También se puede tener en cuenta que ficheros de gran tamaño camuflan mejor pequeñas modificaciones en el mismo.

• Si ya está infectado. Muchos virus tan solo infectan una vez los ficheros. Para evitar la reinfección, los virus dejan unas marcas características denominadas "firmas". Estas marcas miden unos pocos bytes (2 a 5) y permiten al virus saber si ya se encuentra en el fichero.

Una vez comprobadas las condiciones anteriores, y quizás alguna más, se comienza el proceso de infección. Existen tres opciones en cuanto a la posición en que puede colocarse el virus dentro del fichero víctima.

Al principio del fichero. Para ello deben desplazar el código original. En el caso de los ficheros .COM es bastante sencillo, pero en el caso de los .EXE es necesario modificar la cabecera de modo que esta apunte al comienzo del virus como primera instrucción a ejecutar.

Al final del fichero. Es el caso más típico. El virus se añade al final del código. En un .COM debe añadir además una instrucción inicial al fichero para producir un salto al principio del virus. En el caso de los ficheros .EXE de nuevo se hace necesario modificar la cabecera.

En medio del fichero. Es un caso más extraño ya que es necesario un trabajo extra. Utilizando este sistema se dificulta algo más la detección del virus, al impedir que sea localizado simplemente estudiando las primeras o las últimas instrucciones del programa.

5.4.3. Latencia

Para dificultar la localización del origen del virus, y sabotear los intentos de detección, algunos virus permanecen inactivos durante cierto tiempo, o hasta que se da alguna condición en particular desde el momento de la infección original. Este periodo de espera se denomina latencia.

Aunque se ejecute el programa infectado, y con ello el virus, si no se cumple la condición de activación este no arrancará su rutina de arranque.

Durante el periodo de latencia los virus pueden permanecer completamente inactivos sin ni siquiera infectar nuevos ficheros, o pueden dedicarse a reproducirse pero sin lanzar su ataque.

5.4.4. Activación o ataque

Tras haber pasado por el periodo de latencia y haber infectado toda una serie de ficheros y/o discos, se produce la activación y consiguiente ataque del virus.

La activación del virus se produce ante una determinada condición de activación. Estas condiciones pueden ser muy variadas. Algunas de las más típicas son las siguientes:

• En una fecha y/o hora determinada. Realmente cuando el reloj del sistema la muestre.

• Después de infectar un número dado de ficheros y/o discos.

• Después de que el ordenador arranque un número dado de veces.

• Al detectar la ejecución de alguna aplicación en concreto. Por ejemplo algún programa antivirus en particular.

• De forma aleatoria.

Una vez se produce la activación del virus, este ejecuta su rutina de ataque. La variedad de métodos de ataque es enorme, y está tan solo limitada por la imaginación del creador del virus. Básicamente podemos distinguir entre ataques inofensivos y aquellos que afectan a la información almacenada.

Entre los ataques "inofensivos" podemos citar los siguientes:

• Mostrar un mensaje en pantalla.

• Hacer rebotar una pelotita por la pantalla.

• Mostrar unos barrotes verticales.

• Hacer que la información de pantalla parezca deslizarse hacia la parte baja de la misma.

• Producir algún tipo de música.

Los primeros virus eran en su mayor parte "benignos" y sólo posteriormente comenzaron a proliferar aquellos que realizaban ataques "malignos". En algunos libros se denomina a estos últimos virus de fase II. También existen virus que comienzan con una primera fase de ataques inofensivos y pasan en una fase II a ataques más peligrosos. Otra de las características distintivas de los virus de fase II es que concentran sus esfuerzos en evitar su detección y en dificultar su eliminación.

Entre los ataques malignos que puede desarrollar un virus podemos citar:

• Borrar algunos ficheros de modo aleatorio.

• Borrar la información del disco destruyendo la FAT.

• Formatear el disco duro.

Como todo informático sensato debe saber, un virus, que en definitiva no es más que una pieza de software, no puede dañar el hardware de la máquina, ni corroer sus circuitos ni hacer estallar la pantalla ni ninguna barbaridad similar.

5.5. Detección de virus

En este apartado nos centraremos en los síntomas que pueden indicar la presencia de virus, más que en las técnicas más o menos avanzadas de análisis de su código utilizadas por las distintas herramientas antivirus.

En primer lugar es necesario recordar que los virus han ido evolucionando para hacer cada vez más difícil su detección, tanto evitando los síntomas que vamos a comentar como contrarrestando las técnicas de detección usadas por las herramientas antivirus.

Algunos de los síntomas o efectos típicos que pueden indicar la presencia de un virus informático en nuestro ordenador son los siguientes:

• Ralentización del funcionamiento del sistema. Al interferir ciertos servicios del sistema, y sobretodo si estos se usan muy a menudo, pueden ralentizar de modo detectable el funcionamiento del sistema.

• Aumento en el tamaño de los ficheros. Al añadir su código al fichero infectado, salvo que se sobreescriba, aumenta el tamaño de este. Basta simplemente utilizar algún sistema que permita comparar los tamaños de los ficheros con los que tenían anteriormente. Algunos virus avanzados interfieren los servicios del sistema que permiten detectar el tamaño de los ficheros devolviendo siempre el tamaño del fichero original.

• Fecha u hora incorrecta. Algunos virus firman los ficheros infectados modificando su fecha y hora hacia valores extraños o imposibles.

• Reducción de la memoria disponible. Si los virus se instalan como residentes, algunas herramientas, o incluso ordenes como MEM o CHKDSK, pueden detectar su presencia o al menos una reducción en la memoria disponible.

• Programas no ejecutables. Si se sobreescriben o dañan los programas infectados, estos pueden dejar de ser ejecutables o provocar efectos extraños.

• Aparición de nuevos ficheros con el mismo nombre. Virus companion.

• Deterioro del directorio raíz. Algunos ficheros, al infectar el sector de arranque, dañan la información relacionada con el directorio raíz.

• Modificación del sistema de arranque. Utilizando ciertas utilidades, tales como las Norton o las PC-Tools es posible detectar una modificación en los sectores de arranque.

• Bloqueo o funcionamiento incorrecto del ordenador. Si el virus está mal diseñado puede provocar un bloqueo del ordenador cuando se arrancan programas infectados. De todos modos los bloqueos del ordenador rara vez son debidos a la presencia de virus.

5.6. Técnicas y Herramientas

Las herramientas antivirus son diferentes en función de que estemos hablando de usuarios o de investigadores en el tema de los virus.

Los usuarios necesitan herramientas que les ayuden a detectar la presencia de los virus en su sistema, a desinfectar los ficheros contaminados y a prevenir nuevas infecciones. Los investigadores necesitan además herramientas que les permitan descubrir nuevos virus o nuevas mutaciones de virus existentes, aislarlos y estudiarlos para ver como actúan, así como generar herramientas de detección, prevención y eliminación.

Todas las herramientas existentes pueden resultar inútiles si son mal utilizadas, por lo que el conocimiento de las técnicas adecuadas para su uso resulta cuanto menos tan importante como la existencia de las propias herramientas.

Los conocimientos mínimos necesarios para manejar las herramientas antivirus incluye estar informado de los distintos tipos existentes, de cuándo y cómo utilizarlas correctamente y de las limitaciones que tienen.

Este último punto es fundamental. Sobreestimar el poder de las herramientas utilizadas puede ser muy peligroso. Puede llevarnos a afirmar "este disco no tiene ningún virus", cuando lo que ocurre es que no somos capaces de detectar ningún virus conocido.

Las herramientas antivirus pueden clasificarse en cinco categorías fundamentales:

• Buscadores o scaners

• Detectores expertos

• Desinfectadores

• Vacunas

• Bloqueadores

5.6.1. Buscadores

Los buscadores (scanners) son programas diseñados para explorar el contenido de los ficheros y de los sectores de arranque con el objeto de detectar la presencia de virus conocidos.

Para saber si una secuencia de código está infectada, buscan marcas características que señalan la presencia probable de ciertos virus en concreto. Las marcas dejadas por los virus son cortas cadenas o patrones que forman parte de su código y que los identifican. La longitud de estas cadenas oscila entre 16 y 64 bytes (alrededor del 1% de la longitud típica de los virus). Las cadenas más cortas pueden dar lugar a la detección errónea de un virus en un fichero que en realidad no está infectado. Este tipo de error se denomina falso positivo.

Los buscadores disponen de una larga lista de marcas de virus conocidos y se dedican a buscarlas dentro de los ficheros explorados. Su presencia señala la probable infección del fichero.

No hay que confundir las marcas usadas por los buscadores con las firmas que utilizan los propios virus para detectar su presencia y evitar la reinfección.

Entre las ventajas de los buscadores destacan:

• Su simplicidad de funcionamiento que hace que sean programas compactos, rápidos y fiables ante virus conocidos.

• La facilidad para añadir nuevos virus una vez identificadas sus marcas.

Entre sus inconvenientes cabe destacar:

• Sólo son eficaces para detectar virus conocidos.

• La continua aparición de nuevos virus y mutaciones, o el uso de técnicas de cifrado o polimorfismo hacen que muchos virus no se detecten.

• Existe un exceso de buscadores distintos, mal documentados y de baja calidad.

• En discos de gran dimensión explorar todos los programas puede ser muy costoso.

5.6.2. Detectores expertos

Los detectores expertos pretenden detectar la impotencia de los buscadores clásicos ante los virus desconocidos.

Su función es detectar cualquier virus, aprovechando para ello características generales que puedan diferenciar los virus de los programas "honrados".

Para conseguir este objetivo pueden utilizarse varias estrategias, lo que da lugar a tres tipos básicos de detectores expertos.

5.6.2.1. Mediante análisis de comportamiento

Su estrategia consiste en vigilar el comportamiento de todos los programas que se ejecutan, con el fin de bloquear o denunciar los intentos de realizar acciones sospechosas. Entenderemos por acciones sospechosas aquellas que son típicas de los virus pero muy infrecuentes en programas no infectados. Por ejemplo:

• Permanecer residente.

• Acceder al disco directamente mediante las funciones de la BIOS.

• Modificar ficheros ejecutables

• Interferir interrupciones.

Cuando se detecta una acción sospechosa, se suele avisar al usuario y preguntarle si el programa en ejecución tiene alguna razón para llevarla a cabo.

Los principales inconvenientes de este tipo de detectores son los siguientes:

• Es difícil saber si las acciones sospechosas definen la presencia de un virus, sobretodo si pretende que un usuario normal decida si se permiten o no.

• Sólo se pueden detectar un subconjunto de las acciones que realizan los virus.

• Algunas acciones sospechosas son ejecutadas por programas normales. Por ejemplo PRINT permanece residente, etc.

5.6.2.2. Mediante control de modificaciones

Su uso se basa en que todo virus, para infectar un programa o secuencia de arranque, debe modificarlo. De hecho esto constituye el principal talón de Aquiles de los virus, y por tanto aquel que debemos aprovechar para detectarlos.

Este tipo de detectores chequean periódicamente todos los ficheros ejecutables y sectores de arranque en busca de modificaciones que puedan delatar la presencia de algún virus. Para ello deben guardar cierta información sobre los ficheros susceptibles de ser infectados antes de que lo sean. Esta información puede incluir su tamaño, un checksum de su contenido e incluso las primeras instrucciones que ejecutan.

Tanto este tipo de detectores expertos como los que utilizan la técnica de análisis de comportamiento comparten los siguientes inconvenientes:

• En muchas ocasiones requieren que el virus se active para poder detectarlo, lo que supone un peligro para el sistema si no se detectan a tiempo.

• Detectan la presencia de virus, pero no especifican cuales son.

• Su uso puede ser complejo y costoso.

5.6.2.3. Heurísticos

Los detectores heurísticos analizan el funcionamiento de los programas sin ejecutarlos en busca de acciones sospechosas. Para ello buscan el punto de entrada de los programas, desensamblan parte de su código y emulan su ejecución estudiando su comportamiento.

5.6.3. Desinfectadores

Una vez se ha detectado una infección (o ataque) de un virus, el principal interés del usuario es evitar que afecte a su trabajo y recuperarse de los efectos del virus.

Uno de los medios para conseguirlo es eliminar todas las copias del virus e intentar evitar que lleguen a activarse. Este es el objetivo de los desinfectadores.

Su funcionamiento se basa en el análisis detallado de las operaciones que cada virus realiza durante el proceso de infección. Con ello se pretende definir un algoritmo, específico de cada virus, que realice la transformación inversa, consiguiendo así la desinfección del fichero.

Este sistema presenta cuatro limitaciones fundamentales.

• No siempre es posible definir el algoritmo de desinfección. En ocasiones el virus destruye parte del contenido de los ficheros infectados, haciéndolos irrecuperables.

• Su campo de aplicación se limita a los virus bien conocidos y estudiados.

• Una variación mínima del virus (mutación) puede invalidar el algoritmo de desinfección. La herramienta en lugar de reparar el fichero infectado destruye el programa o el sistema. En este caso es peor el remedio que la enfermedad.

• Cuando hay una infección múltiple el procedimiento de recuperación puede ser muy costoso, e incluso imposible de realizar de modo automático.

En definitiva, es imposible conseguir un desinfectador automático perfecto.

Existen también algunos desinfectadores que utilizan métodos heurísticos. En concreto desensamblan parte del código de los ficheros infectados y emulan su funcionamiento. En base a un conocimiento exhaustivo de las actividades típicas de los virus buscan comportamientos "sospechosos" e intentan localizar la situación del virus y el punto de entrada al código del programa original. En base a esta información tratan de reconstruir el programa sano.

En todo caso, el único método de desinfección automática seguro es aquel que sustituye todo el contenido del sistema por una copia sana. La mayor aproximación a esta idea que podemos conseguir se basa en seguir una política de copias de seguridad adecuada. Esto no es tan sencillo si el virus tiene un periodo de latencia largo, dado que no podemos estar seguros de si nuestra copia de seguridad también está infectada.

5.6.4. Vacunas

Aunque eliminemos los virus de nuestro ordenador, el peligro de la reinfección siempre existe. Una solución a este problema consiste en utilizar vacunas, cuya función es inmunizar el sistema evitando que los virus lleguen a activarse, o simplemente evitando su entrada al mismo.

Existen tres estrategias básicas de vacunación.

Mediante firma

Con este método simplemente se marcan los ficheros a proteger con la firma de los virus de los que queremos inmunizarlos. De este modo los virus "detectan" su presencia y no infectan el fichero. Dado que los virus residentes estudian el contenido de determinadas posiciones de memoria para ver si ya se encuentran en ella, es posible también inmunizar el ordenador "engañando" al virus y haciéndole creer que ya se encuentra residente.

Obviamente este sistema es tan solo práctico cuando queremos protegernos de uno, o de unos pocos virus concretos. Existen demasiados virus y marcas asociadas, muchos virus no buscan marcas antes de infectar y tan solo nos protege de virus conocidos.

Mediante búsqueda

Este método de vacuna consiste en instalar un buscador residente que explore los ficheros cada vez que se vayan a ejecutar, o cada vez que se introduce un nuevo disco. Si se detecta un virus conocido, se puede abortar la ejecución del programa infectado o, sobre los virus bien estudiados, se puede desinfectar el fichero antes de su ejecución.

Este método tiene los siguientes inconvenientes:

• En el proceso de búsqueda tan solo se detectan virus conocidos.

• Ralentiza el trabajo normal del sistema y consume memoria.

• Si se pretende desinfectar, se añaden las limitaciones de los desinfectadores.

• Los virus de sector de arranque, al ser el primer sotware en ejecutarse, lo harán siempre antes que la vacuna, convirtiéndola en inútil en este caso.

Mediante control de integridad

Se instala un controlador de integridad residente. Para poder utilizarlo debemos disponer de información relativa a todos los ficheros (por ejemplo un CRC de su contenido). Cada vez que se va a ejecutar un fichero, el controlador residente puede estudiar dos aspectos del mismo:

- ¿ Se dispone del CRC del fichero, o es uno nuevo y no controlado?

- ¿ Ha cambiado desde que se chequearon sus características?

5.6.5. Bloqueadores

Un método tan sencillo como eficaz para evitar la propagación de un virus consiste en evitar la modificación de cualquier código ejecutable.

Es fácil proteger los disquetes contra escritura (evitando su infección), pero para hacer lo mismo con un disco duro hace falta una herramienta especial.

Llamamos bloqueadores a las herramientas que permiten proteger contra escritura todo o parte del disco duro. Desde este punto de vista se puede proteger todo el disco, una o varias particiones e incluso una serie de ficheros en particular.

La principal ventaja de los bloqueadores es que, bien utilizados, constituyen la herramienta ideal, capaz de proteger tanto contra virus como contra caballos de Troya y otros tipos de amenazas programadas.

Cuando los bloqueadores se implementan por software presentan dos inconvenientes. En primer lugar, los virus de sector de arranque pueden cargarse antes que ellos, y en segundo lugar son inútiles ante técnicas de acceso directo al hardware.

Existen bloqueadores híbridos apoyados por un hardware específico que impide la escritura del disco.

5.7. Virus avanzados

Apoyados en la capacidad de evolución dada por sus programadores, los nuevos virus nacen con el conocimiento de las técnicas utilizadas por las herramientas antivirus actuales y sabiendo cuales son sus puntos débiles. En base a ello utilizan técnicas cada vez más complejas para ocultarse y evitar ser detectados. Algunos de los métodos de ocultación más utilizados son los siguientes:

5.7.1. Ocultamiento

El ocultamiento (stealth) consiste en esconder los signos visibles de la infección que puedan delatar la presencia del virus en el sistema. Se trata de evitar todos los síntomas de la presencia de los virus vistos en el apartado 5.5.

El signo fundamental de infección es no obstante la modificación del fichero infectado. Una técnica de camuflaje usada por un virus residente puede ser la siguiente:

- Interceptar el servicio de lectura de ficheros.

- Cuando un programa desea analizar un fichero infectado, se le devuelve el contenido original del mismo antes de la infección.

5.7.2. Sobrepasamiento

El sobrepasamiento (tunneling) consiste en acceder directamente a los servicios del sistema a través de sus direcciones originales, sin pasar por el control de otros programas residentes, incluyendo el propio sistema operativo o cualquier buscador o vacuna residente.

Podría incluso accederse directamente al hardware sin utilizar las funciones del DOS o de la BIOS.

5.7.3. Autocifrado

Para evitar ser detectados por los buscadores y detectores expertos, los virus se cifran de modo distinto cada vez que infectan un fichero. Antes de ejecutarse, el virus debe descifrar su código usando una rutina de descifrado que lleva incorporada. La forma de detectar este tipo de virus es buscar la presencia de una rutina de descifrado en los programas.

5.7.4. Polimorfismo

Los virus más avanzados que existen son los denominados virus polimórficos. Se trata de virus que usan sistemas de autocifrado, pero que no tan solo modifican el cifrado del virus en cada infección, sino que también son capaces de cambiar la rutina de descifrado.

En distintos ficheros infectados por el mismo virus no existen coincidencias ni tan siquiera en la parte del virus que se encarga del proceso de descifrado. Para generar la rutina de descifrado pueden utilizarse distintas técnicas:

• Puede elegirse entre distintas rutinas predefinidas

• Puede modificarse la secuencia de instrucciones de la rutina añadiendole "ruido". Se trata de intecalar un número variable de instrucciones inútiles, cambiar el orden de operaciones independientes, etc.

• El esquema más sofisticado se basa en la MtE (Mutation Engine) escrita por un creador de virus bulgaro llamado "Dark Avenger". Se trata de un modulo objeto. Cualquier virus puede convertirse en polimórfico sin más que añadir a su código ciertas llamadas y enlazarlo con la MtE y algún módulo de generación de números aleatorios.

Un ejemplo clásico de virus polimórfico es el FLIP.

¿ Como funcionaria un virus de este tipo?

Al infectar seguiría un proceso similar al siguiente:

1. Cifrar el código del virus mediante una rutina con una clave variable. Esta rutina puede ser diferente en cada infección y la clave se almacena en el fichero infectado.

2. Generar una rutina de descifrado específica para el cifrado utilizado.

3. Concatenar las siguientes secuencias ejecutables

- Salto a la rutina de descifrado

- Programa original

- Virus cifrado

- Rutina de descifrado distinta en cada infección

Al arrancar el programa infectado se daría el siguiente proceso:

1. Se salta a la rutina de descifrado

2. Se descifra el virus

3. Se arranca el virus.