Manual DeObfuscation

Aprende a hackear AWS desde cero hasta convertirte en un héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Técnicas de Desofuscación Manual

En el ámbito de la seguridad del software, el proceso de hacer que el código oscurecido sea comprensible, conocido como desofuscación, es crucial. Esta guía explora varias estrategias para la desofuscación, centrándose en técnicas de análisis estático y en el reconocimiento de patrones de ofuscación. Además, presenta un ejercicio para su aplicación práctica y sugiere recursos adicionales para aquellos interesados en explorar temas más avanzados.

Estrategias para la Desofuscación Estática

Cuando se trata de código ofuscado, se pueden emplear varias estrategias según la naturaleza de la ofuscación:

  • Código DEX (Java): Un enfoque efectivo implica identificar los métodos de desofuscación de la aplicación, luego replicar estos métodos en un archivo Java. Este archivo se ejecuta para revertir la ofuscación en los elementos objetivo.

  • Java y Código Nativo: Otro método es traducir el algoritmo de desofuscación a un lenguaje de script como Python. Esta estrategia destaca que el objetivo principal no es comprender completamente el algoritmo, sino ejecutarlo de manera efectiva.

Identificación de la Ofuscación

Reconocer el código ofuscado es el primer paso en el proceso de desofuscación. Los indicadores clave incluyen:

  • La ausencia o mezcla de cadenas en Java y Android, lo que puede sugerir ofuscación de cadenas.

  • La presencia de archivos binarios en el directorio de activos o llamadas a DexClassLoader, que sugieren desempaquetado de código y carga dinámica.

  • El uso de bibliotecas nativas junto con funciones JNI no identificables, lo que indica una posible ofuscación de métodos nativos.

Análisis Dinámico en la Desofuscación

Al ejecutar el código en un entorno controlado, el análisis dinámico permite observar cómo se comporta el código ofuscado en tiempo real. Este método es particularmente efectivo para descubrir el funcionamiento interno de patrones de ofuscación complejos diseñados para ocultar la verdadera intención del código.

Aplicaciones del Análisis Dinámico

  • Desencriptación en Tiempo de Ejecución: Muchas técnicas de ofuscación implican encriptar cadenas o segmentos de código que solo se descifran en tiempo de ejecución. A través del análisis dinámico, estos elementos encriptados pueden capturarse en el momento del descifrado, revelando su forma real.

  • Identificación de Técnicas de Ofuscación: Al monitorear el comportamiento de la aplicación, el análisis dinámico puede ayudar a identificar técnicas específicas de ofuscación que se están utilizando, como la virtualización de código, empaquetadores o generación de código dinámico.

  • Descubrimiento de Funcionalidades Ocultas: El código ofuscado puede contener funcionalidades ocultas que no son evidentes mediante el análisis estático solo. El análisis dinámico permite observar todos los caminos de código, incluidos aquellos ejecutados condicionalmente, para descubrir tales funcionalidades ocultas.

Referencias y Lecturas Adicionales

  • BlackHat USA 2018: “Desempaquetando el Desempaquetador Empaquetado: Ingeniería Inversa de una Biblioteca Anti-Análisis de Android” [video]

  • Esta charla analiza la ingeniería inversa de una de las bibliotecas nativas anti-análisis más complejas que he visto utilizadas por una aplicación de Android. Cubre principalmente técnicas de ofuscación en código nativo.

  • REcon 2019: “El Camino hacia la Carga Útil: Edición Android” [video]

  • Esta charla discute una serie de técnicas de ofuscación, únicamente en código Java, que una botnet de Android estaba utilizando para ocultar su comportamiento.

Última actualización