Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution
Este artículo propone una técnica de análisis segura basada en ejecución simbólica que combina la precarga especulativa de bibliotecas con ganchos personalizados para recuperar Grafos de Flujo de Control a partir de código cargado dinámicamente, logrando mejoras significativas en la recuperación de nodos y aristas en comparación con el análisis estático, al tiempo que mantiene una precisión y un recuerdo del 100% en la detección de bibliotecas.
Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo
Imagina que intentas entender cómo funciona una máquina compleja observando sus planos. En el mundo del software informático, estos planos se llaman Gráficos de Flujo de Control (CFG). Mapean cada posible ruta que puede tomar un programa, mostrándote hacia dónde va el código a continuación.
Sin embargo, el software moderno (y los programas maliciosos como el malware) ha aprendido un truco para ocultar sus planos. Utilizan una técnica llamada carga dinámica. En lugar de tener todas sus partes integradas en la máquina principal desde el inicio, mantienen algunas partes en una caja cerrada y solo abren la caja y ensamblan las partes mientras la máquina está en ejecución.
El Problema: Las Partes Invisibles
Las herramientas tradicionales de análisis de software son como arquitectos estáticos. Observan los planos sobre la mesa y dicen: "Aquí está la ruta". Pero si la máquina extrae una parte oculta de una caja mientras se ejecuta, el arquitecto estático no ve nada. Ven un espacio en blanco donde debería haber una puerta, por lo que no pueden dibujar la ruta a través de ella.
Este es un problema enorme para la seguridad. Si no puedes ver las rutas ocultas, no puedes determinar si la máquina es segura o si es una trampa.
La Solución: El Detective "Especulativo"
El autor de este artículo, O. S. Mostovyi, construyó un nuevo tipo de herramienta detective. En lugar de solo observar los planos, esta herramienta actúa como un simulador que viaja en el tiempo.
Así es como funciona, usando una analogía simple:
- La Simulación (Ejecución Simbólica): Imagina que tienes un robot que puede ejecutar el software sin realmente encenderlo de verdad. Ejecuta el código en un mundo de "qué pasaría si". No ejecuta las partes peligrosas; simplemente las piensa.
- La Arquitectura de Dos Niveles: La herramienta tiene dos sentidos especiales trabajando juntos:
- Nivel 1 (El Bibliotecario): Esta parte observa cuando el software solicita nuevas partes. Cuando el software dice: "Necesito una biblioteca de la red" o "Necesito un archivo de un lugar oculto de la memoria", el Bibliotecario intercepta la solicitud. Incluso si el software dice que el nombre del archivo está cifrado o alterado, la herramienta utiliza matemáticas para determinar qué es realmente el archivo. Luego, carga "especulativamente" ese archivo en la simulación para que el robot pueda verlo.
- Nivel 2 (El Agente de Tráfico): Esta parte observa las rutas por las que viaja el robot. Cuando el robot llega a un cruce donde la dirección depende de una variable oculta (como una dirección secreta), el Agente de Tráfico verifica los escenarios de "qué pasaría si" para ver a dónde lleva realmente esa ruta.
Cómo Maneja Trucos Difíciles
El artículo explica que los actores maliciosos utilizan muchas formas de ocultar su proceso de carga. La herramienta está diseñada para atraparlos a todos:
- Ejecución Sin Archivos: Algunos programas crean archivos que no existen en el disco duro, viviendo solo en la memoria RAM. La herramienta ve estos archivos invisibles.
- Carga por Red: Algunos programas descargan su código de Internet mientras se ejecutan. La herramienta simula esta descarga para ver qué llega.
- Nombres Cifrados: Si el programa dice "Cargar archivo [código cifrado]", la herramienta utiliza un solucionador matemático para descifrar el código y encontrar el nombre real del archivo.
Los Resultados: Completando el Mapa Faltante
Para probar esto, el autor creó 16 "trampas" diferentes (puntos de referencia) que utilizaban diversas técnicas de ocultamiento, desde trucos simples hasta cifrado complejo y multifase.
Los resultados fueron muy claros:
- Completitud: La herramienta encontró 29.8% más rutas (nodos) y 26.5% más conexiones (aristas) que las herramientas estáticas tradicionales. Completó los espacios en blanco en el mapa.
- Precisión: Fue 100% precisa. Cada vez que dijo que encontró una biblioteca oculta, tenía razón. No generó ninguna falsa alarma.
- Seguridad: Debido a que utilizó simulación (ejecución simbólica) en lugar de ejecutar realmente el código peligroso, pudo analizar estos programas complicados de forma segura, sin el riesgo de que el malware escapara o causara daños.
Las Limitaciones
El autor es honesto sobre lo que la herramienta no puede hacer aún:
- Es un Detective, No un Mago: Puede encontrar las puertas ocultas y dibujar las rutas, pero no "deshace" automáticamente la ofuscación compleja (alteración) para hacer el código fácil de leer. Eso sigue siendo un problema difícil.
- Límites de Plataforma: Actualmente funciona bien para sistemas Linux (específicamente archivos ELF) en ciertos chips de computadora, pero no para Windows u otros sistemas operativos aún.
- Flujos Ocultos: Rastrea datos que se mueven explícitamente, pero a veces pasa por alto datos que se mueven de formas sutiles e indirectas (como a través de funciones matemáticas complejas).
Resumen
En resumen, este artículo presenta un nuevo método para mapear software que oculta sus partes hasta que se ejecuta. Al combinar un simulador de "qué pasaría si" con un sistema inteligente que intercepta y resuelve solicitudes de archivos ocultos, la herramienta puede dibujar un mapa completo del comportamiento del programa, revelando rutas que anteriormente eran invisibles para los analistas de seguridad. Probó esto con éxito en 16 escenarios diferentes, demostrando que puede encontrar bibliotecas ocultas con una precisión perfecta.
¿Ahogado en artículos de tu campo?
Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.