# T1021.003 - Distributed Component Object Model
## Descrição
O **Distributed Component Object Model (DCOM)** é uma extensão do protocolo COM do Windows que permite a comunicação e execução remota de objetos entre sistemas em rede. Adversários abusam do DCOM para mover-se lateralmente dentro de ambientes corporativos, aproveitando contas privilegiadas legítimas para executar código arbitrário em máquinas remotas - sem necessidade de implantar novos binários no disco.
No Brasil e na América Latina, essa técnica é particularmente relevante em ambientes corporativos de grande porte, como bancos, órgãos de governo federal e empresas de telecomúnicações, onde redes internas flat (sem microssegmentação) ainda são comuns. Grupos como [[g0032-lazarus-group|Lazarus Group]] e operadores de [[s0154-cobalt-strike|Cobalt Strike]] utilizam DCOM para pivotar silenciosamente entre estações e servidores após comprometer a primeira máquina.
O protocolo DCOM utiliza RPC sobre TCP (porta 135 + portas dinâmicas altas) e exige que o atacante possua credenciais de Administrador Local ou de Domínio no sistema-alvo. Permissões de ativação e inicialização de objetos COM remotos são controladas via ACLs no Registro do Windows - por padrão, apenas Administradores podem iniciar objetos COM remotamente.
Objetos exploráveis via DCOM incluem o **ShellWindows**, **ShellBrowserWindow** e **Excel.Application**, que permitem execução de comandos arbitrários ou macros sem criar novos processos suspeitos diretamente.
> **Técnica pai:** [[t1021-remote-services|T1021 - Remote Services]]
---
## Attack Flow
```mermaid
graph TB
A([Acesso Inicial]) --> B[Compromete conta<br/>Administrador Local]
B --> C[Enumera hosts<br/>na rede interna]
C --> D{{"T1021.003<br/>DCOM Lateral Move<br/>fill:#e74c3c,color:#fff"}}
D --> E[Instancia objeto COM<br/>remoto via RPC/135]
E --> F[Executa shellcode<br/>ou macro Office]
F --> G([Controle do<br/>host remoto])
style D fill:#e74c3c,color:#fff
```
---
## Como Funciona
**Passo 1 - Enumeração de objetos DCOM disponíveis**
O adversário usa ferramentas como [[s0363-empire|Empire]] ou [[s0692-silenttrinity|SILENTTRINITY]] para enumerar objetos COM registrados no host remoto via `Get-WmiObject Win32_COMSetting`. Objetos alvo comuns: `MMC20.Application` (CLSID `49B2791A`), `ShellWindows` e `ShellBrowserWindow`.
**Passo 2 - Instanciação remota do objeto COM**
Com credenciais de administrador, o adversário instancia o objeto remotamente via `[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","<IP_alvo>"))`. O sistema-alvo autentica a chamada RPC usando as credenciais fornecidas e inicializa o objeto COM em seu contexto de segurança.
**Passo 3 - Execução de código e persistência**
Após instanciar o objeto, o adversário invoca métodos disponíveis - como `Document.ActiveView.ExecuteShellCommand()` no MMC20 ou `Navigaté()` no ShellBrowserWindow - para executar comandos arbitrários. O processo filho nasce com o contexto do usuário autenticado, contornando muitas soluções de EDR que monitoram apenas criação direta de processos remotos.
---
## Detecção
### Event IDs Relevantes (Windows)
| Event ID | Fonte | Descrição |
|----------|-------|-----------|
| `4624` | Security | Logon de rede bem-sucedido (Logon Type 3) - precursor do movimento lateral |
| `4648` | Security | Logon com credenciais explícitas - indicativo de uso de contas alternativas |
| `4672` | Security | Privilégios especiais atribuídos ao logon - Administrador autenticando remotamente |
| `4697` | Security | Serviço instalado - DCOM pode registrar novos serviços |
| `10` | Sysmon | ProcessCreaté - monitorar processos filhos do `mmc.exe`, `explorer.exe` ou `excel.exe` gerados por chamadas de rede |
| `3` | Sysmon | NetworkConnect - conexões TCP de saída na porta 135 seguidas de portas efêmeras altas |
| `18` | Sysmon | PipeConnected - Named pipes usados por DCOM após negociação inicial |
### Regra Sigma
```yaml
title: DCOM Lateral Movement via MMC20 or ShellWindows
id: 7c4a5b3e-2d1f-4e8b-9c6a-1b5d3e7f2a9c
status: experimental
description: Detecta uso de objetos DCOM para execução remota de código via MMC20.Application
ou ShellWindows - padrão de movimento lateral sem implante de arquivo.
author: RunkIntel
daté: 2026/03/24
logsource:
product: windows
category: process_creation
detection:
selection_parent:
ParentImage|endswith:
- '\mmc.exe'
- '\explorer.exe'
- '\svchost.exe'
ParentCommandLine|contains: 'DCOM'
selection_network:
EventID: 3
DestinationPort: 135
selection_process:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
ParentImage|endswith:
- '\mmc.exe'
- '\excel.exe'
condition: selection_process or (selection_network and selection_process)
falsepositives:
- Administradores legítimos gerenciando sistemas remotamente via MMC
- Scripts de automação corporativa usando DCOM para configuração de hosts
level: high
tags:
- attack.lateral_movement
- attack.t1021.003
```
---
## Mitigação
| Prioridade | Controle | Descrição para Organizações Brasileiras |
|-----------|---------|----------------------------------------|
| Alta | [[m1026-privileged-account-management\|M1026 - Gerenciamento de Contas Privilegiadas]] | Implementar PAM (CyberArk, Thales) para controlar uso de contas de Administrador Local. Aplicar LAPS para randomizar senhas de admin local em todas as estações - prática ainda rara em empresas brasileiras de médio porte. |
| Alta | [[m1030-network-segmentation\|M1030 - Segmentação de Rede]] | Bloquear tráfego RPC/DCOM (TCP 135 + portas efêmeras 49152-65535) entre VLANs de usuários e servidores críticos. Firewalls de host via GPO (Windows Defender Firewall) são alternativa de baixo custo para ambientes sem Next-Gen Firewall. |
| Média | [[m1042-disable-or-remove-feature-or-program\|M1042 - Desabilitar Funcionalidade]] | Desabilitar DCOM nos hosts onde não é necessário via registro: `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole` → `EnableDCOM = N`. Avaliar impacto antes de aplicar em servidores de aplicação que dependem de COM+ ou MSDTC. |
| Média | [[m1048-application-isolation-and-sandboxing\|M1048 - Isolamento de Aplicação]] | Configurar permissões granulares de ativação COM via `dcomcnfg.exe`. Restringir quais contas podem ativar objetos COM remotamente - especialmente no contexto de aplicações Office em servidores de terminal (comum em bancos e repartições públicas). |
---
## Threat Actors e Software
### Grupos que Exploram DCOM
Embora o YAML `used-by` estejá em branco (MITRE não lista grupos específicos para esta sub-técnica), ferramentas de pós-exploração amplamente utilizadas no Brasil implementam DCOM como vetor padrão de movimento lateral:
- **[[s0154-cobalt-strike|Cobalt Strike]]** - framework de C2 mais usado por grupos de ransomware que operam no Brasil ([[lockbit|LockBit]], [[blackcat|ALPHV]]); possui módulo `dcom` nativo para pivoting lateral.
- **[[s0363-empire|Empire]]** - framework PowerShell open-source; módulo `lateral_movement/invoke_dcom` implementa todos os objetos DCOM exploráveis.
- **[[s0692-silenttrinity|SILENTTRINITY]]** - framework C# usado por grupos APT; suporte a DCOM via IronPython sem dependência de PowerShell.
### Contexto Brasil/LATAM
Em incidentes investigados por fornecedores como [[kaspersky-latam|Kaspersky LATAM]] e [[sources|Mandiant]], o DCOM aparece como técnica de segundo estágio após comprometimento inicial via [[t1566-001-spearphishing-attachment|Spearphishing com Anexo]] ou exploração de VPN. Ambientes de Active Directory sem segmentação de rede - realidade em muitas prefeituras, autarquias e empresas do agronegócio brasileiro - são especialmente vulneráveis à propagação via DCOM.
---
*Fonte: [MITRE ATT&CK - T1021.003](https://attack.mitre.org/techniques/T1021/003)*