En 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:
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).
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.
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.
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
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
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.
En el archivo cuckoo.conf solo modificaremos la interface que configuraste en el virtualbox.
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.
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 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
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/
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
Aquí reportes de Análisis ya hechos.
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
de Securitybydefault
Saludos
Twitter: IvanFlores