# T1546.015 - Event Triggered Execution: Component Object Model Hijacking Técnica pai: [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] ## Descrição **T1546.015 - COM Hijacking** é uma sub-técnica de persistência no Windows que abusa do mecanismo de resolução do **Component Object Model (COM)** para redirecionar a instanciação de objetos COM legítimos a código malicioso do adversário. O COM é uma infraestrutura binária fundamental do Windows que permite que componentes de software se comuniquem entre si - práticamente todos os processos Windows utilizam objetos COM para operações cotidianas. O mecanismo de hijacking explora uma característica estrutural do sistema de registro do Windows: a **ordem de precedência** entre `HKCU` (per-user, sem privilégio administrativo) e `HKLM` (sistema, requer admin). Quando um processo solicita a instanciação de um objeto COM (via CLSID - Class Identifier), o Windows procura o registro nesta ordem: 1. `HKCU\Software\Classes\CLSID\{GUID}` - registro por usuário 2. `HKLM\SOFTWARE\Classes\CLSID\{GUID}` - registro do sistema Se o adversário criar uma entrada sob `HKCU` para um CLSID que normalmente existe apenas em `HKLM`, o Windows usará o registro do usuário e instanciará o servidor COM malicioso - **sem nenhum alerta para o usuário e sem necessidade de privilégios administrativos**. ### O que é um CLSID Um **CLSID** (Class Identifier) é um identificador único globalmente (GUID) que representa uma classe COM específica. Por exemplo: - `{00021401-0000-0000-C000-000000000046}` - Shell Link (atalhos `.lnk`) - `{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}` - Windows Script Host Shell Object - `{9BA05972-F6A8-11CF-A442-00A0C90A8F39}` - Internet Explorer ShellWindows Ferramentas como **Process Monitor** da Sysinternals são usadas por adversários (e defensores) para identificar CLSIDs onde o sistema registra `HKCU NAME NOT FOUND` seguido de consulta bem-sucedida em `HKLM` - esses são os candidatos perfeitos para hijacking. ## Como Funciona ### Passo a Passo da Exploração 1. **Reconhecimento de CLSIDs vulneráveis:** O adversário usa Process Monitor filtrando eventos de registro com resultado `NAME NOT FOUND` em `HKCU\Software\Classes\CLSID\` para identificar candidatos 2. **Seleção do CLSID alvo:** O adversário escolhe um CLSID invocado por um processo de alta frequência (Taskbar, Explorer, processos de startup) para maximizar taxa de ativação 3. **Criação da entrada HKCU:** Sem privilégios de admin, o adversário cria `HKCU\Software\Classes\CLSID\{GUID}\InprocServer32` ou `LocalServer32` apontando para a DLL/EXE maliciosa 4. **Execução disparada:** Na próxima vez que o processo legítimo instanciar o CLSID hijackado, o Windows carrega o servidor COM malicioso 5. **Persistência garantida:** Se o CLSID é invocado em cada logon ou por processos que reiniciam automaticamente, a persistência é contínua ### Subtipos de COM Hijacking | Subtipo | Chave de Registro | Tipo de Payload | Frequência de Abuso | |---------|------------------|-----------------|---------------------| | `InprocServer32` | DLL carregada no processo host | `.dll` maliciosa | Alta | | `LocalServer32` | Processo externo lançado | `.exe` malicioso | Média | | `TreatAs` / `AutoTreatAs` | Redireciona CLSID para outro | Qualquer | Baixa | | `ProgID` | Registro por nome de programa | Depende do tipo | Média | ## Attack Flow ```mermaid graph TB A["Acesso Inicial<br/>(phishing, exploit, credencial)"] --> B["Execução no contexto<br/>do usuário-alvo<br/>(sem necessidade de admin)"] B --> C["Reconhecimento de CLSIDs<br/>Process Monitor filtrando<br/>HKCU NAME NOT FOUND"] C --> D["Identificação de CLSID<br/>invocado por processo<br/>de alta frequência"] D --> E["Preparação do payload<br/>(DLL maliciosa ou EXE)"] E --> F["Criação de entrada HKCU<br/>HKCU\\Software\\Classes\\CLSID\\<br/>{GUID}\\InprocServer32"] F --> G{"Processo legítimo<br/>instancia o CLSID?"} G -->|Sim| H["Windows resolve HKCU<br/>antes de HKLM<br/>→ carrega payload malicioso"] G -->|Não ainda| I["Aguardar próximo logon<br/>ou reinício do processo"] I --> G H --> J["DLL/EXE maliciosa<br/>executada no contexto<br/>do processo legítimo"] J --> K["C2 beacon, backdoor,<br/>coleta de credenciais,<br/>lateral movement"] K --> L["Persistência silenciosa:<br/>executa a cada<br/>invocação do CLSID"] classDef initial fill:#e74c3c,color:#fff classDef exec fill:#8e44ad,color:#fff classDef recon fill:#3498db,color:#fff classDef prep fill:#2980b9,color:#fff classDef reg fill:#f39c12,color:#fff classDef decision fill:#e67e22,color:#fff classDef load fill:#16a085,color:#fff classDef impact fill:#27ae60,color:#fff class A initial class B exec class C,D recon class E prep class F reg class G decision class H,I load class J,K,L impact ``` ## Exemplos de Uso ### APT29 (Cozy Bear) O [[g0016-apt29|APT29]], grupo de espionagem vinculado ao SVR russo, é um dos atores mais documentados no uso de COM Hijacking. Em campanhas contra organizações governamentais, think tanks e empresas de tecnologia, o grupo usou COM Hijacking para garantir persistência discreta em ambientes Windows altamente monitorados. A técnica foi identificada em análises de ferramentas associadas ao APT29 como **[[s0559-sunburst|SUNBURST]]** (campanha SolarWinds) e variantes do [[s0046-cozycar|CozyDuke]]. ### APT28 (Fancy Bear) O [[g0007-apt28|APT28]], atribuído à inteligência militar russa (GRU), documentadamente combina COM Hijacking com outros mecanismos de persistência em campanhas de espionagem política e militar. Ferramentas do ecossistema APT28 como [[s0251-zebrocy|Zebrocy]] e [[s0653-xcaon|XAgent]] foram associadas ao uso de HKCU COM registration como mecanismo de persistência alternativo. ### Turla O [[g0010-turla|Turla]] (Snake/Uroburos), grupo de espionagem russófono de longa data, usa COM Hijacking como parte de um arsenal sofisticado de persistência. O grupo é conhecido por técnicas que evitam gravação em disco e preferem mecanismos de execução in-process - o COM Hijacking via `InprocServer32` se encaixa perfeitamente nesse perfil. ### Lazarus Group O [[g0032-lazarus-group|Lazarus Group]], grupo norte-coreano, utilizou variantes de COM Hijacking em campanhas financeiras e de espionagem. O grupo é documentado com uso de técnicas de registro Windows em operações de [[operation-dreamjob|Operation DreamJob]] e campanhas contra exchanges de criptomoedas. ### Malware Associado - **[[s0559-sunburst|SUNBURST]]** - backdoor da campanha SolarWinds; COM registration como vetor de persistência - **[[s0046-cozycar|CozyBear]]** - usa COM objects para execução de código - **[[s0251-zebrocy|Zebrocy]]** - downloader/backdoor APT28; múltiplos mecanismos de persistência incluindo COM ## Detecção ### Regra Sigma ```yaml title: Suspicious COM Object Registration in HKCU id: b4e2f8a1-c3d7-4e5f-9012-ab3456789012 status: stable description: > Detecta criação de entradas de COM Object (InprocServer32 / LocalServer32) sob HKCU, indicando possível COM Hijacking para persistência ou privilege escalation. references: - https://attack.mitre.org/techniques/T1546/015/ - https://bohops.com/2018/08/18/abusing-the-com-registry-structure-part-2-loading-techniques-for-evasion-and-persistence/ author: RunkIntel daté: 2026-03-25 logsource: product: windows category: registry_set detection: selection: EventType: SetValue TargetObject|contains: - '\Software\Classes\CLSID\' TargetObject|endswith: - '\InprocServer32\(Default)' - '\LocalServer32\(Default)' TargetObject|startswith: - 'HKCU\' - 'HKU\' filter_legitimate: Details|contains: - 'C:\Windows\System32\' - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: selection and not filter_legitimate falsepositives: - Instaladores de software legítimos que registram COM objects per-user - IDEs como Visual Studio que registram componentes no HKCU level: high tags: - attack.persistence - attack.privilege_escalation - attack.t1546.015 fields: - TargetObject - Details - Image - User - CommandLine ``` ### Regra Sigma - Carregamento de DLL Suspeita via COM ```yaml title: Potentially Hijacked COM Object DLL Load id: c5f3g9b2-d4e8-5f6g-0123-bc4567890123 status: experimental description: > Detecta carregamento de DLL de localização não-padrão em processo que invocou COM object registrado em HKCU - indicação de COM Hijacking ativo. logsource: product: windows category: image_load detection: selection: ImageLoaded|contains: - '\AppData\Local\' - '\AppData\Roaming\' - '\Temp\' - '\Users\Public\' filter_signed: Signed: 'true' condition: selection and not filter_signed falsepositives: - Software legítimo que instala DLLs em AppData level: medium tags: - attack.persistence - attack.t1546.015 ``` ### Comandos de Auditoria ```powershell # Listar todas as entradas COM em HKCU (candidatos a hijacking) Get-ChildItem "HKCU:\Software\Classes\CLSID" -ErrorAction SilentlyContinue | ForEach-Object { $clsid = $_.Name Get-ItemProperty "$_\InprocServer32" -ErrorAction SilentlyContinue | Select-Object @{N='CLSID';E={$clsid}}, '(default)' } # Comparar entradas HKCU vs HKLM para o mesmo CLSID $hkcuCLSIDs = Get-ChildItem "HKCU:\Software\Classes\CLSID" | Select-Object -ExpandProperty PSChildName foreach ($clsid in $hkcuCLSIDs) { if (Test-Path "HKLM:\SOFTWARE\Classes\CLSID\$clsid") { Write-Warning "Possível COM Hijacking: $clsid existe em HKCU E HKLM" } } ``` ### Fontes de Dados MITRE | Fonte | O que Monitorar | |-------|-----------------| | Windows Registry: Key Creation | Criação de `HKCU\Software\Classes\CLSID\{*}\InprocServer32` ou `LocalServer32` | | Windows Registry: Key Modification | Modificação de entradas COM existentes em HKCU | | Module: Module Load | DLLs carregadas por processos legítimos de localizações não-padrão (AppData, Temp) | | Process: Process Creation | Processos filhos lançados via `LocalServer32` COM objects em HKCU | | Command: Command Execution | Uso de `reg add HKCU\Software\Classes\CLSID\...` | ## Mitigação | ID | Mitigação | Descrição | Prioridade | |----|-----------|-----------|------------| | [[m1038-execution-prevention\|M1038]] | Execution Prevention | Implementar Application Control (AppLocker/WDAC) para bloquear execução de DLLs não-assinadas de localizações não-padrão - principal controle contra InprocServer32 hijacking | Alta | | [[m1054-software-configuration\|M1054]] | Software Configuration | Auditoria periódica de entradas COM em HKCU via scripts de baseline; política de GPO para restringir escrita em HKCU\Software\Classes | Média | ### Recomendações Adicionais - **Application Control:** Configurar Windows Defender Application Control (WDAC) ou AppLocker para bloquear carregamento de DLLs não assinadas de `%AppData%`, `%Temp%` e outros diretórios controláveis pelo usuário - **Auditoria de Registro:** Ativar auditoria de `HKCU\Software\Classes\CLSID` via GPO (`Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy > Object Access > Audit Registry`) - **Process Monitor Baseline:** Manter baseline de CLSIDs invocados pelos processos de startup para detectar novos registros HKCU - **EDR Rules:** Criar regras no EDR para alertar sobre carregamento de DLLs não assinadas em contexto de objeto COM > [!warning] Dificuldade de Detecção > COM Hijacking via HKCU é particularmente difícil de detectar porque: (1) não requer privilégios elevados - qualquer usuário pode fazer; (2) a DLL maliciosa executa dentro de um processo legítimo Windows (sem novo processo filho suspeito); (3) a entrada de registro parece legítima a inspeções superficiais. Regras de detecção baseadas em comportamento (carregamento de DLL de localização não-padrão) são mais efetivas que regras baseadas apenas em registro. ## Contexto Brasil/LATAM O COM Hijacking é uma das técnicas de persistência mais utilizadas por grupos APT em campanhas de espionagem corporativa e governamental - e o Brasil, como a maior economia da América Latina, é alvo crescente dessas operações. ### Grupos com Operações Confirmadas na Região - **[[g0016-apt29|APT29]]** - o grupo russo tem alvos documentados em organizações governamentais, diplomáticas e de pesquisa brasileiras; o uso de COM Hijacking em seu arsenal é bem estabelecido - **[[g0007-apt28|APT28]]** - campanhas de phishing direcionadas a organizações políticas e militares da região utilizam todo o arsenal do grupo, incluindo técnicas de persistência HKCU - **[[g0032-lazarus-group|Lazarus Group]]** - alvos no setor financeiro e de criptomoedas no Brasil; o grupo usa Windows como plataforma primária com técnicas de persistência avançadas ### Impacto Potencial no Ecossistema Brasileiro | Setor | Exposição | Cenário de Risco | |-------|-----------|-----------------| | Governo Federal/Estadual | Alta | Espionagem via persistência discreta em estações Windows | | [[_sectors\|Setor Financeiro]] | Alta | Roubo de credenciais bancárias e dados de clientes | | Energia e Infraestrutura | Média-Alta | Acesso persistente para sabotagem ou reconhecimento | | Telecomúnicações | Média | Interceptação de comúnicações sensíveis | | Saúde e Farmacêutico | Média | Roubo de propriedade intelectual e dados de pacientes | ### Regulatório e Compliance Sob a **LGPD** e as resoluções do **BACEN** (ex: Resolução CMN 4.893/2021 para segurança cibernética em IFs), a ausência de controles para detecção de persistência como COM Hijacking pode configurar não-conformidade regulatória. Auditorias de segurança devem incluir varredura de HKCU COM registrations em endpoints Windows. ## Referências - [MITRE ATT&CK - T1546.015](https://attack.mitre.org/techniques/T1546/015/) - [SpecterOps - COM Hijacking Techniques](https://posts.specterops.io/the-com-attack-surface-e21f4f564c64) - [bohops - Abusing the COM Registry Structure](https://bohops.com/2018/08/18/abusing-the-com-registry-structure-part-2-loading-techniques-for-evasion-and-persistence/) - [FireEye - Persisting with COM](https://www.mandiant.com/resources/blog/com-object-hijacking) - [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] - técnica pai - [[t1574-002-dll-side-loading|T1574.002 - DLL Side-Loading]] - técnica relacionada de carregamento malicioso de DLL - [[t1055-001-dynamic-link-library-injection|T1055.001 - DLL Injection]] - técnica relacionada - [[g0016-apt29|APT29]] - principal usuário documentado desta técnica --- *Fonte: MITRE ATT&CK - T1546.015 Component Object Model Hijacking, v16.2*