En este artículo, comprenderá mejor qué es un ejecutable empaquetado y cómo analizar y descomprimir malware. Finalmente, conocerá los principales empaquetadores utilizados en malware.

¿Qué son los ejecutables empaquetados?

Es un ejecutable que se ha comprimido en primer lugar para minimizar el tamaño del archivo, pero a menudo para complicar el proceso de reversión. No confundir con las compresiones estándar (rar/zip).

Los ejecutables empaquetados son archivos independientes que se pueden ejecutar mientras aún están comprimidos. Un empaquetador utiliza técnicas de compresión estándar (LZO, LZMA,…) en el archivo; Por supuesto, el sistema operativo no reconocerá estas modificaciones de código, pero el empaquetador agrega una rutina de descompresión al ejecutable. Cuando se ejecuta, la rutina de desempaquetado descomprime el código y lo carga en la memoria en su estado original.

1: Ejemplo genérico de ejecutable empaquetado

Análisis de malware empaquetado

1. Configurar el entorno virtual

Para analizar un malware en general, primero debes aislar ese malware en un entorno virtual (VMware o VirtualBox) con las herramientas de análisis, para no infectar tu máquina principal. Para más detalles, consulte los siguientes enlaces

2. Herramientas de análisis

A continuación, debe tener configuradas sus herramientas de análisis. En caso de que no estés seguro, aquí tienes una lista:

Identificador de escáneres/empaquetador

Desensambladores/depuradores

herramientas de educación física

Otro

Una vez que haya terminado, cree una instantánea del estado actual de la VM.

3. Análisis

Ahora que todo está configurado, puede comenzar a analizar la muestra empaquetada. Primero, analiza el malware en VirusTotal para comprobar si los antivirus lo reconocen:

2: Detección de una muestra en VirusTotal

Como puede ver, el archivo ha sido reconocido por la mayoría de los sistemas antivirus.

Ahora analice la muestra usando DiE ( 3 ) para verificar si está empaquetada y el empacador que utiliza:

3: Escaneo (DiE)

4: Entropía (DiE)

Como puede ver, hay tres secciones (4), lo que demuestra que está empaquetado por UPX. Incluso si marca que no está empaquetado, es porque los autores de malware a veces usan empaquetado personalizado o versiones modificadas de empaquetadores o codifican el código (cambian nombres de secciones, agregan código basura, etc.).

Desembalaje manual

En general, el desembalaje es el siguiente:

1. Rastrea el código

Eso no es difícil si encuentra un empaquetador simple como UPX o ASPack. Pero cuando se trata de empacadores avanzados, puede ser difícil, ya que pueden usar todo tipo de trucos para impedir que desempaques.

2. Encuentre el punto de entrada original (OEP)

Hay varias formas de obtener el OEP. Esto depende del empaquetador y su algoritmo de descifrado, o de si está familiarizado con los puntos de entrada generados por diferentes compiladores. O puede identificar dónde se escribe el código descomprimido durante el seguimiento. También puede utilizar API comunes como GetCommandLine o GetVersionEx para acercarse al OEP.

En el caso de UPX, la rutina de descifrado comienza de la siguiente manera (5) y termina en la 6:

5: Inicio de la rutina de descifrado UPX (Cortador)

6: Fin de la rutina de descifrado UPX (usando Cutter)

Ese último salto (sección jmp.UPX0) conducirá directamente al código descomprimido.

Intente cargar la muestra en OllyDbg (7), establezca un punto de interrupción en ese salto y ejecute la aplicación, la aplicación se interrumpirá, presione F7 y se encontrará en el código original descomprimido.

7: Código original desempaquetado (OllyDbg)

3. Volcar el código descomprimido

Después de encontrar el OEP original, tendrás que desechar la imagen de memoria del binario.

Al usar OllyDbg, existe un complemento llamado OllyDump (8). Haga clic en «Volcar proceso depurado».

8: complemento OllyDump de OllyDbg

Aparece un cuadro (9). Desmarque Reconstruir importación y haga clic en Volcar.

9 – Caja de volcado OllyDump

Notas:

  1. Tenga en cuenta el OEP = 1000
  2. Mantenga el proceso en ejecución en OllyDbg

4. Importación reconstruida

Ahora debe reconstruir las importaciones utilizando ImpRec (10), iniciar la herramienta y seleccionar el proceso en ejecución (malware.exe).

10: ImpREC

Actualice el campo OEP a 1000 y haga clic en IAT AutoSearch. Recibirás un mensaje que dice lo siguiente:

11: Búsqueda automática ImpREC IAT

Haga clic en Aceptar y luego haga clic en Obtener importación. Deberías obtener las funciones importadas con su estado (válido: SÍ) (12):

12: Funciones importadas de ImpREC

5. Guarde el archivo descomprimido

Ahora que tienes todas las importaciones resueltas, todo lo que tienes que hacer es hacer clic en «Reparar volcado en ImpRec» y elegir el archivo que guardaste antes, y listo.

Hay otras variaciones que no se tratan en los pasos anteriores y que requerirían más trabajo. Por ejemplo, algunos empaquetadores no resuelven completamente las importaciones. También existe la técnica del Código Robado, que dificulta la búsqueda y recuperación de OEP, y muchos trucos que utilizan los empacadores para dificultar la marcha atrás. Aún así, los pasos mencionados pueden cubrir la mayor parte de lo que existe.

Los 5 empaquetadores más populares utilizados en malware

Esta sección muestra los principales empaquetadores utilizados por el malware. El análisis fue realizado por ShadowServer utilizando la herramienta SigBuster (13).

13: Inspección SigBuster

1. Personalizado/desconocido

Los autores de malware utilizan empaquetadores personalizados la mayor parte del tiempo. Por ejemplo, Allaple Polymorphic Packer no es realmente un empaquetador sino un programa de malware independiente, pero su motor polimórfico utiliza técnicas similares al empaquetado.

2.UPX

Un empaquetador ejecutable de código abierto que admite varios formatos de archivo de diferentes sistemas operativos. Los autores de malware lo utilizan mucho porque es de código abierto y puede modificarse.

3. NsPack

Una maravillosa herramienta que puede comprimir archivos exe, dll, ocx y scr de 32 bits y 64 bits. También es compatible con C#.

4. ASPack

Un empaquetador ejecutable Win32 avanzado. Hace que los ejecutables de Windows sean más pequeños hasta en un 70% (el índice de compresión es entre un 10 y unmayor que el estándar ZIP). También utiliza código que se modifica automáticamente, lo que hace que los puntos de interrupción del software sean inútiles.

5. Instalar sistemas

Esto lo utilizan principalmente ransomware y FakeAV para ocultar su código y evitar la detección; por ejemplo, NSIS o Inno Setup.

Conclusión

Este fue solo un ejemplo simple de un malware empaquetado que no utiliza nada más que compresión. En el mundo real, existe malware más sofisticado que realmente sabe cómo ocultar su código, por lo que cualquiera que realice ingeniería inversa debe aprender a mantenerse al día con este peligro.

Fuentes

  1. Guía de campo de análisis forense de malware para sistemas Windows , guías de campo de análisis forense digital (Cameron H. Malin, Eoghan Casey, James M. Aquilina)
  2. Revelando malware empaquetado y sistemas seguros
  3. Impresionante análisis de malware , Ryan Shipp (GitHu