Desempacar y analizar malware desconocido
Tengo un archivo misterioso para analizar.En la superficie, es solo un archivo ejecutable de Windows no amenazante.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 es común con el malware, supongo que esta muestra está llena.Sin embargo, es mejor asegurarse, y también saber qué Packer se usó.Para hacer esto, lo abrimos con die y vemos la entropía del archivo:
La parte a mirar aquí es la entropía (~ 8) muy alta para la mayoría 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 una aleatoriedad completa, que es común en el cifrado (idealmente).Un archivo típico fluctuaría así:
Ahora que sabemos que está lleno, también debemos averiguar qué Packer se usó.Hay muchas maneras de encontrar esto, pero lo más fácil es mirar los encabezados de las secciones en la primera imagen de entropía.Vemos que existe un encabezado del nombre UPX2
.UPX es uno de los empacadores más comunes disponibles.Se usa para muchas aplicaciones legítimas, pero el malware de bajo grado también lo usa porque es gratuito y fácil de usar.
Los empacadores se utilizan para reducir el tamaño de los archivos ejecutables.Esencialmente, cuando un programa quiere reducir su tamaño, comprimirá todo el archivo, luego adjuntará un pequeño programa a la dirección de inicio de sí mismo que lo descomprimirá en tiempo de ejecución.Es como criticar un archivo para enviarlo a través de Internet, y también enviar una copia de 7zip con él para que el usuario desempaques el contenido.Esta es la razón por la que las aplicaciones empaquetadas a menudo tienen entropía muy alta y estable.El contenido are encriptado.
Mirar el código lleno sería inútil, por lo que necesitamos desempacarlo antes de hacer cualquier otra cosa.Hay algunas maneras de desempacar el malware, pero voy a desempacar manualmente este con el fin de tener una publicación de blog más genial.Comienzo 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, luego hacer una pausa nuevamente.
Ahora que estamos en pausa, comenzamos a buscar el final de la parte del desempaquador del código 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 cero.
El salto final antes de las operaciones de cero indica que el programa ha sido desempaquetado, y ahora va a saltar a la ejecución de los datos desempaquetados.Entonces, después de detenerse antes del salto, avanzamos una instrucción y hacemos una pausa nuevamente.Esto nos llevará, con suerte, el comienzo del programa "real".
Podemos usar un complemento llamado Scylla
para forjar el nuevo programa desempaquetado.Utilizamos la AutoSearch IAT y obtenemos funciones de importaciones para crear las tablas de importación para nosotros, luego volcamos el programa al escritorio.
Ahora tenemos un volcado del programa desempaquetado, así que verifiquemos que lo hiciéramos correctamente revisando la entropía nuevamente.
Así que hemos verificado que desempaquetamos con éxito el malware.El siguiente paso sería analizar sus actividades y hacer un informe.