Cuckoo Sandbox: Automated Malware Analysis (por ifsecurity)

Buenas a todos, desde hace varios meses venimos hablando en Flu Project del sistema Cuckoo, una utilidad fantástica para el análisis de malware que Marc nos ha explicado en detalle. Hoy queríamos dejaros con un artículo que ha publicado nuestro amigo Ivan Flores en el blog de ifsecurity en el que además de detallar el proceso de configuración de Cuckoo, lo utiliza para analizar nuestro troyano educativo, Flu. Disfrutadlo!:

Cuckoo Sandbox: Automated Malware Analysis

En este post hablaré de un área que he estado investigando y aprendiendo durante estos meses, el analisis de Malware.

Hoy escribiré sobre Cuckoo que es un sistema abierto automatizado para el analisis de Malware, se utiliza para ejecutar, analizar y recopilar informacion sobre el malware, mientras es ejecutado en un entorno aislado, en pocas palabras en una Sandbox.

Cuckoo es una alternativa a otros proyectos como dionaea,  Sandboxie, o Buster SandboxCon Cuckoo se puede utilizar para analizar:

  • Genéricos ejecutables de Windows
  • Archivos DLL
  • Los documentos PDF
  • Documentos de Microsoft Office
  • URL
  • Scripts PHP
  • Casi todo lo demás

Generando los siguientes resultados:

  • Los rastros de win32 llamadas API realizadas por todos los procesos generados por el malware.
  • Los archivos que se crean, eliminan y descargar el malware durante su ejecución.
  • Los volcados de memoria de los procesos de malware.
  • Red de seguimiento de tráfico en formato PCAP.
  • Capturas de pantalla del escritorio de Windows tomada durante la ejecución del malware.
  • Volcados de memoria completos de las máquinas.

Arquitectura

Cuckoo consiste en un software de gestión central que se encarga de la ejecución y análisis de muestras.

Cada análisis se pone en marcha en una máquina virtual nueva y aislada. La Infraestructura de Cuckoo está compuesto por una máquina host (software de gestión) y un número de máquinas de clientes (máquinas virtuales para el análisis).

architecture-main

La configuracion de cuckoo recomendada es usarlo en un sistema operativo Linux con un windows xp virtualizado, pero tambien funciona desde un Mac Os con windows xp o 7 virtualizado.

Ya que vimos un poco de lo que es Cuckoo, pasaremos a la instalación.

Como habíamos visto en la bugtraq2 habían agregado esta herramienta, así que partiré de la configuración de cuckoo desde el sistema operativo de Bugtraq2.

En caso de que quieras hacer la instalación de Cuckoo con otro sistema operativo linux les dejo aquí una guia.

Para el uso de Cuckoo necesitamos instalar las siguientes librerias en nuestra maquina anfitrion

 sudo apt-get install pythonsudo apt-get install python-sqlalchemy sudo pip install sqlalchemysudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefilesudo apt-get install tcpdump

Y necesitamos darle permisos de root al Tcpdump, lo hacemos con el siguiente comando

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Ahora para los que hagamos la configuración de cuckoo en la bugtraq2  donde cuckoo ya viene instalado y solo hay que configurar, solo tenemos que hacer algo antes de empezar.

En este caso como sistema para el virtualizado usaremos virtualbox, pero también con vmware podemos usar cuckoo.Si usamos el virtualbox desde la bugtraq2 nos encontraremos con un pequeño fallo al querer correr cualquier sistema.

Kernel driver not installed (rc=-1908)

En este caso quise recompilar el kernel pero no me funciono así que tuve que volver a reinstalar el virtualbox que venia por defecto en la bugtraq2.

Podemos hacerlo fácilmente, lo puedes eliminar desde el Centro de Software o desde el Gestor de Paquetes Synaptics.

Una vez eliminado podemos descargar la version mas actual desde la pagina de Virtualbox

Y la instalación la podemos hacer con el siguiente comando:

sudo sh ./nombre del archivo.run

Con esto tenemos ya listo nuestro virtualbox para configurar cuckoo

Primeramente instalaremos nuestro sistema operativo invitado. En mi caso use el Windows XP SP1  ya que es el que mas vulnerabilidades tiene para que el malware a prueba pueda explotar.

Captura de pantalla - 12312012 - 02_40_37 PM

Crearemos una maquina virtual con el nombre de “cuckoo1″ en caso de que vallamos agregando mas usar un orden(cuckoo2,cuckoo3,cukoo4), si instalamos un windows xp le pondremos 256 mb de ram, si es un windows 7 le ponemos 5120mb.

Captura de pantalla - 01032013 - 07_15_32 PM

Una vez ya instalado el windows, pasaremos a configurar la maquina invitado, empezamos instalando el “Guest Additions”Para instalar lo pueden hacer dando click en Dispositivos y luego en “Instalar Guest Addtions” en virtualbox

Configuramos nuestra maquina virtualbox el area de Red y la pondremos en modo Bridge (puente) y recuerden el nombre de la interfaz que usaran(vboxnet, eth0,etc)

Instalaremos Python en nuestra maquina virtual http://www.python.org/getit/

También podemos instalar aplicaciones de preferencia versiones viejas que sean vulnerables, las podemos descargar desde Oldapps

Configuramos una ip estática para nuestra maquina virtual, desactivamos el firewall y las actualizaciones automáticas y reiniciamos la computadora.

Ahora tenemos que agregar el Agente de Cuckoo a nuestra maquina virtual, el agente es un archivo en python que hara la conexion de nuestra maquina invitada a la anfitriona,El archivo esta localizado en /bugtraq/tools/laboratories/sandbox/cuckoo/agent/agent.py

Captura de pantalla - 01032013 - 08_43_29 PMCopiaremos el agent.py a nuestra maquina virtual en el directorio que tu quieras.

Despues de esto abrimos el archivo, y tomaremos una imagen instantanea, esto hara que cada que iniciemos la maquina virtual inice en ese estado en cual tomamos la imagen.  Para hacer la instantanea lo podemos hacer dando clicl en Maquina, luego en Tomar Instantanea.

Ahora configuraremos los archivos .conf  de cuckoo.

confEn el archivo cuckoo.conf solo modificaremos la interface que configuraste en el virtualbox.

virtualboxconf

En el archivo Virtualbox.conf configuraremos el nombre de la maquina que especificamos en el virtualbox.Y especificaremos la IP que le habíamos asignado a la maquina virtual.

El archivo reporting.conf ese lo pueden modificar a su gusto, y no olviden guardar los cambios.

Ahora ya tenemos configurado nuestra maquina virtual invitada y nuestra maquina anfitriona.

Para iniciar cuckoo podemos hacerlo con el comando

python cuckoo.py

O hacerlo desde el acceso directo que viene en la bugtraq2

cuckoo

Cuckoo quedara a la espera de el envió de algún archivo para su análisis.

Ahora para enviar un archivo para analizarlo podremos hacerlo de diferentes formas.

Podemos hacerlo usando el submit.py

usage: submit.py [-h] [--url] [--package PACKAGE] [--custom CUSTOM]                 [--timeout TIMEOUT] [--options OPTIONS] [--priority PRIORITY]                 [--machine MACHINE] [--platform PLATFORM] [--memory]                 [--enforce-timeout]                 target

Ejemplo : enviar un binario local:

$. / Utils / submit.py / ruta / hacia / binario

Ejemplo : enviar una URL:

$. / Utils / submit.py - http://www.example.com url

Ejemplo : enviar un binario local y especificar una prioridad más alta:

$. / Utils / submit.py - Prioridad 5 / ruta / hacia / binario

Ejemplo : enviar un binario local y especificar un tiempo de espera de análisis personalizado de 60 segundos:

$. / Utils / submit.py - timeout 60 / ruta / hacia / binario

Ejemplo : enviar un binario local y especifique un paquete de análisis personalizado:

$. / Utils / submit.py - <nombre paquete de / a / paquete> / ruta binario

Ejemplo : enviar un binario local y especificar un paquete de análisis personalizado y algunas opciones (en este caso un argumento de línea de comandos para el malware):

$ / Utils / submit.py -. Exe paquete - Opciones argumentos = - dosomething / ruta / al / Binary.exe

Ejemplo : enviar un binario local que se ejecuta en la máquina virtual de cuckoo1 :

$. / Utils / submit.py - cuckoo1 máquina / ruta / hacia / binario

Ejemplo : enviar un binario local que se ejecuta en un equipo Windows:

$. / Utils / submit.py - Windows / plataforma binarios camino / al /

Ejemplo : enviar un binario local y tomar un volcado de memoria completa de la máquina de análisis:

$ / Utils / submit.py -. Memoria / ruta / hacia / binario

Ejemplo : enviar un binario local y forzar el análisis a ser ejecutado por el tiempo muerto (sin tener en cuenta el mecanismo interno que Cuckoo utiliza para decidir cuándo terminar el análisis):

$. / Utils / submit.py - aplicar-timeout / ruta / hacia / binario
O hacerlo desde la interfaz WEB 

Captura de pantalla - 01032013 - 08_34_54 PM

Para usar la interfaz web hay que correr el archivo web.py localizado en la ruta: Bugtraq/tools/laboratories/sandbox/cuckoo/utilsUna vez ya estando en ese directorio solo usamos el comando python web.py  y correra el servicio, para ingresar usaremos la direccion 0.0.0.0:8080Para actualizar las firmas usaremos el siguiente comando. python community.py -aCon esto añadiremos las firmas creadas por la comunidad de Cuckoo, tambien puedes crear tus propias firmas  aqui les dejo el link de como hacerlo.Tambien podemos añadir al reporte la deteccion con virustotal para agregar esto debemos modificar el archivo virustotal.py que se encuentra dentro de /modules/processing/

virustotal

Para conseguir el API de virustotal hay que registrarnos y en el area de tu perfil te dan tu codigo de la API.Para agregarlo a cuckoo solo pegas el codigo de la API dentro de las comillas de VIRUSTOTAL_KEY

Captura de pantalla - 01032013 - 08_35_02 PM

Aquí reportes de Análisis ya hechos.

Captura de pantalla - 01032013 - 08_35_10 PM

Un Analisis al troyano de FLU.

Un analisis de Zeus con Cuckoo

[vimeo 34230399 nolink]

Cuckoo against a Flash Player Exploit. 

Bueno aqui termino, les dejo este gran proyecto para el analisis de malware, aunque tiene sus Pros tambien tiene sus contras. Si no chequen este articulo de Iñaki Rodriguez

de Securitybydefault

Saludos

Twitter: IvanFlores