Mastiff, automatizando el análisis de malware

Hoy en día con la cantidad de malware que sale, es imposible poder analizar todas las muestras. Solamente analizando las muestras que desinteresadamente investigadores colocan para que te las puedas bajar de forma pública es complicado estar al día. Si a eso le sumas, el echo de tener sensores por ahí montados para analizar mas malware se te hace un trabajo bastante tedioso. Dependiendo de a la finalidad  a la que te dediques el ámbito con el que se abordará esta ardua tarea será una y otra.

Mastiff es una herramienta que nos puede ayudar en el análisis masivo de muestras.

Antes de empezar a jugar con él os voy a pedir que lo uséis en la distribución Remnux, puesto que ya viene instalado.

Una vez que tengáis la distribución bajada deberemos primero de actualizar el script de Mastiff.

Para ello hacemos:

<pre>wget http://remnux.org/mastiff-upgrade.zip
unzip mastiff-upgrade.zip
cd mastiff-upgrade
sudo ./upgrade_mastiff.sh
cd ..
rm -rf mastiff-upgrade mastiff-upgrade.zip</pre>

El output que deberíamos de recibir por consola es:


[email protected]:~/mastiff-upgrade# ./upgrade_mastiff.sh

Removing old version of MASTIFF

Done

Installing pydeep

pydeep install successful.
Done

Installing MASTIFF 0.6.0

Testing installation.
Checking Python imports in /root/mastiff-upgrade/mastiff-0.6.0 and below.
Done checking imports.

Checking for MASTIFF functionality.

Testing EXE: Success.
Testing Office: Success.
Testing PDF: Success.
Testing ZIP: Success.

Done checking MASTIFF functionality.
Installing.
mastiff install successful.
Copying plugins.
Copying configuration file to /usr/local/etc
Done

Complete. You can run mastiff using:
mas.py -c /usr/local/etc/mastiff.conf [YOUR FILE]

Sencillo ¿verdad?

Ahora lo que haremos será echar un vistazo al fichero de configuración:

VT

Colocamos la API key y ya podemos usar Mastiff

Ejecutamos Mastiff y vamos a ver el output que genera:


[email protected]:/home/remnux# mas.py -c /usr/local/etc/mastiff.conf /media/sf_Downloads/malware/

[2013-11-18 12:57:30,824] [WARNING] [Mastiff] : You are running MASTIFF as ROOT! This may be DANGEROUS!

[2013-11-18 12:57:30,891] [INFO] [Mastiff] : Adding directory /media/sf_Downloads/malware/ to queue.

[2013-11-18 12:57:30,909] [INFO] [Mastiff.analyze] : Starting analysis on /media/sf_Downloads/malware/0bde4b8e18ea2ee8ad0166fac82d6eaf

[2013-11-18 12:57:30,967] [INFO] [Mastiff.Init_File] : Analyzing /media/sf_Downloads/malware/0bde4b8e18ea2ee8ad0166fac82d6eaf.

[2013-11-18 12:57:30,967] [INFO] [Mastiff.Init_File] : Log Directory: /var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf

[2013-11-18 12:57:31,079] [INFO] [Mastiff.DB.Insert] : Adding ['ZIP', 'Generic']

[2013-11-18 12:57:31,081] [INFO] [Mastiff.Analysis] : File categories are ['ZIP', 'Generic'].

[2013-11-18 12:57:31,082] [INFO] [Mastiff.Plugins.ZipExtract] : Starting execution.

[2013-11-18 12:57:31,085] [INFO] [Mastiff.Plugins.ZipExtract] : Password "infected" will be used for this zip.

[2013-11-18 12:57:31,086] [INFO] [Mastiff.Plugins.ZipExtract] : Extracting efax_9057733019_pdf.scr.

[2013-11-18 12:57:31,093] [INFO] [Mastiff.Plugins.ZipExtract] : Adding efax_9057733019_pdf.scr to queue.

[2013-11-18 12:57:31,095] [INFO] [Mastiff.Plugins.ZipInfo] : Starting execution.

[2013-11-18 12:57:31,099] [INFO] [Mastiff.Plugins.Fuzzy Hashing] : Starting execution.

[2013-11-18 12:57:31,099] [INFO] [Mastiff.Plugins.Fuzzy Hashing] : Generating fuzzy hash.

[2013-11-18 12:57:31,115] [INFO] [Mastiff.Plugins.Fuzzy Hashing.compare] : Comparing fuzzy hashes.

[2013-11-18 12:57:31,116] [INFO] [Mastiff.Plugins.yara] : Starting execution.

[2013-11-18 12:57:31,137] [INFO] [Mastiff.Plugins.File Information] : Starting execution.

[2013-11-18 12:57:31,147] [INFO] [Mastiff.Plugins.Embedded Strings Plugin] : Starting execution.

[2013-11-18 12:57:31,184] [INFO] [Mastiff.Plugins.VirusTotal] : Starting execution.

Mastiff guarda los resultados en un SQLite, lo pudimos ver en el archivo de configuración. Si quisiéramos hacer querys, os muestro un ejemplo de, en que tablas guarda la información Mastiff:

mastiff

Ahora veremos que LOG se ha generado, para ello deberemos de ir a /var/log/mastiff/. Dentro, habrá tantas carpetas como análisis hayamos echo.

Vamos a ver un ejemplo entrando en una carpeta de análisis:


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# ls -la

total 276

drwxr-xr-x  3 root   root     4096 2013-11-18 12:57 <b>.</b>

drwxr-xr-x 16 remnux remnux   4096 2013-11-18 12:57 <b>..</b>

-rw-r--r--  1 root   root   212663 2013-11-18 12:57 0bde4b8e18ea2ee8ad0166fac82d6eaf.VIR

-rw-r--r--  1 root   root      157 2013-11-18 12:57 fuzzy.txt

-rw-r--r--  1 root   root     1666 2013-11-18 12:57 mastiff.log

-rw-r--r--  1 root   root     1218 2013-11-18 12:57 mastiff-run.config

-rw-r--r--  1 root   root    34219 2013-11-18 12:57 strings.txt

-rw-r--r--  1 root   root     3253 2013-11-18 12:57 virustotal.txt

drwxr-xr-x  2 root   root     4096 2013-11-18 12:57 <b>zip_contents</b>

-rw-r--r--  1 root   root      915 2013-11-18 12:57 zipinfo.txt

Este ejemplo es perfecto, he echo submit a Mastiff de un fichero ZIP que contenía malware.

Vamos a ver que ficheros de log se han generado:

Del listado de antes, vamos a ver archivo por archivo


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# file 0bde4b8e18ea2ee8ad0166fac82d6eaf.VIR

0bde4b8e18ea2ee8ad0166fac82d6eaf.VIR: Zip archive data, at least v2.0 to extract

Esto es una copia del archivo que hemos analizado, si queremos analizar y ahorrar espacio, podemos hacerlo. Es una opción que se puede cambiar en el fichero de configuración.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# cat fuzzy.txt

Fuzzy Hash: 3072:zBrvMVHHfj9u0bgiYebsvqyssWyIqHlR/szVz91h7lBFVvbSH6W5ZGfb+BC:zp0nLE0ciYesyyZNU/1DfVTSXZiSC

&nbsp;

No other fuzzy hashes were related to this file.

Si en la base de datos tenemos un fichero parecido, lo podremos saber gracias al fichero fuzzy.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# cat mastiff.log

[2013-11-18 12:57:30,967] [INFO] [Mastiff.Init_File] : Analyzing /media/sf_Downloads/malware/0bde4b8e18ea2ee8ad0166fac82d6eaf.

[2013-11-18 12:57:30,967] [INFO] [Mastiff.Init_File] : Log Directory: /var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf

[2013-11-18 12:57:31,079] [INFO] [Mastiff.DB.Insert] : Adding ['ZIP', 'Generic']

[2013-11-18 12:57:31,081] [INFO] [Mastiff.Analysis] : File categories are ['ZIP', 'Generic'].

[2013-11-18 12:57:31,082] [INFO] [Mastiff.Plugins.ZipExtract] : Starting execution.

[2013-11-18 12:57:31,085] [INFO] [Mastiff.Plugins.ZipExtract] : Password "infected" will be used for this zip.

[2013-11-18 12:57:31,086] [INFO] [Mastiff.Plugins.ZipExtract] : Extracting efax_9057733019_pdf.scr.

[2013-11-18 12:57:31,093] [INFO] [Mastiff.Plugins.ZipExtract] : Adding efax_9057733019_pdf.scr to queue.

[2013-11-18 12:57:31,095] [INFO] [Mastiff.Plugins.ZipInfo] : Starting execution.

[2013-11-18 12:57:31,099] [INFO] [Mastiff.Plugins.Fuzzy Hashing] : Starting execution.

[2013-11-18 12:57:31,099] [INFO] [Mastiff.Plugins.Fuzzy Hashing] : Generating fuzzy hash.

[2013-11-18 12:57:31,115] [INFO] [Mastiff.Plugins.Fuzzy Hashing.compare] : Comparing fuzzy hashes.

[2013-11-18 12:57:31,116] [INFO] [Mastiff.Plugins.yara] : Starting execution.

[2013-11-18 12:57:31,137] [INFO] [Mastiff.Plugins.File Information] : Starting execution.

[2013-11-18 12:57:31,147] [INFO] [Mastiff.Plugins.Embedded Strings Plugin] : Starting execution.

[2013-11-18 12:57:31,184] [INFO] [Mastiff.Plugins.VirusTotal] : Starting execution.

[2013-11-18 12:57:32,111] [INFO] [Mastiff.Analysis] : Finished analysis for /media/sf_Downloads/malware/0bde4b8e18ea2ee8ad0166fac82d6eaf.

Aquí podremos ver el output del LOG que se ha generado con el análisis de Mastiff.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# more mastiff-run.config

[Dir]

log_dir = /var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf

plugin_dir = /usr/local/lib/python2.7/dist-packages/mastiff-0.6.0-py2.7.egg/plugins, ./plugins, /etc/mastiff

base_dir = /var/log/mastiff

&nbsp;

[Misc]

verbose = off

copy = on

hashes = ('0bde4b8e18ea2ee8ad0166fac82d6eaf', '9ce19224615b8abf282e586b0949a91f3e9a7d6d', '2fd9994af61c487a552f2c432e28bf00c4205b1686754d00b398a18d1ef3cbcd')

&nbsp;

[Sqlite]

db_file = mastiff.db

&nbsp;

[File ID]

trid = /usr/local/bin/trid

trid_db = /usr/local/lib/triddefs.trd

Tendremos un fichero de configuración en el cual podremos ver las opciones que se han usado para el análisis.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# more strings.txt

b A kQCH

10 A qa'>

1e A efax_9057733019_pdf.scr

44 A 'e,S

57 A DgFS

f2 A -]=+[

Mastiff extraerá los strings del fichero que hemos mandado a analizar, como vemos uno de los strings interesantes que podemos ver es “1e A efax_9057733019_pdf.scr”.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# cat virustotal.txt

VirusTotal Results for 0bde4b8e18ea2ee8ad0166fac82d6eaf

Last scan date: 2013-10-28 19:55:32

Total positive results: 35/46

Link to virustotal.com:

https://www.virustotal.com/file/2fd9994af61c487a552f2c432e28bf00c4205b1686754d00b398a18d1ef3cbcd/analysis/1382990132/

&nbsp;

AV                        Version         Results

Bkav                      1.3.0.4261      W32.Clod483.Trojan.1c13

CAT-QuickHeal             12.00           TrojanDroper.Agent.gen

McAfee                    5.600.0.1067    PWS-Zbot.dx

Malwarebytes              1.75.0.1        Spyware.Agent

K7AntiVirus               9.173.10014     Trojan

K7GW                      12.7.0.14       Trojan

TheHacker                 6.8.0.5.355     Trojan/Spy.Zbot.aan

Symantec                  20131.1.5.61    Trojan.Zbot

Norman                    7.02.06         Troj_Generic.QMOLC

TrendMicro-HouseCall      9.700.0.1001    TROJ_GEN.F47V1017

Avast                     8.0.1489.320    Win32:Dropper-gen [Drp]

Kaspersky                 9.0.0.837       HEUR:Trojan.Win32.Generic

BitDefender               7.2.5028.0      Trojan.Injector.ARN

Agnitum                   5.5.1.3         TrojanSpy.Zbot!1TH8DOzGHTM

ViRobot                   2011.4.7.4223   Trojan.Win32.Zbot.377856

Emsisoft                  3.0.0.589       Trojan.Injector.ARN (B)

Comodo                    17172           UnclassifiedMalware

DrWeb                                     Trojan.MulDrop5.1202

VIPRE                     22808           Trojan.Win32.Generic!BT

AntiVir                   7.11.109.226    TR/Crypt.Xpack.27913

TrendMicro                9.740.0.1012    TSPY_ZBOT.FUU

McAfee-GW-Edition         2013            PWS-Zbot.dx

Sophos                    4.94.0          Troj/Bredo-AJR

Antiy-AVL                 2.0.3.7         Trojan/Win32.Generic

Kingsoft                  2013.4.9.267    VIRUS_UNKNOWN

Microsoft                 1.10003         PWS:Win32/Zbot

AhnLab-V3                 2013.10.29.00   Trojan/Win32.Zbot

GData                     22              Trojan.Injector.ARN

Commtouch                 5.4.1.7         W32/Trojan.WJRB-7538

Panda                     10.0.3.5        Trj/CI.A

ESET-NOD32                8976            Win32/Spy.Zbot.AAN

Ikarus                    T3.1.5.4.0      Trojan.Inject

Fortinet                  5.1.147.0       W32/DrodZp.A

AVG                       13.0.0.3169     Inject.CIUP

Baidu-International       3.5.1.41473     Trojan.Win32.Generic.aSsH

Como hemos incluído la API de Virus Total, podremos ver que resultados arroja si es que el archivo ha sido subido con anterioridad.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# cat zipinfo.txt

File Name: 0bde4b8e18ea2ee8ad0166fac82d6eaf

This file has no comment.

&nbsp;

Modification Date   File Size  File Name

--------------------------------------------------------------------------------

10/17/2013 13:30:36 377856     efax_9057733019_pdf.scr

&nbsp;

File Name:              efax_9057733019_pdf.scr

Last modification date: 10/17/2013 13:30:36

Compression Type:       8 - Deflated

File comment:           None

Creation system:        MS-DOS, OS/2, FAT/VFAT/FAT32 (0)

PKZIP creation version: 20

Version to extract:     20

Flag bits:              0x0

- Normal (-en) compression option was used.

Volume number:          0

Internal attributes:    0x0

External attributes:    0x20

CRC32:                  1634835784

Header offset:          0

Compressed size:        212519

Uncompress size:        377856

This file entry contains extra data. Not supported yet.

En mi caso, como era un fichero ZIP tendremos un archivo de LOG con el resultado de la extracción.


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# ls zip_contents/

efax_9057733019_pdf.scr

En este caso, como había un fichero scr dentro del ZIP nos lo guarda en un directorio.

Si queremos ver el tipo de fichero:


[email protected]:/var/log/mastiff/0bde4b8e18ea2ee8ad0166fac82d6eaf# file zip_contents/efax_9057733019_pdf.scr

zip_contents/efax_9057733019_pdf.scr: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

Como veis Mastiff, es una herramienta muy completa que nos puede dar una visión global de lo que estamos analizando, naturalmente lo podríamos combinar con otras herramientas de descarga de Malware, por ejemplo.


Si te ha gustado el post, compartelo y ayudanos a crecer.

Unete a nuestra Fanpage Siguenos en Twitter

Autor: Seifreed

Formado en un equipo de lucha contra el fraude. He trabajado implementando la protección y prevención del fraude en varios clientes dentro del sector bancario nacional e internacioal. Mi trabajo consiste en encontrar soluciones a los problemas actuales y futuros de las entidades financieras respecto al código malicioso y el fraude. Especialidades como el análisis de malware, análisis forense, ingeniería inversa o tareas de hacking ético, forman parte de mis tareas diarias. Soy ponente ien eventos nacionales (No cON Name, Owasp, Navaja Negra) e internacionales (DraonJAR CON - Colombia). Soy profesor asociado en La Salle enseñando el curso MPWAR (Master in High Performance Web Programming) y el máster de ciberseguridad de La Salle (MCS. Master in Cybersecurity) Miembro de asociaciones y grupos de research como la HoneyNet Project, Owasp, SySsec etc.. También soy el organizador de las conferencias Hack&Beers en Barcelona

Compartir este Artículo

Siguenos!

O Puedes Subscribete

ANTES DE

SALIRTE ...

NO TE

ARREPENTIRÁS

!Gracias¡

NO OLVIDES NUESTRAS REDES SOCIALES