Inicio / Blog / Merovingio: Engañando al malware

Merovingio: Engañando al malware

Publicado el 06/11/2014, por Adrián Pulido (INCIBE)
Conferencia Navaja Negra

En la pasada edición de Navaja Negra celebrada en Albacete, los días 2, 3, y 4 de octubre tuve la oportunidad de presentar la herramienta que, desde INCIBE, venimos desarrollando desde hace meses. Para todos aquellos que no pudieron asistir al evento y quieren saber más, les presento el proyecto Merovingio. Un analizador de aplicaciones para determinar si una aplicación es legítima o por el contrario es maliciosa.

¿Por qué desarrollar Merovingio?

Después de analizar el mercado, y probar diferentes soluciones, llegamos a la conclusión que eran todas prácticamente iguales viéndonos obligados a una vinculación muy estricta, marcada por el desarrollo de la empresa adjudicataria que desarrollase el proyecto, que en muchas ocasiones imposibilitan su modificación en un futuro. Es decir, un entorno cerrado en el que probablemente no podríamos ampliar ni modificar su funcionalidad.

Habitualmente el funcionamiento entre las soluciones es similar: dependen de una máquina virtual (fabricante específico), de una valoración y análisis que usan unos criterios parecidos. Su configuración por defecto implica tener unos tiempos de análisis por muestra de unos 2/3 minutos obligatorios por cada muestra. Cuando suministras al entorno un posible virus, comienza el proceso de análisis y a pesar de finalizar la ejecución en el sistema a los pocos segundos por motivo de una falta de una librería (DLL), por detectar la aplicación maliciosa que se trata de un entorno virtualizado o por algún otro motivo, la solución continuará monitorizando la ejecución hasta pasados 2/3 minutos. Una vez terminado, para volver a su estado inicial deberá reiniciarse con el tiempo extra que esto supone. Lógicamente hace del proceso de análisis algo muy lento.

Las necesidades que teníamos por cubrir para Merovingio eran:

  • Analizar una muestra en el menor tiempo posible
  • Evitar la dependencia de firmas antivirus
  • Acelerar el proceso modificando las APIs de gestión de tiempo
  • No estar vinculados a ningún entorno de virtualización
  • Posibilidad de edición del código fuente
  • Control sobre el proceso de ejecución de la muestra
  • Posibilidad de análisis simultaneo de muestras en un mismo ordenador

Inicio del proyecto

Con todos estos requisitos nos pusimos manos a la obra y desempolvamos el proyecto de “PebHook” publicado en 2008 por “Dreg and [Shearer]”, es decir David Reguera y Juan Carlos Montes, siendo este último coautor de la herramienta Merovingio en todas sus fases de desarrollo. El proyecto original de forma resumida, permitía generar una librería (DLL) para sistemas Windows con la que se podía manipular en tiempo real el funcionamiento de las API de sistema, por consiguiente se dispondría de control en el flujo de la aplicación, permitiendo manipular en cualquier momento el comportamiento de la misma.

Si alguien desea ampliar información, se puede descargar el paper original de: http://phrack.org/issues/65/10.html.

Utilizando la librería generada del proyecto original "PebHook", disponemos de un acceso al flujo de programa. De esta forma, controlando las APIs podemos reconducir las funcionalidades originales y si el “malware” se copia en una nueva ubicación poder registrar toda la información (byte por byte) que se está copiando, obteniendo de esta forma una réplica controlada. Incluso pudiendo denegar la acción y aun así obtener la información.

Otro ejemplo del uso de "PebHook" podría ser el control de tiempo. Manipulando la espera que pueda tener la aplicación, algunas pueden esperar inertes hasta 1h antes de comenzar su acción maligna, gracias a la modificación de las APIs podemos acelerar o impedir la pausa, de esta forma en pocos segundos podremos observar su comportamiento sin tener que esperar.

Actualizando el proyecto "PebHook" a nuestras necesidades, y plataformas. Le incluimos capacidades de registro para guardar un fichero log la información de la aplicación en la que estuviese la librería, por tanto nuestra máquina para analizar malware avanzaba de forma considerable, pero había surgido un nuevo inconveniente: Necesitábamos poder inyectar la librería en todos los procesos que buscábamos analizar y los nuevos que estos pudiesen crear de forma dinámica. Además queríamos:

  • Que fuese simple de realizar
  • Que nos devolviese los resultados
  • Que permitiera hacer los múltiples análisis
  • Controlar si la muestra ya fue analizada

Merovingio "El Agente"

El Agente está programado con python 2.7, para Windows XP. Para la gestión de la librería y el proceso de inyectarla en todos los procesos encontramos la solución utilizando Sandboxie. De esta forma, además de inyectar la librería en cada proceso en ejecución obteníamos la ventaja de impedir la infección de la maquina huésped. Siendo un proceso automático, y por tanto simple de realizar.

La función del agente es recibir las muestras, procesarlas junto a sandboxie y monitorizar todas las instancias de sandboxie (permite ilimitadas). Nosotros actualmente estamos trabajando con 40 instancias simultáneas, al finalizar un análisis, inmediatamente y sin esperas innecesarias procede -el agente- a recopilar el log generado con la librería, remitirlo a una plataforma web, borrar completamente cualquier dato de la instancia de sandboxie, y continuar procesando muestras. Todo esto en un tiempo aproximado de 2 minutos por instancia.

Agente Merovingio
- Agente Merovingio -

DorianIA

El fichero generado por la librería, es un log con un registro paso a paso del flujo de aplicación, pero es un log en bruto, incomprensible a simple vista. Y para poder procesar los resultados obtenidos extrayendo la información útil creamos DorianIA. Un sistema de análisis de ficheros dotado de una capa de Inteligencia Artificial basado en un sistema mixto de redes neuronales y reglas, para el procesamiento de logs, y la detección de forma temprana de nuevas aplicaciones malware no detectadas aún.

A Dorian se le facilita un fichero de texto con todo el contenido registrado por la muestra. Para entender la necesidad de este proceso, decir que una aplicación de apenas 18kb de 9/10 líneas de código, generará un log de aproximadamente 8mb de texto en que vendrá registrado todo el comportamiento desde el inicio hasta el fin, guardando todas las llamadas que realice a las APIs y sus correspondientes resultados.

Una vez procesado, extrae la información más relevante del proceso, apenas unas pocas líneas, describiendo el comportamiento y aplicando el motor de IA da como resultado: "Malware", "Sospechoso", "Limpio".

Parte de un fichero de log sin procesar

- Parte de un fichero de log sin procesar -

El log en la plataforma web ya procesado

- El log en la plataforma web ya procesado -

Merovingio

Es el encargado de enviar las nuevas muestras recibidas a las diferentes partes del proceso, y poner en funcionamiento todas y cada una de las piezas hasta que, en última instancia, recibe la información de Dorian para mostrarla en pantalla y se da el proceso como finalizado.

Merovingio es una interfaz web, la cual otorga un aspecto amigable y sencillo de utilizar con la que poder subir todos los ficheros a analizar. De igual forma hemos dotado a la herramienta de nuevas capacidades al generar un API para la aplicación, permitiendo la integración en nuevos proyectos, desde la API permitimos controlar todo el entorno como si estuviésemos utilizando la web. De esta forma en nuevos proyectos se puede remitir una o varias muestras para obtener los resultados de manera automática.

Cuando se sube una muestra, el sistema/plataforma se encarga de verificar si ha sido analizada previamente, si es así nos devuelve el informe con los datos. En caso contrario será remitida al Agente para comenzar su análisis. Una vez finalizado, el Agente le remitirá el log y la plataforma se lo suministrará a Dorian el cual pasados unos minutos, devolverá los datos ya procesados y un dictamen del resultado.

Histórico de resultados

- Histórico de resultados. Con indicación de calificación: "Malware, limpio o sospechoso" -

Recorrido de la plataforma

- Recorrido de la plataforma -

¿Qué números estamos consiguiendo?

Actualmente con un solo ordenador con capacidades sencillas, es decir, no un servidor dedicado, sino un equipo con un procesador de 4Ghz y 4 Gb de RAM, nos permite analizar en el peor de los casos:

  • 720 muestras por cada instancia de sandboxie
  • 14.400 muestras utilizando tan sólo 20 instancias de forma simultánea

En definitiva, con merovingio hemos logrado obtener una herramienta de análisis dinámico de muestras, con un alto rendimiento diario. Hemos logrado cumplir los objetivos al dotarle de automatización, facilidad de uso, e integración. No quedando sujetos a plataformas ni entornos de virtualización ya que dispone de múltiple compatibilidad.

La presentación de Merovingio hecha en la 4ª Edición de Navaja Negra está disponible aquí.

Etiquetas: