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
- Máquina virtual de análisis de malware OALabs , OALabs
- Cómo obtener y configurar una máquina virtual de Windows gratuita para análisis de malware , Zeltser Security Corp.
- Análisis de malware: primeros pasos: creación de su laboratorio , medio
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
- Morir
- PEID
Desensambladores/depuradores
- OllyDbg
- AIF
- Cortador
herramientas de educación física
- IMPREC
- PEoso
Otro
- Process Hacker (Monitorear recursos del sistema)
- Wireshark (analizador de protocolos de red)
- HxD (editor hexadecimal)
- Resource Hacker (Extrae recursos de ejecutables)
- VirusTotal (Análisis en línea de muestras de malware y URL)
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:
- Tenga en cuenta el OEP = 1000
- 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
- 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)
- Revelando malware empaquetado y sistemas seguros
- Impresionante análisis de malware , Ryan Shipp (GitHu