Análisis de malware 1

Introducción

El propósito del análisis de malware es, normalmente, proveer la información necesaria para responder a una intrusión a la red. El objetivo sera determinar con exactitud que ha sucedido y asegurar que se hayan localizado todos los equipos y archivos infectados.

Cuando se han identificado cuales archivos requieren análisis se desarrollan firmas, basadas en host o basadas en red, para detectar infecciones de malware.

Las firmas basadas en host son utilizadas para detectar código malicioso en el equipo de la victima. Indican archivos creados o modificados por el malware, o cambios específicos que se hacen en el registro. A diferencia de las firmas de los antivirus, los indicadores de malware se enfocan en lo que el malware realiza en el sistema, no en las características del malware por si mismo, lo cual lo hace más efectivo en detectar malware.

Firmas basadas en red se utilizan para detectar código malicioso a través del monitoreo del trafico de red. Esta firmas pueden ser creadas sin analizar el malware, pero aquellas que si analizan malware son más efectivas, ofreciendo una tasa más alta de detección y pocos falsos positivos.

Después de obtener las firmas, el siguiente paso es descubrir como el malware trabaja.

Técnicas de análisis

Existen dos enfoques fundamentales para analizar el malware: estático y dinámico. El análisis estático involucra examinar el malware sin ejecutarlo. El análisis dinámico involucra  ejecutar el malware. Ambas técnicas se dividen en básico y avanzado.

Análisis estático básico

Consiste en examinar el archivo ejecutable sin ver las instrucciones ejecutadas. Este análisis puede confirmar si el archivo es malicioso, provee información de su funcionalidad y en algunos casos provee información que permita producir firmas de red. Este tipo de análisis es sencillo y rápido pero no es efectivo con malware sofisticado y puede pasar por alto comportamientos importantes.

Análisis dinámico básico

Involucra ejecutar el malware y observar su comportamiento en el sistema con el fin de eliminar la infección, producir firmas efectivas o ambas. Sin embargo, antes de ejecutar el malware se debe establecer un ambiente de prueba que permita estudiar el malware en ejecución sin riesgo de daño al equipo o la red. Como el análisis estático básico, este tipo de análisis puede ser utilizado por personas sin conocimiento profundo en programación aunque no es efectivo con todo el malware.

Análisis estático avanzado

Consiste en realizar ingeniería inversa al malware por medio de cargar el ejecutable en un desensamblador y descubrir lo que el programa realiza. Este análisis requiere una curva de aprendizaje mayor que el análisis básico y conocimiento en ingeniería inversa, constructores de código y conceptos de Windows; todo esto lo estaremos viendo mas adelante conforme avanza el curso.

Análisis dinámico avanzado

Se usa un debugger para examinar el estado interno del malware en ejecución y así proveer otra manera de extraer información detallada de un ejecutable.

Tipos de malware

Cuando realizamos un análisis de malware tenemos que descubrir que tipo de malware estamos revisando con el fin de saber que resultados esperar. Los tipos de malware conocidos los puede ver aquí.

Reglas generales para el análisis

  1. Debemos enfocarnos en características claves, no en los detalles, debido a que la mayoría de malware son programas grandes y complejos.
  2. Recordar que existen diferentes herramientas y enfoques. Cada situación es diferente por lo que en algunos casos si no tenemos suerte con una herramienta, utilizamos otra o analizar el malware desde otro enfoque.
  3. El análisis de malware es como el juego del gato y el ratón. Así como nuevas técnicas de análisis de malware son desarrolladas también los creadores de malware responden con nuevas técnicas para frustrar el análisis.

En el próximo post entraremos en detalle con el análisis estático básico.

PV.

 

 

 

Cursos de Ingeniería inversa, análisis de malware y análisis forense de memoria.

Voy a empezar con varios tutoriales técnicamente mas complejos relacionados a la ingeniería inversa (RE), análisis de malware y análisis forense de memoria; estos temas aunque parecen diferentes están muy relacionados entre si.

¿Que es la ingenieria inversa y porque debemos estudiarla?

Como indica Wikipedia “…es descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones…“.

Nos sirve para tener un profundo conocimiento de las aplicaciones o el sistema operativo, crear aplicaciones mas seguras, analizar malware, construir exploits, entre otros.

Algunos de los temas que se abordaran son:

  • X86 y X64
  • ARM
  • El kernel de Windows
  • Debugging y automatizacion
  • Ofuscación
  • Trucos anti RE
  • Analizando packers y manual unpacking
  • Y muchos más

¿Que es analisis de malware y porque debemos estudiarlo?

El malware es un componente muy importante en la mayoría de incidentes de seguridad y su análisis es el arte de diseccionar el software para entender como trabaja, como identificarlo y como eliminarlo.

Algunos de los temas que se abordaran son:

  • Análisis estático y dinámico
  • Análisis en maquinas virtuales
  • Análisis de programas para Windows.
  • Comportamiento
  • Evitar ingeniería inversa
  • Y muchos más

¿Que es análisis forense de memoria y porque debemos estudiarlo?

Cada función desarrollada por el sistema operativo o una aplicación resulta en modificaciones a la memoria RAM, y con frecuencia persiste mucho tiempo después de ejecutada esa función. Datos críticos residen exclusivamente en la memoria tales como llaves criptograficas, mensajes de chat, mensajes de correo sin encriptar, registros de Internet no guardados en cache, entre otros.

En este tema veremos todo lo relacionado con la memoria en Windows, Linux y Mac: como se adquiere, registro, kernel, sistemas de archivos, rootkits, entre otros.

Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better” Donald Knuth