Análisis de malware

Reconociendo el malware empaquetado y sus métodos de desempaquetado – Parte 2

noviembre 3, por Ninja de seguridad

En la Parte 1 de esta serie de artículos, analizamos las formas de reconocer ejecutables empaquetados y varias formas de automatizar el proceso de descompresión. En este artículo, veremos el proceso manual de descomprimir una muestra de malware empaquetada.

En el último artículo, vimos cómo la muestra de malware estaba empaquetada con UPX y utilizamos la utilidad UPX para descomprimirla. Pero imagínese si tenemos un empaquetador personalizado para el cual no hay un desempaquetador directo disponible. En ellos, debemos adoptar el enfoque manual para llegar al Código Original para un análisis más detallado.

Sabemos que cuando el programa se ejecuta, está disponible en el código original en la memoria, por lo que si volcamos la memoria de un proceso en ejecución empaquetado, podemos tener lo que se llama una muestra desempaquetada. Podemos utilizar herramientas como Scylla, Import Fixer, etc. para volcar la memoria de un proceso en ejecución.

A continuación se muestra una instantánea de Scylla donde primero debemos adjuntarle el espécimen de malware activo para extraer el contenido de su memoria. Debería estar ejecutando el proceso. Si intentamos adjuntar el proceso en estado de pausa e intentamos cargar IAT, entonces no puede encontrar ningún IAT en el OEP mencionado. El mismo error se puede ver en rojo a continuación en la captura de pantalla. Por lo tanto, asegúrese de que la muestra se esté ejecutando en el depurador. Además, tenga en cuenta que el OEP que se menciona a continuación no tiene por qué ser el OEP real y debemos encontrar el valor real (más sobre esto más adelante).

Después de ejecutar el proceso en un entorno controlado, podemos ver el siguiente mensaje de éxito «IAT encontrado» enviado a OEP.

Una vez que tengamos el IAT creado, podemos hacer clic en Obtener importaciones para obtener toda la información de importaciones a las que este espécimen realiza llamadas. Podemos ver aquí que están en verde, por lo que podemos simplemente hacer clic en volcar para volcar una copia de esto.

Sin embargo, existen pocos desafíos a la hora de analizar muestras desechadas.

Para llegar al OEP y volcar el proceso desde allí, cargaremos el programa en OllyDbg. Antes de cargar, asegúrese de borrar la bandera ASLR del espécimen (para obtener más detalles sobre cómo arreglar ASLR, consulte la Parte 1 de esta serie de artículos). Después de eso, cargue el programa en OllyDbg. Mientras examina un espécimen empaquetado en UPX, busque una instrucción de salto seguida de muchos ceros. A veces debemos adoptar un enfoque de un solo paso para saber cuándo comienza la OEP, pero a veces hay sugerencias que podemos usar para ver la llamada a la OEP directamente.

Esta instrucción jmp indicará el final del código de descompresión. Para un análisis controlado, establezca allí un punto de interrupción. ¿Alguna idea de cuál es esta dirección? Sí, es OEP.

Ahora que sabemos que este puede ser el OEP real, podemos volcar el contenido usando la utilidad de volcado OllyDBG. A continuación se muestra una captura de pantalla del mismo. Necesitamos hacer clic en «Obtener EIP como OEP» para reemplazar el valor del Punto de entrada.

Luego de ese clic, Dump y OllyDbg te pedirán la confirmación con todos los cambios mencionados.

Ahora todavía necesitamos arreglar el IAT y las tablas de importación, así que abra Scylla y vuelva a adjuntarle la muestra de malware. Reemplace el valor de OEP con lo que hemos descubierto anteriormente. Luego haga clic en «Obtener importaciones».

Una vez que se resuelvan todas las importaciones, haga clic en Fix Dump y señale el proceso que descargamos de OllyDbg. Se creará un nuevo proceso con el nombre SCY agregado al proceso volcado. Este nuevo proceso ahora se puede ejecutar y ahora podemos realizar análisis estáticos, dinámicos y de código en él.

Entonces, en este artículo, hemos visto cómo hemos usado Scylla y OllyDBG para encontrar OEP, corregir IAT e importaciones para crear un proceso desempaquetado en ejecución.