La instrumentación transparente del COM para el análisis de malware es un desafío significativo debido a la complejidad y naturaleza dinámica de los interfaces IDispatch utilizados por el malware basado en scripts moderno. Cisco Talos ha desarrollado DispatchLogger, una herramienta open-source que aborda este vacío al proporcionar una visión profunda de estas interacciones.
DispatchLogger funciona mediante la captura de API a la frontera de la instantiación COM, garantizando un registro completo sin alterar el comportamiento del malware. Captura funciones como CoCreateInstance y CoGetClassObject para interceptar las creaciones de objetos e devolver proxies transparentes. Este enfoque es crucial para cubrir una amplia gama de tipos de scripts, incluyendo VBScript, PowerShell y AutoIt.
El análisis revela que los tradicionales herramientas dinámicas a menudo pasan por alto el significado semántico detrás de las interacciones COM de nivel alto, como las operaciones WMI. DispatchLogger aborda esto ofreciendo un registro detallado, lo cual permite a los analistas obtener contexto crucial durante la vigilancia del comportamiento. Por ejemplo, puede ayudar a identificar quién lanzó un proceso, lo que es esencial para entender el vector de ataque.
La implementación de DispatchLogger implica varios pasos clave y desafíos. Inicialmente, la herramienta solo capturaba CoCreateInstance pero se encontró que muchos llamados CreateObject en VBScript no eran interceptados debido a los controles internos de seguridad. Esto llevó al desarrollo de una biblioteca ActiveX minimalista con un MsgBox en Class_Initialize, lo cual ayudó a diagnosticar el problema.
La solución consistió en capturar tanto CoGetClassObject y CoGetObject/MkParseDisplayName para garantizar una cobertura completa sin importar la interfaz inicial solicitada por el motor del script. La clase DispatchProxy implementa IDispatch, dirige las llamadas e inicia un registro de parámetros mientras mantiene el conteo de referencia adecuado y maneja correctamente QueryInterface.