Un ejemplo del código de un virus sería este: |
|
|
install_check: cmp esi,"ANTI"
je reponde_cabron jmp crypt_leave21h reponde_cabron: pushf Interrupt 21h call dword ptr cs:[old21h] mov esi,"ETA!" call delete_file
; ANTI-VIR.DAT files
|
Ejemplo del Virus WorldCup98. Todo
gran evento
|
El virus puede estar en cualquier sitio. En ese disquete que nos deja un amigo, en el último fichero descargado de Internet... Dependiendo del tipo de virus el proceso de infección varia
sensiblemente.
|
Un caso menos probable es que el virus sea de "Tabla de partición". El mecanismo es muy parecido al de los de sector de arranque solo que el truco de arrancar con un disquete limpio no funciona con estos. En el peor de los casos nos encontraremos con un virus multipartita, que contaminará todo lo que pueda, ficheros, sector de arranque... |
Técnicas
Stealth
Son técnicas "furtivas" que utilizan para pasar desapercibidos al usuario y a los antivirus. Habitualmente los virus ocultan el tamaño real de los ficheros que han contaminado, de forma que si hacemos un DIR la información del tamaño de los archivos puede ser falsa. Los virus de tabla de partición guardan una copia de la FAT original en otro lugar del disco que marcan como sectores defectuosos para mostrarsela al usuario cuando haga por ejemplo un FDISK. Incluso hay virus que detectan la ejecución de determinados antivirus y descargan de la memoria partes de su propio código "sospechoso" para cargarse de nuevo cuando estos han finalizado su búsqueda. |
|
Tunneling
Es una técnica usada por programadores de virus y antivirus para
evitar todas las rutinas al servicio de una interrupción y tener
así un control directo sobre esta.
|
|
Antidebuggers
Un debugger es un programa que permite decompilar programas ejecutables y mostrar parte de su código en lenguaje original. Los virus usan técnicas para evitar ser desemsamblados y así impedir su análisis para la fabricación del antivirus correspondiente. |
|
Polimorfismo o automutación
Es una técnica que consiste en variar el código virico en cada infección ( más o menos lo que hace el virus del SIDA en los humanos con su capa protéica ). Esto obliga a los antivirus a usar técnicas heurísticas ya que como el virus cambia en cada infección es imposible localizarlo buscandolo por cadenas de código. Esto se consigue utilizando un algoritmo de encriptación que pone las cosas muy difíciles a los antivirus. No obstante no se puede codificar todo el código del virus, siempre debe quedar una parte sin mutar que toma el control y esa es la parte más vulnerable al antivirus. 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: 7 XOR 9 = 2
En este caso la clave es el número 9, pero utilizando una clave distinta en cada infección se obiene 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. |
|
TSR
Los programas residentes en memoria (TSR) permanecen alojados en esta
durante toda su ejecución.
|
|
|