Minotauro nº9:(TEXT_004.009):16/04/1996 << Back To Minotauro nº 9
MINOTAURO MAGAZINE #9: Métodos anti-virus WMA, digital anarchy Bueno, la idea de este artículo es alocada y hasta torpe. Pero lo que pretende es despertar un poco el intelecto asi que prosigamos... Como conocemos hay muchos metodos anti-virus, la mayoría como todos sabemos son basura, pero uno de los mejores es el chequeo de integridad. Primero, no necesita de cadenas de identificación, no esta sujeto a los errores a los que estas están; segundo, no es un sistema heurístico que en sí es facil de burlar, no es un programa que sigue un algoritmo para buscar codigo común a los virii o cosa parecida, es mucho mas sencillo, y mas efectivo. Consiste simplemente en a partir de un archivo generar un codigo, o checksum, que bien puede ser hecho mediante CRC o simplemente ir sumando todos los bytes que conforman al archivo. Con esto, si el archivo cambia, al ser infectado la suma no dará igual y estaremos alertas de la posible presencia de un virus. En casos como el tbav, donde ese checksum se guarda en un file, el sistema se torna engorroso, ya que hay un file con estos datos por cada directorio, lo que ocupa espacio, y ademas es fácilmente burlado por un virus, borrando simplemente ese file.., sin contar que cada nuevo file que entre a nuestra PC tendremos que validarlo sacando el checksum del mismo, o lo mismo cuando modifiquemos un file. Pero existe un sistema mejor que el guardar un file con el checksum, que es el de inmunizar el file. En qué consiste esto?, pues en que el checksum vaya adentro del mismo programa. Lo que se hace es agregar un modulo (como si fuera un virus) que autochequee el archivo antes de ejecutar el mismo, y si este cambió, o su checksum no es el correcto, informa del caso y no corre el programa. Igualmente, a ese momento, el virus ya se habrá instalado en memoria, pero aún así queda el problema de que nos delata, pero eso es fácilmente burlado simplemente no infectando los files con ese modulo agregado, que son fáciles de reconocer. También esto hace aumentar el tamaño del file ejecutable, y ademas esta sujeto a determinado tipos de ejecutables (x ejemplo no se le puede poner a un .exe con overlays). Podría seguir explicando falencuias, pero no tengo ganas ;), en definitiva, tampoco sirve como metodo anti-virus... Igualmente este artículo es alocado e incentivador del intelecto, como lo mencioné al principo de la nota, asi que vayamos a por ello.. La idea es hacer un programa que se autogenere al ejecutarse, y que no pueda ser infectado. En código se traduce a algo mas o menos así..: ;====== Cut Here ============================================================== .Model tiny .Code org 100h begin: nop ; espacio para poder regenerarse nop nop mov ah,9 ; el programa en sí (cualquier cosa) lea dx,msg int 21h call regen ; me regenero. mov ax,4c00h ; salimos al DOS int 21h Regen: mov di,100h ; escribimos nuestros 3 bytes originales a lea si,RealJump ; nstro. comienzo, donde deberían estar. movsw movsb mov ax,3d02h ; nos abrimos... lea dx,MySelf int 21h mov bx,ax mov ah,40h ; nos copiamos desde memoria, la cantidad de mov dx,100h ; bytes q' ocupamos, asi nos desacemos del virii. mov cx,MySize int 21h mov ah,3Eh ; nos cerramos... int 21h ret ; listo, volvemos.. RealJump db 90h,90h,90h ; 3 bytes originales msg db 'Hi!, Soy Incontagiable!$' mySelf db 'GENIO.COM',0 MySize equ $ - offset begin ; nstro. tamaño end begin ;====== Cut Here ============================================================== El problema de que el virus quedaría en memoria igual (esto suponiendo que todavía no lo esté) sigo estando, pero veamos otras falencias.. Si el virus infecta antes de ejecutar el file el sistema funcionaría de maravilla (en el caso hipotético de que TODOS los ejecutables del sistema tuvieran este modulo). El programa se correría, el virus lo infectaría, pero al ejecutarse el file contagiado, este restauraría sus 3 primeros bytes, y se copiaría a si mismo a disco (sin el virus) y quedaría intacto. Puede existir el problema de que el virus cambie mas que los 3 primeros bytes, pero esto se soluciona burdamente aumentando la cantidad de nops del file. Pero esto es fácilmete sorteado con honores :) por los virus que infectan despues de ejecutado el file, ya que el programa se regeneraría de la posible infección previa, pero al terminar ya estaría infectado nuevamente. Esto demuestra que estos sistemas en la práctica tampoco sirven, al igual que muchos otros, asi que resignense y reciban su próxima infección con agrado. -- WMÆ [DAN] -- P.D: se les estimuló o no el intelecto? ;), pueden seguir modificando el codigo que adjunto, o pensando mas sobre el tema, yo podría seguir ampliando y especificando, pero se haría muy tedioso, asi que es su trabajo.. :)