Análisis de malware
Reconociendo el malware empaquetado y sus métodos de desempaquetado – Parte 1
octubre 28, por Ninja de seguridad
En esta serie de artículos, aprenderemos sobre las características que posee un ejemplar de malware empaquetado y cómo descomprimirlo. En la sección de descomprimir, veremos las formas tanto automáticas como manuales de descomprimir el malware.
La mayoría de los autores de malware quieren que sus muestras de malware estén protegidas de la mayoría de los productos antimalware, y esto se logra mediante empaquetadores. Con los empacadores, a veces es difícil realizar ingeniería inversa en la muestra para deducir su funcionalidad. Sin embargo, todos sabemos que siempre que sea necesario ejecutar un malware comprimido, cifrado o empaquetado, lo hará en forma descomprimida y descifrada mientras esté en la memoria.
Cuando veamos una muestra de malware empaquetada, notaremos que revelará información muy limitada sobre sí mismo; por ejemplo, habrá muchas menos cadenas que puedan ser visibles desde la muestra, un número muy limitado de llamadas a la tabla de direcciones de importación (IAT), etc. .
Ahora hay varios empacadores disponibles. UPX es el famoso entre ellos y comúnmente se encuentra como empacador. En la siguiente sección, veremos las diversas herramientas que pueden ayudarnos a concluir que un espécimen bajo investigación está empaquetado. Tenga en cuenta aquí que no todos los ejecutables empaquetados son maliciosos. Empaquetar ejecutables legítimos es una práctica común.
Comenzaremos discutiendo las herramientas que se pueden utilizar para analizar las propiedades estáticas de una muestra para ver si está empaquetada o no.
- Cuerdas: como se mencionó anteriormente, la utilidad de cuerdas se puede utilizar para extraer las cuerdas de la muestra. En algún ejemplar veremos muy pocos hilos o incluso veremos el nombre de empaquetadores conocidos como UPX. Por ejemplo, a continuación se muestra una captura de pantalla de un malware empaquetado que utiliza la utilidad strings2:
- Histograma: los ejecutables normales suelen tener una frecuencia de bits variable, mientras que los ejecutables empaquetados tienen una frecuencia de bits uniforme. A continuación se muestra un ejemplo donde se puede ver la diferencia entre una versión empaquetada y sin empaquetar del mismo espécimen. Se utiliza una herramienta denominada ‘bytehist’ para dibujar estos histogramas.
- Otras herramientas: también podemos analizar las propiedades estáticas de un espécimen malicioso utilizando herramientas como pescanner, como se puede ver a continuación.
Hay otras herramientas disponibles como ExeInfo PE que se pueden utilizar para determinar si la muestra de malware está empaquetada o no.
Una vez que hayamos llegado a la conclusión de que la muestra de malware está empaquetada, nuestro siguiente paso es encontrar una manera de descomprimirla. Hay un par de métodos para hacer lo mismo, es decir, mediante desembalaje manual o automático. Comenzaremos con el proceso de desembalaje automatizado donde utilizaremos algunas herramientas para descomprimir la muestra:
Como hemos visto anteriormente, la muestra de malware está repleta de upx. La utilidad UPX también tiene una función incorporada para desempacar la muestra usando el siguiente comando:
- Upx -d -o nombre de la muestra desempaquetada con directorio de salida ubicación de la muestra empaquetada
Después de descomprimir, ejecutemos nuestra utilidad strings2 en el malware descomprimido:
Podemos comparar la salida string2 de nuestra salida string2 anterior. En la versión descomprimida, hay muchas más cadenas visibles.
Ahora que tenemos la versión desempaquetada del espécimen. ¿Qué debemos hacer? Ejecútelo, ¿verdad? Pero espere, si ejecuto este espécimen, aparece el siguiente error en ollydbg.
¿Porqué es eso? Si lo sabes, entonces tendrás un punto extra. Si no lo hace, entonces es una característica de seguridad incorporada en Windows conocida como Aleatorio del diseño del espacio de direcciones (ASLR) que carga la imagen aleatoriamente ignorando por completo el valor del campo ImageBase configurado en el ejecutable. Esto se implementa para dificultar que un atacante adivine la ubicación de la memoria donde está cargada la imagen y se aplica de forma predeterminada en todos los ejecutables de Windows 8.1. Entonces debes preguntarte cómo se alinean otras secciones en la memoria si la imagen en sí se carga aleatoriamente. Debido a otra sección llamada valor de ‘reubicación’, la dirección de otras secciones se ajusta mientras se carga en la memoria. Con Windows XP, el sistema operativo no aplicaba ASLR, por lo que este ejemplar podría haberse ejecutado sin problemas y sin ningún problema.
Para ejecutar estos especímenes en versiones recientes de Windows o en sistemas operativos donde se aplica la función ASLR, primero debemos desactivar ASLR para nuestro ejemplar de malware para que el campo ImageBase entre en vigor. Esto lo podemos hacer utilizando diversas utilidades como CFF Explorer. En CFF Explorer, en el encabezado opcional Características de DLL – desmarque ‘DLL puede moverse’. Esto deshabilitará la carga aleatoria de la imagen en la imagen.
También podríamos usar una utilidad como setdllcharacteristics para deshabilitar ASLR en una muestra usando el modificador -d para deshabilitar la base dinámica. A continuación se muestra una captura de pantalla de setdllcharacteristics en acción:
Entonces, en este artículo, hemos visto cómo reconocer el malware empaquetado y cómo descomprimirlo usando utilidades como UPX. También hemos visto cómo solucionar el problema de ASLR para ejecutar muestras de malware desempaquetadas. En el próximo artículo, veremos cómo lidiar con empaquetadores desconocidos o personalizados para los cuales no existe una utilidad automática. ¡Manténganse al tanto!