VR13: Analisis de virus: tecnicas especiales
Por Fernando Bonsembiante
Cuando se habla de un virus más o menos sofisticado, siempre aparecen palabras raras como 'stealth', 'polimorfismo', 'tunneling', etcétera. En esta nota explicamos brevemente las técnicas más usadas para crear virus avanzados.
Encripción
Se trata de una técnica usada para dificultar el análisis o la detección de un virus. Consiste en realizar una operación matemática sobre cada byte del código del virus para modificarlo, pero de tal forma que siempre pueda reconstruírselo para que pueda ser ejecutado en el momento necesario. Para ello hay una rutina que desencripta el virus cada vez que éste se ejecuta. Un virus encriptado puede usar siempre la misma clave de encripción o siempre una distinta. En el último caso, el cuerpo principal del virus sería siempre distinto, pero la rutina de desencripción sería siempre igual, y de esa forma se puede detectar el virus con facilidad.
Ejemplo: Cascade.
Anti debug, anti sourcer
Es el uso de determinadas secuencias de instrucciones o técnicas para engañar programas automáticos de desensamblado, por ejemplo el debug del DOS o el Sourcer de V COMMUNICATIONS, INC. La idea es hacer difícil el análisis del virus. Esta técnica no suele ser muy útil, ya que raramente un investigador anti virus haga un seguimiento paso a paso de un virus para comprender su funcionamiento. La mayoría hacen un desensamblado utilizando debug de DOS. Como este programa no hace un análisis muy complejo del ejecutable, es difícil poder engañarlo. Por otro lado, aunque se usen programas como el Sourcer, siempre se lo puede combinar con otros para resolver partes problemáticas, como, por ejemplo, las generadas con estas técnicas, por lo cual no son demasiado útiles. Otro tipo de técnica complicada para desensamblar es el código auto-modificante, pero siempre es posible desensamblarlo, y un virus escrito así es difícil de escribir, por lo cual no hay muchos. Tambien este tipo de código puede tener problemas con los caché de los procesadores.
Ejemplo: Lunch
Anti heurística
Es el uso de trucos de programación diseñados para evitar que un anti virus con modo heurístico pueda detectar un virus desconocido. Un anti virus heurístico es uno que analiza cada programa buscando determinadas acciones típicas de un virus, y marca los programas donde las encuentra como sospechosos. Para evitarlo, los virus no hacen las llamadas al DOS en la forma más común, por ejemplo cargan el registro AX con un valor y luego le suman otro para llegar al valor de la función que realmente quieren llamar.
Ejemplo: Kaos 1
Virus acompañantes
Son virus que no modifican los programas que 'infectan'. Usan la característica del DOS que hace que si en un directorio existen dos archivos con el mismo nombre, pero uno con la extensión .exe y otro con la extensión .com se ejecuta el archivo .com. De esta forma, un antivirus que chequee la integridad de los archivos no va a notar nada raro. Hay muy pocos de estos virus.
Ejemplo: Aids II, Clonewar, TrekWar.
Stealth
Es una técnica que, mediante el control de las interrupciones del DOS, y a veces de las del BIOS, hace al virus completamente invisible a los programas normales de visualización de archivos o de sectores de disco. De esta forma el virus pasa completamente desapercibido para el usuario y para los antivirus que no lo conozcan. Lo que hacen, básicamente, es interceptar la llamada al DOS de nuestro programa y cambiarla para que lea lo que debería estar en ese lugar si el virus no estuviese. Esta técnica es una de las más antiguas, ya se usó en el virus Brain, que hacía que cada vez que se quisiera ver el boot sector del diskette infectado se viera el boot sector limpio que el virus guardaba en otro lugar del disco.
Ejemplo: 512, Brain
Infección rápida
Son los virus que no sólo infectan a los archivos cuando se ejecutan, sino también cuando se los referencia por cualquier motivo, como ser pedir un directorio o abrirlos para lectura. De esta forma infectan la mayor cantidad de archivos en el menor tiempo. Si se utiliza un scanner que no lo detecte en un sistema infectado, el resultado será la totalidad de los ejecutables del disco infectados.
Ejemplo: Dark Avenger
Polimorfismo
Es una técnica muy avanzada de encripción, diseñada para que el virus siempre sea totalmente distinto cada vez que infecta un archivo nuevo. La principal diferencia que tiene con la encripción variable es que el desencriptor del virus se genera cada vez que se infecta un nuevo archivo, por lo tanto es siempre distinto. Esta técnica sirve para hacer imposible buscar un virus polimórfico conocido con técnicas tradicionales de búsqueda. Existen varios 'kits' para hacer virus polimórficos, por ejemplo el MtE, que permiten a un autor de virus crear un virus simple y agregarle la característica de ser polimórfico.
Ejemplo: Pogue, Tremor, Dedicated.
Infección lenta
Un virus lento es el que aprovecha cuando un usuario modifica un archivo (al copiarlo, crearlo, modificarlo, etcétera) para agregar el virus dentro de él. De esta forma un programa que chequea el comportamiento o la integridad de un archivo no va a detectarlo. Estos virus pueden ser muy difíciles de detectar si combinan esta técnica con el stealth. El usuario es el que genera las modificaciones, y el virus se limita a cambiar el buffer de memoria de la copia, por ejemplo.
Ejemplo: Darth Vader
Tunneling
Utilizando el tunneling un virus puede utilizar interrupciones del DOS en forma directa, pasando por encima de cualquier residente. Lo que hacen es buscar el handler original de la interrupción y evitar de esa forma que los residentes que hubieran noten algo extraño en el comportamiento del virus. Para encontrar este handler hay diversos métodos de seguimiento. Incluso existe un 'toolkit' de tunneling que permite agregarle tunneling a un virus simple sin ningún esfuerzo.
Ejemplo: K-Hate
Técnicas anti-antivirus
Algunos antivirus pueden ser desactivados desde un virus, o pueden ser engañados de diversas formas para evitar su correcto funcionamiento. El autor del virus o de la técnica investigó a fondo el antivirus y encontró sus puntos ciegos, y los usa para que no detecten a sus virus. Un blanco común para esta técnica es el MSAV, el antivirus que viene en el DOS. Como es uno de los más usados, es un blanco muy apetecible para un autor de virus. Además, es muy fácil de engañar. Las técnicas más comunes que se usan contra éste son las de desactivarlo mediante una sencilla interrupción del DOS, evitar que note el cambio de un archivo ejecutable, y desactivar el chequeo de la integridad de los archivos.
Ejemplo: PHX.
Multipartito
Es un virus que puede infectar tanto archivos .exe como .com, .sys y boot sectors o tablas de particiones. De esta forma, teniendo tantas vías de infección, multiplica sus posibilidades de éxito. Estos virus son complicados, y por lo general son muy difíciles de limpiar de un sistema infectado. En muy poco tiempo infectan todo el disco y para limpiarlos hay que tener muchísimo cuidado.
Ejemplo: Predator
Uso de la CMOS
Algunos virus modifican la CMOS de la máquina para evitar que booteen de un disco limpio en la diskettera. Lo que hacen es cargar el virus desde el disco rígido, y luego verificar si en la diskettera hay un diskette, y en ese caso siguen booteando de allí. De esa forma, por más protegido y limpio que esté el diskette de la diskettera, el virus seguirá estando en memoria.
Ejemplo: Exebug II
Virus en modo protegido
Algunos virus de boot sector pueden poner el procesador de una 386 en modo protegido, y luego, desde allí, tratar a la máquina como un 8086 virtual y cargar el DOS. De esta forma, el virus es absolutamente invisible en memoria, logran un stealth muy avanzado, indetectable por la mayoría de los antivirus. El problema que tienen estos virus es que si algun programa pretende usar el modo protegido despues que ellos, va a resultar en un error. Como es muy común que la gente que tiene 386 o superiores quiera usar alguno de esos programas, como ser el QEMM, por ejemplo, no creo que tengan mucho éxito.
Ejemplo: SS-386
Conclusiones
Todas estas técnicas, con la exepción de algunas que son mutuamente excluyentes, pueden combinarse en un solo virus. Un virus que utilice varias de estas técnicas puede ser un virus muy difícil de detectar, pero indudablemente será tambien difícil de escribir.
Fernando Bonsembiante es jefe de redacción de Virus Report y está estudiando los virus informáticos dese hace varios años. Tambien es miembro de la comisión directiva del Círculo Argentino de Ciencia Ficción, (CACyF) y participa como columnista de varias revistas sobre informática. Puede ser contactado por Fido en 4:901/303 o en Internet en ubik@ubik.to