# T1559.001 - Component Object Model ## Técnica Pai Esta é uma sub-técnica de [[t1559-inter-process-communication|T1559 - T1559 - Inter-Process Commúnication]]. ## Descrição O Component Object Model (COM) é uma das infraestruturas mais antigas e pervasivas do Windows - uma interface de comunicação entre processos que permite que aplicações exponham funcionalidades para outras aplicações, independentemente da linguagem de programação usada. Todo objeto COM é identificado por um CLSID (Class Identifier) registrado no Windows Registry, e qualquer processo com as permissões adequadas pode instanciar e chamar métodos desse objeto. Essa arquitetura é a espinha dorsal de tecnologias como OLE, ActiveX, e boa parte da automação do Microsoft Office. Para adversários, o COM representa uma superfície de ataque rica e discreta. Ao invocar objetos COM legítimos que possuem capacidades de execução - como o `Shell.Application`, `WScript.Shell`, ou objetos do Internet Explorer - um atacante pode executar código arbitrário sem criar novos processos suspeitos ou escrever payloads em disco. Essa característica torna o abuso de COM especialmente valioso para [[t1059-001-powershell|evasão de defesas]] e execução fileless. Malwares como [[s0266-trickbot]], [[s0386-ursnif]], [[s1160-latrodectus]] e [[s1130-raspberry-robin]] utilizam COM extensivamente em suas cadeias de execução. O COM também serve como base para técnicas de escalada de privilégios e persistência. Objetos COM com permissões elevadas podem ser invocados por processos de baixa integridade através de técnicas de COM hijacking (sobrescrita de CLSIDs no registro do usuário). Além da execução local, o COM suporta invocação remota via [[t1021-003-distributed-component-object-model|DCOM (Distributed COM)]], que permite que um adversário com acesso à rede execute código em máquinas remotas sem usar protocolos de administração remota tradicionais - uma técnica favorita para movimentação lateral. **Contexto Brasil/LATAM:** O [[g0069-mango-sandstorm]] e o [[g0047-gamaredon]] - grupos com histórico documentado de operações em países ibérico-americanos e contra organizações do setor público - utilizam COM como parte de suas cadeias de infecção. No Brasil, onde o setor governamental e financeiro são alvos frequentes, o abuso de COM é especialmente relevante: a técnica opera dentro de processos confiáveis do Windows, dificultando a detecção por soluções de segurança baseadas em assinaturas e contornando políticas de execução restritas. ## Attack Flow ```mermaid graph TB A[Acesso Inicial] --> B[T1559.001 - COM] B --> C[Execução Fileless] B --> D[Escalada de Privilégio] C --> E[Persistência / C2] ``` ## Como Funciona **1. Preparação** O adversário identifica um objeto COM com capacidades úteis para execução ou persistência. Pode ser um objeto nativo do Windows (`Shell.Application`, `WScript.Shell`, `InternetExplorer.Application`) ou um CLSID registrado por um software de terceiros. Em casos de COM hijacking, o adversário localiza CLSIDs registrados apenas em `HKLM` (que podem ser sobrescritos em `HKCU` por usuários sem privilégios). **2. Execução** O objeto COM é instanciado via código (PowerShell, VBScript, C/C++, ou diretamente pelo malware) e seus métodos são invocados para executar comandos, carregar DLLs maliciosas em memória, ou agendar tarefas. Por ser invocado dentro de processos legítimos como `explorer.exe` ou `svchost.exe`, a execução é de difícil distinção do comportamento normal. **3. Pós-execução** A execução via COM pode resultar em persistência (via [[t1053-scheduled-task-job|Scheduled Task]] criada pelo objeto `Schedule.Service`), download e carregamento de payloads em memória, ou abertura de conexões de rede disfarçadas como tráfego de aplicações legítimas. [[s0260-invisimole]] e [[s0698-hermeticwizard]], por exemplo, usam COM para propagar-se lateralmente em redes comprometidas. **Exemplo - artefato de detecção:** ```powershell # Instanciação suspeita de objeto COM em PowerShell - artefato de detecção # Script Block Logging (Event ID 4104) revelaria: # $com = [activator]::CreateInstance([type]::GetTypeFromProgID("WScript.Shell")) # $com.Run("cmd.exe /c whoami", 0, $false) # Também detectável via Sysmon Event ID 12/13 (modificação de registro) em COM hijacking ``` ## Detecção **Fontes de dados:** Sysmon Event ID 1 (criação de processo), Event ID 4104 (PowerShell Script Block Logging), Sysmon Event ID 7 (carregamento de imagem/DLL), Event ID 12/13/14 (modificações de registro - COM hijacking), logs de ETW (Event Tracing for Windows). ```yaml title: Possível COM Hijacking via Registro de Usuário id: 9f8e7d6c-5b4a-3c2d-1e0f-9a8b7c6d5e4f status: experimental description: Detecta criação de chaves de registro em HKCU que sobrescrevem CLSIDs registrados em HKLM, indicativo de COM hijacking logsource: category: registry_set product: windows detection: selection: TargetObject|startswith: 'HKCU\Software\Classes\CLSID\' TargetObject|endswith: '\InprocServer32' filter_legitimate: Details|contains: - 'AppData\Local\Microsoft' - 'AppData\Roaming\Microsoft' condition: selection and not filter_legitimate falsepositives: - Instalação de software legítimo que registra extensões COM no contexto do usuário - Ferramentas de desenvolvimento registrando objetos COM localmente level: high tags: - attack.execution - attack.persistence - attack.t1559.001 - attack.t1546.015 ``` ## Mitigação | Mitigação | Recomendação Prática | |-----------|---------------------| | [[m1026-privileged-account-management\|M1026 - Privileged Account Management]] | Restrinjá o uso de contas com privilégios administrativos para minimizar o impacto do abuso de objetos COM que requerem elevação. Implemente o princípio do menor privilégio. Para DCOM remoto, restrinjá via DCOM Config (`dcomcnfg`) quais usuários podem fazer chamadas remotas. | | [[m1048-application-isolation-and-sandboxing\|M1048 - Application Isolation and Sandboxing]] | Utilize sandboxing para aplicações que processam conteúdo externo (Office, navegadores). O Microsoft Defender Application Guard isola sessões de navegação e documentos Office em containers Hyper-V, bloqueando o acesso a objetos COM do host. | ## Referências *Fonte: [MITRE ATT&CK - T1559.001](https://attack.mitre.org/techniques/T1559/001)*