DisidentS Knowledge Hacking
Home > Artículos > Nuevo troyano en JAVA visitandonos por mail :) (TR/Dldr.jar.41472)

Nuevo troyano en JAVA visitandonos por mail :) (TR/Dldr.jar.41472)

Hola a todos!, luego de varios meses sin actualizar nuestra web, volvemos!

Tengo mucho material acumulado, solo falta el tiempo de escribirlo, hoy me encontré con un virus en la PC de mi mamá, el cual venía de un contacto seguro…. el mail estaba en portugués (muy común en sudamérica recibir noticias de este tipo desde Brazil :D ) así que lo miré un poco y dije, no puedo seguir acumulando información para postear luego, lo hago ahora! y acá estamos…

Este es el mail que puede que reciban:

Igual eu te falei aquele dia e voce nao quis acreditar. Amigo a gente conta no dedo!
Veja só o que seu amiguinho andou aprontando nessas fotos.

DSC02421.jpg (568,3 KB)
DSC02521.jpg (603,4 KB)

Obviamente esas “imágenes” con links a los ejecutables correspondientes… que son el mismo, aunque parezca que son de distinto tamaño, son para despistar :)

Los ejecutables apuntan a esta dirección: http://ads.sapo.pt/event.ng/Type=click&FlightID=90951&AdID=169189&TargetID=6167&ASeg=&AMod=&Segments=8,69,154,526,527,688,1343,2130,2884,3325,3747,4552,4663,4778,4932,4963,4971,5065,5081,5088,5117,5152,5165,5169,5200,5295,5301,5508,5549,5557&Targets=246,5389,704,6167&Values=31,43,51,60,72,84,90,91,100,110,150,193,204,209,376,978,1036,1097,1100,1399,1436,1459,1478,1488,1489,1733,1754,1819,1863,1922,1941,2020,2174,2230,2863,2869,2956,2993,3322,3533,3576&RawValues=&Redirect=http://www.givinbeauty.com/UserFiles/File/photos.php?0.19325211365355321

Esta es una redirección la cual nos lleva a: http://www.givinbeauty.com/UserFiles/File/photos.php?0.19325211365355321

Ahí es donde se encuentra el ejecutable.

Si indagamos más en esa web, parece una web “normal”:

Veremos más abajo que hay una opción login… si la hackearon, fué por ahí, subieron el ejecutable y lo reenvían por mail para que se infecten, como veremos utilizaron otra web para redireccionar en este caso  http://ads.sapo.pt/event.ng/.

Bien, bajamos nuestro virus y lo observamos con Peid y encontrará que está comprimido con UPX (UPX es un compresor no un packer como muchos andan diciendo por ahí, eso es un error de concepto).

Así que bajamos el UPX y con la opción -d (descomprimir) tendremos nuestros virus descomprimidos.

Si abrimos el EXE veremos un string como este:

.rdata:00414BA8 0000000B C WINRAR.SFX                                                     
.rdata:00414BCC 00000039 C d:\\Projects\\WinRAR\\SFX\\build\\sfxrar32\\Release\\sfxrar.pdb

Para los que aún no se dan cuenta que significan estas dos referencias, éstas significan que son ejecutables autoextraíbles de WinRAR. ¿Necesitamos descomprimirlos con Olly?

No no, si tenemos el WinRAR instalado, hacemos botón derecho y lo descomprimimos en una carpeta.

Nos dejará un archivo llamado: loader.jar

Como verán esto es una aplicación JAVA! :) hemos sacado algunas capas de la cebolla…

Podemos hacer uso de WinRAR una vez más para descomprimir el JAR de JAVA, ya que estos son comprimidos con ZIP. Así que hacemos botón derecho y extraer a una carpeta.

Nos devolverá estas carpetas:

Si miramos las carpetas con letras, nos encontraremos con el trabajo de nuestro creador del virus, el virus en sí. :)

Ahora vamos a lo mejor, decompilar los .CLASS. Para los que no saben los .CLASS son archivos de JAVA compilados, son como el famoso código objeto (.OBJ).

Estos archivos son interpretados por el classloader de JAVA y son ejecutados como una aplicación más.

Creo que el creador de este virus lo hizo en JAVA para pasar mejor desapercibido ante los antivirus.

Tenemos muchos decompilers de archivos CLASS de JAVA uno de los más conocidos es el DJ JAVA Decompiler, lo pueden bajar de acá.

Una vez que lo instalemos y usemos el keygen, podremos abrir nuestro .CLASS que está en la carpeta a, por ejemplo.

Veremos los imports, algunos interesantes y otros no tanto:

import b.d;
import by.squareroot.injector.lib.MyKernel32;
import by.squareroot.injector.struct.Context;
import by.squareroot.injector.struct.MemoryBasicInformation;
import by.squareroot.injector.struct.ProcessInformation;
import by.squareroot.injector.struct.StartupInfoA;
import by.squareroot.injector.struct.TotalProcInfo;
import by.squareroot.injector.struct.WoW64Context;
import by.squareroot.injector.struct.pe.MZHeader;
import by.squareroot.injector.struct.pe.PEInfo;
import by.squareroot.injector.struct.pe.PE_ExtHeader;
import by.squareroot.injector.struct.pe.PE_Header;
import by.squareroot.injector.struct.pe.SectionHeader;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.ByteBuffer;
import java.util.Properties;

Los primeros son los más interesantes obviamente, veremos que son clases hechas con ayuda de un amigo de nuestro creador denominado squareroot. :)

Si buscamos un poco el nombre de la clase, el nick del creador y la palabra class, nos encontramos con un sitio ruso que ofrecía bajar: build___00002469.jar que aparentemente contenía este mismo contenido.

No debemos rendirnos ahí (hay que aprender a buscar como nos enseño el gran +Fravia – QEPD) buscaremos un poco más encontraremos una referencia en este stitio que parece ser de un reverser como nosotros: http://www.inreverse.net/?p=1551

Alguien nos puede iluminar un poco con que estamos tratando…. si leemos un poco ese artículo para luego continuar con este podemos concluir dos cosas:

  1. El creador de este virus usó la misma técnica y recursos que el virus JAZeus para infectar a sus víctimas.
  2. Es una variante de JAZeus o la versión original.

Yo en cierta manera opto por la primer opción ya que el dropper (ejecutable que descomprime y deja el virus en un lado para ejecutarlo luego) es diferente a la versión JAZeus que analizó nuestro amigo Donato Ferrante ( ratsoul ) de www.inreverse.net.

La estructura de nuestra variante es muy similar a la de JAZeus, podemos verlo en la imagen del artículo de ratsoul que pongo acá para que no busquen allí:

Veremos que la clase Launcher no se encuentra en nuestro paquete de injector… y tampoco el paquete crypt. Pero si encontraremos lo mismo en el paquete data.

En JAZeus aparentemente los dos .EXE están cifrados, en nuestra variante, solo app.exe está cifrado y dummy.exe no, lo podemos ver simplemente abriendo el EXE y viendo su cabecera.

Si debuggeamos dummy.exe veremos que se trata de otro dropper hecho en C++ que buscara desencriptar app.exe, buscando el metodo de cifrado en el archivo method y luego usando ese parámetro para descifrarlo y ejecutarlo.

Aparentemente el método de desempaquetado de este virus es el mismo a como lo hace JAZeus, con la variante que no tiene el launcher.

Por lo que veo el launcher esta unificado en a.class ya que ejecuta app.exe luego de desencriptarlo desde ahí dentro. El paquete injector se encarga del armado y la injección en memoria del ejecutable para la ejecución del virus real.

En el método a de la clase a, veremos que se pone al inicio para arrancar cuando arranca nuestro SO:

s = a(“data/app.exe“);

b.a a1 = a();

try

{

if((obj = a()) != null)

{

String s1;

if((s1 = ((Properties) (obj)).getProperty(“hklm“)) != null)

{

String s2 = a();

Advapi32Util.registrySetStringValue(WinReg.HKEY_LOCAL_MACHINE, “SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\“, s1, s2);

}

String s3;

if((s3 = ((Properties) (obj)).getProperty(“hklu“)) != null)

{

obj = a();

Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, “Software\\Microsoft\\Windows\\CurrentVersion\\Run\\“, s3, ((String) (obj)));

}

}

}

Como podemos ver encontraremos otros trozos de código interesantes, para encontrar nuestro virus deberemos desencriptar app.exe.

Al no tener el launcher se hace un poco dificultoso, ya que no podemos parchearlo para desencriptar app.exe, así que les dejo la tarea de seguir destripándolo a ustedes.

Lo más importante es que encontramos como funciona de que se trata, para frenarlo al menos deberemos sacar esa llave de registro.

Si llegara a ser un JAZeus tendremos algunos problemas más de seguro, igualmente podremos encontrar el método de cifrado 3DES como string en los demás .CLASS, además de una posible clave, frase muy utilizada como demo de post en blogs, etc.

Espero que les haya gustado y volveremos por más en poco tiempo.

Saludos!

convert this post to pdf.
  1. No comments yet.
  1. No trackbacks yet.

Spam Protection by WP-SpamFree