0% encontró este documento útil (0 votos)
205 vistas31 páginas

Herramientas de Análisis de Malware

Cargado por

new.code.2523
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
205 vistas31 páginas

Herramientas de Análisis de Malware

Cargado por

new.code.2523
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tema 9

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)

9.5. Análisis estático de código 24


9.6. Análisis dinámico de código 25
9.7. Lecciones magistrales 26
9.8. Referencias bibliográficas 27

A fondo 28

Test 29
© Universidad Internacional de La Rioja (UNIR)

Tema 9. Esquema
Esquema

Hacking Ético
3
Ideas clave

9.1. Introducción y objetivos

Una de las principales dificultades que existen a la hora de analizar malware es su


evidente e inherente falta de documentación. Dado que este tipo de software
malicioso se instala normalmente sin el consentimiento del usuario, es probable que
el autor no incluya alguna información acerca de cómo funciona el software y lo que
este realiza. Por lo tanto, las indagaciones que se deben realizar a fin de entender el
comportamiento de una muestra de malware requieren utilizar una serie de técnicas,
métodos y herramientas que ayuden a clasificarlo y comprender su funcionamiento.

En el presente tema se estudia el estado del arte del análisis de malware,


profundizando en las técnicas, métodos y herramientas utilizadas en la actualidad en
este campo. En concreto, se profundizará en las técnicas de análisis dinámico o de
comportamiento y sus herramientas asociadas y en el análisis dinámico de código y
la principal herramienta utilizada en el mismo.

Objetivos:

 Explicar y aprender los fundamentos teóricos necesarios para la realización del


análisis de malware.
 Estudiar los diferentes métodos y técnicas de análisis de malware utilizados en la
actualidad.
 Conocer los diferentes tipos de herramientas que se utilizan en los diferentes tipos
© Universidad Internacional de La Rioja (UNIR)

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:

 ¿Buscamos conocer el malware para desarrollar un sistema de desinfección?


 ¿Queremos conocer cómo ha infectado la máquina para prevenirlo?
 ¿Buscamos simplemente hacer atribuciones a la amenaza?

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)

deberemos subirlos a herramientas de análisis online. O puede que incluso el


adversario (quien haya introducido el malware en nuestras máquinas) pueda estar
monitorizando los feeds comunitarios de inteligencia para ver si aparece algún IOC
relacionado con la infección y detectar que está siendo analizado.

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):

 Clasificación y caracterización del binario o análisis estático básico.


 Análisis de comportamiento, análisis dinámico básico.
 Análisis estático de código o análisis estático avanzado.
 Análisis dinámico de código o análisis dinámico avanzado.

9.3. Herramientas de análisis de malware

El objetivo de las herramientas de análisis de malware es que sean funcionales y


permitan resolver las necesidades del analista. Por lo tanto, aunque habrá múltiples
herramientas diferentes con la misma funcionalidad, cada profesional debe conocer
el mayor número posible y saber elegir la que más se adapta a sus necesidades o más
cómoda le resulta.

Al margen de la selección que podamos hacer en este documento, existen


distribuciones preparadas para el análisis de malware que ofrecen amplios arsenales
de herramientas, además de configuraciones óptimas para esta tarea. Las más
reconocidas son:
© Universidad Internacional de La Rioja (UNIR)

 FlareVM. Este programa desarrollado por la compañía FireEye transforma


cualquier máquina Windows en un laboratorio de análisis de malware.

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.

Existen también exhaustivas recopilaciones de herramientas de análisis de malware,


como awesome malware analysis (un listado de diferentes recursos de soporte al
análisis de malware), o Sysinternals (la completa suite de herramientas de
administración de Microsoft).

Análisis básico

PEiD

Algunas muestras de malware tratan de enmascararse mediante el empaquetado de


sus funciones maliciosas. Este empaquetado suele consistir en el cifrado de dichas
funciones y la inclusión de un desempaquetador en el código del programa para que
las descifre y cargue en memoria.

La herramienta PEID ayuda a detectar el empaquetado mediante el cálculo de la


entropía y otras heurísticas. El desempaquetado, para el análisis correcto de la
muestra, normalmente se hará mediante el uso de la herramienta con la que se
empaquetó o a través del análisis del programa en memoria.
© Universidad Internacional de La Rioja (UNIR)

Hacking Ético
7
Tema 9. Ideas clave
Figura 1. PEiD. Fuente: elaboración propia.

PeStudio

Con PeStudio realizaremos una primera prospectiva sobre los ejecutables


sospechosos, siempre que sean ejecutables tipo PE. Además de mostrar de forma
estructurada los metadatos de los PE, hace un análisis de los elementos contenidos
en el fichero, como URL, llamadas a API del sistema, etc., entre los que destaca
rápidamente aquellos que pueden constituir un indicador de compromiso.
© Universidad Internacional de La Rioja (UNIR)

Figura 2. PeStudio. Fuente: elaboración propia.

Hacking Ético
8
Tema 9. Ideas clave
CFF Explorer

Similar a PeStudio, aunque algo más limitado en cuanto a las funcionalidades de


análisis, CFF Explorer destaca por ofrecer además funcionalidades de
desempaquetado y de exploración avanzada de dependencias. Además, integra
herramientas de edición de distintos aspectos del fichero, un desensamblador muy
simple o un editor de recursos.

Figura 3. CFF Explorer. Fuente: elaboración propia.

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

Aunque obtendremos gran parte del conocimiento a través de procesos de análisis


estático, solo podremos conocer realmente la funcionalidad de un ejecutable
mediante el análisis iterativo de sus heurísticas (ejecutándolo varias veces y
estudiando cómo se comporta).

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

La monitorización de procesos es esencial para conocer las estrategias de trabajo del


malware en el equipo. Utilizando el administrador de tareas de Windows podemos

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.

Process Hacker es similar en apariencia a este administrador de tareas, pero además


cuenta con una infinidad de herramientas que nos permiten hacer un completo
análisis de los procesos: ver tokens de control de acceso asociados a los procesos,
qué archivos tienen abiertos, el orden en el que se han ido lanzando cuando existen
procesos padre, etc.
© Universidad Internacional de La Rioja (UNIR)

Figura 5. Propiedades de proceso en Process Hacker. Fuente: elaboración propia.

Hacking Ético
12
Tema 9. Ideas clave
Procmon

El monitor de procesos de Sysinternals (no confundirlo con el monitor de procesos


de Windows) es una herramienta de trazabilidad a bajo nivel que representa en
forma de eventos las interacciones que tienen los procesos con las distintas
dimensiones del sistema operativo. Es de las herramientas más potentes que
podemos utilizar para conocer el comportamiento de un proceso, pero si no se
gestiona bien, puede mostrar demasiados eventos impidiendo extraer ninguna
conclusión.

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)

Figura 6. Process Monitor (procmon). Fuente: elaboración propia.

Hacking Ético
13
Tema 9. Ideas clave
Regshot

Aunque contaremos con otras herramientas más avanzadas para analizar la


interacción del malware con el registro de Windows, Regshot destaca por su
simplicidad. Con esta herramienta, haremos una captura del registro antes de
ejecutar el malware y otra después, con lo que obtendremos así un listado de los
cambios realizados durante la ejecución del malware. Aunque algunos de estos
cambios no habrán sido efectuados por el programa malicioso (en paralelo se estarán
ejecutando otros procesos del sistema operativo que también hacen uso del
registro), esta solución permite hacer un primer filtrado muy sencillo.

Sandboxes

Una forma rápida de obtener los primeros indicadores de compromiso de una


muestra es su ejecución dentro de un entorno controlado, similar al que la muestra
tendría como objetivo. Las herramientas desarrolladas con este propósito se
denominan sandboxes. Existen varios proyectos para construir una sandbox en una
máquina local: cuckoo (uno de los referentes más veteranos, pero sin soporte desde
que entró en un proceso de migración a python3, en 2019) y CAPEv2. También
podremos trabajar con alternativas online:

 [Link]. Permite de forma gratuita la ejecución interactiva de muestras en


máquinas Windows durante 30 segundos, obtiene un listado de procesos,
conexiones y elementos creados en disco por el malware.

 JOE Sandbox, Hybrid Analysis. Estas dos plataformas, pese a no permitir la


interacción en vivo con la muestra subida, generan exhaustivos informes de
© Universidad Internacional de La Rioja (UNIR)

conclusiones.

Hacking Ético
14
Tema 9. Ideas clave
Análisis estático de código

Aunque IDA Pro es el software de análisis de código por excelencia, existen


numerosas alternativas:

 Radare 2. Software open source que permite el análisis y la depuración de


ejecutables a través de la consola y cuenta con una interfaz gráfica Iaito.

 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.

Análisis dinámico de código

Llamamos análisis dinámico de código al proceso de depuración (similar al que haría


un desarrollador analizando bugs en su código) sobre un ejecutable. Aunque
históricamente había una gran diferencia entre las dos familias de herramientas, hoy
en día la mayor parte de las herramientas de análisis estático de código ya cuentan
con depuradores. Así, cubriremos alternativas enfocadas exclusivamente en el
análisis dinámico y sus particularidades.

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

Teniendo en cuenta que, en resumidas cuentas y pese a sus intenciones maliciosas,


© Universidad Internacional de La Rioja (UNIR)

el malware no es más que un programa informático, cualquier dato o acción tomada


por el mismo tendrá que circular en algún momento por la memoria. Por lo tanto, en
última instancia, al tener una imagen de la memoria contaremos con todo lo
necesario para analizar a fondo la muestra. En algunos casos, como es el caso de
algunos rootkits y bootkits, esta será la única forma que tengamos de seguirle la pista.

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.

Cuando se produce un fallo crítico en un programa (o incluso un fallo en el propio


Windows), el sistema operativo guarda, antes de cerrarlo, un volcado de memoria
para su depuración. Para evitar que el malware detecte el uso de una herramienta
comercial o para acceder a determinadas zonas de memoria no accesibles desde el
modo usuario, se pueden forzar estos fallos de forma que, tras ejecutar la muestra
que queremos analizar, se ejecute una secuencia que nos permita congelar el estado
de la memoria para su posterior análisis.

Igualmente, si el entorno de análisis está instalado en una máquina virtual, los


hipervisores suelen contar con herramientas para realizar este volcado y almacenarlo
en la máquina anfitrión. Una vez obtenido, procederemos a su análisis con
herramientas como Volatility v3 o Windbg. La primera de ellas (Volatility v3) goza de
una amplia comunidad de desarrollo y documentación, y cuenta con numerosos
plugins que nos permitirán obtener listados de procesos, comunicaciones, e incluso
extraer archivos ejecutables desde la memoria. Esto será de gran utilidad cuando el
malware se encuentre ofuscado y no podamos analizar su comportamiento de forma
estática.

9.4. Análisis dinámico o de comportamiento

Uno de los principales objetivos del análisis de malware es comprender la naturaleza


de las muestras, intentar determinar a qué activos de información accede, cómo
© Universidad Internacional de La Rioja (UNIR)

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:

Qué nombre toma el proceso ejecutado

Una estrategia habitual es la de crear procesos con nombres comunes (notepad,


Firefox, etc.) de forma que pasen desapercibidos ante los ojos de los usuarios. La
detección requiere de contrastar la lista de procesos con la de la máquina antes de
ejecutar el malware o de conocer la estructura de los procesos del sistema. Por
ejemplo, otro nombre común utilizado por el malware es Técnicas de evasión de la
detección del proceso svchost, pero este proceso no suele ejecutarse solo, sino como
hijo del proceso services.

Con procmon también podremos observar cómo el proceso ejecutado por el


© Universidad Internacional de La Rioja (UNIR)

malware desaparece tras crear un proceso hijo, impidiendo así la trazabilidad en


vivo, es decir, que si no tenemos un histórico, como el mostrado por procmon en la
Figura 9 con software como ProcessHacker, perdemos el hilo.

Hacking Ético
19
Tema 9. Ideas clave
Figura 9. Procedimiento de evasión de Emotet. Fuente: Minerva Labs, 2017.

La relación entre procesos padre e hijo

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.

De esta forma, también observaremos cómo el malware se puede inyectar en otros


procesos, tomar el control de sus tokens, etc. ProcessHacker vuelve a ser nuestra
principal herramienta en este sentido, pues nos permitirá estudiar qué tokens están
© Universidad Internacional de La Rioja (UNIR)

asignados a cada proceso, y qué uso hacen de los archivos.

Hacking Ético
20
Tema 9. Ideas clave
Disco

Durante su ejecución, el malware interactuará con el disco de varias maneras:

 Accediendo a ficheros del sistema: para exfiltrar información, en busca de


elementos que permitan la escalada de privilegios u obtener datos del usuario.

 Almacenando ficheros de persistencia o configuración: para ganar persistencia


normalmente el malware depositará algún ejecutable en el disco o almacenará
ficheros de configuración que le permitan manejar su ejecución entre sesiones.

 Instalar o depositar nuevos (descargados o desempaquetados): cuando el


malware analizado consta de varias etapas, descargará en disco nuevos elementos
maliciosos. En otras ocasiones, el malware ofuscado o empaquetado también
puede desempaquetarse en 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.

Este análisis diferencial permite detectar, por ejemplo, la instalación de sistemas de


persistencia. Por poner un ejemplo, los programas que deben ejecutarse al inicio
están almacenados en los registros que cuelgan de:

*\Software\Microsoft\Windows\CurrentVersion\Run

Red

Por último, aunque no menos importante, es necesario estudiar qué conexiones


establece el malware con el exterior. La comunicación con centros de mando y
control nos ayudará a obtener nuevos indicadores de compromiso que permitan
detectar rápidamente un ataque, pero también nos permitirá revelar nuevas
funcionalidades del malware.
© Universidad Internacional de La Rioja (UNIR)

Debemos estudiar, mediante el uso de herramientas como Wireshark, las peticiones


DNS lanzadas por la muestra, las diferentes conexiones que establezca y, una vez
tengamos un modelo de su comportamiento, interactuar con él a través de software
de emulación de redes, como Fakenet-ng.

Hacking Ético
23
Tema 9. Ideas clave
9.5. Análisis estático de código

Una vez reconocido el comportamiento del programa, debemos analizar su código


fuente para comprenderlo a fondo. En ocasiones, buscaremos algún fragmento de
código que nos pueda ser útil para analizar su comportamiento y, en otras, iremos
desgranando sus funciones para clarificar qué es lo que hace en nuestra máquina.

Con suerte, estará escrito en algún lenguaje que nos permita decompilarlo y ver el
código original. Algunos de estos lenguajes son:

 Lenguajes de scripting. Aunque puedan estar ofuscados, cualquier programa en


Python, Powershell, etc.; será más fácil de analizar que un programa en código
máquina.

 Java. Utilizando jd-gui podremos obtener el código original desde un .jar o .war,
en una interfaz orientada al análisis.

 .NET. Utilizando herramientas como ILSpy o dotPeek podremos recuperar código


dirigido a la máquina virtual de .NET.

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.

9.6. Análisis dinámico de código

El código que estudiemos en un análisis estático no siempre será el que se ejecute,


por ejemplo, puede ser el envoltorio de un código empaquetado, hay numerosas
secuencias de flujo que nunca se ejecutan y hacen imposible el análisis completo, etc.
Por lo tanto, en esta fase no siembre veremos la realidad; por lo que debemos
acompañar un estudio del código con la depuración de este.

Tras interpretar (y, en ocasiones, incluso redefinir) el código durante el análisis


estático, lo cargaremos en un depurador y procederemos a ejecutarlo. En x64dbg
podemos ejecutar un binario o engancharnos a un proceso activo, para depurar su
ejecución.

Cuando lo cargamos en un depurador el programa se para automáticamente (o se


inicia parado). Si tratásemos de analizar las instrucciones de una en una, jamás
terminaríamos de analizar un programa simple. Para poder abordarlo de una forma
sensata, podemos aproximarnos de dos formas:
© Universidad Internacional de La Rioja (UNIR)

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.

 Aprovechar paradas del programa e insertar puntos de interrupción para trazar


el tratamiento que hace de la entrada.

Figura 12. Breakpoints en x64dbg

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.

9.7. Lecciones magistrales

En este video, titulado Herramientas de REMnux y Flare VM, se enumeran las


principales herramientas preinstaladas en REMnux y FlareVM (las dos distribuciones
profesionales más completas para el análisis de malware en Linux y Windows,
respectivamente), que servirán de soporte para futuros trabajos desarrollados en el
laboratorio de análisis de malware.
© Universidad Internacional de La Rioja (UNIR)

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]

Zynamics. (s. f.). BinDiff. [Link]


© Universidad Internacional de La Rioja (UNIR)

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]

El análisis de binarios mediante el análisis de flujo puede revelar similitudes entre


muestras que, más allá de su aplicación, permiten aumentar nuestro conocimiento
sobre la muestra.
© Universidad Internacional de La Rioja (UNIR)

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.

2. Decimos que un binario está empaquetado cuando:


A. Está programado en java.
B. Cuenta con una funcionalidad que solo se manifiesta en tiempo de ejecución.
C. Está dentro de un zip con contraseña.
D. Su vector de entrada es una mochila USB.

3. Construir un buen laboratorio de malware no debe impedir que:


A. El malware detecte que está en un entorno virtualizado.
B. El malware se ejecute.
C. El malware se extienda por la red.
D. El malware contacte libremente con su C2.

4. Podemos capturar las operaciones realizadas sobre el registro por un malware


con:
A. Regshot.
B. procomon.
C. Regedit.
D. Process Hacker.
© Universidad Internacional de La Rioja (UNIR)

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.

6. El análisis dinámico de código tiene la ventaja de que:


A. Ejecutar la muestra siempre es mejor para obtener IOC.
B. Permite ver funcionalidades que no están claras en el análisis estático.
C. Es más sencillo que analizar el código ensamblador.
D. No tiene ninguna ventaja frente a otros análisis.

7. El análisis estático de código no permite:


A. Enumerar las funciones utilizadas por el malware.
B. Acceder a funcionalidades muy ofuscadas.
C. Conocer más funcionalidades que el análisis estático básico.
D. Acceder al código ensamblador de la muestra.

8. ¿Cuál de los siguientes entornos de programación no permite un acceso sencillo


al código fuente original?
A. Python.
B. C++.
C. .NET.
D. Java.

9. Antes de usar una Sandbox online debemos:


© Universidad Internacional de La Rioja (UNIR)

A. Tener un acuerdo de confidencialidad con el proveedor.


B. Obtener un certificado de que el proveedor cumple con la ISO 27001.
C. Evaluar los requisitos de nuestro caso de análisis.
D. Nunca debemos utilizar un servicio en línea.

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

También podría gustarte