Análisis de malware – Fases y ejemplos

análisis de malware

El análisis de malware es una tarea generalmente complicada y puede llegar a ser un gran quebradero de cabeza. Los creadores de estos pequeños softwares maliciosos intentan hacer las mil y una para que, incluso cuando se analicen, sean difíciles de saber qué hacen exactamente.

En esta entrada comentaremos la estructura que tiene un análisis de este tipo y veremos, a modo general, qué dificultades pueden implementar los creadores de malware para dificultar su inspección. Además, dejaré unos enlaces a diferentes análisis documentados sobre malware real.

Vídeo sobre este artículo

Estructura de un análisis

Por lo general hay 3 fases principales durante la inspección de un malware: el análisis estático, el dinámico y el informe. Al ser esta una entrada introductoria no veremos la parte técnica de cada una de ellas, pero sí veremos sus objetivos.

Análisis estático

Normalmente cuando un investigador recibe un binario para analizar no sabe si es peligroso o si su comportamiento es totalmente legítimo. El objetivo principal de esta primera parte es averiguar, sin ejecutar el malware, qué acciones y/o cambios puede llegar a realizar en el sistema además de rebuscar otras características que faciliten el trabajo en el análisis dinámico.

¿Cómo se puede extraer este tipo de información sin ejecutar nada? Por lo general se mira si está empaquetado (veremos más en la siguiente sección qué significa esto), si usa alguna función externa de otros programas, si por el contrario, es el mismo programa el que ofrece funciones a otros (por ejemplo un DLL), cuando se compiló o ver qué cadenas de caracteres tiene, ya que a veces se pueden encontrar URLs, claves de cifrado o incluso el nombre de las funciones de sistema que se usan.

Con toda esta información, el investigador puede hacerse una idea bastante general de lo que podría hacer el binario e incluso tener indicios de si efectivamente se trata de malware.

Análisis dinámico

En esta fase se trata de analizar el binario, ahora si, a través de su ejecución, normalmente, en un entorno controlado para prevenir su propagación.

Existen herramientas que monitorizan las acciones y cambios que se realizan en el sistema, como por ejemplo, si se ha creado/eliminado carpetas o registros. En el caso de Windows, por ejemplo, podemos encontrar, principalmente, el Process Monitor y el Process Explorer que se pueden descargar del Sysinternals Suite de Microsoft.

Luego existen las herramientas, como IDA y Radare2, que nos ayudaran a ver el lenguaje ensamblador del binario y establecer ‘breakpoints’ (puntos de parada) que pausaran su ejecución en ciertos puntos del código. De esta forma nos permitirá analizar instrucción por instrucción su funcionamiento.

El informe

Una vez se ha analizado en profundidad el comportamiento del binario, es hora de realizar un informe. Este debe listar todos los indicadores de compromiso, en inglés IOC (Indicator of Compromise). Esto es, básicamente, todo aquello que nos haga llegar a la conclusión de que se trata de malware. Además de este listado, se debe documentar paso a paso como encontrar estos indicadores. De esta forma cualquier persona puede analizar el binario y verificar los resultados. Finalmente, se especifica cómo detectarlo y como limpiar el sistema en caso de infección.

Dificultades durante el análisis

Existen varias técnicas para dificultar un análisis de malware:

  • Alteración de metadatos: como he comentado en el apartado anterior, en el análisis estático se puede extraer información como la fecha de compilación o creación del malware. Está información nos puede ayudar a determinar si, por ejemplo, se trata de una nueva versión de un malware en concreto. O incluso, saber desde cuando lleva rondando por internet. Estos datos son fácilmente modificables por lo que puede resultar difícil saber fechas exactas.
  • Técnicas antidebugging: los creadores de malware hacen uso de esta técnica para detectar si se está analizando el malware con alguna herramienta como IDA o Radare2 y, de esta forma, comportarse diferente. Por ejemplo, podría tener un comportamiento lícito y que el auditor creyera que no es malicioso.
  • Malware comprimido: esta es una de las técnicas más comunes en el desarrollo de malware. Básicamente consiste en comprimir todo el contenido del binario y al ser ejecutado descomprimirse en memoria. Esto hace que el análisis estático sea muy poco efectivo al no poderse extraer el nombre de las funciones y otros datos.
  • Creación de ruido/ofuscación: esta técnica se usa para meter operaciones o acciones que no hacen absolutamente nada. Algún ejemplo podría ser funciones que se llaman entre sí, bucles, sumas y restas sin ninguna finalidad, etc. Además, para dificultarlo todo un poco más, normalmente se oculta todo lo que son cadenas de caracteres como los nombres o URLs. El objetivo es hacer que el proceso de análisis sea más largo y dificultar la identificación de aquellas operaciones que sí están afectando al sistema.
malware comprimido
Ejemplo de malware comprimido/empaquetado.

Ejemplos de malware real

Como os he comentado antes, en el informe se documenta como encontrar los indicadores de compromiso. Por esta razón es fácil encontrar análisis de este tipo en internet. Aquí os dejo unos enlaces a diferentes análisis de malware:

Si indagáis un poco veréis que hay infinidad de informes que podéis consultar y de donde extraeréis mucho conocimiento.


Como apunte final, si te ha interesado este tema y quieres profundizar un poco, te recomiendo el libro «Practical Malware Analysis«. Es uno de los libros más completos que explica detalladamente el arte del análisis de malware. Además, dedica un capítulo entero al lenguaje ensamblador, a modo de curso exprés, por si no tienes ningún conocimiento.

Bonus: os dejo un último enlace a este registro de ataques dirigidos hecho por Kaspersky.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!

Deja una respuesta