Herramientas de Análisis de Malware
Herramientas de Análisis de Malware
Hacking Ético
Herramientas y métodos
de análisis de malware
Índice
Esquema 3
Ideas clave 4
9.1. Introducción y objetivos 4
9.2. Métodos de análisis de malware 5
9.3. Herramientas de análisis de malware 6
9.4. Análisis dinámico o de comportamiento 18
© Universidad Internacional de La Rioja (UNIR)
A fondo 28
Test 29
© Universidad Internacional de La Rioja (UNIR)
Tema 9. Esquema
Esquema
Hacking Ético
3
Ideas clave
Objetivos:
de análisis de malware.
Profundizar en el estudio de las técnicas de análisis dinámico y de
comportamiento, y las herramientas más comúnmente utilizadas en este tipo de
análisis.
Hacking Ético
4
Tema 9. Ideas clave
9.2. Métodos de análisis de malware
El estudio del software malicioso debe realizarse desde una perspectiva sistemática
para evitar caer en sesgos que impidan detectar funcionalidades de la muestra en
cuestión o, incluso, para evitar que la muestra se vuelva en nuestra contra por una
mala gestión.
Esto no quiere decir que exista un procedimiento concreto que nos lleve a
comprender la muestra en toda su esencia, sino que, independientemente de las
técnicas que empleemos para ello, debemos hacerlo de una forma estructurada y
metódica.
Antes de abordar el análisis como tal, debemos definir cuáles son nuestros objetivos
que marcaran la hipótesis del análisis:
La mayor parte de las veces, trataremos también de extraer algún elemento que
caracterice la muestra que estamos analizando: un string que no suela aparecer, una
ruta del sistema, una dirección IP, etc. Estos elementos se conocen como indicadores
de compromiso o IOC.
También debemos tener claros otros requisitos que deba cumplir el análisis. Por
ejemplo, si el malware ha infectado archivos confidenciales de la organización, no
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
5
Tema 9. Ideas clave
Al igual que en cualquier disciplina que requiera experimentación, en el análisis de
malware debemos contar con un entorno que nos permita desarrollar nuestro
trabajo de una forma precisa y segura: un laboratorio de análisis de malware. Las
principales herramientas que formarán parte de este laboratorio y darán soporte a
las tareas centrales de cualquier aproximación que sigamos son (Bermejo-Higuera,
Abad Aramburu, Bermejo Higuera, Sicilia Urbán y Sicilia Montalvo, 2020):
Hacking Ético
6
Tema 9. Ideas clave
REMnux. Se distribuye como una máquina virtual Linux, desarrollada para dar
soporte a la certificación REM de Sans. Cuenta con numerosas herramientas para
el análisis de artefactos de malware y para la observación de otras máquinas,
como proxies de red.
Análisis básico
PEiD
Hacking Ético
7
Tema 9. Ideas clave
Figura 1. PEiD. Fuente: elaboración propia.
PeStudio
Hacking Ético
8
Tema 9. Ideas clave
CFF Explorer
Bindiff
La estructura del programa, analizada desde la perspectiva del control de flujo, puede
ayudar a encontrar similitudes entre fragmentos de código. Este análisis,
© Universidad Internacional de La Rioja (UNIR)
representado de manera visual, nos permite también detectar añadidos entre dos
versiones del mismo programa (Figura 4), destacando rápidamente las
modificaciones. Bindiff puede lanzarse como una herramienta independiente, pero
también ofrece integración con los principales sistemas de ingeniería inversa de
código, como IDA, Ghidra, etc.
Hacking Ético
9
Tema 9. Ideas clave
Figura 4. Ejemplo de detección de código añadido mediante análisis gráfico de flujos. Fuente: Zynamics, s. f.
Inteligencia externa
Contar con un análisis previo nos dará una visión general que permita enfocar
nuestros esfuerzos. Para ello, trabajaremos con fuentes de threat hunting, sistemas
antivirus, etc. Algunos de los más útiles en un primer análisis son:
Clamav. Antivirus de código abierto que nos permite obtener un primer análisis
de las muestras de malware: tipo de malware, familia, etc. Aunque no tiene la
madurez de otros programas antivirus (tiene muchos falsos negativos y un motor
de análisis muy limitado), sí nos ayudará a orientar los primeros pasos de nuestro
análisis.
Virus Total. La plataforma Virus Total se ha posicionado años tras años como un
elemento esencial en el ecosistema de herramientas de análisis de malware.
© Universidad Internacional de La Rioja (UNIR)
Permite subir muestras para que sean analizadas con varios antivirus o buscar
indicadores de compromiso para detectar si pertenecen a alguna muestra
analizada previamente por otro usuario. Parte de su éxito, y de la potencia de sus
análisis, tiene como origen uno de sus motores de análisis: yara.
Hacking Ético
10
Tema 9. Ideas clave
Yara. Es un potente sistema de análisis de binarios basado en reglas. Mediante
una síntesis de los principales indicadores de compromiso de un elemento
malicioso, podemos generar una firma de este, pero con yara, además, podemos
aplicar transformaciones y generar reglas avanzadas. El repositorio «yara-rules»
contiene numerosas reglas útiles para el análisis de malware.
Análisis dinámico
Fakenet-ng
Permite simular servicios de red para satisfacer requisitos de ejecución del malware
y analizar su comportamiento. Permitirá ejecutar servicios en servidores DNS o
servidores web, de tal forma que el malware pueda operar como si estuviese
interactuando con sus servicios y podamos evaluar cómo se comporta ante
diferentes entradas.
Wireshark
Esta herramienta de análisis de tráfico permitirá, tras capturar una sesión de red
generada por una muestra de malware, analizar los datos transferidos y los
protocolos utilizados.
© Universidad Internacional de La Rioja (UNIR)
Process hacker
Hacking Ético
11
Tema 9. Ideas clave
listar los procesos y algunas de sus propiedades, pero no aporta suficiente
profundidad, por ejemplo, no muestra un árbol de ejecución, como el que se puede
ver en el segundo plano de la Figura 5, complicando la trazabilidad de un proceso.
Hacking Ético
12
Tema 9. Ideas clave
Procmon
Para poder realizar un análisis fructuoso, estableceremos filtros que muestren sólo
información de un proceso, acciones ejecutadas en una ruta concreta, o mostrar sólo
un número limitado de operaciones, como las relacionadas con la creación de
archivos, u operaciones de consulta DNS.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
13
Tema 9. Ideas clave
Regshot
Sandboxes
conclusiones.
Hacking Ético
14
Tema 9. Ideas clave
Análisis estático de código
Hopper. Surge como una alternativa más económica para trabajar con binarios de
macOS y Linux. Cuenta también con depurador.
Otras, incluso, llegan a superarla en algunos aspectos: este es el caso de Ghidra. Esta
herramienta de código abierto fue desarrollada por la NSA y liberada en 2019.
Aunque inicialmente no era así, desde la versión 10 integra GDB. Sin embargo, el
elemento más destacable de Ghidra es su motor de decompilado. Inferir, desde el
código ensamblador, el código fuente original es uno de los mayores retos en la
ingeniería inversa, pero el decompilador de Ghidra lo resuelve generando
fragmentos de código con una calidad asombrosa, como puede observarse en la
Figura 7.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
15
Tema 9. Ideas clave
Figura 7. Código recuperado por Ghidra desde ensamblador. Fuente: elaboración propia.
Durante años, la herramienta más popular fue OllyDBG, pero, con la evolución de las
arquitecturas de los procesadores, se quedó atrás. En 2014 comenzaron a desarrollar
una versión compatible con los 64 bits, pero nunca terminaron de desarrollarla. Tras
postularse como su sucesor, Inmunity Debugger, evolucionó hasta convertirse en el
hoy conocido como x64dbg.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
16
Tema 9. Ideas clave
Figura 8. x64dbg. Fuente: elaboración propia.
Como puede observarse en la Figura 8, este software muestra, además del código
desensamblado, los valores almacenados en los registros de la CPU, una
representación de la pila y un mapa de toda la memoria. Ejecutando el programa
desde x64dbg, o desde fuera y vinculándose al proceso, podremos ejecutar las
instrucciones de una en una y observar, e incluso manipular, los valores de memoria.
Por último, y pese a no tener la madurez del resto de productos, merece la pena
mencionar CheatEngine. Este software, ideado para modificar datos de videojuegos
en vivo, es especialmente potente a la hora de buscar valores concretos en memoria,
de tal forma que, combinado con el resto, se pueda mapear dicho valor con las
funciones que acceden al mismo.
Análisis de memoria
Hacking Ético
17
Tema 9. Ideas clave
Para generar el volcado de memoria (guardar la memoria en un fichero no volátil)
contaremos con programas como NotMyFault de la suite Sysinternals.
intenta ganar persistencia, etc. Para ello, aunque posteriormente bajaremos a nivel
de código, comenzaremos desarrollando un primer análisis del comportamiento,
estudiando cómo interactúa con el sistema operativo.
Hacking Ético
18
Tema 9. Ideas clave
Este primer análisis tendrá un carácter iterativo, en el que obtendremos información
sobre el comportamiento del malware mediante su ejecución en una máquina
preparada para hacerlo de forma segura. A la hora de hacer este análisis, debemos
prestar especial atención a estos elementos:
Uso de procesos.
Uso de disco.
Uso del registro.
Uso de red.
Procesos
Cuando ejecutemos por primera vez el malware debemos observar cómo construye
su proceso en busca de técnicas de ocultación. Para ello, usaremos primeramente
ProcessHacker, desde donde podremos estudiar:
Hacking Ético
19
Tema 9. Ideas clave
Figura 9. Procedimiento de evasión de Emotet. Fuente: Minerva Labs, 2017.
El último ejemplo es uno de los principales motivos por los que merece la pena
trabajar con programas como ProcessHacker. Al ver la relación entre procesos padre
e hijo, podemos trazar el camino seguido por el malware a través del sistema de
procesos o incluso evidenciar incongruencias que pongan de manifiesto la existencia
de un proceso malicioso.
Un gran ejemplo es el de los cada vez más comunes macros maliciosos en ofimática,
que acaban generando situaciones en las que un ejecutable como cmd (la consola de
comandos) cuelga de un documento de Word.
Hacking Ético
20
Tema 9. Ideas clave
Disco
Para el análisis del uso de disco también trabajaremos principalmente con procmon,
filtrando las operaciones que terminen en File, como se puede observar en la Figura
10. También permite generar un informe del uso del sistema de archivos a través
del menú Tools > File Summary.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
21
Tema 9. Ideas clave
Figura 10. Filtro en procmon. Fuente: elaboración propia.
Registro
Para analizar el uso del registro que hace el malware también podemos utilizar
procmon (que permite monitorizar el uso en vivo, para ver también accesos de
lectura), pero comenzaremos utilizando la herramienta RegShot. Antes de ejecutar
la muestra, haremos una primera captura del registro, pulsando en el botón 1st shot
mostrado en la Figura 11. Tras ejecutar el malware, haremos una segunda captura,
con 2nd shot, y compararemos ambas para ver qué registros se han visto alterados.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
22
Tema 9. Ideas clave
Figura 11. Regshot. Fuente: elaboración propia.
*\Software\Microsoft\Windows\CurrentVersion\Run
Red
Hacking Ético
23
Tema 9. Ideas clave
9.5. Análisis estático de código
Con suerte, estará escrito en algún lenguaje que nos permita decompilarlo y ver el
código original. Algunos de estos lenguajes son:
Java. Utilizando jd-gui podremos obtener el código original desde un .jar o .war,
en una interfaz orientada al análisis.
En el resto de los casos, deberemos trabajar con herramientas como IDA o Ghidra y
trabajar con el código ensamblador, reconstruyendo fragmento a fragmento el
programa.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
24
Tema 9. Ideas clave
Podemos realizar un primer acercamiento con herramientas como PeStudio o CFF
Explorer para determinar las librerías que utiliza el programa. Conociendo las
librerías, con IDA buscaremos las referencias cruzadas a las mismas y podemos
utilizar una aproximación bottom up, en la que reconstruyamos el contexto que
rodea a la llamada a la función. Por ejemplo, una llamada a la función DnsQuery de
la API de Windows normalmente irá precedida de la obtención de un nombre de
dominio y continuará haciendo algún tipo de llamada de red a la dirección IP
obtenida.
Hacking Ético
25
Tema 9. Ideas clave
Establecer puntos de interrupción (breakpoints) en funciones conocidas,
analizadas previamente, cercanas a llamadas, a funciones del sistema, etc.; como
muestra la Figura 12.
A partir de este punto sí que puede tener sentido continuar la ejecución instrucción
a instrucción, hasta que vuelva al entorno de usuario o volviendo a buscar un punto
clave, pero haciéndolo ya de forma acotada y con un objetivo concreto.
Hacking Ético
26
Tema 9. Ideas clave
9.8. Referencias bibliográficas
Bermejo-Higuera, J., Abad Aramburu, C., Bermejo Higuera, C., Sicilia Urbán, M. Á. y
Sicilia Montalvo, J. A. (2020). Systematic Approach to Malware Analysis (SAMA).
[Link]
Minerva Labs. (2017, noviembre 14). Emotet Goes More Evasive. Here’s a DIY Vaccine
to Prevent It. [Link]
Hacking Ético
27
Tema 9. Ideas clave
A fondo
Joxean Koret - Diffing C source codes to binaries
ZeroNights. (2018, diciembre 12). Joxean Koret - Diffing C source codes to binaries
[Vídeo]. Youtube. [Link]
Hacking Ético
28
Tema 9. A fondo
Test
1. La entropía de un binario permite:
A. Detectar cambios entre versiones.
B. Detectar si está cifrado o empaquetado.
C. Determinar su procedencia.
D. Explotar nuestros conocimientos sobre criptografía.
Hacking Ético
29
Tema 9. Test
5. ¿Cómo se llama la distribución de Linux que utilizaremos para el análisis de
malware?
A. Kali Linux.
B. REMnux.
C. MalTux.
D. Arch Linux.
Hacking Ético
30
Tema 9. Test
10. Podemos analizar el árbol de llamadas entre procesos con:
A. Process Hacker.
B. Procmon.
C. Process Monitor.
D. TreeNity.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
31
Tema 9. Test