Tipos de Virus

Características y Tipos de virus

** Volver a Artículos

Técnicas Stealth

Para pasar desapercibidos a veces los virus emplean una serie de trucos informáticos. Estas técnicas tienen como fin burlar a los antivirus y engañarles.

Por ejemplo, imagínate que un antivirus chequea el sector de arranque de un disco duro en busca de algún virus de BOOT. Imagínate también que dicho virus ha colocado una rutina al servicio de la interrupción de disco (una ISR) y de esta forma sabe cuando un programa intenta acceder al sector de arranque del disco. Y cuando esto sucede el virus entrega al programa el sector de arranque verdadero y no el infectado. Con esto, el antivirus cree que en realidad esta leyendo un sector no infectado y por tanto no encuentra ningún virus.

Es una forma de ocultarse y pasar desapercibido. Aunque los antivirus más sofisticados no son tan fácilmente engañables. Aveces estos realizan trazas de la interrupción de disco para averiguar la entrada directa a la rutina de la BIOS que controla el acceso a disco y con ello se saltan todo tipo de control de los virus sobre el disco. Pero a su vez algunos virus emplean técnicas para evitar ser trazados, y en fin es el cuento de nunca acabar.


Tunneling

Es la técnica que utilizan tanto virus como antivirus para saltarse todas las rutinas al servicio de una interrupción y tener así un control directo sobre dicha interrupción.

La forma de hacerlo es bastante compleja, hay que colocar el procesador en modo paso a paso. En este modo de funcionamiento, tras ejecutarse cada instrucción se produce la interrupción 1. La técnica consiste en colocar una ISR (Interrupt Service Routine) para dicha interrupción e ir ejecutando instrucciones comprobando cada vez si hemos llegado a donde queríamos y as recorrer toda la cadena de ISRs que halla. Entonces colocamos el parche al final de la cadena.

Como he dicho no es muy fácil de hacer, pero S posible. Más adelante te mostraré un programa de ejemplo.


Polimorfismo

Cuando un antivirus escanea el disco duro en busca de un virus en concreto, en realidad lo que esta haciendo es buscar un patrón del virus, es decir, un trozo de él.

Por eso los virus utilizan aveces la encriptación de su código para que de esta forma ningún antivirus lo pueda detectar. Además la codificación es distinta en cada fichero.

Pero existe un fallo en esta técnica, y es que un virus no se puede codificar por completo. Por lo menos tiene que quedar sin codificar la propia rutina desencriptadora, y esta es la rutina que los antivirus buscan para la detección del virus.

La forma más utilizada para la codificación es la operación lógica XOR. Esto es debido que esta operación es reversible como podemos comprobar.

8 XOR 9 = 1
1 XOR 9 = 8

En este caso la clave es el número 9, pero utilizando una clave distinta en cada fichero podemos tener una codificación también distinta.

Otra forma también muy utilizada consiste en sumar un numero fijo a cada byte del código vírico. Por ejemplo, supongamos que la clave es el número uno, entonces el 18 pasa a ser 19, el 27 a 28, etc.


Virus estáticos

Estos son uno de los tipos de virus más antiguos y ya poco frecuentes. Son de fichero, es decir, que su medio de propagación es a través de otros programas en ficheros ejecutables.

La forma de actuar es muy sencilla, cuando cargamos un fichero infectado el virus toma el control y contamina otro archivo que no este todavía infectado, tras esto le pasa el control al programa principal y aquí acaba la historia.

Normalmente infectan archivos del mismo directorio, o puede ser que tengan objetivos fijos como el COMMAND.COM del sistema operativo.

En todo caso no permanecen en memoria mas que el tiempo necesario para infectar uno o varios ficheros, y entonces pasan el control al programa infectado. A veces no pasan el control y bloquean el sistema, o simplemente te devuelven al SHELL del DOS. En estos casos en particular se tratan de virus destructivos puesto que sobreescriben la información del programa principal con su código de manera irreversible.


Virus residentes

Son aquella variedad de virus que permanecen indefinidamente en memoria incluso después de haber finalizado el programa portador del virus.

Debes de conocer la gestión de la memoria que hace el MS-DOS para saber como dejar residente un programa. Hay muchas formas de provocar que un programa finalice sin eliminarse de memoria. Los virus hacen esto y además se apuntan unos cuantos vectores de interrupción para asegurarse de tener el control del sistema.

Las interrupciones más parcheadas son varias:

Número Uso Asociado Descripción
21h MS-DOS Controla todas la funciones del sistema operativo
13h Disco Manejada (normalmente) por la BIOS, y lleva las funciones correspondientes a las unidades de disco.
08h Temporizador Invocada cada 1193182/65536 nanosegundos, o 18,2 veces aproximadamente cada segundo. Normalmente provoca otra interrupción, la INT 1Ch.
10h Vídeo También controlada por la BIOS para dar soporte a todas las funciones de vídeo, como imprimir caracteres, tamaño del cursor, colores, modos gráficos, etc...

Es el virus de fichero más frecuente y de los más infecciosos. Una vez ejecutado el programa portador del virus, éste pasa a la memoria del computador y se queda allí hasta que apaguemos el ordenador. Mientras tanto va infectando todos aquellos programas ejecutables que carguemos.


Virus destructivos

No falta que hable mucho de este tipo de virus. Está suficientemente claro que se trata de unos microprogramas muy peligrosos para la integridad de nuestro sistema y nuestros datos. Fueron diseñados expresamente para eso, con una clara finalidad:

Destruir, corromper, eliminar, borrar, aniquilar... datos.

Pero afortunadamente no todos los virus tienen efectos devastadores. A nadie le gusta ver como se borran todos los datos de su disco duro, y la verdad, personalmente, no sé que tiene de gracia borrar los preciados programas, información y datos de otras personas. Es más:

¿Cómo suelen destruir tan rápidamente todos nuestros datos? Atacando directamente a la FAT, es lo más fácil, en cuestión de segundos has inutilizado los datos el disco duro irreversiblemente.


Antidebuggers

Un debugger es un programa que nos puede servir para desensamblar a otro programa y as ver como está hecho por dentro. Los virus usan técnicas para evitar ser desensamblados y as impedir su análisis para la fabricación del antivirus correspondiente.

Las técnicas utilizadas son muy complejas y se basan en una característica del procesador que los debuggers utilizan. Los debuggers usan las interrupciones INT 1 y INT 3 para el correcto funcionamiento del programa.

La primera interrupción es la utilizada por el procesador en el modo paso a paso. Es un modo de funcionamiento especial en el que el procesador provoca la interrupción INT 1 tras ejecutar una instrucción, tal y como he explicado en el apartado de tunneling. A veces los virus cambian el vector de interrupción de la INT 1 y provocan el cuelgue del debugger. Pero además lo hacen de un modo poco ortodoxo de tal forma que el mismo analizador que usa el debugger no se da cuenta de la situación. Incluso aveces utilizan la INT 1 de forma vital para el funcionamiento de virus y por tanto si un programador intentase anular el cambio de vector que hace el virus, este dejaría de funcionar correctamente.