Título: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 30 Abril 2012, 05:37 am 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. Código
Poco tiene esto de Spreader, pero eso ya me lo guardo para mí jejeje. Saludos. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: $Edu$ en 30 Abril 2012, 16:40 pm 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 Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 30 Abril 2012, 16:55 pm No vas mal encaminado :D 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. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: $Edu$ en 30 Abril 2012, 17:19 pm 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 Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: Maurice_Lupin en 30 Abril 2012, 18:43 pm 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. ;D Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 30 Abril 2012, 20:31 pm 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. ;D 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! Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: $Edu$ en 30 Abril 2012, 20:46 pm 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?
Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 30 Abril 2012, 22:32 pm 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. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: Keyen Night en 30 Abril 2012, 22:49 pm 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 :xD 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 :xD 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... Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: $Edu$ en 1 Mayo 2012, 00:44 am 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. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 1 Mayo 2012, 01:27 am @Keyen Night:
Gracias por tu comentario, buenos consejos ;). No entendí una cosa -> para que nuestro código se ejecute debe estar situado antes del código del archivo infectado. Pero me encuentro con que el archivo infectado tiene el mismo icono que mi Spreader, mismas propiedades etc ¿Cómo hago para que el ejecutable infectado tenga el mismo icono y propiedades que la aplicación original? @$Edu$ Claro que no hará nada, me he limitado a pasaros el método de copiado, no lo que quiero ejecutar :D Simplemente añade tu código a la aplicación y llámalo como te salga en gana, ya sea en Load(), en otros eventos o en otros métodos. Con un MsgBox en Load() te basta para probarlo. Espero haberme explicado :) Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: Keyen Night en 1 Mayo 2012, 01:47 am Para modificar las propiedades de un ejecutable son necesarias las APIs BeginUpdateResource, UpdateResource y EndUpdateResource. Hay documentación en Google. Por esto te digo Windows va desde el PE hasta el final del ejecutable de allí lo que sobra Windows no lo carga. Los pasos que deberías seguir serían copiar el ejecutable malicioso bajo el nombre del original reemplazándolo, llenar con contenido aleatorio el ejecutable malicioso hasta obtener el tamaño del original, colocar el TimeSpan original y colocar las propiedades así como los iconos del original usando las APIs que Windows te proporciona.
Estás APIs son un poco ortodoxas pero son fáciles de usar. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 1 Mayo 2012, 02:01 am Creo entender lo que pides. Simplemente, reemplazar el archivo original por el nuestro infectado. Llenar el ejecutable con mi código, o secuencias aleatorias y cuando esté situado en el espacio del segundo código pues hacer las modificaciones que recomiendas.
Corrígeme si me equivoco, estaría bien dejarlo todo limpio. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: $Edu$ en 1 Mayo 2012, 02:35 am Ya pero lo mejor entonces seria como decia yo, que el codigo se ejecute en Ejecutar_Hostage() porque segun entendi cuando modifiques todo lo que te dijieron quedaria asi:
La primera vez la "victima" ejecutara el MALWARE.EXE solo, y se infectara al archivo ORIGINAL.EXE quedando asi: MALWARE.EXE ORIGINAL.EXE En todo uno pero con el mismo nombre (ORIGINAL.EXE) y mismo icono, mismas propiedades, etc. Entonces cuando se ejecuta este nuevo ORIGINAL.EXE lo que hara sera ejecutar primero nuestro MALWARE.EXE, entrando en su formload y ejecutando el codigo malicioso y luego verificando si existe la firma para saber si ya esta infectado o no para que entonces al saber que ya esta infectado ejecute el ORIGINAL.EXE y la victima no sospechara de nada. La cosa que la segunda vez cuando se ejecute el ORIGINAL.EXE hara lo de la copia y toma de buffer, etc pero ahora lo estaria haciendo con el exe que tiene MALWARE.EXE + ORIGINAL.EXE, entonces cada vez seria mas grande el archivo y hasta no creo que funcione. Porque usas estos valores: 17920 y 1252? Tal vez digo cualquier cosa, nunca he hecho esto en .net y en vb6 lo hacia mas facil creo. Algun dia me pondre a ver como funciona esto, pero siento que esta mal planteado Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: kub0x en 1 Mayo 2012, 02:47 am Ya pero lo mejor entonces seria como decia yo, que el codigo se ejecute en Ejecutar_Hostage() porque segun entendi cuando modifiques todo lo que te dijieron quedaria asi: La primera vez la "victima" ejecutara el MALWARE.EXE solo, y se infectara al archivo ORIGINAL.EXE quedando asi: MALWARE.EXE ORIGINAL.EXE En todo uno pero con el mismo nombre (ORIGINAL.EXE) y mismo icono, mismas propiedades, etc. Entonces cuando se ejecuta este nuevo ORIGINAL.EXE lo que hara sera ejecutar primero nuestro MALWARE.EXE, entrando en su formload y ejecutando el codigo malicioso y luego verificando si existe la firma para saber si ya esta infectado o no para que entonces al saber que ya esta infectado ejecute el ORIGINAL.EXE y la victima no sospechara de nada. La cosa que la segunda vez cuando se ejecute el ORIGINAL.EXE hara lo de la copia y toma de buffer, etc pero ahora lo estaria haciendo con el exe que tiene MALWARE.EXE + ORIGINAL.EXE, entonces cada vez seria mas grande el archivo y hasta no creo que funcione. Porque usas estos valores: 17920 y 1252? Tal vez digo cualquier cosa, nunca he hecho esto en .net y en vb6 lo hacia mas facil creo. Algun dia me pondre a ver como funciona esto, pero siento que esta mal planteado Te equivocas jejejejeje Cuando tenemos el archivo infectado ya guardado (Malware + Original) sigo comprobando que existe la firma, y como la firma está incluida da igual cuantas veces lo abras, el archivo seguira siendo el mismo, solo se ejecutará el archivo original. Conté con lo que dices desde el principio, fíjate bien en el código. El valor 17920 es el tamaño en bytes de la aplicacion actual, de esta forma obtengo los bytes del archivo original mediante el Buffer. Saludos. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: $Edu$ en 1 Mayo 2012, 03:01 am Mejor no me meto mas entonces, buen aporte y buen codigo xD
Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: Keyen Night en 1 Mayo 2012, 03:43 am Se me acaba de ocurrir una buena idea pero lleva trabajo :xD La primera vez que MALWARE.EXE se ejecuta crea una copia de MALWARE.EXE con las propiedades de ORIGINAL.EXE pero carga el contenido de ORIGINAL.EXE como una tabla de Bytes en los Resources del ejecutable (habría que comprimir estos datos para ahorra espacio y prevenir la detección), de modo que el ejecutable final sería MALWARE.EXE + PROPIEDADES DE ORIGINAL.EXE + EJECUTABLE ORIGINAL.EXE guardado en los recursos como Array de Bytes. De modo que al abrir MALWARE.EXE (resultante) se descomprima y escriba temporalmente en el disco ORIGINAL.EXE y se ejecute, antecediendo el código de MALWARE.EXE que podría proseguir con otro ejecutable más, de manera que cada vez que que MALWARE.EXE o MALWARE.EXE (resultante) sean ejecutados iniciara el archivo ORIGINAL.EXE normalmente y se infectarán cada vez más ejecutables hasta que todos estén infectados. Título: Re: [Spreader] Infectar ejecutables VB.NET Publicado por: Maurice_Lupin en 2 Mayo 2012, 17:14 pm 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. 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! Según lo entiendo, el formato PE es la estructura de una exe, y se puede cifrar ;D he encontrado ejemplos para exes creados con vb6, c++ pero vb.Net nada. Dicen que es casi lo mismo pero la estructura de un exe vb.net cambia algo ;( a lo mejor has leido este taller : http://foro.elhacker.net/analisis_y_diseno_de_malware/taller_asi_funcionan_los_crypters_encriptando_malware_a_mano-t262806.0.html |