26/3/12

¿Como es un joiner? ¿Para que es? y más...


Otra revisión hacia el mundo del malware. Ampliando la información.

¿Qué es un joiner?
Es un programa encargado de albergar uno o varios ficheros en su interior. Es decir, tenemos por ejemplo 3 ficheros. Un joiner, se encargaría de juntarlos en 1 solo fichero.

Lo más habitual es que no efectúe modificación sobre el fichero final. Si adjuntamos una foto y un bichito (virus). Cuando termine de trabajar el joiner, prácticamente siempre el antivirus detectará el fichero que se ha copiado.

Suele utilizar sistemas de cifrado, ya sea algo complejo o simple, para ocultar la información que le hemos añadido. Como siempre esto depende de quien lo este programando.

Imagen de un joiner subido a indetectables.net

Inclusive es bueno recordar, que no tiene por que tener un fin maligno, como muestra el propio Windows, de serie, trae su propio joiner. Link

¿Para que nos sirve?
Suele ser muy utilizado en el mundo del malware. De forma que podríamos juntar una imagen, un archivo de sonido,y un ejecutable. Irremediablemente el archivo final, tendrá que ser un ejecutable*, pero aparentemente estará limpio.

No obstante, no siempre se utiliza para el mal. Otro ejemplo rápido, sería un instalador de aplicaciones, contiene todas las carpetas, y librerías que utilizará el programa final. Y el resultado es sólo un fichero.

¿Hay tipos?
-Un instalador de software.
-Un ocultador de malware.
-Una juntador de peliculas o videos.
-Winrar tambien es un joiner. Convierte varios ficheros en 1.
-Una aplicación que permite juntar trozos de canciones y hacerla 1 solo fichero mp3.
-En resumen. Cualquier aplicación capaz de convertir varios ficheros en 1.

¿Como funciona?
Existen varias formas de hacerlo funcionar pondré 2 a modo ejemplo, si bien pueden ser muchas más, ya dependerá del programador en cuestión:
-Guardando todos los ficheros en un recurso del programa, los almacena ahí y luego una secuencia designa en que lugar copiarlos/ejecutarlos/etc.

-Guardando los datos en el EOF (Zona que se encuentra al final de un ejecutable, y que no afecta al funcionamiento del mismo). Posteriormente una función se encargaría de detectar la cantidad de ficheros adjuntados, prepararlos y copiarlos.
¿Puedes ser más técnico?
Sí. Puedo. ¿Siguiente pregunta?
Una imagen vale más que 1000 palabras. Explicaré el segundo método, debido a que es más simple de dibujar.

El final de un fichero, se puede modificar y almacenar, o esconder ahí información. Es el sistema que se suele utilizar, y el programa iniciar o joiner no se verá afectado.
Al igual que vimos en un crypter, un joiner tambien suele disponer de un stub. Este es el que se encarga de detectar la información adicional. No explicaré como realizarlo debido a que hay mucha información.

El joiner pregunta que ficheros debe adjuntar, el orden en que se copiaran / ejecutaran, etc. Una vez determinado. Edita el stub, y le añade al final todos y cada uno de los ficheros. Con una marca para separarlos ej: *FiN*. O sin marca, todo dependerá del programador. La marca se podría aprovechar para indicar que tiene que hacer el joiner. *Ejecutar*copiar*borrar*etc Podría ser una marca perfectamente, que también daría información sobre que acción realizará el joiner.

El stub... Un poco más a fondo.
Un joiner no destinado a aplicaciones

Revisará que información se le ha añadido. Y que debe realizar con esos ficheros. Realmente aquí, el fin lo pone la imaginación. Ya que es a gusto del consumidor las acciones que podrá realizar. Por poner algunos ejemplos:
-Ejecutar alguno de los ficheros anexos (ejecución estándar, no sobre memoria).
-Copiar los ficheros. Para sobrescribir algún fichero de sistema por ej.
-Podría detectar el sistema operativo, el antivirus, y en función de eso, ejecutar un fichero u otro.
-Se le podría añadir una función de descifrar, para poderle adjuntar los ficheros cifrados, y complicar un poquito el análisis.

*También podría ser un zip, rar,mp3,avi, etc, pero no quería extenderme demasiado. Y me enfoco a joiners del tipo software.

NOTA IMPORTANTE: Toda esta información es para aquellos que os dedicáis al análisis, detección, programación, por hobby o por trabajo. Nunca deberá ser utilizada para cometer maldades... Sobra recordar que ir infectando máquinas por ahí es un delito y tiene penas de prisión.