> [!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*