Descomprimiendo y analizando malware desconocido
Tengo un archivo misterioso que analizar. A primera vista, es sólo un archivo ejecutable de Windows que no representa ninguna amenaza. Su nombre es malware.exe
Ejecutarlo aparentemente no hace nada, excepto abrir una ventana de consola en blanco durante unos segundos, lo que indica que al menos algo está sucediendo. Como suele ocurrir con el malware, asumo que esta muestra está empaquetada. Sin embargo, es mejor asegurarse y también saber qué empacador se utilizó. Para ello lo abrimos con DIE y vemos la entropía del archivo:
La parte a considerar aquí es la entropía muy alta (~8) para la mayor parte del archivo. La entropía es simplemente una medida de la "aleatoriedad" de los datos dentro de un archivo. Puede variar de 0 a 8. Una puntuación de 8 significaría aleatoriedad total, lo cual es común en el cifrado (idealmente). Un archivo típico fluctuaría así: 
Ahora que sabemos que está empaquetado, también debemos averiguar qué empaquetador se utilizó. Hay muchas formas de encontrar esto, pero la más sencilla es mirar los encabezados de las secciones en la primera imagen de entropía. Vemos que existe un encabezado con el nombre UPX2. UPX es uno de los empacadores más comunes disponibles. Se utiliza para muchas aplicaciones legítimas, pero el malware de bajo nivel también lo utiliza porque es gratuito y fácil de usar.
Los empaquetadores se utilizan para reducir el tamaño de los archivos ejecutables. Esencialmente, cuando un programa quiere reducir su tamaño, comprimirá el archivo completo y luego adjuntará un pequeño programa a su dirección de inicio que lo descomprimirá en tiempo de ejecución. Es como comprimir un archivo para enviarlo a través de Internet y también enviar una copia de 7zip para que el usuario descomprima el contenido. Ésta es la razón por la que las aplicaciones empaquetadas suelen tener una entropía muy alta y estable. Los contenidos están encriptados.
Mirar el código empaquetado sería inútil, por lo que debemos descomprimirlo antes de hacer cualquier otra cosa. Hay algunas formas de descomprimir malware, pero voy a descomprimir esta manualmente con el fin de tener una publicación de blog más interesante. Empiezo adjuntando mi depurador, x32dbg al programa. El depurador se detiene automáticamente. 
Lo primero que hacemos es ejecutar el programa hasta el punto de entrada y luego pausarlo nuevamente.
Ahora que estamos en pausa, comenzamos a buscar el final de la parte del código del desempaquetador dentro del binario. En este caso, estaba cerca del final del código: una instrucción final jmp antes de que el espacio se llene con operaciones de puesta a cero. 
El salto final antes de las operaciones de puesta a cero indica que el programa ha sido descomprimido y ahora va a saltar a la ejecución de los datos descomprimidos. Entonces, después de hacer una pausa antes del salto, avanzamos una instrucción y volvemos a hacer una pausa. Esto nos llevará, con suerte, al inicio del programa "real". 
Podemos usar un complemento llamado Scylla para crear el nuevo programa descomprimido. Usamos las funciones IAT Autosearch y Get Imports para crear las tablas de importación y luego volcamos el programa al escritorio. 
Ahora tenemos un volcado del programa descomprimido, así que verifiquemos que lo hicimos correctamente comprobando la entropía nuevamente.
Así que hemos verificado que descomprimimos exitosamente el malware. El siguiente paso sería analizar sus actividades y realizar un informe.