Los objetos COM (Component Object Model) son una tecnología de Microsoft que permite que diferentes aplicaciones y componentes de software se comuniquen entre sí de forma reutilizable, incluso si están escritos en distintos lenguajes de programación.


¿Qué es COM?

Relacionado: Herramientas. Cobalt Strike. Conceptos basicos de la seguridad en el software. 12 Introduccion a la Criptografiaseguridad. 2025 02 20 Seguridad iOS memoria permisos y sandboxing.

COM es un modelo binario de componentes que define cómo los objetos pueden exponerse y utilizarse en tiempo de ejecución sin necesidad de conocer su código fuente. Fue una piedra angular del desarrollo de software en Windows durante décadas.


¿Cómo funciona?

  • Cada objeto COM expone interfaces (conjuntos de métodos).

  • Las aplicaciones interactúan con los objetos a través de estas interfaces, no acceden directamente al objeto.

  • Los objetos están registrados en el sistema mediante CLSID (identificador único) y pueden usarse mediante su nombre o GUID.

  • El acceso se hace dinámicamente a través de funciones como CoCreateInstance.

Ejemplo simplificado:

IUnknown* pObj;
HRESULT hr = CoCreateInstance(CLSID_MiObjeto, NULL, CLSCTX_INPROC_SERVER, IID_IMiInterfaz, (void**)&pObj);

Componentes clave

  • CLSID (Class ID): Identificador único de cada clase COM.

  • IID (Interface ID): Identificador de cada interfaz.

  • IUnknown: La interfaz base de todos los objetos COM.

  • OLE / ActiveX: Tecnologías basadas en COM.

  • DCOM (Distributed COM): Extiende COM para trabajar en red.


¿Dónde se usan?

  • En Windows, casi todo: Explorer, Office, WMI, servicios del sistema.

  • Se usa en scripts (VBScript, PowerShell) para interactuar con aplicaciones (por ejemplo, Excel o Word).

  • Muchos malware y herramientas ofensivas (como Cobalt Strike, Metasploit o Empire) lo usan para:

    • Ejecutar comandos de forma sigilosa

    • Bypassear UAC

    • Invocar funciones de forma indirecta (Living off the Land)


️ Seguridad y COM

  • Objetos COM vulnerables pueden ser explotados para escaladas de privilegios, ejecución remota o persistencia.

  • COM hijacking: Técnica de persistencia donde un atacante registra un objeto COM falso que será cargado por un proceso legítimo.

  • Algunas herramientas de defensa, como Sysinternals o Autoruns, permiten revisar qué objetos COM están registrados y cargados por procesos.


Si quieres, puedo mostrarte un ejemplo real de cómo usar un objeto COM en PowerShell para ejecutar algo sin usar cmd.exe, o cómo detectar hijacking de COM en un sistema. ¿Te interesa esa parte práctica o quieres seguir con la parte teórica?