# T1480 - Execution Guardrails
> [!info] Técnica Pai
> T1480 é a técnica-raiz para [[t1480-001-environmental-keying|T1480.001 - Environmental Keying]] e [[t1480-002-mutual-exclusion|T1480.002 - Mutual Exclusion]]. Adversários usam verificações ambientais para garantir que payloads só executem no alvo pretendido, reduzindo exposição e colateral.
## Descrição
**Execution Guardrails** (Guardas de Execução) é uma técnica pela qual adversários condicionam a execução de um payload a verificações específicas do ambiente-alvo. Em vez de executar incondicionalmente, o malware consulta características do sistema - nome do host, domínio Active Directory, endereço IP, arquivos presentes, dispositivos físicos conectados, variáveis de ambiente, idioma do sistema operacional - e só prossegue se os valores conferem com os esperados.
O objetivo central é a **contenção operacional**: o agente de ameaça desejá que sua ferramenta funcione exclusivamente no ambiente-alvo, evitando execução acidental em sistemas de análise, sandboxes de fornecedores de segurança, ou redes de terceiros. Ao contrário da [[Sandbox Evasion]] - que busca *ausência* de indicadores de sandbox - o Execution Guardrails busca a *presença* de marcadores específicos do alvo.
Essa distinção é operacionalmente relevante para equipes de defesa: um artefato com guardas de execução pode passar completamente silencioso em um sandbox genérico (retornando código de saída 0 sem atividade maliciosa) e somente detonar no sistema correto. Isso torna a análise dinâmica em ambientes não-customizados práticamente ineficaz contra ameaças avançadas que empregam esta técnica.
Além de verificações locais, adversários também podem filtrar **user-agents HTTP** em estágios de download ou C2, servindo payloads maliciosos apenas para agentes compatíveis (por exemplo, apenas Internet Explorer no Windows 7 em empresas industriais) enquanto respondem com conteúdo benigno para outros. Esse padrão é comum em campanhas de watering hole direcionadas.
## Como Funciona
O fluxo de um payload com Execution Guardrails segue tipicamente quatro fases:
1. **Coleta de fingerprint ambiental** - O loader ou dropper coleta múltiplos atributos do host: hostname, domínio AD, SID do usuário, IP local, volume serial do disco, arquivos específicos em caminhos conhecidos, processos em execução, keys de registro, idioma do sistema.
2. **Verificação contra valores esperados** - Os valores coletados são comparados com constantes hardcoded, hashes de valores esperados (para evitar strings plaintext), ou válidados via criptografia (Environmental Keying - [[t1480-001-environmental-keying|T1480.001]]).
3. **Decisão de execução** - Se todos os critérios forem satisfeitos: executa o payload principal. Se falhar em qualquer critério: o programa termina normalmente, apaga rastros ou simula comportamento benigno.
4. **Mutex como guarda** - Em cenários de múltiplas infecções, um mutex global ([[t1480-002-mutual-exclusion|T1480.002]]) impede que o payload execute mais de uma instância no mesmo host, evitando duplicatas que poderiam acionar alertas de comportamento.
### Exemplos de verificações comuns
| Tipo de Guarda | Exemplo | Propósito |
|---------------|---------|-----------|
| Hostname | `DESKTOP-FINANC01` | Garantir execução em host específico |
| Domínio AD | `corp.empresa.com.br` | Restringir a redes corporativas |
| IP local | `192.168.10.0/24` | Limitar à subnet alvo |
| Arquivo sentinela | `C:\ProgramData\app\config.dat` | Token de autorização local |
| Idioma do SO | `pt-BR` / `0x0416` | Targeting geográfico |
| Volume serial | Hash do disco C: | Environmental Keying |
| Mutex | `Global\{GUID}` | Anti-duplicata |
| User-Agent | `Mozilla/5.0 (Windows NT 6.1; Trident/7.0)` | Filtro de watering hole |
## Attack Flow
```mermaid
graph TB
A([Adversário entrega payload]) --> B{Verificação de Ambiente}
B --> C[Coleta fingerprint do host]
C --> C1[Hostname / Domínio AD]
C --> C2[IP local / subnet]
C --> C3[Arquivos / Registry keys]
C --> C4[Idioma do SO / Timezone]
C --> C5[Volume serial do disco]
C1 & C2 & C3 & C4 & C5 --> D{Valores batem com alvo?}
D -->|NÃO| E[Encerra silenciosamente]
E --> E1[Simula comportamento benigno]
E --> E2[Auto-deleta artefatos]
D -->|SIM| F{Mutex presente?}
F -->|SIM - já rodando| G[Aborta instância duplicada]
F -->|NÃO| H[Cria mutex T1480.002]
H --> I[Executa payload principal]
I --> J[C2 / Lateral Movement]
I --> K[Exfiltração de dados]
I --> L[Ransomware / Destruição]
style A fill:#c0392b,color:#fff
style D fill:#e67e22,color:#fff
style F fill:#e67e22,color:#fff
style E fill:#27ae60,color:#fff
style I fill:#8e44ad,color:#fff
style J fill:#2980b9,color:#fff
style K fill:#2980b9,color:#fff
style L fill:#2980b9,color:#fff
```
## Exemplos de Uso
### Gamaredon Group - Operações contra a Ucrânia
O [[g0047-gamaredon|Gamaredon Group]] (atribuído ao FSB russo) utiliza extensivamente guardas de execução baseadas em verificação de domínio Active Directory. Seus droppers VBS e PowerShell verificam se o host está ingressado em domínios `.ua` ou em organizações governamentais ucranianas específicas antes de baixar estágios adicionais. Scripts coletados em 2022-2024 apresentam verificações do tipo `If (domain LIKE "*.gov.ua")` antes de prosseguir. Isso explica a baixa taxa de detecção em análises genéricas e a alta efetividade contra alvos governamentais.
### BlackByte Ransomware - Verificação de idioma
O [[g1043-blackbyte|BlackByte]] implementou uma guarda de execução que verifica o idioma configurado no Windows (LCID). Se o sistema está configurado com idiomas da CEI (Rússia, Ucrânia, Bielorrússia, Cazaquistão, etc.), o ransomware não executa - um padrão comum entre grupos de ransomware do leste europeu para evitar processos criminais locais. Esta verificação usa `GetSystemDefaultLCID()` e compara com lista hardcoded.
### Contagious Interview - Watering hole com User-Agent
A campanha [[g1052-contagious-interview|Contagious Interview]] (atribuída à Coreia do Norte / Lazarus) distribui payloads JavaScript em plataformas de recrutamento. O servidor C2 verifica o User-Agent da vítima antes de servir o payload malicioso - apenas navegadores em sistemas macOS ou Windows com versões específicas recebem o código de exploração. Navegadores de análise ou headless browsers recebem JS benigno.
### DEADEYE / APT41 - Environmental Keying
O [[s1052-deadeye|DEADEYE]], loader utilizado pelo [[g0096-apt41|APT41]], emprega Environmental Keying ([[t1480-001-environmental-keying|T1480.001]]): parte do payload é cifrada com uma chave derivada de atributos do host-alvo (ex: volume serial). Apenas o sistema correto consegue derivar a chave e decifrar o código real. Em análise dinâmica em sandbox, o resultado é apenas ruído criptográfico.
### RansomHub / DarkGaté - Mutex anti-duplicata
Tanto o [[s1212-ransomhub|RansomHub]] quanto o [[darkgaté|DarkGaté]] criam mutexes globais com GUIDs específicos da campanha como guardas de execução. Isso serve dois propósitos: evitar re-infecção do mesmo host (o que poderia degradar o desempenho e acionar alertas) e funcionar como kill switch - operadores podem "queimar" o mutex públicando-o para que o malware encerre sozinho em sistemas já comprometidos ou em análise.
## Detecção
> [!warning] Limitações de Detecção
> Por design, Execution Guardrails resulta em **nenhuma atividade maliciosa detectável** quando o ambiente não corresponde ao alvo. Sandboxes genéricos são ineficazes. A detecção efetiva requer análise comportamental em ambientes que repliquem fielmente o ambiente-alvo, ou análise estática do código de verificação.
### Regra Sigma - Verificação de Idioma do Sistema
```yaml
title: Suspicious System Language Check Before Execution
id: a7f3e291-4b52-4c18-9d3e-f8a1c2b56d90
status: experimental
description: >
Detecta processos consultando o idioma/locale do sistema operacional
seguidos de comportamento de rede ou escrita de arquivos - padrão de
Execution Guardrails baseado em targeting geográfico.
references:
- https://attack.mitre.org/techniques/T1480/
author: RunkIntel
daté: 2026-03-25
tags:
- attack.defense_evasion
- attack.t1480
logsource:
category: process_creation
product: windows
detection:
selection_locale_check:
CommandLine|contains:
- 'GetSystemDefaultLCID'
- 'GetUserDefaultLCID'
- 'GetLocaleInfo'
- 'SystemLocale'
selection_suspicious_parent:
ParentImage|endswith:
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\powershell.exe'
- '\cmd.exe'
condition: selection_locale_check and selection_suspicious_parent
falsepositives:
- Aplicações legítimas de internacionalização
- Instaladores com suporte multi-idioma
level: medium
```
### Regra Sigma - Criação de Mutex Suspeito
```yaml
title: Global Mutex Creation as Execution Guardrail
id: b9c4d782-5e63-4f29-8a7b-1d2e9f3c0a85
status: experimental
description: >
Detecta criação de mutexes globais com nomes baseados em GUIDs ou
strings aleatórias - padrão associado ao T1480.002 (Mutual Exclusion)
como guarda de execução de ransomware e loaders.
references:
- https://attack.mitre.org/techniques/T1480/002/
author: RunkIntel
daté: 2026-03-25
tags:
- attack.defense_evasion
- attack.t1480
- attack.t1480.002
logsource:
product: windows
category: registry_event
detection:
selection_mutex:
ObjectName|startswith: '\BaseNamedObjects\Global\'
ObjectName|re: '.*[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*'
filter_legitimate:
Image|startswith:
- 'C:\Program Files\'
- 'C:\Windows\System32\'
condition: selection_mutex and not filter_legitimate
falsepositives:
- Software legítimo usando GUIDs para instâncias únicas
level: low
```
### Estrategias de Detecção Complementares
| Abordagem | Método | Eficácia |
|-----------|--------|---------|
| Análise estática | Extrair strings hardcoded de hostnames/domínios | Alta para samples não ofuscados |
| Sandbox personalizado | Replicar ambiente-alvo (hostname, domínio, IP) | Alta quando target conhecido |
| EDR comportamental | Detectar queries de `GetComputerName`, `GetDomainInfo` sem ação subsequente | Média |
| Honeypot | Hospedar arquivos sentinela e monitorar acesso | Alta para guardas baseadas em arquivo |
| Network IDS | Filtrar servidores que servem conteúdo diferente por User-Agent | Média para watering holes |
## Mitigação
| ID | Mitigação | Implementação | Eficácia |
|---|-----------|--------------|---------|
| [[m1055-do-not-mitigaté\|M1055 - Do Not Mitigaté]] | Por design, as verificações ambientais são indistinguíveis de comportamento legítimo | Foco deve ser em detecção e análise estática | Baixa |
> [!tip] Abordagem Recomendada
> Como mitigação direta é classificada como não aplicável (M1055), a estratégia deve focar em:
> - **Análise estática** de artefatos suspeitos para identificar código de verificação ambiental
> - **Sandboxes customizados** que repliquem o ambiente de produção (hostname, domínio, IP)
> - **Redução de superfície**: remover informações do ambiente de variáveis de ambiente públicas
> - **Zero Trust**: assumir comprometimento possível independente de verificações do atacante
## Sub-técnicas
- [[t1480-001-environmental-keying|T1480.001 - Environmental Keying]]
- [[t1480-002-mutual-exclusion|T1480.002 - Mutual Exclusion]]
## Contexto Brasil/LATAM
A técnica T1480 tem relevância crescente no contexto brasileiro, especialmente por três vetores:
**Ransomware com verificação de idioma:** Grupos como [[g1043-blackbyte|BlackByte]], [[s1212-ransomhub|RansomHub]] e variantes do [[lockbit|LockBit]] verificam o LCID do sistema. O código de idioma do Brasil (`0x0416` - Português do Brasil) *não está* nas listas de exclusão de grupos russos/europeus orientais, o que significa que empresas brasileiras são alvos válidos mesmo nessas campanhas. O setor [[_sectors|financeiro]] e de infraestrutura crítica são os mais afetados.
**Campanhas de espionagem industrial:** Adversários com interesse em empresas do setor de [[energy|energia]] e [[government|governo]] no Brasil têm usado verificações de domínio AD para garantir execução apenas em redes corporativas específicas. Esse padrão foi documentado em incidentes envolvendo o setor de petróleo e gás na região.
**Watering holes setoriais:** Portais de notícias do setor financeiro brasileiro e plataformas de licitação governamental foram usados como staging para watering holes com filtro de User-Agent - servindo exploits apenas para versões específicas de browsers corporativos comuns em empresas brasileiras.
**Implicação para SOCs locais:** Sandboxes genéricos (Cuckoo, Any.Run sem configuração) falham sistematicamente contra amostras com guardas ambientais. SOCs brasileiros devem:
1. Manter perfis de sandbox que repliquem ambientes corporativos locais (domínios `.com.br`, hostnames padrão, IPs de ASNs brasileiros)
2. Integrar análise estática via [[hybridanalysis-client|Hybrid Analysis]] para identificar verificações hardcoded
3. Correlacionar alertas de `GetComputerName` / `NetGetJoinInformation` sem ação maliciosa subsequente
## Referências
- [MITRE ATT&CK - T1480 Execution Guardrails](https://attack.mitre.org/techniques/T1480/)
- [MITRE ATT&CK - T1480.001 Environmental Keying](https://attack.mitre.org/techniques/T1480/001/)
- [MITRE ATT&CK - T1480.002 Mutual Exclusion](https://attack.mitre.org/techniques/T1480/002/)
- [Mandiant - APT41 DEADEYE Loader Analysis](https://www.mandiant.com/resources/blog/apt41-us-state-governments)
- [BlackByte Ransomware Language Check - Sophos](https://news.sophos.com/en-us/2022/01/17/blackbyte-ransomware-bypasses-uac-exploits-legitimate-driver/)
- [Gamaredon Group TTPs - CERT-UA](https://cert.gov.ua/article/18419)
- [RansomHub Technical Analysis - GuidePoint Security](https://www.guidepointsecurity.com/blog/threat-intel-ransomhub-raas/)
---
**Técnica pai:** Não aplicável (T1480 é técnica de nível 1)
**Sub-técnicas:** [[t1480-001-environmental-keying|T1480.001 - Environmental Keying]] · [[t1480-002-mutual-exclusion|T1480.002 - Mutual Exclusion]]
**Tática:** [[_defense-evasion|Defense Evasion]]
*Fonte: [MITRE ATT&CK - T1480](https://attack.mitre.org/techniques/T1480)*