# T1574.012 - COR_PROFILER
## Técnica Pai
Sub-técnica de [[t1574-hijack-execution-flow|T1574 - Sequestro de Fluxo de Execução]], tática [[ta0003-persistence|Persistência]] e [[ta0004-privilege-escalation|Escalada de Privilégios]].
## Descrição
Adversários exploram a variável de ambiente `COR_PROFILER` para sequestrar o fluxo de execução de qualquer processo que carregue o .NET CLR (Common Language Runtime). O `COR_PROFILER` é um recurso legítimo do .NET Framework que permite a desenvolvedores específicar uma DLL de profiling externa a ser carregada em cada processo .NET que inicializa o CLR. Projetado para monitoramento, troubleshooting e debugging de código gerenciado, esse mecanismo torna-se um vetor de ataque quando abusado.
A variável `COR_PROFILER` pode ser definida em três escopos: sistema (via registro do Windows para todos os processos), usuário (para processos do usuário logado) ou processo (em memória, sem modificação de registro). A partir do .NET Framework 4, a DLL de profiling não precisa estar registrada como objeto COM, bastando específicar seu caminho via `COR_PROFILER_PATH`. Essa flexibilidade amplia significativamente a superfície de abuso.
O grupo [[g0108-blue-mockingbird|Blue Mockingbird]] utilizou essa técnica em campanhas de criptomineração, e o malware [[s1066-darktortilla|DarkTortilla]] emprega COR_PROFILER para garantir execução persistente em ambientes Windows corporativos. No contexto do Brasil e da América Latina, onde sistemas de ERP, portais financeiros e aplicações governamentais baseadas em .NET são amplamente utilizados, essa técnica representa risco elevado para setores de [[financial|finanças]], [[government|governo]] e [[technology|tecnologia]]. O adversário pode ainda usar o mecanismo para escalar privilégios se o processo .NET alvo executar com permissões elevadas, além de comprometer soluções de segurança que dependam do runtime .NET, conforme documentado na técnica [[t1562-impair-defenses|T1562 - Impair Defenses]].
## Attack Flow
```mermaid
graph TB
A([Acesso Inicial<br/>Exploração ou Credenciais]) --> B([Execução<br/>Modificação de Variável de Ambiente])
B --> C([Persistência<br/>COR_PROFILER Definido no Registro])
C --> D([Sequestro de Fluxo<br/>DLL Maliciosa Carregada no CLR])
D --> E([Escalada de Privilégios<br/>Processo .NET com Permissões Elevadas])
E --> F([Evasão<br/>Defesas .NET Comprometidas])
F --> G([Objetivo Final<br/>Criptomineração / Espionagem / Ransomware])
style A fill:#4a1942,color:#fff
style B fill:#7b2d8b,color:#fff
style C fill:#c0392b,color:#fff
style D fill:#e67e22,color:#fff
style E fill:#c0392b,color:#fff
style F fill:#2980b9,color:#fff
style G fill:#1a5276,color:#fff
```
## Como Funciona
**Passo 1 - Configuração da variável COR_PROFILER no registro**
O adversário define as variáveis de ambiente necessárias para ativar o profiling malicioso. Em escopo de sistema, as chaves são gravadas em `HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment`: `COR_ENABLE_PROFILING=1`, `COR_PROFILER={GUID-do-COM-object}` e `COR_PROFILER_PATH=C:\caminho\para\dll_maliciosa.dll`. A DLL maliciosa não precisa ser assinada digitalmente nem registrada previamente no COM, a partir do .NET 4. Alternativamente, em escopo de usuário, as chaves são gravadas em `HKCU\Environment`, exigindo apenas privilégios do próprio usuário.
**Passo 2 - Injeção da DLL em todos os processos .NET**
Após a configuração, toda aplicação .NET que inicializar o CLR irá automaticamente carregar a DLL específicada em `COR_PROFILER_PATH`. A DLL maliciosa implementa a interface `ICorProfilerCallback` e pode executar código arbitrário durante a inicialização do processo, antes mesmo que a lógica da aplicação legítima sejá ativada. Isso permite captura de credenciais, injeção de shellcode, modificação de comportamento de aplicações específicas ou instalação de payloads adicionais.
**Passo 3 - Persistência automática e evasão**
A persistência é garantida enquanto as chaves de registro permanecerem configuradas: qualquer reinicialização do sistema reativa o mecanismo sem ações adicionais do adversário. Como a DLL é carregada por processos legítimos (ex.: `powershell.exe`, `msbuild.exe`, aplicações de negócio), ferramentas de segurança baseadas em reputação de processo têm dificuldade em identificar o comportamento anômalo. O abuso em escopo de processo (sem modificação de registro) torna a detecção ainda mais desafiadora, pois não deixa artefatos persistentes em disco ou registro.
## Detecção
```yaml
title: COR_PROFILER Environment Variable Set for .NET Hijacking
id: 7e2b4f1a-9c3d-4b8e-a5f2-3d6c0e9b1a4f
status: experimental
description: >
Detecta configuração maliciosa de COR_PROFILER via registro ou linha de comando,
indicador de possível sequestro de fluxo de execução .NET (T1574.012).
author: RunkIntel
daté: 2026-03-25
tags:
- attack.persistence
- attack.privilege_escalation
- attack.defense_evasion
- attack.t1574.012
logsource:
category: registry_set
product: windows
detection:
selection_registry:
TargetObject|contains:
- '\Environment\COR_ENABLE_PROFILING'
- '\Environment\COR_PROFILER'
- '\Environment\COR_PROFILER_PATH'
filter_legitimate:
Details: '0'
condition: selection_registry and not filter_legitimate
falsepositives:
- Ferramentas legítimas de profiling .NET (ex.: New Relic, Dynatrace, AppDynamics)
- Ambientes de desenvolvimento com profilers de debugging instalados
level: high
```
## Mitigação
| ID | Mitigação | Descrição |
|---|-----------|-----------|
| M1024 | [[m1024-restrict-registry-permissions\|M1024 - Restrict Registry Permissions]] | Restringir permissões de escrita nas chaves de registro `HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment` e `HKCU\Environment` para impedir que usuários não privilegiados configurem variáveis COR_PROFILER no escopo de sistema. |
| M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Implementar políticas de controle de aplicativos (ex.: Windows Defender Application Control, AppLocker) para bloquear carregamento de DLLs não assinadas ou não autorizadas em contexto de profiling .NET. |
| M1018 | [[m1018-user-account-management\|M1018 - User Account Management]] | Aplicar princípio de menor privilégio para limitar contas com permissão de modificar variáveis de ambiente de sistema. Auditar contas com acesso a `SeDebugPrivilege` e permissões administrativas locais. |
## Threat Actors que Usam
- [[g0108-blue-mockingbird|Blue Mockingbird]] - grupo de criptomineração que utiliza COR_PROFILER para persistência e execução de XMRig em ambientes Windows corporativos.
## Software Associado
- [[s1066-darktortilla|DarkTortilla]] - loader .NET que emprega COR_PROFILER como mecanismo de persistência e evasão em campanhas de distribuição de RATs e stealers.
## Referências
*Fonte: [MITRE ATT&CK - T1574.012](https://attack.mitre.org/techniques/T1574/012)*