Skip to content

¿Qué son los packers y la ofuscación, y cómo se detectan en un binario?

Respuesta breve

El empaquetado comprime o cifra la carga útil real y le antepone un stub que la desempaqueta en memoria en tiempo de ejecución; la ofuscación transforma el código o los datos para resistir la lectura y las firmas. El empaquetado se detecta por una entropía de sección alta cercana a 8,0, una tabla de imports diminuta o solo de stub, nombres de sección inusuales o escribibles-ejecutables como UPX0, un punto de entrada fuera de .text, un gran tamaño virtual frente a un pequeño tamaño en bruto, y detectores como Detect It Easy o PEiD. Ninguno de estos es concluyente por sí solo, así que los analistas ponderan varias señales juntas y confirman observando el desempaquetado en tiempo de ejecución.

La mayoría del malware común y dirigido está empaquetado para reducir su huella y, más importante, para derrotar las firmas estáticas y ralentizar a los analistas. Los entrevistadores preguntan esto para comprobar que sabes reconocer rápidamente un ejemplar empaquetado en lugar de malgastar horas desensamblando un stub.

Empaquetado frente a ofuscación

Un packer toma la carga útil real, la comprime o la cifra, y la envuelve en un pequeño stub de desempaquetado. En tiempo de ejecución, el stub reserva memoria, restaura el código original y le transfiere la ejecución — así que en disco solo ves el stub más un blob opaco. La ofuscación es más amplia: el aplanamiento del flujo de control, instrucciones basura, predicados opacos, cifrado de cadenas y hashing de API hacen todos el código más difícil de leer y de identificar, esté o no empaquetado el archivo. El empaquetado oculta la carga útil; la ofuscación oculta la lógica.

Señales de detección

Ninguna señal por sí sola es prueba — se acumulan:

  • Entropía alta. Secciones que miden cerca de 8,0 bits por byte indican compresión o cifrado. Salvedad: los medios comprimidos y los instaladores legítimos también puntúan alto, así que la entropía es una pista, no un veredicto.
  • Tabla de imports diminuta. Un programa real importa decenas de API; uno empaquetado a menudo importa solo LoadLibrary y GetProcAddress porque lo resuelve todo dinámicamente tras desempaquetar.
  • Secciones extrañas. Nombres como UPX0/UPX1, secciones marcadas como escribibles y ejecutables, o un tamaño en bruto pequeño con un gran tamaño virtual.
  • Ubicación del punto de entrada. Un punto de entrada fuera de .text, en una sección escribible, es sospechoso.
  • Detectores. Detect It Easy (DIE), las firmas de PEiD y los gráficos de entropía identifican muchos packers conocidos por su nombre.

Confirmarlo

La confirmación decisiva es dinámica: ejecutar el ejemplar y verlo reservar memoria ejecutable y escribir en ella (el desempaquetado). Una buena respuesta dice que la detección es probabilística de forma estática y segura de forma dinámica.

Posibles preguntas de seguimiento

  • ¿Por qué un binario empaquetado suele tener solo LoadLibrary y GetProcAddress en sus imports?
  • ¿La entropía alta es prueba de empaquetado? ¿Qué produce falsos positivos?
  • ¿En qué se diferencia la ofuscación del empaquetado en cuanto a lo que protege?

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.