
¿Qué son los Callbacks TLS?
El Thread Local Storage (TLS) es un mecanismo del sistema operativo Windows que permite que cada hilo de un proceso tenga su propia copia de variables específicas. Para soportar esto, los archivos ejecutables PE (Portable Executable) de Windows contienen un directorio TLS (IMAGE_TLS_DIRECTORY). Este directorio no solo describe dónde se almacenan los datos TLS y su tamaño, sino que también incluye una lista de funciones de callback (llamadas de retorno).
Los callbacks TLS son un mecanismo de ejecución que permite que el código se ejecute automáticamente cuando un proceso o hilo comienza, incluso antes de que se alcance el punto de entrada normal del programa (main o WinMain para EXEs, o DllMain para DLLs).
El Problema: Ejecución Oculta en DLLs
El autor realizó pruebas para verificar el comportamiento de los callbacks TLS en DLLs. Se creó una DLL de prueba con dos funciones:
- Una función de callback TLS.
- Una función
DllMainestándar.
Al compilar y cargar la DLL usando rundll32, se observó que la función de callback TLS se ejecutó antes que la función DllMain.
Este comportamiento es de particular interés para la ciberseguridad, ya que los atacantes pueden aprovechar este mecanismo para ejecutar código malicioso antes de que se inicie la ejecución principal del programa o DLL, lo que puede evadir ciertas técnicas de análisis de seguridad.
Implicaciones para el Análisis de Seguridad
La capacidad de ejecutar código antes del punto de entrada principal tiene importantes implicaciones para la detección de amenazas:
- Análisis Estático: Al realizar un análisis estático de un binario sospechoso, no es suficiente examinar únicamente la función
DllMaino las funciones exportadas. Los analistas deben buscar activamente los callbacks TLS para identificar código malicioso. Herramientas de análisis de PE pueden ayudar a listar estos callbacks. - Análisis Dinámico y Debugging: Durante el debugging, es crucial configurar el depurador para que se detenga en los callbacks TLS. Si el depurador no está configurado de esta manera, el código malicioso en el callback podría ejecutarse inadvertidamente, permitiendo que el malware continúe su ejecución sin ser detectado durante la fase de análisis dinámico.
Conclusión
La técnica de utilizar callbacks TLS en DLLs representa un vector de evasión que los analistas de seguridad deben tener en cuenta. Es fundamental que tanto las herramientas de análisis estático como los depuradores estén configurados para inspeccionar y detectar código que se ejecuta a través de este mecanismo. Comprender el orden de ejecución de los componentes de un archivo PE es esencial para la detección de malware moderno.