# T1480.002 - Mutual Exclusion
> [!info] Técnica Pai
> Esta é uma sub-técnica de **[[t1480-execution-guardrails|T1480 - Execution Guardrails]]**. Adversários usam mutex como mecanismo de guardrail para controlar em quais ambientes o malware executa e impedir a criação de múltiplas instâncias simultâneas.
## Descrição
**Mutual Exclusion** (Exclusão Mútua, ou simplesmente **mutex**) é um primitivo de sincronização do sistema operacional originalmente projetado para coordenar o acesso concorrente a recursos compartilhados por múltiplas threads ou processos. Adversários abusam desse mecanismo legítimo para dois fins distintos no contexto de malware:
1. **Controle de instância única**: garantir que apenas uma cópia do malware estejá em execução ao mesmo tempo, evitando conflitos internos, uso excessivo de recursos e a geração de artefatos duplicados que poderiam ser detectados por ferramentas de segurança.
2. **Verificação de ambiente de execução**: usar a presença ou ausência de um mutex específico como condição para continuar ou abortar a execução - funcionando como um **guardrail** que impede o malware de rodar em ambientes de análise (sandboxes, VMs de pesquisadores) onde o mutex não está presente.
No **Windows**, mutexes nomeados do sistema (`CreateMutex` + `OpenMutex` da Win32 API) são visíveis para todos os processos no mesmo contexto de sessão. O malware cria um mutex com nome único (hardcoded ou gerado algoritmicamente) na inicialização. Se outro processo já segura esse mutex, o segundo processo identifica que uma instância já existe e encerra a si mesmo silenciosamente.
No **Linux e macOS**, o mecanismo equivalente frequentemente envolve **arquivos de lock** (`/tmp/.lock`, `/var/run/malware.pid`) combinados com `flock()` ou `fcntl()`. Se o lock não puder ser adquirido, o processo assume que já existe uma instância ativa e sai. Algumas famílias de malware Linux utilizam também **semáforos POSIX** ou mutexes de memória compartilhada via `pthread_mutex_t`.
Nomes de mutex podem ser **hardcoded** (fáceis de detectar e usar como IoC, mas simples de implementar) ou **gerados dinâmicamente** com base em características do sistema - como ID de hardware, nome do usuário ou GUID do volume - tornando a detecção por assinatura mais difícil.
> [!warning] Ponto de Atenção para Analistas
> Mutexes hardcoded são excelentes IoCs: uma vez documentado, o nome do mutex pode ser usado para detectar infecções ativas via ferramentas como Process Hacker, Autoruns ou consultas ao Event Log. No entanto, adversários sofisticados como o [[g0082-apt38|APT38]] usam algoritmos de geração baseados em UUID da máquina, inválidando IoCs estáticos.
## Como Funciona
O fluxo de execução típico de malware que usa mutex como guardrail segue uma sequência bem definida:
**No Windows:**
1. O malware chama `CreateMutex(NULL, TRUE, "NomeMutexÚnico")` na inicialização.
2. Se o retorno for `ERROR_ALREADY_EXISTS`, outra instância está rodando - o processo termina via `ExitProcess(0)`.
3. Se a criação for bem-sucedida, o malware segura o mutex durante todo o ciclo de vida do processo.
4. Ao encerrar, o mutex é liberado automaticamente pelo SO, permitindo nova instância futura.
**No Linux:**
1. O malware tenta criar e travar um arquivo de lock em `/tmp/` ou `/var/run/`.
2. Usando `flock(fd, LOCK_EX | LOCK_NB)` (non-blocking exclusive lock).
3. Se `EWOULDBLOCK`, outra instância já existe - processo sai.
4. Escreve seu PID no arquivo lock para facilitar identificação.
**Variante como Guardrail Anti-Análise:**
Algumas famílias criam intencionalmente um mutex com nome específico antes de executar código malicioso, e verificam se um mutex "bloqueador" (indicador de sandbox) está presente. Ferramentas de análise automatizadas podem ser configuradas para pre-criar mutexes específicos, fazendo o malware desistir de executar em ambientes monitorados.
## Attack Flow
```mermaid
graph TB
A([Malware Inicia Execução]) --> B{Verificar Mutex<br/>Existente?}
B -->|Windows: OpenMutex| C[Chamar OpenMutex<br/>com nome único]
B -->|Linux: flock| D[Tentar flock<br/>no arquivo lock]
C --> E{Mutex já<br/>existe?}
D --> F{Lock<br/>disponível?}
E -->|Sim - ERROR_ALREADY_EXISTS| G([Encerrar Silenciosamente<br/>ExitProcess 0])
E -->|Não - Sucesso| H[Criar e Segurar Mutex<br/>CreateMutex TRUE]
F -->|Não - EWOULDBLOCK| G
F -->|Sim - Lock Adquirido| I[Escrever PID<br/>no arquivo lock]
H --> J{Verificar Mutex<br/>Anti-Sandbox?}
I --> J
J -->|Mutex bloqueador<br/>presente| G
J -->|Ambiente limpo| K([Continuar Execução<br/>Payload Principal])
K --> L[Atividade Maliciosa<br/>C2 / Coleta / Cifragem]
style A fill:#2d2d2d,color:#fff
style G fill:#c0392b,color:#fff
style K fill:#27ae60,color:#fff
style L fill:#8e44ad,color:#fff
style H fill:#e67e22,color:#fff
style I fill:#e67e22,color:#fff
```
## Exemplos de Uso
### APT38 - Lazarus Group (Coreia do Norte)
O [[g0082-apt38|APT38]], vinculado ao [[g0032-lazarus-group|Lazarus Group]] norte-coreano, emprega mutexes nomeados como parte da cadeia de execução de implantes bancários. O grupo é especializado em ataques ao sistema financeiro SWIFT, e seus implantes usam mutexes para garantir que apenas uma instância do módulo de interceptação de transações opere por vez, evitando dupla execução que poderia gerar logs anômalos.
### REvil (Sodinokibi)
O ransomware [[s0496-revil|REvil]] utilizava mutex com nome hardcoded baseado no ID da vítima para garantir que o processo de cifragem não fosse iniciado múltiplas vezes simultaneamente. A criação duplicada durante o processo de cifragem poderia resultar em corrupção de arquivos já cifrados, comprometendo a operação de extorsão.
### LockBit 3.0
O [[s1202-lockbit-30|LockBit 3.0]] gera nomes de mutex dinâmicamente usando o GUID do volume do disco de sistema. Isso significa que o mesmo sample em máquinas diferentes terá mutexes distintos - eliminando a possibilidade de usar o nome do mutex como IoC estático compartilhado entre incidentes.
### BPFDoor (Linux)
O [[s1161-bpfdoor|BPFDoor]], backdoor Linux atribuído a grupos de espionagem chineses, usa arquivo de lock em `/var/run/` para garantir instância única. Por operar como daemon persistente, o arquivo de lock também serve como mecanismo de sobrevivência: após reboot, o arquivo some e o daemon pode reiniciar sem conflito.
### PlugX
O [[s0013-plugx|PlugX]], RAT amplamente usado por grupos APT chineses, implementa mutex nomeado com strings ofuscadas ou geradas a partir de características do host. Diferentes variantes do PlugX têm sido documentadas com nomes como `{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}` baseados em UUIDs do sistema.
### PoisonIvy
O [[s0012-poisonivy|PoisonIvy]] (RAT utilizado desde 2005) criava mutex hardcoded como `"!IECompatible"` ou variações customizadas pelo operador no momento de build do implante. O nome configurável por operador foi amplamente documentado como IoC em campanhas de espionagem contra alvos governamentais e de defesa.
## Detecção
> [!tip] Estrategia de Detecção
> A detecção de mutex como guardrail combina três abordagens: monitoramento de criação de mutexes por processos suspeitos, análise comportamental de processos que terminam imediatamente após criar objetos kernel, e threat hunting com listas de mutex conhecidos de famílias de malware documentadas.
### Regra Sigma - Criação de Mutex por Processo Suspeito (Windows)
```yaml
title: Suspeito - Criação de Mutex por Binário Incomum
id: a4c3d8e1-2b7f-4e9a-8c5d-1f6b3a2e7d4c
status: experimental
description: >
Detecta criação de named mutex por processos fora do contexto
esperado de desenvolvimento ou sistema. Pode indicar malware
usando mutex para controle de instância ou guardrail anti-análise.
author: RunkIntel
daté: 2026-03-25
references:
- https://attack.mitre.org/techniques/T1480/002/
tags:
- attack.defense_evasion
- attack.t1480.002
logsource:
category: process_creation
product: windows
detection:
selection_mutex_api:
EventID: 4656
ObjectType: "Mutant"
ProcessName|endswith:
- '\powershell.exe'
- '\cmd.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\mshta.exe'
filter_known_good:
ObjectName|startswith:
- '\Sessions\1\BaseNamedObjects\MSCTF'
- '\Sessions\1\BaseNamedObjects\Local\SM'
- '\BaseNamedObjects\NLS_'
condition: selection_mutex_api and not filter_known_good
falsepositives:
- Ferramentas legítimas de scripting criando mutexes para controle de instância
- Software de automação corporativa
level: medium
```
### Regra Sigma - Processo Encerra Imediatamente Após Criar Mutex
```yaml
title: Suspeito - Processo de Curta Duração Criando Mutex Nomeado
id: b7e2f5a3-9c1d-4b8e-a6f2-3d5e8b1c4a7f
status: experimental
description: >
Processo que cria um named mutex e encerra em menos de 2 segundos
pode indicar malware verificando se já existe instância ativa
(padrão de guardrail anti-duplicação).
author: RunkIntel
daté: 2026-03-25
tags:
- attack.defense_evasion
- attack.t1480.002
logsource:
product: windows
service: sysmon
detection:
selection_creaté:
EventID: 17
PipeName|re: '.*'
selection_quick_exit:
EventID: 5
UtcTime|lt: "+00:00:02"
condition: selection_creaté and selection_quick_exit
falsepositives:
- Instaladores que verificam instâncias e saem
level: low
```
### Indicadores de Compromisso - Nomes de Mutex Conhecidos
| Família | Nome do Mutex | Tipo | Plataforma |
|---------|--------------|------|-----------|
| REvil | `{UUID baseado na vítima}` | Dinâmico | Windows |
| LockBit 3.0 | Derivado do GUID do volume | Dinâmico | Windows |
| PoisonIvy | `!IECompatible` (padrão) | Hardcoded | Windows |
| BPFDoor | `/var/run/.pid` | Arquivo lock | Linux |
| Qilin | Gerado por hash | Dinâmico | Windows |
| GrimAgent | String aleatória 16 chars | Gerado | Windows |
## Mitigação
| ID | Mitigação | Descrição | Eficácia |
|---|-----------|-----------|----------|
| M1055 | [[m1055-do-not-mitigaté\|M1055 - Do Not Mitigaté]] | Esta técnica não tem mitigação direta - é abuso de funcionalidade legítima do SO | N/A |
> [!note] Por que não há mitigação efetiva?
> Mutexes são primitivos fundamentais do SO usados por software legítimo. Bloquear a criação de mutexes quebraria grande parte do software corporativo. O foco deve estar em **detecção** (monitorar quem cria quais mutexes) e **threat hunting** (buscar ativamente por nomes de mutex conhecidos de famílias de malware).
### Compensating Controls
- Implementar **allowlisting de mutexes** em ambientes controlados: listar mutexes legítimos conhecidos e alertar para novos
- Usar **sandboxes de análise** que pré-criam mutexes conhecidos de ransomware para induzir self-termination antes da cifragem
- **Sysinternals Handle** / **Process Hacker**: ferramenta de resposta a incidentes para enumerar mutexes ativos em host comprometido
- Correlacionar criação de mutex com **indicadores de comportamento suspeito** (processo sem jánela, comunicação de rede, criação de arquivos em massa)
## Contexto Brasil/LATAM
> [!example] Relevância Regional
O uso de mutex como guardrail é onipresente no ecossistema de malware que afeta o Brasil e a América Latina, especialmente em famílias de **banking trojans** e **RATs** nacionais e internacionais:
**Banking Trojans Brasileiros**: Famílias como Grandoreiro, Guildma e Javali - que historicamente visam instituições financeiras brasileiras - implementam mutex para garantir que apenas uma instância do módulo de captura de tela e keylogger opere por vez. A operação simultânea múltipla poderia degradar a performance do sistema da vítima e gerar alertas de CPU.
**Ransomware no Setor Financeiro**: O setor financeiro brasileiro ([[financial|setor financeiro]]) é alvo frequente de grupos como [[s1202-lockbit-30|LockBit 3.0]] e [[s0496-revil|REvil]], que usam mutex dinâmico por vítima para operações de cifragem coordenadas em redes corporativas. Em ataques contra bancos regionais brasileiros em 2024-2025, análises forenses identificaram nomes de mutex únicos por organização.
**Grupos APT com Foco LATAM**: O [[g0082-apt38|APT38]] realizou operações contra o sistema financeiro brasileiro visando o sistema SWIFT. O uso de mutex em seus implantes é consistente com a necessidade de manter controle preciso sobre a jánela de execução do ataque, que frequentemente coincide com horários de processamento de transferências bancárias.
**Operações de Red Team Nacionais**: Equipes de red team brasileiras documentam abuso de mutex via ferramentas como [[s0363-empire|Empire]] e Cobalt Strike em avaliações de segurança de instituições financeiras - confirmando que a técnica é replicada tanto por agentes maliciosos quanto em exercícios defensivos.
A técnica também é relevante no contexto de **ataques a infraestrutura crítica** brasileira: usinas de energia e operadoras de telecomúnicações reportaram incidentes onde implantes usavam mutex para evitar detecção por soluções EDR que identificam processos duplicados como anomalia.
## Referências
- [MITRE ATT&CK - T1480.002: Mutual Exclusion](https://attack.mitre.org/techniques/T1480/002/)
- [MITRE ATT&CK - T1480: Execution Guardrails](https://attack.mitre.org/techniques/T1480/)
- [Microsoft Docs - CreateMutexA function](https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createmutexa)
- [Kaspersky - LockBit 3.0 Technical Analysis](https://securelist.com/lockbit-3-0-analysis/)
- [Mandiant - APT38 Financial Crime](https://www.mandiant.com/resources/apt38-un-usual-suspects)
- [Linux man page - flock(2)](https://man7.org/linux/man-pages/man2/flock.2.html)
---
**Técnica Pai:** [[t1480-execution-guardrails|T1480 - Execution Guardrails]]
**Técnicas Relacionadas:** [[Sandbox Evasion]] · [[t1622-debugger-evasion|T1622 - Debugger Evasion]] · [[t1480-001-environmental-keying|T1480.001 - Environmental Keying]]
**Malware Associado:** [[s1247-embargo|Embargo]] · [[qilin|Qilin]] · [[s1161-bpfdoor|BPFDoor]] · [[s0013-plugx|PlugX]] · [[s1202-lockbit-30|LockBit 3.0]] · [[s0632-grimagent|GrimAgent]] · [[s0496-revil|REvil]] · [[s0012-poisonivy|PoisonIvy]] · [[s1236-claimloader|CLAIMLOADER]] · [[s1196-troll-stealer|Troll Stealer]]
**Atores:** [[g0082-apt38|APT38]] · [[g0032-lazarus-group|Lazarus Group]]
*Fonte: [MITRE ATT&CK - T1480.002](https://attack.mitre.org/techniques/T1480/002)*