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, Mastiff automatizando el análisis de malware nos ayudara en el análisis masivo de muestras.
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 automatizando el análisis de malware en Remnux
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:
root@remnux:~/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?
Visualizar fichero de configuración
Ahora lo que haremos será echar un vistazo al fichero de configuración:
Colocamos la API key y ya podemos usar Mastiff
Ejecutamos Mastiff y vamos a ver el output que genera:
root@remnux:/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.
Donde se guarda Mastiff los resultados
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:
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:
root@remnux:/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
root@remnux:/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.
root@remnux:/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.
root@remnux:/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.
root@remnux:/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.
root@remnux:/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".
root@remnux:/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.
root@remnux:/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.
root@remnux:/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:
root@remnux:/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
Mastiff automatizando el análisis de malware, 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.
También este post te puede interesar - http://dragonjar.org/creando-un-laboratorio-de-pentesting-gns3.xhtml