Mastodon Mastodon Mastodon Mastodon

Ingeniería inversa

Actualizado: · CyberSecureFox Editorial Team

La ingeniería inversa es el análisis de software o hardware para entender cómo funciona sin acceso a su código fuente ni a su documentación de diseño.

Cómo se hace ingeniería inversa

Los analistas suelen combinar dos enfoques:

  • Análisis estático: examinar un binario sin ejecutarlo. Desensambladores y descompiladores como IDA Pro, Ghidra (publicado como código abierto por la NSA en 2019) y Binary Ninja convierten el código máquina en ensamblador legible o en pseudo-C.
  • Análisis dinámico: ejecutar el programa bajo un depurador (x64dbg, WinDbg, GDB) o en un entorno instrumentado y observar la memoria, las llamadas a la API y el tráfico de red.

La ingeniería inversa de hardware añade analizadores lógicos y la extracción de firmware de chips de memoria.

Por qué importa en seguridad

  • Análisis de malware: los investigadores desmontan el malware para entender sus capacidades, extraer indicadores y escribir reglas de detección. Sus autores se defienden con ofuscación, packers y trucos antidepuración.
  • Búsqueda de vulnerabilidades en productos de código cerrado, a menudo dentro de programas de bug bounty.
  • Comparación de parches (patch diffing): comparar un programa antes y después de una actualización revela el fallo corregido. Los atacantes usan la misma técnica para crear en pocos días un exploit contra sistemas sin parchear, y por eso es tan importante actualizar rápido.
  • Interoperabilidad y auditoría: comprobar qué hace realmente un dispositivo o una app con los datos de los usuarios.

Aspectos legales y éticos

En muchas jurisdicciones la ingeniería inversa con fines de investigación de seguridad e interoperabilidad está permitida, aunque los contratos de licencia y las leyes de propiedad intelectual (como la DMCA estadounidense) fijan límites. Los investigadores suelen comunicar las vulnerabilidades que encuentran mediante una divulgación coordinada con el fabricante.

Sinónimos:
reverse engineering