Hola a tod@s!

Este post va dirigido a todos aquell@s que quieran iniciarse en el mundo del Análisis de Malware.

Trataré de mostrar las herramientas más comunes utilizadas así como plataformas online, trucos para ciertas utilidades, repositorios donde encontrar reglas yaras muy útiles, etc.

Lo primero de todo es preparar un entorno para analizar malware, una máquina virtual. Podéis optar por la que más os guste, generalmente, el malware tratará de buscar dónde se encuentra, si está siendo ejecutado en VirtualBox, VMWare, Qemu, Virtual-PC, etc.

Una de las aplicaciones para comprobar cómo de detectable es la máquina virtual se llama Pafish.

pafish64 Malware

Esta aplicación no sólo detecta si se encuentra en una máquina virtual, además detecta si está siendo depurado, si se está ejecutando en una sandbox, etc. Cuantos más OK en verde veáis, mejor. Si os detectan, aparecerá el mensaje de traced! en rojo.

Encontraréis mucha información sobre cómo securizar las máquinas virtuales (no quiero que os decantéis por una en concreto, mejor lo decidís vosotros en base a vuestra experiencia o gustos), aquí os dejo un enlace para que os den ideas.

En proyectos relacionados con sandboxes (Cuckoo, CAPE, etc.), suelen disponer de algún script o bien información de cómo configurar las máquinas virtuales para ser indetectables.

Para la desgracia de muchos existe ruido en las máquinas, es decir, se realizan peticiones a ciertos sitios que hay que evitar o aparecerán en vuestros logs y son molestos.

Os dejo este enlace, id directamente a la parte de Disable UAC y seguid los pasos hasta llegar a instalar el agente, ahí terminaría la configuración de la máquina virtual en cuanto a ser indetectable por el malware.

Muy importante, no queremos infectar máquinas alrededor nuestra, por lo que el entorno debería ser aislado (Host-Only), no queremos darle un susto a nadie y que se encuentre todo cifrado.

Ahora faltarían las herramientas que se utilizarán en los análisis, iremos viendo lo más básico, cada uno tendrá sus favoritas y hará las cosas a su manera, por lo que no os sorprendáis si os falta alguna.

Lo primero de todo, es necesario saber qué estás analizando y si se encuentra empaquetado. Si lo está, habrá que desempaquetarlo para ver realmente lo que hace.

Identificando la muestra original ¿Está empaquetada?

Muchas veces leeréis o escucharéis empaquetada o “empacada”, que quiere decir que no está tal y como salió del compilador, hablando de ficheros ejecutables, claro. El fin no es otro que la de ocultar la muestra original además de reducir su tamaño en ocasiones (aunque no tiene porqué).

Malware y packers en Latinoamerica

Existen muchos empaquetadores (UPX, PECompact, Themida, Enigma, ExeCryptor y un sin fin de Custom) que llevan la muestra final dentro (cifrada generalmente con cualquier algoritmo, todo vale) y una vez ejecutado lo cargan en memoria (lo más usual) o lo extraen a disco y lo ejecutan (si pisa disco da pie a ser analizado más en profundidad). Muchos de ellos implementan técnicas antidebugging o anti sandboxing para extraer la muestra si se da ciertas condiciones. Una buena herramienta para conocer si está empaquetado es DIE (Detect It Easy).

Detect It Easy Malware

Este programa te muestra varias cosas interesantes. El tipo de archivo, verás si está compilado para arquitectura de 32 o 64 bits. Muestra el punto de entrada, que no es otra cosa que la dirección relativa a la imagen base cuando el archivo ejecutable se carga en la memoria, también conocida como la dirección inicial. Y lo más importante de todo, te indica con qué herramienta se ha empaquetado (si es que logra identificarla) al igual que el compilador o IDE utilizado.

Otra cosa interesante es el botón de Entropia, que te da un porcentaje de empaquetado.

Estado de empaquetado Malware

La entropía nos permite evaluar el nivel de aleatoriedad de datos que contiene el malware lo que nos indicaría si ha sido comprimido o empaquetado, cuanto más cercano a 8, más certeza tendremos que lo ha sido.

El formato PE al detalle

Utilizaré esta misma muestra para dejarla en su estado original, utilicé UPX para mostraros esto que acabáis de ver. Seguimos con la identificación de la muestra y una utilidad muy interesante es PEView. Cada ejecutable tiene una estructura y esta herramienta nos permite conocerla al detalle.

Estructura PE Maleware

Podemos tratar de ver cuando fue compilada la muestra, aunque no es determinante ya que se puede modificar pero es muy útil para ver el nivel de frescura, si es recién sacada del horno o lleva tiempo circulando. En aplicaciones programadas en Delphi veréis 1992 y no, no habrá sido compilado en esa fecha.

Fecha de Malware

Información del malware: Imports, Exports, Resources, etc.

Una de mis herramientas favoritas es PE Bear. Nos permite de un vistazo rápido conocer información sobre el malware. También muestra la información que hemos visto anteriormente, pero me gusta dar opciones y ver lo mejor de cada herramienta, así podréis elegir cuál usar según nos convenga.

Tiene una serie de pestañas en donde acudir para mostrar los datos del binario, estructura PE, Imports, Exports, Recursos, etc. Algo me gusta mucho de esta herramienta, y es que es capaz de dejar un binario como es debido una vez lo extraes de memoria, justo aquí (botón a la derecha del +):

Boton PE Bear

Este es el aspecto de la herramienta al completo; un multiusos muy útil:

PE Bear Tool

Continuando con herramientas multiusos tenemos PEStudio.

Realizando un triage

Esta herramienta nos permite realizar un triage gracias a toda la información que va obteniendo del análisis estático que realiza y lo correla con la matriz de Mitre de tácticas, técnicas y conocimiento común de adversarios ( TTP ). Además de dar unos indicadores sobre el malware.

También es muy útil para conocer que funciones de la API de Windows son cargadas con el malware y te las marca si la considera sospechosa. Las API son bibliotecas de vínculos dinámicos (DLL) que forman parte del sistema operativo Windows y pueden ser utilizadas llamándolas directamente en los ejecutables, por lo que ahorra tiempo al programador sin necesidad de realizar algo equivalente en la mayoría de los casos.

Si el malware no trata de ocultarlas, las detectará y podréis identificar cierta actividad o capacidades dentro de él.

Busqueda de  bibliotecas maliciosas en Malware

Esta utilidad, consulta el hash (asociado al malware) en Virus Total y muestra el resultado de las detecciones por los diferentes motores antivirus. Pongo la captura directamente de su web.

PEstudio PRO Malware VirusTotal

Resource Hacker

Como os podéis imaginar, hablo de los ficheros de recursos que lleva en su interior. Generalmente, son extraídos para su uso como pueden ser imágenes, iconos, ficheros de configuración, binarios, etc.

La herramienta anterior es capaz de mostrarlos, pero para esto, es mejor utilizar una que esté dedicada enteramente a ello, ¿cuál? Resource Hacker.

Resource Hacker

En este caso, vemos como esconde 4 ficheros DRV, drivers, para una vez necesitados, sean extraídos para su uso. Con el botón derecho encima, podéis guardarlo a disco, reemplazarlo, borrarlo, renombrarlo o cambiar su lenguaje.

Hasta ahora sólo se han mostrado herramientas para tratar de ver qué tienes delante, sin llegar a meternos a analizar estática o dinámicamente el malware.

Análisis estático de Malware

Para el análisis estático es necesario disponer de un desensamblador empleado para Ingeniería Inversa. Esto quiere decir que tendremos un binario y no su código fuente.

Estas herramientas nos ayudan para ver su código en ensamblador y poder entender lo que hace. En todas ellas, además, te generan un pseudocódigo a más alto nivel por lo que será más sencillo entenderlo.

Tienen, cada una en su estilo, unas pestañas donde mostrar las funciones Imports de la api de Windows que se cargan con el binario, los Exports si corresponden, las cadenas o strings en donde muchas veces identificaremos de qué muestra se trata, etc.

Hay varias herramientas que se pueden emplear, las más comunes son IDA, Ghidra, radare2/ Cutter (GUI radare2), que no las únicas.

Echemos un vistazo a IDA (Interactive Disassemble):

IDA Malware Tool

Lo más característico, son los gráficos que muestran con líneas de colores lo que va a ocurrir. Si se cumple la condición sigo la línea verde, si no se cumple, entonces la línea roja.

El lenguaje que veis es ensamblador, pero tiene una opción (F5) para ayudar a entender el código mostrando un pseudocódigo en C/C++. Sólo hay un pero, tendrá que ser en la versión de pago. No solamente puedes analizar binarios de Windows, permite otros formatos como ELF, ARM, Rom de juegos, dump de procesos, etc.

IDA Malware PRO

La opción del decompilador no gratuita es lo que hace que muchas gente se decante por Ghidra, a pesar de que no tenía un debugger (en el pasado, ya lo trae de serie). No lo he comentado, las 3 herramientas que os he mencionado para análisis estático, sirven para el dinámico por lo que puedes abrir el malware y depurarlo con ellas. Os dejo una ayuda para IDA aquí.

Este es el aspecto de Ghidra:

GHIDRA Análisis de Malware

Tenemos 2 ventanas principales en la que podemos ver tanto el código en ensamblador como el pseudocódigo en C/C++ y según te posicionas en uno se refleja en el otro. Tanto en IDA como Ghidra o radare2 / Cutter, puedes renombrar funciones, que ayudan a entender mejor el código, pudiendo guardar los proyectos y continuar en otro momento.

Otra cosa interesante (ocurre en las 3 herramientas mencionadas) es que se puede utilizar scripts para automatizaciones.

Script Manager Malware

Os dejo una ayuda para Ghidra aquí.

Radare2 es de mis favoritos, no me preguntéis porqué, tiene muchas opciones y posibilidades, sobre todo para temas de scripting.

Radare2

También puedes ver las cajas con el código como veías en IDA y las líneas de colores (t de true en verde y f de false en rojo).

Radare2 True or False

Puedes programar los comandos con muchos lenguajes (al contrario que los otros 2 que hemos visto antes, más limitados). ¿En cuántos? Todos estos:

Lenguajes Radare2

Aunque trae un decompilador de serie, se puede integrar el de Ghidra y ver el pseudocódigo en C/C++ como lo verías ella (pdg – g de Ghidra).

Otra cosa interesante es que podéis emular partes del código, por ejemplo, imaginaros que sabéis donde se descifra una cadena, podéis ir a esa zona y emular desde A a B obteniendo el resultado o cadena descifrada, ¿cómo? Con ESIL. Te dejo una ayuda de radare2 aquí.

Y lo mismo que hemos dicho para radare2, lo podemos aplicar a Cutter, este es su aspecto:

Cutter Tool Malware

Ya sabéis que para gustos, colores, así que usad el que más cómodo os resulte o que sea bueno, bonito, barato xD.

La idea es con este tipo de software podemos conocer lo que hace el malware sin llegar a ejecutarlo. Habrá veces que se necesite velocidad y prefiráis utilizar el análisis dinámico para la obtención del resultado de ciertas funciones, así que vayamos con el análisis estático.

También están las herramientas específicas que son específicas para ciertos binarios. Por ejemplo, los de .Net. Vamos a ver la diferencia entre Dnspy y otros.

Dnspy decompila el binario y te muestra un código fuente muy aproximado al real, vedlo con vuestros ojos:

DNSpy Malware

Si lo abrimos con IDA u otros, el resultado sería este:

IDA Malware vs DNSpy

Que no está mal, pero cuando los programas se complican, cuando tienen cientos de funciones es mucho más complicado verlo, por lo tanto, ya sabéis que utilizar. Os vais a encontrar muchas veces con que el código que veis está ofuscado, los malos saben esto y lo ponen difícil, es normal. En estos casos podéis usar De4dot.

Otra cosa muy buena de Dnspy es que puedes depurar los programas, es un debugger. Vas poniendo breakpoints donde te interesa y ver qué ocurre.

Para programas en Delphi, tenemos Interactive Delphi Reconstructor:

Interactive Delphi Reconstructor

En estos casos, es muy útil ya que te muestra muchas información sobre lo que se carga en los Unit (*.pas), que son los ficheros donde lleva el código fuente de la aplicación.

Análisis dinámico del malware

El más utilizado es x64dbg. Aquí ya estamos hablando de un depurador donde una vez abierto el malware realizará las acciones a las que está destinado, por lo que ojo, si es un ransomware te cifrará todo. Si es un troyano, te controlará el pc, si es otra cosa, ya lo descubrirás después xD. Así que te recomiendo hacer una cosa antes de cada análisis: Screenshot

Te permitirá infectarte y volver al estado anterior con un sólo click. Conviene, hacer un backup de la máquina virtual por lo que pueda pasar de vez en cuando sobre todo si instalas algo nuevo quieres tener las herramientas al día.

x64dbg Malware Análisis

Es importante configurar una serie de plugins que nos van a hacer falta como OllyDumpEx (para dumpear el malware desde memoria), ScyllaHide (para ocultarte del malware) o xAnalyzer (para ampliar el análisis realizado por defecto), etc.

Os podría hablar de Ollydbgo Immunity Debugger, solamente comentaros que están obsoletos y orientados a aplicaciones de 32 bits, por lo que en muchos casos no podréis utilizarlos. Eso sí, son maravillosos, esa opción siempre estará ahí con sus muchos scripts y posibles usos.

No he mencionado que x64dbg permite scripting y algo muy útil y que no tenían los debuggers anteriores, son las 5 pestañas para mostrar volcados de la memoria.

Volcados de memoria x64dbg

En los breakpoints o puntos de ruptura, se puede configurar para que si se cumple cierta condición te muestre el resultado que quieras de alguno de los registros en la pestaña de log.

Condiciones breakpoints Malware

Os dejo una ayuda de x64dbg aquí. Existen más depuradores pero este es el más utilizado, a veces conviene controlar bien uno y olvidarse del resto.

¿Hacia donde envío todo el tráfico?

Cuando es necesario que el malware se conecte a alguna url o trate de descargar algo, se puede utilizar Fakenet-NG.

Fakenet-NG

O bien usar ApateDNSjunto a un servidor web, por ejemplo XAMPP:

XAMPP analisis url

Pero sin suda, la mejor opción es Remnux.

Remnux, la mejor opción.

Esta distribución está pensada para analizar malware y tiene todas las herramientas necesarias para ello. Una alternativa a lo último que comenté antes sería InetSim. La diferencia está en tenerlo en la misma máquina virtual de análisis o enviarlo a esta otra, en la que podrás jugar con el tráfico mucho más. Usad la que prefiráis.

Remnux Malware Distro

He comentado las herramientas más comunes para análisis estático y dinámico y, como no, siempre hay otras alternativas dependiendo de cada uno y de sus experiencias.

Por otro lado, están las sandboxes online, lo malo es que no son gratuitas, en la mayoría toca pagar. Os recomiendo si tenéis algún equipo que no utilicéis montar CAPE Sandbox. Es muy útil para ver el comportamiento del malware y saber dónde colocar los breakpoints más interesantes. Te da una valoración de 0 a 10 sobre peligrosidad, siendo 10 el más peligroso.

Aquí podéis ver esta plataforma funcionando en condiciones. Fijaros como es capaz de detectar diferentes familias de malware y, si es posible, extraer su configuración.

CAPE Familias de malware

Veamos un ejemplo de la familia Emotet:

Familia Emotet CAPE

Es capaz de extraer todas las Ips que se encuentra en el malware:

IPs EMOTET CAPE

Te muestra una serie de firmas que ha detectado, lo más destacable.

Firmas Malware CAPE

Consulta en Virus Total las Ips para dar más información y te deja el enlace para que lo visites:

CAPE enlace a VirusTotal Malware

Te muestra un árbol de procesos.

Malware Behavioral Analysis

Y extrae la dll de Emotet incluída en el malware inicial y te la clasifica como tal.

Payload DLL Emotet Malware

Otra buena fuente de consulta es Bazaar. Podrás encontrar malware para analizar y lo mejor de todo es que está bien clasificado.

Bazaar Abuse

Es posible descargarlo para su análisis:

Descarga de Malware bazaar

Y ver la información del malware en otras sandboxes online que están integradas con ella.

Anlaisys de Maleste por sandbox

Por último y no menos importante para nuestros análisis son las reglas Yara. Os dejo un listado aquí. Cuantos más repositorios utilicéis, mejor, más probable que detectéis el malware que es o qué comportamiento tiene.

Os recomiendo, descargar la última versión y compilarla para todos los módulos que trae:

./configure --with-crypto --enable-profiling --enable-macho --enable-dex --enable-cuckoo --enable-magic –enable-dotnet

Pero antes, añadid esto. Así estará más completo y podréis analizar con reglas Yara todo lo que queráis.

Hemos dado un repaso a las herramientas más utilizadas para Análisis de Malware en Windows, aunque hay muchas más. No me he metido en documentos ofimáticos, PDF, de scripting, ya que eso daría para otro post, puede que el próximo :) .

Espero que os haya gustado, nos vemos!!