> [!warning] Aviso Importante
> Este playbook é um ponto de partida. Deve ser revisado, testado e adaptado ao ambiente da sua organização. Não substitui um plano formal de Incident Response. Consulte sua equipe jurídica e de segurança antes de executar qualquer ação de contenção ou erradicação. Procedimentos aplicados de forma incorreta podem destruir evidências forenses e comprometer o processo de resposta.
---
## Visão Geral
[[g0016-apt29]] — também conhecido como **Cozy Bear**, **Midnight Blizzard** e **The Dukes** — é um grupo de ameaça persistente avançada atribuído ao Serviço de Inteligência Estrangeiro da Rússia (SVR). Ativo desde pelo menos 2008, o grupo compromete governos, organizações diplomáticas, setores de saúde, tecnologia e infraestrutura crítica em todo o mundo, com foco primário em **coleta de inteligência de longo prazo**.
> [!danger] APT29 não é ransomware
> Diferentemente de ataques de ransomware que buscam impacto rápido e visível, o APT29 projeta-se para **permanecer no ambiente por meses ou anos sem ser detectado**. O objetivo não é destruir ou extorquir — é **exfiltrar dados estratégicos de forma silenciosa e contínua**.
| Característica | APT29 | Ransomware típico |
|---|---|---|
| Objetivo | Espionagem / coleta de inteligência | Extorsão financeira |
| Tempo médio no ambiente | Meses a anos | Horas a dias |
| Ruído operacional | Extremamente baixo | Alto (criptografia em massa) |
| Indicadores visíveis | Raros, deliberadamente apagados | Óbvios (notas de resgate) |
| Persistência | Múltiplos backdoors sobrepostos | Geralmente um único vetor |
| Resposta à detecção | Apaga evidências, pivota para novo vetor | Acelera o ataque |
**Campanhas notáveis:** [[solarwinds-supply-chain-attack]] (2020), [[microsoft-corporate-breach-2024]] (2024)
---
## Fluxo de Resposta ao Incidente
```mermaid
flowchart TD
A([🔍 Indicador Suspeito<br/>Detectado]) --> B{Confirmar\nCompromisso APT29}
B -->|IoCs confirmados| C[DECLARAR INCIDENTE APT<br/>Nível Máximo de Sigilo]
B -->|Incerto| D[Investigação Silenciosa<br/>Sem alertar o ator]
D --> E{Evidência\nSuficiente?}
E -->|Sim| C
E -->|Não| F[Continuar Monitoring<br/>Aumentar Telemetria]
F --> D
C --> G{Exfiltração\nAtiva em Curso?}
G -->|Sim, dados críticos| H[ISOLAMENTO IMEDIATO]
G -->|Não confirmado| I[Watch & Learn<br/>48-72h para mapear escopo]
I --> J[Mapear Extensão<br/>Completa do Comprometimento]
H --> J
J --> K[CONTENÇÃO CIRÚRGICA]
K --> K1[Isolar via Segmentação<br/>de Rede — NÃO desligar]
K1 --> K2[Coletar Imagem RAM<br/>de Sistemas Afetados]
K2 --> K3[Bloquear C2 no Firewall<br/>sem alertar o ator]
K3 --> L[ERRADICAÇÃO — 4 Fases / 4 Semanas]
L --> L1[Semana 1: Sweep Completo<br/>de Persistência]
L1 --> L2[Semana 2: Rotação Total<br/>de Credenciais]
L2 --> L3[Semanas 2-4: Reimaging<br/>de Sistemas Comprometidos]
L3 --> L4[Semana 3: Remediação<br/>de Acesso Cloud/M365]
L4 --> M[VALIDAÇÃO — 30 dias]
M --> N([✅ Erradicação Confirmada])
style A fill:#9933ff,color:#fff
style C fill:#ff4444,color:#fff
style I fill:#ff9900,color:#000
style N fill:#00aa44,color:#fff
style K fill:#0066cc,color:#fff
style L fill:#004499,color:#fff
```
---
## Diagrama de Comúnicação
```mermaid
sequenceDiagram
participant SOC as SOC/Threat Hunter
participant IR as IR Lead
participant CISO as CISO
participant Legal as Jurídico/DPO
participant Exec as C-Suite / Board
participant Gov as CERT.br / Autoridades
participant Ext as Forense Externo
Note over SOC,IR: FASE 1 — Detecção Silenciosa
SOC->>IR: Indicador suspeito — possível APT
IR->>CISO: Canal seguro (Signal): "APT potencial — não usar e-mail"
Note over SOC,Ext: Usar SOMENTE canais out-of-band
CISO->>IR: Autorizar investigação aprofundada
IR->>Ext: Engajar empresa de forense externa (Mandiant/CrowdStrike)
Note over IR,Exec: FASE 2 — Confirmação e Escalação
IR->>CISO: Comprometimento APT29 confirmado
CISO->>Exec: Briefing emergencial — board level
CISO->>Legal: Avaliação: dados estratégicos expostos?
Legal->>CISO: Parecer sobre obrigações legais e regulatórias
Note over Legal,Gov: FASE 3 — Notificação Regulatória
Legal->>Gov: Notificação ANPD (se dados pessoais — Art. 48 LGPD)
Legal->>Gov: Notificação CERT.br (infraestrutura crítica)
CISO->>Exec: Updaté semanal durante erradicação
Note over IR,Ext: FASE 4 — Validação de Erradicação
Ext->>IR: Relatório de válidação independente
IR->>CISO: Declaração de erradicação confirmada
CISO->>Exec: Post-mortem e lições aprendidas
```
---
## Indicadores de Comprometimento
> [!note] Uso de IoCs
> Os IoCs listados abaixo são baseados em campanhas documentadas públicamente. Valide-os contra fontes primárias (VirusTotal, CISA, Mandiant) antes de usá-los operacionalmente.
### Domínios C2 (SUNBURST - documentados públicamente)
```
avsvmcloud[.]com # domínio primário C2 SUNBURST
virtualdataserver[.]com
websitetheme[.]com
highdatabase[.]com
freescanonline[.]com
deftsecurity[.]com
thedoccloud[.]com
```
> [!warning] Estes domínios são históricos (campanha 2020). O APT29 usa domínios novos em cada operação.
### Hashes conhecidos (SUNBURST - fonte: FireEye/Mandiant)
```
# SolarWinds.Orion.Core.BusinessLayer.dll (backdoor)
SHA256: dab758bf98d9b36fa057a66cd0284737abf89857b73ca89280267ee7caf62f3b
# TEARDROP loader
SHA256: b820e8a2057112d0ed73bd7995201dbed79a79e13c79d4bdad81a22f12387e07
# RAINDROP (Cobalt Strike loader)
SHA256: f2d38a29f6727f4ade62d88d63e9e4f1d8fdbfd37e3cf4b5b464ce993c35e5da
```
### Padrões comportamentais (mais confiáveis)
- Processo legítimo estabelecendo conexões DNS com subdomínios codificados em base32
- `svchost.exe` com handles em `lsass.exe` (GrantedAccess `0x1010`)
- Criação de service principal no Azure AD fora do horário comercial
- Tokens OAuth concedidos a aplicações não registradas no tenant
- `certutil.exe` ou `bitsadmin.exe` executando downloads de URLs externas
- PowerShell com `-EncodedCommand` chamado via WMI ou tarefa agendada oculta
---
## Ferramentas Recomendadas
### Detecção e Hunting
| Ferramenta | Uso | Detalhe |
|------------|-----|---------|
| **Velociraptor** | Hunting em escala - análise de persistência, módulos carregados | `velociraptor artifacts collect Windows.System.Services` |
| **KAPE** | Coleta forense rápida - registry, event logs, prefetch | `kape.exe --tsource C: --tdest evidence\ --target RegistryHives,EventLogs` |
| **Autoruns (Sysinternals)** | Análise de persistência - todos os mecanismos de startup | `autorunsc.exe -a * -s -h -c -vt > autoruns.csv` |
| **Process Monitor** | Monitoramento de atividade de processos em tempo real | Filtrar por processo suspeito |
| **Sysmon** | Telemetria de endpoint - config SwiftOnSecurity/Olaf Hartong | Eventos 1,3,7,10,17,18 críticos |
### Forense de Memória
| Ferramenta | Uso | Comando Chave |
|------------|-----|---------------|
| **Volatility 3** | Análise de memória - processos ocultos, DLLs injetadas | `python3 vol.py -f mem.raw windows.malfind` |
| **Magnet RAM Capture** | Captura de memória RAM | `MagnetRAMCapture.exe /accepteula /go` |
| **Rekall** | Framework de análise forense de memória | `rekall -f mem.raw psxview` |
### Análise de Rede
| Ferramenta | Uso |
|------------|-----|
| **Zeek (Bro)** | Análise de DNS beaconing - detectar padrões base32 |
| **NetworkMiner** | Extração de sessões de rede suspeitas |
| **Wireshark** | Filtro: `dns and dns.qry.name matches "[a-z2-7]{20,}"` para detectar base32 encoding |
### Threat Intelligence
| Ferramenta | Uso |
|------------|-----|
| **MISP** | Compartilhar IoCs APT29 - feed da CIRCL |
| **OpenCTI** | Correlação de incidente com campanhas APT29 documentadas |
| **VirusTotal** | Verificar hashes, domínios, IPs suspeitos |
| **Shodan** | Identificar infraestrutura C2 APT29 exposta na internet |
---
## Detecção
> [!note] Fontes de dados necessárias
> Sysmon (eventos 1, 3, 7, 10, 11, 17, 18), Windows Security EventLog (4624, 4625, 4698, 4768, 7045), PowerShell Script Block Logging (4104), DNS query logs, Azure AD / Entra ID Audit Logs, Microsoft 365 Unified Audit Log.
### Splunk - Detecção de DNS Beaconing com Baixa Variância
```spl
tag=dns message_type="QUERY"
| fields _time, query, src
| streamstats current=f last(_time) as last_time by query
| eval gap=last_time - _time
| stats count avg(gap) AS AverageBeaconTime var(gap) AS VarianceBeaconTime BY query
| where VarianceBeaconTime < 60 AND count > 2 AND AverageBeaconTime > 1.000
| table query, VarianceBeaconTime, count, AverageBeaconTime
```
### Splunk - Tarefas Agendadas Ocultas
```spl
EventCode=4698 TaskContent="*<Hidden>true</Hidden>*"
| stats count by TaskName, TaskContent, action, dest
| sort - count
```
### Splunk - Acesso Anômalo ao LSASS
```spl
EventCode=10 TargetImage="C:\\Windows\\system32\\lsass.exe"
GrantedAccess="0x1010"
| stats count by Image, SourceProcessId, GrantedAccess, dest
| where NOT match(Image, "(?i)(MsMpEng|svchost|csrss|wininit)")
```
### Splunk - Named Pipes Suspeitos (Cobalt Strike)
```spl
EventCode=17 OR EventCode=18
| where match(PipeName, "(?i)(msagent_|wkssvc|DserNamePipe|srvsvc_|mojo\.|postex_|status_|MSSE-|spoolss_|win_svc|ntsvcs|winsock|UIA_PIPE)")
| stats count by Computer, process_name, PipeName
```
### KQL - Microsoft Sentinel - Service Principal Suspeito
```kql
AuditLogs
| where ActivityDisplayName in (
"Add service principal",
"Add app role assignment to service principal",
"Add delegated permission grant",
"Add application"
)
| project TimeGenerated,
Initiator = tostring(InitiatedBy.user.userPrincipalName),
Target = tostring(TargetResources[0].displayName),
ActivityDisplayName
| order by TimeGenerated desc
```
### KQL - Microsoft Sentinel - Credential Spraying
```kql
SignInLogs
| where ResultType == "50126"
| summarize FailureCount = count() by ClientIpAddress, bin(TimeGenerated, 10m)
| where FailureCount > 20
| order by FailureCount desc
```
---
## Checklist de Contenção
> [!danger] ALERTA: Não alerte o atacante
> O APT29 monitora ativamente se foi detectado. Mudanças abruptas podem sinalizar detecção e levar o ator a intensificar exfiltração ou apagar evidências.
### Estrategia: Observar vs. Isolar
| Situação | Estrategia recomendada |
|---|---|
| Exfiltração ativa de dados críticos | Isolamento imediato |
| Comprometimento confirmado, sem exfiltração ativa | Watch and learn (48-72h) |
| Incerteza sobre escopo total | Watch and learn com monitoramento aprimorado |
### Passos de Contenção
- [ ] Decisão formal: Watch & Learn vs. Isolamento imediato (CISO + Jurídico)
- [ ] **NÃO desligar** sistemas - preservar evidências em memória RAM
- [ ] Isolar via segmentação de rede (VLAN quarentena) - não via software do host
- [ ] Bloquear IPs e domínios C2 no firewall **sem alterar nada nos endpoints**
- [ ] Revogar tokens de acesso comprometidos no Azure AD / Entra ID
- [ ] Forçar reautenticação MFA para todas as contas privilegiadas
- [ ] Suspender (não excluir) contas criadas pelo atacante - preservar evidências
- [ ] Coletar imagem de memória RAM com **Magnet RAM Capture** antes de qualquer ação
- [ ] Coletar imagem forense de disco com **FTK Imager**
- [ ] Preservar logs em sistema isolado e não-comprometido
- [ ] Engajar empresa de forense externa (Mandiant, CrowdStrike, KPMG)
- [ ] Acionar jurídico/DPO - incidente de espionagem tem implicações legais complexas
---
## Sweep de Persistência - Checklist Completo (30+ pontos)
> [!danger] O APT29 instala múltiplos mecanismos de persistência sobrepostos. Execute TODOS.
### Registro do Windows
- [ ] `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`
- [ ] `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`
- [ ] `HKLM\SYSTEM\CurrentControlSet\Services` - serviços criados pelo atacante
- [ ] `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon` - `Userinit`, `Shell`
- [ ] `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal` - persistência em Safe Mode
- [ ] `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options` - debugger hijacking
- [ ] `HKCU\Environment\UserInitMprLogonScript` - logon scripts
### Serviços, Tarefas e WMI
- [ ] Listar serviços: `sc query type= all state= all` - identificar serviços com path incomum
- [ ] Exportar tarefas: `schtasks /query /fo LIST /v` - inspecionar tasks Hidden=True
- [ ] WMI EventFilters: `Get-WMIObject -Namespace root\subscription -Class __EventFilter`
- [ ] WMI EventConsumers: `Get-WMIObject -Namespace root\subscription -Class __EventConsumer`
- [ ] Startup Folders: `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\`
### Identidades e Credenciais
- [ ] Auditar contas locais em todos os sistemas: `net user`
- [ ] Auditar contas de domínio criadas nas últimas semanas
- [ ] Verificar membros: `Domain Admins`, `Enterprise Admins`, `Schema Admins`
- [ ] Auditar service principals no Azure AD / Entra ID
- [ ] Verificar tokens OAuth / permissões delegadas concedidas a aplicações
- [ ] Verificar KRBTGT compromise: EventCode 4769 com `TicketOptions: 0x40810000`
### Persistência em Cloud (Azure AD / M365)
- [ ] Auditar service principals com permissões `Application` (não delegadas)
- [ ] Verificar certificados e secrets em service principals
- [ ] Auditar `Conditional Access Policies` para modificações recentes
- [ ] Auditar `Exchange transport rules` - APT29 usou para exfiltrar e-mail em 2024
- [ ] Verificar `Inbox rules` de contas privilegiadas para redirecionamentos suspeitos
---
## Checklist de Erradicação (Protocolo 4 Semanas)
### Semana 1 - Mapeamento Completo
- [ ] Sweep de persistência em TODOS os sistemas (não apenas os identificados inicialmente)
- [ ] Documentar todos os mecanismos antes de remover qualquer um
- [ ] Mapear movimentação lateral: quais sistemas foram acessados via quais credenciais
- [ ] Identificar dados potencialmente exfiltrados (DLP logs, análise de tráfego)
### Semana 2 - Rotação Total de Credenciais
- [ ] Redefinir TODAS as senhas de contas de domínio - começar pelos administradores
- [ ] Redefinir senha do KRBTGT duas vezes (10h de intervalo) para inválidar Kerberos tickets
- [ ] Revogar e regenerar todos os certificados de autenticação
- [ ] Revogar todos os tokens OAuth e secrets de service principals
### Semanas 2-4 - Reconstrução
- [ ] Reimaging de TODOS os sistemas comprometidos - não tente limpar, reconstrua
- [ ] Aplicar patches antes de reconectar à rede (CIS Benchmark)
- [ ] Restaurar dados de backups anteriores à janela de comprometimento
### Semana 3 - Remediação Cloud
- [ ] Remover service principals não reconhecidos no Azure AD
- [ ] Revisar e remover permissões OAuth excessivas
- [ ] Reimplementar Conditional Access Policies do zero
- [ ] Habilitar Privileged Identity Management (PIM) - acesso just-in-time
- [ ] Remover transport rules e inbox rules criadas pelo atacante
---
## Checklist de Recuperação
- [ ] Identificar último backup limpo (anterior ao comprometimento)
- [ ] Validar integridade dos backups com hashes SHA256
- [ ] Restaurar em ambiente isolado antes de reconectar à rede
- [ ] Engajar empresa de forense externa para válidação independente
- [ ] Monitoramento intensivo por 30 dias após erradicação declarada
- [ ] Reimplementar hardening baseline (CIS Benchmark para Windows, Azure)
- [ ] Implementar PAWs (Privileged Access Workstations) para administradores
---
## Comúnicação
### Escalonamento - Quando e Quem Notificar
| Momento | Quem notificar | Como |
|---|---|---|
| Suspeita inicial (não confirmada) | CISO, IR Lead | Canal seguro, verbal ou Signal |
| Comprometimento confirmado | CISO, CEO/COO, Jurídico, DPO | Reunião emergencial - NÃO por e-mail corporativo |
| Dados pessoais exfiltrados | ANPD | Notificação formal - LGPD Art. 48 |
| Infraestrutura crítica | CERT.br, ANATEL (se telecomunicações) | Via canais oficiais |
> [!tip] Se o e-mail corporativo pode estar comprometido, use telefone, Signal ou plataforma fora do ambiente afetado.
### Templaté de Notificação para Liderança
```
DATA: [data e hora]
CLASSIFICAÇÃO: CONFIDENCIAL
SUMÁRIO EXECUTIVO
Identificamos um comprometimento ativo por grupo de ameaça avançada (APT29 / SVR russo).
Natureza: espionagem de longo prazo, não destrutiva.
Estimativa de presença no ambiente: [período estimado].
Dados potencialmente acessados: [lista preliminar].
AÇÕES EM CURSO
- Contenção iniciada em [timestamp]
- Investigação forense em andamento
- Sweep de persistência em execução em [N] sistemas
PRÓXIMOS PASSOS
- Briefing completo em [horário] com CISO, jurídico e DPO
- Decisão sobre notificação regulatória até [data]
- Estimativa de erradicação: [semanas]
PONTO DE CONTATO: [nome, número seguro]
```
---
## Lições Aprendidas - Post-Mortem de Espionagem
> [!note] Em espionagem, a pergunta mais crítica é "o que foi exfiltrado e quem precisa saber?" — com implicações legais, regulatórias e de segurança nacional.
### Questões Obrigatórias
**Sobre o comprometimento:**
1. Qual foi o vetor de entrada inicial? (supply chain? spearphishing? credencial válida?)
2. Qual foi a janela temporal estimada de presença?
3. Quais sistemas foram comprometidos vs. apenas acessados?
4. Houve uso de [[t1078-valid-accounts|T1078 - Valid Accounts]] que mascarou atividade como legítima?
**Sobre dados exfiltrados:**
1. Quais dados foram acessados? Quais foram efetivamente exfiltrados?
2. Existem dados de terceiros (clientes, parceiros, governo) expostos?
3. Quais são as implicações legais e contratuais?
### Métricas de Impacto
| Métrica | Valor |
|---|---|
| Tempo de dwell (presença antes da detecção) | |
| Tempo de detecção após indicador inicial | |
| Tempo de contenção após detecção | |
| Tempo total de erradicação | |
| Número de sistemas comprometidos | |
| Volume estimado de dados exfiltrados | |
### Melhorias Estruturais Recomendadas
- [ ] EDR com cobertura 100% dos endpoints
- [ ] PowerShell Script Block Logging em toda a frota
- [ ] Sysmon com política SwiftOnSecurity ou Olaf Hartong
- [ ] Revisar e reduzir Service Principal permissions no Azure AD
- [ ] Implementar PAWs para administradores
- [ ] Retenção de logs mínima de 12 meses no SIEM
- [ ] Network segmentation (Zero Trust) para limitar lateral movement
- [ ] Exercício de threat hunting trimestral baseado em TTPs do APT29
---
## Referências
- [[g0016-apt29]] - perfil completo do grupo
- [[s0559-sunburst]] - análise técnica do backdoor
- [[t1195-002-supply-chain-compromise|T1195.002 - Supply Chain Compromise]] - técnica MITRE ATT&CK
- [[t1027-obfuscated-files|T1027 - Obfuscated Files]] - técnica MITRE ATT&CK
- [[t1078-valid-accounts|T1078 - Valid Accounts]] - técnica MITRE ATT&CK
- [[t1021-remote-services|T1021 - Remote Services]] - técnica MITRE ATT&CK
- [[solarwinds-supply-chain-attack]] - campanha 2020
- [[microsoft-corporate-breach-2024]] - campanha 2024
- [CISA Advisory AA20-352A - APT29 Activity](https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-352a)
- [Mandiant - SUNBURST Analysis](https://www.mandiant.com/resources/blog/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor)
- MITRE ATT&CK - APT29 Group Page
- [Microsoft MSRC - Midnight Blizzard Analysis](https://msrc.microsoft.com/blog/2024/01/microsoft-actions-following-attack-by-nation-state-actor-midnight-blizzard/)
---
*Última revisão: 2026-03-23 | Próxima revisão recomendada: 2026-09-23*