Detección de código malicioso con YARA (II)

En el post anterior (Detección de código malicioso con YARA (I)) os explicamos la funcionalidad de YARA y cómo crear reglas básicas para detectar malware especifico. En este post vamos a usar YARA con Volatility sobre un volcado de memoria RAM para la detección de un Troyano bancario ‘Zeus’. Para los que no sepáis que es Volatily, es una herramienta de código abierto para el análisis de la memoria RAM. Es compatible con el análisis para Linux, Windows, Mac y sistemas Android.

Para el propósito de demostrar la funcionalidad de Volatility con Yara hemos obtenido un volcado de memoria que esta infectado por uno de los troyanos bancarios mas conocidos, ‘Zeus’.

Actualmente Zeus es muy «difícil» de detectar incluso con antivirus y otros softwares de seguridad, ya que usa algunas técnicas de ofuscación. Se considera que esta es la razón principal por la cual se ha convertido en una de las mayores botnets de Internet.

Lo primero que nos hará falta para empezar con nuestra aventura con Volatility será determinar a qué sistema operativo corresponde nuestro volcado, así que utilizaremos el plugin imageinfo para averiguarlo.

./vol.py imageinfo -f <ubicacion del volcado de memoria>

En la ilustración anterior, podemos ver que Volatility sugiere utilizar el perfil WinXPSP2x86.

En la siguiente imagen vemos la lista de los perfiles disponibles en Volatility. Observamos que todos los perfiles que aparecen corresponden a diferentes versiones de Windows. Los perfiles de Linux se incluirán en futuras actualizaciones. Por lo tanto, si estamos usando Linux o Mac, tendremos que crear nuestro propio perfil.

Una vez determinado el perfil para el Volatility utilizaremos el plugin de Yara. Para ello utilizaremos el siguiente comando:

python vol.py --profile=WinXPSP2x86 -f /home/brian/SAW/zeus.vmem yarascan --yara-file=/home/brian/SAW/zeus.yar

Su explicación es la siguiente:

  --profile=WinXPSP2x86 | Para especificar el perfil del sistema operativo.
  -f /home/brian/SAW/zeus.vmem | Ruta de nuestro volcado de memoria.
  yarascan | Ejecutamos el plugin de Yara
  --yara-file=/home/brian/SAW/zeus.yar | Conjunto de reglas que será utilizado por yarascan.

Ejecutando el comando anterior, Yara escaneará todos los procesos de la memoria en busca de patrones que coincidan con las reglas que hayamos especificado en el comando (--yara-file=?)

En la siguiente ilustración apreciamos uno de los procesos en los que Zeus ha inyectado código malicioso (explorer.exe – PID 1724) y la regla Yara que ha coincidido, en este caso (zbot).

Teniendo ya «algo» (Sarcasm) de certeza sobre que efectivamente el proceso está inyectado con código malicioso, utilizaremos otro maravilloso plugin (procdump) para extraer el ejecutable de la memoria. Para ello utilizaremos el siguiente comando:

python vol.py --profile=WinXPSP2x86 -f /home/brian/SAW/zeus.vmem procdump -D /home/brian/SAW/ -p 1724

Su explicación es la siguiente:

  procdump | Ejecutamos el plugin para extraer los procesos
  -D home/brian/SAW/ | Ubicacion donde queremos guardar lo que extraigamos
  -p 1724 | El identificador del proceso que queremos extraer (explorer.exe - Pid 1724)

Tras haber extraído nuestro ejecutable (explorer.exe – PID 1724) de la memoria a (/home/brian/SAW/ejecutable.1724.exe) lo subiremos a Virustotal, a ver cuántos ‘Antivirus’ lo detectan.

Bueno… 9 de 57 no esta mal :/ para haber sido detectado por primera vez en julio de 2007 segun la Wikipedia.

Ya hemos visto como usando la combinación de estas 2 herramientas, nos podría ser muy útil en situaciones de respuesta a incidentes y detección de malware más sofisticado.

Os dejo los links de descarga del volcado y de las reglas por si alguien quiere jugar un poco.