El malware se crea pensando en el engaño. Los autores de malware quieren pasar desapercibidos para robar, alterar o eliminar la mayor cantidad de información posible.

Ofuscar el malware es una forma de evitar que los archivos asociados con el malware se detecten y se analicen fácilmente. El embalaje es un tipo de técnica de ofuscación.

Ofuscación

La ofuscación toma el código y básicamente lo hace ilegible sin destruir su funcionalidad prevista. Esta técnica se utiliza para retrasar la detección y/o dificultar la ingeniería inversa. La ofuscación tiene un propósito legítimo. Se puede utilizar para proteger la propiedad intelectual u otro código confidencial.

Embalaje

El embalaje es un subconjunto de la ofuscación. Un empaquetador es una herramienta que modifica el formato del código comprimiendo o cifrando los datos.

Aunque se utiliza a menudo para retrasar la detección de códigos maliciosos, todavía existe un uso legítimo para el empaquetado. Algunos usos legítimos incluyen proteger la propiedad intelectual u otros datos confidenciales para que no se copien.

Un código auxiliar es una pequeña porción de código que contiene el agente de descifrado o descompresión utilizado para descifrar el archivo empaquetado.

El proceso de embalaje consta de:

  1. El código original se carga en la herramienta del empaquetador y pasa por el proceso del empaquetador para comprimir o cifrar los datos.
  2. El encabezado ejecutable portátil original (encabezado PE, que consta de imágenes ejecutables y archivos de objetos) y el código original se comprimen o cifran y se almacenan en la sección empaquetada del nuevo ejecutable.
  3. El archivo empaquetado consta de:
    1. Nuevo encabezado PE
    2. Sección(es) empaquetada(s)
    3. stub de descompresión: se utiliza para descomprimir el código
  4. Durante el proceso de embalaje, el punto de entrada original se reubica/oculta en la sección empaquetada. Esto es importante para cualquiera que intente analizar el código. Este proceso dificulta la identificación de la tabla de direcciones de importación (IAT) y el punto de entrada original.
  5. El talón de descompresión se utiliza para descomprimir el código en el momento de la entrega.

Algunos creadores de malware utilizan empaquetadores personalizados, pero también se utilizan empaquetadores comerciales/de código abierto. Algunos empacadores populares incluyen:

  1. UPX
  2. Themida
  3. El protector del enigma
  4. VMProtect
  5. obsidio
  6. MPRENSA
  7. Empaquetador exe 2.300
  8. ExeStealth

Análisis

Es posible automatizar la evaluación del código empaquetado. La herramienta de embalaje integra el trozo en el ejecutable durante el proceso de embalaje. Entonces, si puede determinar la herramienta utilizada para empaquetar el código, es posible que pueda utilizar la misma herramienta para extraer el archivo original.

La mejor (y más rápida) forma de descomprimir malware empaquetado es utilizar una herramienta. Exeinfo PE es una de esas herramientas que analizará el código para determinar si ha sido empaquetado. A menudo también puede identificar el empacador utilizado.

UPX es una herramienta de empaquetado comúnmente utilizada que incluye la función de desempaquetado. Si el malware se empaquetó con UPX, es posible utilizar la línea de comando dentro de la herramienta para descomprimir el código del malware y analizarlo más a fondo con una herramienta de ingeniería inversa. A continuación se proporciona un ejemplo de línea de comando, basado en un archivo llamado pack.exe:

Al ejecutar ese comando, se descomprimirá el archivo pack.exe y se creará un nuevo archivo llamado unpacked.exe. Luego puede colocar el archivo de malware descomprimido en un depurador como Ollydbg para realizar un análisis más detallado.

Existen formas manuales de analizar el malware. Una forma de comenzar el proceso de análisis de malware es ejecutar el comando strings para analizar las cadenas asociadas con el malware. Sin embargo, en el código empaquetado no hay cadenas identificables.

Además, como se indicó anteriormente, el punto de entrada original está oculto en el archivo empaquetado. Conocer el punto de entrada original es importante para cualquier analista que intente analizar el código. Así es como podrán recuperar el código original. El IAT lo utilizan los programas en ejecución para hacer referencia a las funciones que necesita utilizar para ejecutarse correctamente. En los archivos empaquetados, la información IAT está ofuscada, lo que dificulta el desmontaje. Este es otro desafío para los analistas de malware.

Ollydbg se puede utilizar para descomprimir malware. Mientras estás en Ollydbg, puedes evaluar manualmente el código. Si conoce el ensamblaje, puede escanear el código para buscar comandos de ensamblaje válidos versus elementos que no parecen parecerse al ensamblaje.

Puedes cargar el código en Ollydbg. Al cargarlo, Ollydbg le preguntará si desea analizar el código. No analices el código. El malware empaquetado no muestra la información de importación. Puede presionar Ctrl -n para ver información.

Presione F9 para ejecutar el programa.

Desea buscar un salto de cola, lo que podría ser una señal del talón de embalaje. El final de un trozo de descomprimido podría saltar a un lugar lejano en la memoria, que podría ser donde reside la memoria descomprimida.

Una forma de identificar un salto es que podría ir seguido de un lenguaje ensamblador no válido. Por ejemplo, un montón de códigos codificados o números repetidos precedidos por un identificador JMP #######, con un cierre breve JNE encima.

Por ejemplo , se vería así:

Presione F2 para crear un punto de interrupción, luego F9 para ejecutar el malware y luego F8 para dar el salto. Esta debería ser el área desempaquetada. Luego podrías usar OllyDumEX para restablecer un nuevo punto de entrada. Volcará estos nuevos datos. Luego puedes usar una herramienta como Scylla para examinar el archivo volcado. En Scylla, o una herramienta similar, actualice el punto de entrada original (OEP) según el punto de salto en la memoria que identificó anteriormente.

Esto creará un nuevo archivo que podrás cargar en Ollydbg nuevamente. Si tiene éxito, verá todas las llamadas API disponibles y el IAT completo. Con este archivo, puede proceder a evaluar más a fondo el malware ahora descomprimido.

Conclusión

El propósito del malware empaquetado es evitar la detección y la ingeniería inversa . Analizar el malware empaquetado requiere habilidad, así como las herramientas adecuadas.

Hay varias herramientas de empaquetado disponibles, pero muchos autores de malware utilizan herramientas personalizadas. Herramientas como Exeinfo PE pueden examinar el código empaquetado y determinar qué herramienta se utilizó para empaquetar el archivo. Saber esto significa que un analista podría usar esa misma herramienta para posiblemente descomprimir el código.

Los depuradores también se pueden utilizar para analizar manualmente el malware. El análisis manual requiere más tiempo y un conjunto de habilidades más avanzadas. Y dado que el malware es cada vez más sofisticado, los profesionales de la seguridad deben mantenerse informados para seguir luchando contra estas vulnerabilidades.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

Fuentes