Análisis de malware básico (1)

En este artículo voy a realizar un análisis de un malware básico, para ver el procedimiento y lo que nos encontramos. Los archivos infectados se llaman Lab01-01.exe y Lab01-01.dll y están disponibles en el libro Practical Malware Analysis.

VirusTotal

En primer lugar subimos los archivos a VirusTotal y, comprobamos, que ambos archivos son mayoritariamente identificados como malware por la mayor parte de las herramientas disponibles en VirusTotal.

Concretamente el archivo EXE es reconocido por 42 de las 72 herramientas de VirusTotal:

VirusTotal 01

Mientras que el DLL es reconocido por 37 de 72:

VirusTotal 02

También en VirusTotal, en la sección de Details podemos comprobar cuando fueron compilados ambos ficheros, viendo que ambos fueron el mismo día y a la misma hora difiriendo únicamente en 19 segundos.

VirusTotal 03

Malware ofuscado o empaquetado

El empaquetado o la ofuscación de malware se utiliza para dificultar el análisis y la detección de estos. No se puede analizar el malware de un fichero empaquetado, habría que desempaquetarlo antes de proceder a su análisis. Una de las características de los malware empaquetados es que, al analizarlo sin desempaquetar, comprobaremos que tiene muy pocas strings al analizarse con el comando “Strings”.

Una muy buena opción para detectar malware empaquetado es hacer uso del programa PEiD, como hemos realizado en las prácticas. A través de este programa no solo se puede obtener si el archivo está empaquetado sino que también se puede conocer el programa y la versión con la que fue empaquetado, algo de gran utilidad para proceder al desempaquetado.

Los métodos de desempaquetado son muy variables dependiendo del mecanismo con el que haya sido empaquetado, por ejemplo, existen herramientas que automatizan el desempaquetado como Upx Unpacker o el plugin FSG v1.33 de PEiD. Otro método de desempaquetado es hacerlo de forma más manual a través de herramientas como OllyDbg y módulos de esta. Así pues, procedemos a utilizar PEiD sobre ambos ficheros, y obtenemos la siguiente información:

PEiD 01

PEiD 02

En ambos archivos no nos identifica ningún compresor y nos informa de que los archivos fueron compilados con el Microsoft Visual C++ 6.0, por lo que no tenemos indicios de que los archivos están comprimidos.

Análisis de importaciones

El linkado de funciones de librería se utiliza para no tener que reimplementar ciertas funciones que ya están disponibles en otro programas y se puede hacer uso de ellas. El linkado se puede hacer de forma estática, dinámica o en tiempo de ejecución.

Conocer las librerías enlazadas a un malware (importaciones) es algo esencial para intentar comprender su funcionamiento. Existen diferentes mecanismos para conocer las funciones linkadas a un malware, como por ejemplo la herramienta Dependency Walker. En este caso hemos preferido hacer uso de una herramienta adicional incluida en radare2 llamada rabin2. Con la opción ‘-i’ de rabin2 podemos ver las funciones utilizadas en las diferentes librerías linkadas al programa y, conociendo estas funciones, podemos comenzar a suponer las intenciones y funcionalidades generales de dicho programa.

Aplicamos rabin2 sobre los dos ficheros y obtenemos lo siguiente:

Importaciones 01

Importaciones 02

Con respecto al archivo EXE podemos comprobar que busca, copia y crea ficheros (diferentes funciones CreateFile y FindFile y la función CopyFileA). La librería MSVCRT.dll está relacionada con Microsoft Visual C++ por lo que están incluidos en la mayoría de programas.

Con respecto al archivo DLL, ignorando la librería MSVCRT por lo dicho anteriormente, tenemos la creación de procesos (CreateProcessA) y la pausa de la ejecución (Sleep). También tenemos otra librería, WS2_32.dll, que tiene funciones como connect o socket y que están relacionadas con conexiones por la red. El hecho de tener funciones de red y el uso de CreateProcessA y Sleep pueden son indicios de que está intentando establecer una backdoor.

Evidencias o indicadores

Analizando el archivo EXE a través del comando strings encontramos la siguiente evidencia basada en host:

Indicador 01

Como podemos observar el programa malicioso juega con el fichero kernel32.dll cambiando la ‘l’ (letra ele) por un ‘1’ (número uno). Por lo que podríamos utilizar esta información para localizar infecciones.

Por otro lado, analizando de la misma forma el archivo DLL encontramos el siguiente indicador basado en la red:

Indicador 01

El tramo final de lo obtenido es lo interesante en cuanto a indicadores basados en la red puesto que nos devuelve una dirección IP, la 127.26.152.13, que está dentro del rango de direcciones de loopback por lo que nos indica que debe ser un malware de prueba al no tener intención de comunicarse con el exterior.

Conclusiones

Por todo lo averiguado en los apartados anteriores se puede decir que es un malware de pruebas, porque no intenta establecer una conexión con el exterior, que intenta camuflarse a través del fichero kerne132.dll situado en la carpeta System32 de Windows y que, el ejecutable, hace uso del archivo DLL para abrir una backdoor desde la que tener acceso al sistema infectado.

Concretamente el archivo EXE manipula ficheros para crear un archivo malicioso llamado kerne132.dll mientras que el DLL se encarga de las conexiones a la red, intentando establecer una conexión con la IP 127.26.152.13.

La relación entre ambos ficheros es que el EXE trata de infectar y ocultarse y el DLL trata de realizar la conexión con la máquina atacante para proporcionarle acceso.

Written on January 15, 2021
Malware