# 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*