Skip to content

Describe cómo desempaquetas una muestra packed para llegar al código original.

Respuesta breve

El desempaquetado recupera el código original que el packer ocultó. Para packers conocidos usas el desempaquetador correspondiente o un emulador. Para packers personalizados desempaquetas manualmente: ejecutas la muestra en un depurador, dejas que el stub descomprima el payload en memoria, encuentras el momento en que salta al original entry point (a menudo poniendo un breakpoint en memoria que pasa a ser ejecutable, o en el tail jump), luego vuelcas la imagen del proceso desde memoria y reconstruyes la import address table con una herramienta como Scylla o PE-sieve. El resultado es un PE ejecutable o analizable que contiene el payload real.

El desempaquetado es la puerta que debes cruzar antes del análisis estático profundo de la mayoría del malware: el desensamblador solo ve el stub hasta que recuperas el payload real. Los entrevistadores lo usan para comprobar si entiendes qué hace un packer con la memoria en tiempo de ejecución, no solo que el packing existe.

Packers conocidos — toma el atajo

Si un detector como Detect It Easy nombra un packer común (UPX, ASPack, builds antiguos de Themida), recurre primero a la herramienta correspondiente: upx -d para UPX, desempaquetadores dedicados, o un desempaquetador basado en emulación que ejecuta el stub en una CPU en sandbox y vuelca el resultado. Esto es rápido y vale la pena probarlo antes de cualquier trabajo manual.

Packers personalizados — desempaquetado manual

Cuando no hay un desempaquetador de serie, desempaquetas a mano:

  1. Ejecuta el stub bajo un depurador (x64dbg). El stub reservará memoria y descomprimirá o descifrará el payload dentro de ella.
  2. Encuentra el original entry point (OEP). Técnicas comunes: pon un breakpoint de hardware de ejecución sobre la memoria recién reservada/escrita para atrapar la primera instrucción del código real; vigila el tail jump (un jmp/ret hacia una sección distinta); o pon un breakpoint en una API delatora que el payload llame pronto. Herramientas como PE-sieve también pueden detectar la región desempaquetada automáticamente.
  3. Vuelca la imagen del proceso desde memoria una vez que la ejecución alcance el OEP.

Reconstruir los imports

Un volcado de memoria en bruto suele tener una import address table rota, porque el packer resolvió las APIs en tiempo de ejecución y la IAT en disco está vacía u obsoleta. Usa Scylla (a menudo integrado con x64dbg) o PE-sieve/pe_unmapper para reconstruir la IAT y reparar el entry point, produciendo un PE limpio y analizable.

Una respuesta de nivel senior nombra la estrategia para encontrar el OEP, el volcado de memoria y la reconstrucción de la IAT como los tres obstáculos reales — y señala que para el triage puede que simplemente leas el payload desempaquetado de un volcado de memoria de un sandbox en lugar de repararlo por completo.

Posibles preguntas de seguimiento

  • ¿Cómo encuentras el original entry point (OEP) para un packer personalizado?
  • ¿Por qué un volcado de memoria suele tener una tabla de imports rota y cómo la reparas?
  • ¿Cuándo le ganaría PE-sieve o un desempaquetador dinámico al desempaquetado manual?

Fuentes

Certificaciones

Consigue 100 preguntas de entrevista de ciberseguridad + respuestas

Déjanos tu correo y te enviaremos el pack en PDF gratuito y el mazo de flashcards.

Sin spam. Cancela tu suscripción cuando quieras.