03 abril 2013

Anonimizando las conexiones de red en Cuckoo Sandbox

Cuckoo Sandbox es una aplicación de código abierto que permite montar un laboratorio de análisis malware de una manera sencilla y rápida, como ya se ha explicado anteriormente en este mismo blog (aquí y aquí) por el amigo @seifreed. Así mismo, el amigo Iñaki Rodríguez publicó también en este blog cómo detectar que se está ejecutando en un entorno virtual bajo la mirada indiscreta de Cuckoo Sandbox.

Voy a proseguir esta lista de artículos hablando de Cuckoo Sandbox, pero desde una perspectiva diferente. A la hora de analizar muestras de malware, es importante detectar y analizar toda actividad que realice la muestra con el entorno exterior, o sea, Internet. Por lo tanto, es necesario dejar que la muestra se conecte a los servidores de control o cualquier otro dominio malicioso, y haga la actividad para la que ha sido programada.

Así pues, es importante anonimizar las conexiones que se produzcan desde la máquina virtual donde se está ejecutando Cuckoo Sandbox, a fin de que las conexiones que se realizan no levanten sospechas en los servidores maliciosos y se pudiera inferir un patrón de comportamiento de análisis, lo que podría provocar que los cuckoos de los servidores que se están analizando levantaran rápido y velozmente el vuelo... O que nuestra IP fuera el nuevo objetivo de ataque... Imagino que a nadie le gustaría que Dimitri, Vladimir y el resto de sus amigotes le estuvieran esperando amablemente en el portal de su casa con interés de practicar el medievo.

Este artículo trata sobre cómo se ha de configurar una máquina virtual que está ejecutando Cuckoo Sandbox para anonimizar sus conexiones. La anonimización de las conexiones se va a realizar a través de Whonix, que proporciona una máquina virtual de VirtualBox ejecutando una Debian GNU/Linux que enruta todo el tráfico de Internet a través de la red Tor. Concretamente, el proyecto Whonix proporciona dos máquinas virtuales, una llamada Gateway y otra Workstation. La máquina Whonix-Gateway proporciona un gateway (de ahí el nombre :)) de salida a Internet a través de Tor, mientras que la máquina Whonix-Workstation es una máquina virtual con una red completamente aislada y conectada directamente a la máquina Whonix-Gateway. De este modo, se consigue que todo el tráfico de la Whonix-Workstation vaya por la red Tor (es decir, el tráfico está torizado -- pum!, un gatito menos).

En este caso, la máquina virtual con Cuckoo Sandbox es quien va a hacer de Whonix-Workstation, así pues será necesario configurarla de una cierta manera que se describe a continuación. La máquina virtual de Whonix-Gateway, que es quien va a hacer el grueso del trabajo, se puede dejar tal cual viene ya que es funcional out-of-the-box (ojo!, si se configura nuestra máquina virtual como se describe). Mientras se va configurando nuestra máquina virtual, se puede ir descargando la máquina Whonix-Gateway de aquí (versión 0.5.6 en el momento de escribir este artículo). El nombre de usuario por defecto es user, y la contraseña changeme.

Configuración de la máquina virtual ejecutando Cuckoo Sandbox

Básicamente, hay que cambiar dos aspectos de la máquina virtual donde se ejecuta Cuckoo Sandbox. Por un lado, es necesario asignarle una IP fija en el  rango de direcciones que tiene por defecto el servidor de Whonix-Gateway (en caso de necesidad, recordad que Whonix-Gateway es una máquina Debian/GNU Linux con lo que se puede tranquilamente configurar los servidores como venga en gana). Por otro lado, es necesario cambiar el tipo de adaptador de red.

El tipo de adaptador de red que se tiene que elegir es "Host-Only adapter", eligiendo como adaptador el instalado por VirtualBox en el sistema, en mi caso "vboxnet0". La Figura 1 muestra cómo tiene que quedar el menú de opciones de la máquina virtual.

Figura 1. Configuración del adaptador de red en la máquina virtual de Cuckoo Sandbox.


Para acabar la configuración de la máquina virtual, será necesario como se ha dicho modificar su IP a fin de que se encuentre en el rango del servidor de Whonix-Gateway. 


Figura 2. Configuración TCP/IP de la interfaz de red en la máquina virtual de Cuckoo Sandbox.

Como se muestra en la Figura 2, en este caso, a la máquina virtual se le ha asignado la IP 192.168.0.101, y como puerta de enlace y servidor DNS la IP 192.168.0.10 (IP que viene por defecto del servidor de Whonix-Gateway).

Configuración de la máquina virtual Whonix-Gateway

Una vez descargado el fichero que contiene la máquina virtual de Whonix-Gateway, es necesario añadir esta máquina la lista de máquinas virtuales que tengáis en VirtualBox. Para ello, se hace uso de la opción de "File" -> "Import Appliance" que trae VirtualBox (véase la Figura 3).


Figura 3. Importación de una máquina virtual en VirtualBox.

VirtualBox requiere un fichero OVF para la importación, mientras que el fichero descargado tiene extensión OVA. Aquí aparece el problema de los OVA y OVF (WTF!). Open Virtualization Format (OVF) es un estándar abierto que se usa para distribuir máquinas virtuales, u otro tipo de software a ejecutar en máquinas virtuales. Open Virtualization Archive (OVA) es la forma de distribuir un OVF (que contiene la especificación de las características de la máquina virtual en XML) junto con todos los ficheros auxiliares que sean necearios (como mínimo, un disco duro). Un fichero OVA es, entonces, como cualquier fichero tar en GNU/Linux, con lo que para extraer el fichero OVF la típica orden de extracción de tar será suficiente:

$ tar xvf Whonix-Gateway.ova

El fichero OVA descargado contiene dos ficheros:  Whonix-Gateway.ovf y Whonix-Gateway-disk1.vmdk. Ya se tiene, entonces, el fichero OVF que hace falta seleccionar a la hora de realizar la importación. Los parámetros que aparecen de la nueva máquina virtual no es necesario tocarlos, con lo que se puede finalizar la importación.

Por último, es necesario configurar los adaptadores de red de esta nueva máquina virtual. Whonix-Gateway viene configurada con dos interfaces de red. La primera de ellas es la interfaz que realiza la conexión real de salida a Internet, pasando por la máquina anfitriona (la que está ejecutando VirtualBox), con lo que es necesario que esté configurada como NAT (o el tipo de configuración que se use para dar salida a Internet desde las máquinas virtuales). La segunda de ellas es la interfaz que va a conectar la máquina virtual de Cuckoo Sandbox con el servidor Whonix-Gateway. Así pues, será necesario seguir la misma configuración que la descrita anteriormente en la Figura 1: se coloca la interfaz en modo "Host-Only adapter" y como interfaz "vboxnet0". Esta configuración se muestra en la Figura 4.



Figura 4. Configuración del segundo adaptador de red en la máquina virtual de Whonix-Gateway.


Arranque y prueba de conexión

Para finalizar, se va a testear el entorno de análisis montado sobre VirtualBox, donde hay una máquina virtual ejecutando Cuckoo Sandbox y otra máquina virtual ejecutando Whonix-Gateway, que se encarga de anonimizar todas las conexiones a Internet.

Antes de lanzar ambas máquinas en ejecución, es necesario realizar una pequeña modificación sobre la interfaz de red que se usa para comunicar ambas máquinas virtuales ("vboxnet0" en mi caso). Esta interfaz tiene que ponerse en modo (ese que tanto nos gusta) promiscuo, lo que permitirá el volcado del tráfico que transcurra por la misma. Así pues, antes de lanzar las máquinas virtuales, se han de ejecutar los siguientes comandos, que dejarán la interfaz de red "vboxnet0" en modo puta (o mujer de clítoris distraído).

$ sudo ifconfig vboxnet0 down 
$ sudo ifconfig vboxnet0 promisc up

Una vez ejecutados, se lanza en ejecución en primer lugar, lógicamente, la máquina virtual de Whonix-Gateway, y en segundo lugar, la máquina virtual donde se ejecuta Cuckoo Sandbox. Una vez esta última esté cargada, se puede probar a consultar la conectividad mediante la visita a cualquier página web. Para mostrar que el entorno que se ha configurado aquí funciona, en la Figura 5 se muestra la captura de ambas máquinas ejecutándose, y la vista a la página web http://www.whatismyip.org/ desde la máquina virtual de Cuckoo y la máquina anfitriona.


Figura 5. Captura de ejecución de máquinas virtuales ejecutándose, y visita a la web http://www.whatismyip.org/ desde máquina anfitriona y máquina virtual.


Nota del autor: la publicación de este post surgió debido a que la antigua página web donde se explicaba  (Installing Cuckoo Sandbox v4.2 on Ubuntu 12.04 LTS for Malware Analysis, http://www.xors.me/?p=5313) ya no se encuentra accesible (ni en la cache de Google, ni archivada en Archive).
------------------------------------------------------------
Artículo cortesía de Ricardo J. Rodríguez