# Cobalt Strike
> [!danger] Ferramenta Dual-Use - Mais Abusada por APTs e Ransomware
> Framework comercial de simulação de adversários amplamente abusado por grupos de estado-nação, operadores de ransomware e crime organizado. O Beacon payload oferece C2 flexível, movimentação lateral avançada e evasão de defesas configurável. Identificado em práticamente todas as cadeias de ataque de ransomware investigadas no Brasil em 2023-2024.
## Visão Geral
[[s0154-cobalt-strike|Cobalt Strike]] é uma plataforma comercial de adversary simulation desenvolvida originalmente por Raphael Mudge em **2012** como extensão do Metasploit Framework. A partir da versão 3.0 (setembro de 2015), o foco migrou para o payload **Beacon** - projetado para pós-exploração assíncrona, aquisição de alvos e movimentação lateral.
O produto legítimo é amplamente utilizado por equipes de red team autorizadas, consultores de segurança e simulações de adversários em grandes organizações. Contudo, versões crackeadas e pirateadas circulam amplamente em fóruns clandestinos desde pelo menos 2015, tornando-o a ferramenta de pós-exploração mais abusada por atores de ameaça globalmente.
**Versões e evolução:**
- **1.x-2.x (2012-2015):** Baseado em Metasploit; coberta básica de red team
- **3.0+ (2015):** Beacon como payload central; foco em simulação de APT
- **4.x (2020+):** Mudança para Fortra (HelpSystems); BeaconGaté (4.10), BOFs, sleep masking avançado
- **Versões crackeadas mais usadas por atores:** 4.3, 4.4 e 4.7 são as mais frequentemente encontradas em operações maliciosas
**Por que é tão prevalente:** A natureza dual-use torna a atribuição mais complexa (legítimo vs. malicioso?), o Malleable C2 permite evasão de detecções estáticas, e versões crackeadas estão disponíveis sem custo para atores criminosos.
## Como Funciona
### Arquitetura: Team Server + Beacon
O Cobalt Strike opera em modelo cliente-servidor:
- **Team Server:** Infraestrutura de C2 controlada pelo operador (porta padrão 50050)
- **Beacon:** Payload implantado no sistema alvo - o agente que recebe comandos e executa tarefas
- **Client:** Interface gráfica do operador para interagir com Beacons conectados
### Beacon - O Payload Central
O Beacon é o payload principal do Cobalt Strike. Modos de deploy:
- **Staged (stager):** Pequeno dropper (~300 bytes) que baixa o Beacon completo - detectável por comportamento de download
- **Stageless:** Beacon completo embutido no dropper - maior em tamanho mas sem download de segundo estágio
- **Memory-only (shellcode):** Executado diretamente em memória sem arquivo em disco - menor footprint forense
**Modos de comunicação C2:**
- **HTTP/HTTPS:** Padrão; customizável via Malleable C2 profiles
- **DNS:** Canal C2 alternativo via resolução DNS - ultrapassa firewalls restritivos
- **SMB (named pipes):** Comúnicação peer-to-peer entre Beacons para pivoting em redes segmentadas
- **TCP:** Pivoting direto entre hosts comprometidos
**Configurações de timing:**
- `sleep`: Intervalo entre callbacks (padrão: 60 segundos)
- `jitter`: Variação aleatória do sleep para evadir detecção por timing (ex: 20% = variação de ±12s)
### Malleable C2 - O Diferencial de Evasão
Os **Malleable C2 profiles** são arquivos de configuração que redefinem completamente o comportamento HTTP/HTTPS/DNS do Beacon, permitindo que o tráfego imite qualquer aplicação legítima ou APT conhecido:
- Emular tráfego do Amazon S3, Microsoft OneDrive, ou Google Analytics
- Replicar fingerprints de APTs específicos (APT29, Lazarus)
- Customizar headers HTTP, URI patterns, cookies, user-agents
**Implicação para detecção:** IoCs estáticos (domínios, IPs, hashes) são rapidamente inválidados. A detecção deve focar em comportamento, não em assinaturas estáticas.
### Capacidades de Pós-Exploração
**Movimentação lateral (comando `jump`):**
- `jump psexec` / `jump psexec64` - via PsExec sobre SMB
- `jump winrm` / `jump winrm64` - via WinRM
- `jump smb` - named pipe via SMB (peer-to-peer entre Beacons)
**Escalação de privilégios:**
- Token manipulation via `[[t1134-access-token-manipulation|T1134]]`
- Named pipe impersonation para SYSTEM token
- `getprivs` para verificar e ativar privilégios disponíveis
**Credential dumping:**
- Módulo `hashdump` - extrai hashes do SAM
- `logonpasswords` via [[mimikatz|Mimikatz]] integrado (sekurlsa::)
- `dcsync` para replicação de credenciais do Domain Controller
**Beacon Object Files (BOFs):**
Extensões customizadas executadas em memória do Beacon sem spawn de processo filho - técnica para reduzir footprint e evadir detecção de criação de processo.
**BeaconGaté (v4.10+):**
Intercepta e redireciona chamadas de API do Windows para implementar evasão avançada via sleep mask customizado - dificultando scan de memória mesmo durante execução ativa.
## Attack Flow
```mermaid
graph TB
A["Acesso Inicial<br/>Phishing exploit app web<br/>Credenciais comprometidas"] --> B["Stager Stageless<br/>PowerShell HTA Macro<br/>Download ou shellcode embutido"]
B --> C["Beacon em Memoria<br/>Execução sem arquivo em disco<br/>Sleep mask para evasão"]
C --> D["Check-in C2<br/>Malleable C2 profile<br/>HTTP HTTPS DNS SMB pipe"]
D --> E["Pos-Exploração<br/>Reconhecimento de dominio<br/>T1087 Account Discovery"]
E --> F["Credential Dumping<br/>Mimikatz via Beacon<br/>DCSync hashdump"]
F --> G["Movimento Lateral<br/>jump psexec winrm smb<br/>Token impersonation T1134"]
G --> H["Objetivo Final<br/>Exfiltração Ransomware<br/>Persistência de longo prazo"]
classDef delivery fill:#e74c3c,stroke:#c0392b,color:#fff
classDef exploit fill:#e67e22,stroke:#d35400,color:#fff
classDef implant fill:#3498db,stroke:#2980b9,color:#fff
classDef c2 fill:#9b59b6,stroke:#8e44ad,color:#fff
classDef recon fill:#27ae60,stroke:#1e8449,color:#fff
classDef creds fill:#f39c12,stroke:#d68910,color:#fff
classDef lateral fill:#2980b9,stroke:#1a5276,color:#fff
classDef impact fill:#2c3e50,stroke:#1a252f,color:#fff
class A delivery
class B exploit
class C implant
class D c2
class E recon
class F creds
class G lateral
class H impact
```
## Superfície de Ataque: Beacon + Team Server
```mermaid
graph TB
subgraph acesso["Acesso Inicial"]
A1["Phishing / Macro"]
A2["Exploit app web"]
A3["Credenciais IAB"]
end
subgraph implante["Implantação do Beacon"]
B1["Stager ~300 bytes<br/>Download 2o estagio"]
B2["Stageless embutido<br/>Shellcode in-memory"]
B3["BOF em memoria<br/>Sem processo filho"]
end
subgraph c2["Canais C2 (Malleable)"]
C1["HTTP/HTTPS<br/>Imita S3/OneDrive"]
C2["DNS C2<br/>Bypass de firewall"]
C3["SMB Named Pipe<br/>Pivoting P2P"]
end
subgraph posexp["Pos-Exploração"]
D1["Mimikatz / DCSync<br/>Credential dumping"]
D2["jump psexec/winrm<br/>Movimento lateral"]
D3["BeaconGaté<br/>Evasão de scan RAM"]
end
A1 --> B1
A2 --> B2
A3 --> B2
B1 --> C1
B2 --> C1
B2 --> C2
B3 --> C3
C1 --> D1
C2 --> D1
C3 --> D2
D1 --> D2
D2 --> D3
classDef access fill:#cc0000,color:#fff
classDef implant fill:#cc6600,color:#fff
classDef c2node fill:#1a3a5c,color:#fff
classDef posxp fill:#1a4a2a,color:#fff
class A1,A2,A3 access
class B1,B2,B3 implant
class C1,C2,C3 c2node
class D1,D2,D3 posxp
```
## TTPs Mapeados
| Tática | Técnica | Uso pelo Cobalt Strike |
|--------|---------|------------------------|
| Execution | [[t1059-001-powershell\|T1059.001]] | PowerShell ofuscado para download e execução de stager |
| Execution | [[t1218-011-rundll32\|T1218.011]] | Beacon via rundll32 com DLL customizada |
| Defense Evasion | [[t1055-process-injection\|T1055]] | Injeção em processos legítimos (svchost, explorer) |
| Defense Evasion | [[t1027-obfuscated-files-or-information\|T1027]] | Beacon payload ofuscado e cifrado em memória |
| Privilege Escalation | [[t1134-access-token-manipulation\|T1134]] | Named pipe impersonation para SYSTEM token |
| Credential Access | [[t1003-001-lsass-memory\|T1003.001]] | Mimikatz integrado via módulo logonpasswords |
| Discovery | [[t1087-account-discovery\|T1087]] | Enumeração de domínio (net group, nltest, BloodHound) |
| Discovery | [[t1046-network-service-scanning\|T1046]] | Port scanning via portscan do Beacon |
| Lateral Movement | [[t1569-002-service-execution\|T1569.002]] | jump psexec - execução remota via serviço |
| C2 | [[t1071-001-web-protocols\|T1071.001]] | HTTP/HTTPS com Malleable C2 profile |
| C2 | [[t1071-004-dns\|T1071.004]] | DNS como canal C2 alternativo |
| C2 | [[t1573-002-asymmetric-cryptography\|T1573.002]] | Comúnicação C2 criptografada com RSA |
| C2 | [[t1105-ingress-tool-transfer\|T1105]] | Download de ferramentas adicionais via Beacon |
## Evolução da Plataforma
```mermaid
timeline
title Evolução do Cobalt Strike
2012 : Lancamento por Raphael Mudge
: Extensao do Metasploit Framework
2015 : Versao 3.0 - Beacon como payload central
: Primeiras versoes crackeadas circulam
2019 : Abuso massivo por APTs e ransomware
: APT29 usa no SolarWinds
2020 : Fortra (HelpSystems) adquire o produto
: Versao 4.x - sleep masking avancado
2022 : Presente em todas investigacoes BR
: Versoes 4.3, 4.4, 4.7 mais usadas
2024 : BeaconGaté v4.10 - evasão de scan de RAM
: Framework padrao pre-ransomware no Brasil
```
## Atores Conhecidos Usando Cobalt Strike
| Ator | Contexto | Conexão LATAM |
|------|----------|---------------|
| [[g0016-apt29\|APT29 (Cozy Bear)]] | Espionagem - usado na campanha [[solarwinds-supply-chain-attack\|SolarWinds]] | Alvos globais incluindo org. brasileiras |
| [[g0096-apt41\|APT41 (Winnti)]] | Espionagem e crime financeiro | Alvos em telecomúnicações |
| [[g0046-fin7\|FIN7]] | Ataques a POS e setor financeiro | Operações confirmadas em LATAM |
| [[g0102-conti-group\|Wizard Spider]] | Ransomware Conti/Ryuk - pré-payload padrão | Ataques a organizações brasileiras documentados |
| [[g0032-lazarus-group\|Lazarus Group]] | Operações financeiras e espionagem DPRK | Ataques a setor financeiro LATAM |
| [[evil-corp\|Evil Corp]] | Crime financeiro russo | Afiliados com alvos globais |
| Afiliados LockBit | RaaS - Cobalt Strike como framework pré-ransomware | Brasil entre os países mais afetados |
## Infraestrutura e Hunting de Team Servers
### Fingerprints do Team Server (Padrão)
O Team Server em configuração padrão deixa múltiplos artefatos detectáveis:
**Certificado TLS padrão:**
- Serial: `146473198`
- SHA256: `87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c`
- Subject e issuer com campos padrão do Cobalt Strike
**JARM fingerprints padrão:**
- Java 11: `07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1`
- Java 13: `2ad2ad16d2ad2ad22c42d42d00042d58c7162162b6a603d3d90a2b76865b53`
- Java 1.8: `07d14d16d21d21d07c07d14d07d21d9b2f5869a6985368a9dec764186a9175`
**Porta padrão:** 50050 (frequentemente alterada por operadores)
**URLs padrão de beacon:**
- `/aaa9` ou `/aab8` (beacons 32-bit)
- `/aab9` ou `/aac8` (beacons 64-bit)
> [!tip] Hunting com Shodan/Censys
> Usar os JARM fingerprints acima para identificar Team Servers expostos. Muitos operadores menos experientes não alteram as configurações padrão. Hunt.io AttackCapture identifica continuamente novos Team Servers expostos em diretórios abertos.
### Named Pipes Padrão do Beacon
Beacons usando SMB para P2P criam named pipes configuráveis, mas muitos operadores usam os padrões:
```
\\.\pipe\msagent_<hex>
\\.\pipe\interprocess_<hex>
\\.\pipe\MSSE-<hex>-server
\\.\pipe\postex_<hex>
\\.\pipe\status_<hex>
\\.\pipe\mojo_<hex>
```
### Timing Analysis (Beaconing Detection)
Análise de 4.400+ configurações de Beacon extraídas:
- Sleep médio: ~51,95 segundos
- Jitter médio: ~4%
- Intervalo esperado de callback: 49,87-54,03 segundos (com jitter médio)
Monitorar conexões HTTPS periódicas com intervalo regular a IPs não-categorizados como indicativo de beaconing ativo.
## Detecção
### Comportamental (EDR/SIEM)
**Named pipe suspeito:**
```
file_modifications_include ('pipe\msagent_' || 'pipe\interprocess_' ||
'pipe\lsarpc_' || 'pipe\samr_' || 'pipe\netlogon_' || 'pipe\wkssvc_' ||
'pipe\srvsvc_' || 'pipe\mojo_' || 'pipe\postex' || 'pipe\status_' ||
'pipe\msse-')
```
**GetSystem via named pipe (privilege escalation):**
```
process == cmd.exe
AND command_includes ('/(?i)echo\s+[0-9a-f]{11}\s+\>;\s+\\\.\\pipe\\[0-9a-f]{6}/.match')
```
**PowerShell download cradle:**
- Strings `split` ou `char` para deofuscação in-memory
- `IEX (New-Object Net.WebClient).DownloadString`
- Download de URIs com paths `/aab9`, `/aac8`, `/aaa9`
### Memória (Hunting)
- **CobaltStrikeParser:** Extrai configuração completa do Beacon de dumps de memória
- **YARA:** Regras para identificar Beacons não-maskados - detectam reflective loader stub e strings características (`SekunLsa`, `kerberos::`, campos de configuração)
- **Process injection:** Sysmon Event ID 10 (ProcessAccess) em processos como svchost, explorer, notepad com GrantedAccess `0x1F0FFF`
### Rede
- **JA3/JA3S fingerprinting:** `08e4a5e2bd0ea26c5dc40fdb3bfbf1b9` - fingerprint comum do Team Server (varia por versão Java)
- **Certificado TLS:** Self-signed com serial `146473198` em hosts não-categorizados
- **Beaconing:** Conexões HTTPS com intervalo regular (~51s) para IPs sem histórico de reputação
- **DNS C2:** Consultas DNS com alta frequência para domínio único com respostas TXT encodadas
## Relevância LATAM/Brasil
> [!danger] Framework Padrão Pré-Ransomware no Brasil
> O Cobalt Strike é identificado em práticamente todas as investigações de ransomware no Brasil realizadas por times de IR e DFIR. Grupos como [[g0102-conti-group|Wizard Spider]] (operador do [[conti|Conti]]), afiliados do [[s1202-lockbit-30|LockBit 3.0]] e [[g1024-akira|Akira]] utilizam Cobalt Strike como framework padrão de pós-exploração antes do deploy do ransomware. A presença de Cobalt Strike em uma rede deve ser tratada como indicativo de comprometimento avançado e possível operação de ransomware iminente.
> [!warning] Versões Crackeadas São o Problema Real
> A grande maioria dos usos maliciosos do Cobalt Strike utiliza versões crackeadas (4.3, 4.4, 4.7 são as mais comuns em investigações). Essas versões têm limitações (sem atualizações de evasão mais recentes) mas são suficientemente funcionais para operações criminosas. A Fortra implementou verificações de licença mais rigorosas nas versões 4.x, mas versões antigas continuam amplamente disponíveis.
> [!tip] Recomendação para SOCs Brasileiros
> Priorizar detecção comportamental e de rede sobre assinaturas estáticas. Implementar análise de JARM/JA3 em logs de proxy e firewall. Monitorar named pipes suspeitos e acesso ao LSASS via Sysmon. A presença de qualquer named pipe com padrão `MSSE-`, `postex_` ou `msagent_` deve acionar investigação imediata.
## Referências
- [MITRE ATT&CK - S0154](https://attack.mitre.org/software/S0154)
- [Red Canary Threat Detection Report - Cobalt Strike](https://redcanary.com/threat-detection-report/threats/cobalt-strike/) - 2023
- [Hunt.io - Guide to Hunting Cobalt Strike Part 1](https://hunt.io/blog/guide-hunting-cobalt-strike-part-1-open-directories) - 2026-03-19
- [Microsoft MSRC - Hunting Cobalt Strike: Mining and Plotting](https://www.microsoft.com/en-us/msrc/blog/2022/10/hunting-for-cobalt-strike-mining-and-plotting-for-fun-and-profit) - 2022-10
- [White Knight Labs - Harnessing Cobalt Strike Profiles for EDR Evasion](https://whiteknightlabs.com/2025/05/19/harnessing-the-power-of-cobalt-strike-profiles-for-edr-evasion-part-2/) - 2025-05
- [Elastic Security Labs - Bringing Home the Beacon](https://www.elastic.co/blog/bringing-home-the-beacon-cobalt-strike)
- [GitHub Te-k/cobaltstrike - YARA rules e análise](https://github.com/Te-k/cobaltstrike)
- [Cobalt Strike Oficial - Cobalt Strike e YARA](https://www.cobaltstrike.com/blog/cobalt-strike-and-yara-can-i-have-your-signature) - 2023-05