8 ene 2011

Ocultando un ejecutable creando nuestro “Joiner” Casero

Hola, en este tutorial veremos como hacer para ocultar de una manera muy simple y rápida un ejecutable dentro de otro. Haciendo nuestro tipo “joiner casero” con un poco de programación muy simple.

En este caso usare el lenguaje python, pero la cosa es simplemente demostrar la teoría. Este tutorial en ningún momento pretende ser una herramienta final, sino simplemente una demostración.

Datos Técnicos:

<<Objetivo>>

Ocultar el ejecutable de flu.exe y una imagen dentro de otro ejecutable, y que del nuevo ejecutable solo veamos la imagen.

<<Herramientas>>

Algo muy importante que quiero definir antes es que mi manera de resolver el problema es diferente a como otros lo quieran realizar. En el foro se hablaba de que con la utilidad de Winrar podríamos hacer un autoextraíble que contenga flu.exe y por ejemplo la imagen, pero esta técnica no es del todo fiable, puesto que si lo abrimos con Winrar veremos el contenido de este. (Y claro ya no hay factor Sorpresa).

Mi manera de resolver este problema, es que nuestro programa que realizaremos, contenga dentro de si, flu.exe y la imagen.png

¿Cómo haremos eso?

Fácil, lo que haremos será conseguir los bytes de cada archivo. Podemos obtenerlos como queramos, algunos editores hexadecimales nos dan la opción de exportar los bytes. Yo en lo particular usare getbytes.py un script en python que creé hace un tiempo para mis métodos esteganográficos (Si a alguien le gusta el script solicitármelo por correo, lo podréis encontrar al final del post).

Bytes de flu.exe

Bytes de flu-banner-arrow.pngUna vez hayamos obtenido los bytes de nuestra manera preferida, pasaremos a la parte de la programación en python.
  • Importo "os" que nos permite ejecutar comandos de sistemas Unix y Windows
  • Pasos para Crear flu.exe
  • Pasos para Crear la Imagen que se vera
Con esto ya habremos acabado nuestro simple programa. Solo necesitaremos python para ejecutarlo

Yo en lo personal me di a la tarea de pasarlo a un ejecutable para esta demostración. Hago uso de py2exe y cree mi configuración setup.py para crear flu.exe(A mi script lo llamo flu.exe) y le pongo un icono de flu.

NOTA: Darse cuenta de que en el script el ejecutable que creo es el Original del proyecto flu, pero lo llamo fluOriginal.exe por que mi script Final al convertirlo a ejecutable lo llamare flu.exe y si encuentra el mismo nombre me dará error.

Ahora al ejecutar flu.exe lo que pasara es:

  • En el directorio donde se ejecute se creara fluOriginal.exe (el ejecutable original del proyecto flu)
  • Inmediatamente de la creación de fluOriginal.exe se moverá a System32 por lo que el usuario nunca vera este ejecutable
  • En el directorio donde se ejecute flu.exe también creara la imagen flu-banner-arrow.png y se iniciara, por lo que será lo único que se vera que sucede

En conclusión con lo que hicimos el usuario al dar click vera nada más una imagen que se crea y se abre, y sin darse cuenta metimos el troyano flu en su System32

Aquí no programamos que fluOriginal.exe se inicie, pero eso ya lo haría ustedes con “os.system(“start C:\Windows\System32\fluOriginal.exe”)” y lo que se les ocurra.¿Nos quedo bonito no? :DAntes de terminar este tutorial, me expandiré un poco mas, con el tema de Ventajas y desventajas de hacer esto, con relación a usar un Joiner ya existente como “Advanced File Joiner”Haciendo unas pruebas vi que tan detectable seria el uso de este joiner (Advanced File Joiner) para los Antivirus.

Para ello el ejecutable de flu que esta limpio (Por que ningún Antivirus lo detecta como amenaza aun, puesto que no esta la firma en las Bases de Datos de los Diferentes Antivirus),  lo adjunto con una Simple imagen haciendo uso de “Advanced Flie Joiner” y lo analizo con www.Virustotal.com y este es el resultado:

El solo uso de este Joiner nos levantaría muchas sospechas con un Antivirus, puesto que el joiner es muy conocido y usado, y la mayoría de Antivirus detecta los ejecutables generados por este joiner. Y claro si se uso este Joiner seguramente es para “ocultar” malware.

Ahora nuestro ejecutable que generamos a partir de lo que programamos y que contiene el fluOriginal.exe y la imagen, lo subo a VirusTotal (Adjunto imagen de Hashes para comprobar integridad de que es el ejecutable que genere. Todos los archivos estarán disponibles para que los analicen)

Como vemos, nuestro archivo esta limpio, y eso es por que Nosotros no solo Adjuntamos archivos. Sino que dentro los creamos, y por eso jamás podrán ser detectados, por que aun no están creados y no hay firmas.

Ventajas de programar nuestro propio método de “joiner”

  • Indetectable
  • Limpio
  • Podemos programar que se ejecuten comandos del sistema a nuestro antojo y cuantos queramos.
  • Todo en uno

Desventajas (Claro también hay)

  • El peso aumenta. Mientras Winrar comprime los datos, nosotros al usar por ejemplo py2exe e incluir todas las dependencias en un solo ejecutable, nos elevo el peso del script hasta 4.88MB (ES LA DESVENTAJA MAS GRANDE y única)
  • Hay que trabajar y aprender (Sarcasmo)

Bueno, esta demostración de como yo hago mis métodos simplemente pretende ser eso. Una demostración, esto puede llevarse a cualquier lenguaje de programación (Como C) y seguro al generar el ejecutable quedara el peso mucho mejor.

DESCARGAR ARCHIVOS ADJUNTOS

Héctor Cuevas Cruz (hecky), Twitter

hecky@neobits.org

hecky

19 comentarios:

  1. Fantástico artículo... En su día estuve tanteando con Cactus pero obtuve pocos resultados. Tengo que probar este método... ;-)

    ResponderEliminar
  2. Gracias @Brixton Cat =). Hecky es un crack.Por cierto @Hecky, Microsoft Security Essentials se come con patatas cualquier imagen joineada con Advanced File Joiner. Comprobado :PSaludos!

    ResponderEliminar
  3. ☺ Felipower ☺8 de enero de 2011, 18:07

    ¡Hola!¡Muy buen post!Una idea, en este caso lo suyo sería que la victima tuviera desactivado en Windows la opción para mostrar las extensiones de los archivos, pues se ve que es un ".exe" y que la imagen que vamos a utilizar como cebo fuera la que se utiliza también como icono del ejecutable, al estilo de un thumbnail en vez de utilizar a la bacteria verde, que canta un poco, jeje.Un saludo!

    ResponderEliminar
  4. Muchas gracias Brixton Cat, como mencionaba, el eterno problema de TODOS los programas de cualquier area, es su utilización masiva, que despues de un tiempo los hace muy detectables, predescibles e ineficaces por ende...Lo mejor es hacerlo nosotros.

    ResponderEliminar
  5. Jeje muchas gracias por su inmerecido comentario Juanan...Lo de MSE no lo eh probado, vere que tal...pero la verdad no espero mucho de ellos jeje. Pero para un usuario casero, que se conforma con lo que viene de fabrica, sera muy factible que se le cole algo asi.

    ResponderEliminar
  6. Claro Felipower, lo del Exe no deja de estar presente.Es muy facil percatarse sin la extension, viendolo con un editor hexadecimal...Veriamos los primeros bytes (4D 5A 90 00 03 00 00 00) o mejor dicho el famoso MZ...A fin de cuentas esto al final es lo que hace el joiner...al usar el joiner tambien nos devuelve un .exe Pero tienes razon...ya al final elegir la imagen es cuestion de gustos...Si yo fuera usuario novato, me llamaria mas la atencion dar click a una imagen de unas "chavas" que la imagen de "flu" xD...Tambien aqui entra nuestra parte de ingenieria social :)

    ResponderEliminar
  7. Excelente trabajo y contribuccion Hecky!!Felicidades

    ResponderEliminar
  8. Muchas Gracias por sus palabras Dino, un gusto Saludarle :)

    ResponderEliminar
  9. Lo del tamaño también se puede paliar. En vez de los bytes del fluOriginal, usas el de un autoextraible que lo contenga y una vez creado lo ejecutas. Así tienes solo ventajas. :)Buen trabajo!

    ResponderEliminar
  10. Hola Juan buena idea, pero realmente el peso es exagerado no por el peso de mi script sino por que al compilar, py2exe incluye todas las dependencias, dll's etc...Y eso hace extramadamente pesado el programa :)

    ResponderEliminar
  11. Buen aporte... Como siempre heckySaludos...

    ResponderEliminar
  12. Se le agradece L0Rum4, que bien que le gustara Saludos ;)

    ResponderEliminar
  13. Hey Hecky excelente aporte, me acuerdo de ti en dragonjar ... hermano me podrias enviar el script "getbytes.py" o me podrias indicar bien eso de obtener los bytes, pues no me quedo muy claro.Se agradece tremendo aporte ;) Saludos !!!

    ResponderEliminar
  14. Hola T41es, claro tambien lo recuerdo a usted :)Lo de conseguir los bytes se puede hacer de varias maneras, la mayoria de editoreshexadecimales, tienen la opcion de exportar los bytes de diferentes maneras (Array, Value,etc...)Como sea le mando mi script a mig....@hot...Saludos ;)

    ResponderEliminar
  15. Disculpa que te moleste por aca... es que te mande un mail, pero no se si te llego, era para pedirte haber si me podrias mandar el script getbytes.py.Muy buena la info.Saludos.

    ResponderEliminar
  16. Te eh ganado en responderte ayer en la noche jeje perdona la demora....Y como te comentaba, intenta correr el script en python 2.X no en 3.XSaludos ;)

    ResponderEliminar
  17. (hecky) saludos compañero puedes hacer un video tuto con lo que explicas en este post es muy interesante conoser los detalles gracias

    ResponderEliminar
  18. Hola colombiagnerNo se que detalle quieres saber, me parece trate cada punto, esque ya borre esos archivos y el tiempo me limita ahora para un video, no te prometo nada pero lo intentare.Saludos ;)

    ResponderEliminar
  19. http://www.flu-project.com/descarga-flu No trabaja el link :(

    ResponderEliminar