# T1218.009 - Regsvcs/Regasm
## Técnica Pai
[[t1218-system-binary-proxy-execution|T1218 - System Binary Proxy Execution]]
## Descrição
Adversários podem abusar das ferramentas **Regsvcs** e **Regasm** para executar código malicioso através de utilitários Windows confiáveis e assinados digitalmente pela Microsoft. Regsvcs (`regsvcs.exe`) e Regasm (`regasm.exe`) são ferramentas de linha de comando do .NET Framework utilizadas para registrar assemblies COM (Component Object Model) no sistema, permitindo que aplicações .NET exponham funcionalidades via interface COM.
O vetor de abuso reside em dois atributos especiais de assemblies .NET: `[ComRegisterFunction]` e `[ComUnregisterFunction]`. Esses atributos marcam métodos que devem ser executados **automaticamente** durante o processo de registro e desregistro de um assembly COM, respectivamente. O comportamento crítico é que **o código anotado com esses atributos é executado mesmo que o processo sejá invocado sem privilégios suficientes e falhe na operação principal** - ou sejá, a execução de código ocorre independentemente do sucesso do registro.
Essa característica permite que adversários criem assemblies .NET aparentemente legítimas que, ao serem processadas por Regsvcs ou Regasm, executam código arbitrário enquanto se beneficiam da reputação das ferramentas assinadas pela Microsoft para contornar controles de aplicação como AppLocker e Windows Defender Application Control (WDAC). O [[s0331-agent-tesla|Agent Tesla]] é um dos malwares documentados que empregou essa técnica para evasão de defesas.
> **Tática MITRE:** Defense Evasion | **ID:** T1218.009 | **Plataforma:** Windows
## Como Funciona
O mecanismo de abuso explora o modelo de execução do .NET Framework durante o ciclo de vida de registro COM. O fluxo completo é o seguinte:
**1. Criação da assembly maliciosa**
O adversário cria um assembly .NET (`.dll`) contendo código C# com os atributos especiais:
- `[ComRegisterFunction]` - método executado quando `regasm.exe Assembly.dll /regfile` é chamado
- `[ComUnregisterFunction]` - método executado quando `regasm.exe Assembly.dll /u` (unregister) é chamado
O código malicioso é inserido dentro desses métodos anotados.
**2. Invocação via binário legítimo**
O adversário invoca o Regasm ou Regsvcs apontando para a DLL maliciosa:
```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe payload.dll
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regsvcs.exe payload.dll
```
**3. Execução automática do código**
O .NET Framework lê os atributos da assembly e invoca automaticamente os métodos anotados. O código malicioso é executado **no contexto do processo regasm.exe/regsvcs.exe**, processos assinados pela Microsoft e frequentemente na lista de aplicações confiáveis.
**4. Evasão de controles de aplicação**
Como o processo pai é um binário Microsoft assinado e o código é carregado como parte do fluxo legítimo de registro COM, soluções baseadas em allowlist (como AppLocker com regras de publisher) frequentemente falham em bloquear a execução.
**Variante com /regfile:**
A flag `/regfile` gera um arquivo `.reg` em vez de registrar no sistema, o que pode contornar alertas relacionados a modificações no registro - porém o código nos atributos ainda é executado.
**Caminhos conhecidos dos binários:**
- `C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe`
- `C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe`
- `C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe`
- `C:\Windows\Microsoft.NET\Framework\v2.0.50727\regsvcs.exe`
- `C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe`
## Attack Flow
```mermaid
graph TB
A["Acesso Inicial<br/>Phishing / exploit / credenciais"] --> B["Entrega do Payload<br/>Assembly .NET maliciosa<br/>depositada em disco"]
B --> C["Evasão de AV<br/>DLL não executável diretamente<br/>passa por scanners estáticos"]
C --> D["Execução via Proxy<br/>regasm.exe payload.dll<br/>ou regsvcs.exe payload.dll"]
D --> E["Trigger Automático<br/>ComRegisterFunction invocado<br/>pelo .NET Framework"]
E --> F["Código Arbitrário Executado<br/>No contexto de processo<br/>assinado pela Microsoft"]
F --> G["Bypass de AppLocker/WDAC<br/>Processo pai confiável<br/>allowlist não bloqueia"]
G --> H["Próximas Fases<br/>Download de stage 2,<br/>C2, persistência"]
```
## Exemplos de Uso
**Agent Tesla**
O [[s0331-agent-tesla|Agent Tesla]], infostealer amplamente difundido e popular em campanhas de phishing contra empresas brasileiras e latino-americanas, foi documentado utilizando Regasm para carregar e executar seus componentes de forma evasiva. A técnica permite ao malware contornar defesas baseadas em reputação de processo, pois a cadeia de execução aparece como um processo .NET legítimo.
**Campanhas de spear-phishing contra setor financeiro**
Operadores de acesso inicial (IABs) que vendem acesso a organizações financeiras documentaram o uso de assemblies .NET com `ComRegisterFunction` como segundo estágio após a abertura de documentos maliciosos. O fluxo típico: documento Office → macro VBA → `regasm.exe` invocado com DLL baixada → shellcode/stager executado.
**Red Team e simulações de ataque**
Frameworks como Cobalt Strike e ferramentas de red team como SharpCradle e GadgetToJScript possuem módulos que geram assemblies abusando desse padrão. A técnica é amplamente usada em simulações de ataque (Red Team) para válidar a robustez de controles de aplicação.
**Abuso via /u (unregister)**
Uma variante menos monitorada usa a flag de desregistro (`/u`), que aciona `[ComUnregisterFunction]`. Como equipes de segurança frequentemente monitoram operações de **registro** de COM com mais aténção, o abuso via desregistro pode gerar menos alertas.
## Detecção
A detecção eficaz requer correlacionar a execução dos binários com a origem e características das assemblies processadas.
**Sigma - Execução suspeita de Regasm ou Regsvcs:**
```yaml
title: Execução Suspeita de Regasm ou Regsvcs com DLL Externa
id: c5d6e7f8-0123-4567-cdef-012345678901
status: experimental
description: Detecta invocação de regasm.exe ou regsvcs.exe apontando para DLL fora
de caminhos padrão do .NET Framework, indicando possível abuso (T1218.009)
logsource:
category: process_creation
product: windows
detection:
selection_image:
Image|endswith:
- '\regasm.exe'
- '\regsvcs.exe'
filter_legitimate:
CommandLine|contains:
- 'C:\Windows\Microsoft.NET\Framework'
- 'C:\Windows\assembly'
condition: selection_image and not filter_legitimate
falsepositives:
- Desenvolvimento .NET legítimo registrando assemblies de diretórios de build
- Instaladores de software que registram componentes COM
level: high
tags:
- attack.defense_evasion
- attack.t1218.009
```
**Sigma - Processo filho de Regasm/Regsvcs:**
```yaml
title: Processo Filho Suspeito Originado de Regasm ou Regsvcs
id: d6e7f801-2345-6789-def0-123456789012
status: experimental
description: Detecta criação de processos filhos a partir de regasm.exe ou regsvcs.exe,
comportamento incomum que pode indicar execução de código malicioso via COM registration
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith:
- '\regasm.exe'
- '\regsvcs.exe'
condition: selection
falsepositives:
- Instaladores que invocam scripts de configuração pós-registro
level: high
tags:
- attack.defense_evasion
- attack.t1218.009
```
**Pontos de detecção adicionais:**
- Monitorar carregamento de assemblies .NET por regasm/regsvcs via eventos Sysmon (Event ID 7 - ImageLoad)
- Alertar quando regasm.exe ou regsvcs.exe realiza conexões de rede (indica download de segundo estágio)
- Inspecionar assemblies .NET em busca de atributos `ComRegisterFunction` / `ComUnregisterFunction` com código não relacionado ao registro COM
- Correlacionar com eventos de escrita de arquivo precedendo a invocação dos binários
## Mitigação
| ID | Mitigação | Descrição |
|---|-----------|-----------|
| M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Configurar controles de aplicação (AppLocker, WDAC) para bloquear a execução de regasm.exe e regsvcs.exe em contextos não esperados - especialmente fora de workstations de desenvolvimento. Em ambientes corporativos padrão, esses binários raramente têm uso legítimo. |
| M1042 | [[m1042-disable-or-remove-feature-or-program\|M1042 - Disable or Remove Feature or Program]] | Se o .NET Framework não for necessário para o papel da máquina, considerar sua remoção ou desabilitação. Em servidores e endpoints que não executam aplicações .NET, a presença desses binários representa superfície de ataque desnecessária. |
**Boas práticas adicionais:**
- Criar regras de AppLocker que permitam regasm/regsvcs apenas para grupos específicos de desenvolvedores, bloqueando para usuários padrão
- Implementar logging de criação de processo com linha de comando completa (Sysmon Event ID 1 ou Windows Security Event 4688 com auditoria de linha de comando habilitada)
- Monitorar integridade de assemblies .NET em diretórios de deploy de aplicações
## Contexto Brasil/LATAM
O abuso de Regsvcs e Regasm tem relevância direta no cenário de ameaças brasileiro. O [[s0331-agent-tesla|Agent Tesla]] - um dos infostealers mais prevalentes no Brasil segundo dados do CERT.br e de empresas de threat intelligence regionais - documentadamente usou essa técnica em campanhas direcionadas a empresas dos setores varejista, logístico e de serviços financeiros.
Campanhas de phishing distribuídas por grupos de cibercrime financeiro que operam no Brasil (como afiliados de acesso inicial que vendem para operadores de [[lockbit|ransomware]] e RAT como [[s1087-asyncrat|AsyncRAT]]) frequentemente utilizam documentos Office que invocam scripts de execução de Regasm como parte de cadeias de infecção multi-estágio. Essa abordagem permite contornar soluções de segurança endpoint que dependem de reputação de processo.
A técnica é especialmente eficaz em ambientes corporativos brasileiros onde o .NET Framework está onipresente (sistemas contábeis como TOTVS, sistemas fiscais como SPED/NFe, e ERPs nacionais dependem fortemente do .NET). Isso torna o bloqueio indiscriminado de regasm.exe impraticável sem análise de contexto - reforçando a importância de controles baseados em comportamento em vez de bloqueios estáticos.
## Software Associado
- [[s0331-agent-tesla|Agent Tesla]] (infostealer)
- [[s1087-asyncrat|AsyncRAT]] (RAT - cadeia de entrega documentada)
- [[s0154-cobalt-strike|Cobalt Strike]] (framework C2 - módulo de evasão)
## Referências
- MITRE ATT&CK - T1218.009: Regsvcs/Regasm (v16.2)
- Microsoft Documentation - Regasm.exe (Assembly Registration Tool)
- Microsoft Documentation - Regsvcs.exe (.NET Component Services Registrar)
- CERT.br - Relatório de Atividade Maliciosa 2025
- Elastic Security - "Living off the land binaries: regasm and regsvcs abuse"
- Casey Smith (subTee) - pesquisa original sobre LOLBAS com regasm/regsvcs
*Fonte: MITRE ATT&CK - T1218.009*