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