11 marzo, 2013

Cuckoo Sandbox: Automated Malware Analysis

cuckoo_colorEn este post hablare de una area que he estado investigando y aprendiendo durante estos meses, el analisis de Malware.

Hoy escribire 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 Sandbox
Con 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 python 
 
sudo apt-get install python-sqlalchemy 
 
sudo pip install sqlalchemy 
 
sudo apt-get install python-dpkt python-jinja2 python-magic 
python-pymongo python-libvirt python-bottle python-pefile 
 
sudo 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.



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 PM

Copiaremos 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.

conf 

En 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/utils

Una 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:8080

Para actualizar las firmas usaremos el siguiente comando. 
python community.py -a

Con 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.

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

0 comentarios:

Publicar un comentario