Breve resumen sobre como hacer un buen antivirus.
Vamos a dar un sentido práctico al área y a intentar ayudar que para eso estamos algunos en ella. Esto va principalmente dirigido a los que tengan algún conocimiento de programación en cualquier lenguaje, lo que no implica que pueda interesar a quien no sepa programar. Cualquier duda, aclaración, corrección, es bienvenida. Si teneis algo que añadir o aportar os lo agradecería, y así damos el toque didáctico que este tipo de área necesita. Empezaremos con algo sencillo. Como hacer un antivirus para virus que infecten archivos COM, después seguiremos avanzando y seguiremos con los EXE, NEWEXE, etc.
Lo más sencillos de neutralizar son los virus appending. Estos añaden su código al final del virus y machacan los n primeros bytes con un salto hacia el código vírico guardando la información original en el cuerpo del virus. neutralizarlos es bien sencillo. Imaginemos que tenemos un salto a una posición del fichero al inicio del fichero puesto allí previamente por el virus. Este salto ocupará 3 bytes. ¿por qué tres? pues porque sólo hacen falta dos bytes para acceder a los 64K de que consta un fichero COM como máximo. El otro byte (el primero) es el identificador del salto, suele ser un 0E9h frecuentemente, o sea, un salto lejano. Pues bienpara saber donde empieza el virus, cogemos el segundo y tercer byte, (un word) y le sumamos tres. El resultado nos dará la posición inicial del virus en el fichero. Si el salto fuera de 5 bytes, le sumábamos 5 bytes. Lo importante es empezar a contar desde que termina la instrucción de salto.
Lo bueno de esto es que no hace falta ser un programador para acabar con el "bichito". Tenemos que crearnos un caza (kamikazes los llamo yo ;D) con tres bytes iniciales reconocibles. Por ejemplo, 90h, CDh, 20h. Esto es simple, cuando se ejecuta retorna al sistema sin más. Esto en sí ya valdría como cebo. Algunos virus no infectan ficheros tan pequeños, así que añadid un código repetitivo a continuación (13, por ejemplo) hasta que llegueis a un punto en que veais que el virus que está en memoria infecta a vuestro ficherito.
***********************IMPORTANTE******************************* Si no estais familiarizados con los virus no ejecuteis ningún virus en vuestro ordenador de trabajo. Hacedlo en alguno viejo que tengais y que no necesiteis para nada, así podreis formatear o hacer lo que os plazca en caso de que se os escape el virus de las manos. Yo, personalmente uso mi ordenador de trabajo, pero con la precaución de que si se me escapa el virus, NO EJECUTO NADA, y reseteo con un sistema limpio para limpiar el MBR o el BOOT si han sido infectados, COMMAND.COM, etc, y seguir con seguridad trabajando, pero para mayor seguridad os recomiendo lo primero, un ordenador dedicado. ****************************************************************
Una vez que infectamos el ficherito cebo. Apuntamos cuanto ha crecido. No os fiéis del DIR, hay virus que engañan al dir, restando su longitud para aparentar que no han infectado al fichero. Utilizad una utilidad para ver ficheros como el LIST, PCtools, etc. Siempre ejecutándolas desde disquette protegido, claro, para que no se os infecten estas utilidades.
Los tres primeros bytes originales han sido cambiados por un E9 0A 00, por ejemplo. El fichero originalmente tenía 13 bytes de longitud y ahora tiene 1000 bytes. cogemos los dos últimos bytes 000A (10 en decimal) y les sumamos 3. Nos dá 000D (13 en decimal) cogemos las PCtools y miramos el código que está a partir de la posición 13. Eso será el código del virus. Buscamos nuestros 3 bytes originales a partir de ahí 90 CD 20, y los encontramos en la posición 0AFh. (o sea en la posición 0AFh-0Dh del código vírico)
Ya sabemos donde guarda el virus los tres bytes originales. Machacamos los tres primeros bytes con 90 CD 20 y el virus ya está inutilizado. ESE fichero ya no infectará más. Si buscamos una cadena legible del virus y buscamos en todos los COM de nuestro disco duro esa cadena y machacamos los 3 primeros bytes con los 3 bytes que estén en la posición (0AF-inicio del virus) eliminaremos el virus de todos los ficheros COM que hayan sido previamente infectado por el virus. El código sigue pegado al fichero, pero el virus ya está inutilizado, no causará más daño.
Pero los programadores tenemos que ser más detallistas. Sabemos donde empieza el código del virus. Nos desplazamos (fseek) a esa posición del fichero y hacemos un TRUNCATE ahí. Con esto el código vírico ya es historia. Cerramos el fichero, y el fichero ha sido desinfectado limpiamente. Antes habremos machacado los tres primeros bytes nosotros sin PCTOOLS, cosa muy sencilla para cualquier programador. :) ¡que bonito es librarse de un virus! :))
Para los virus OVerwrite es casi imposible recuperar en la mayoría de los casos el fichero. Con los virus que se añaden al principio hay que hacer algo similar, pero esta vez no hay saltos al final del fichero. Lo que tenemos que hacer es averiguar el principio del fichero original y machacar el código vírico con el, haciendo que todo vuelva a como estaba antes... Cuando se acabe el código original, hacemos un truncate, cerramos el fichero y adios virus. :)
[Indice general] - [Sexo] - [linux] - [humor] - Chat entre usuarios - [miscelanea] - [Novedades] -
![]()