viernes, 19 de abril de 2013

Testing de seguridad - Ejecutables y librerías en windows.

Buenos días.

Muchas veces nos encontramos entornos donde nos facilitan el código o por lo menos el software ya instalado, pero en caso de tener los ejecutables y librerías que podríamos hacer para complementar nuestras pruebas?.

Existen muchas pruebas que podríamos llevar a cabo pero hoy nos centraremos en pensar que el .exe puede llegar a tener un comportamiento de malware lo cual podría ocasionar conflictos con el AV que se tenga instalado en la maquina.


Cuckoo Sandbox: Automated Malware Analysis

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.
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 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.
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 -  / 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.
Un analisis de Zeus con Cuckoo
embedded by Embedded Video

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

FUENTES:
http://www.flu-project.com/cuckoo-sandbox-automated-malware-analysis-por-ifsecurity.html

No hay comentarios:

Publicar un comentario