> [!warning] Aviso Importante > Comprometimento de supply chain é o cenário de pior caso em IR. Um único fornecedor comprometido pode afetar milhares de organizações simultaneamente. Este playbook requer escalonamento imediato para nível executivo. --- ## Visão Geral Um ataque de cadeia de suprimentos de software ocorre quando o atacante compromete um fornecedor, biblioteca, pipeline de CI/CD ou ferramenta de build — e o malware é entregue junto com uma **atualização legítima e assinada digitalmente** para as vítimas finais. **Casos mais estudados:** - **[[solarwinds-supply-chain-attack]]** (2020) - [[g0016-apt29]] injetou o backdoor [[s0559-sunburst]] nas builds do SolarWinds Orion, afetando 18.000+ organizações, incluindo agências do governo dos EUA - **XZ Utils / CVE-2024-3094** (2024) - backdoor inserido por atacante disfarçado de mantenedor legítimo do projeto open source por 2+ anos - **3CX Supply Chain Attack** (2023) - [[g0032-lazarus-group]] comprometeu o instalador do softphone 3CX Desktop App, afetando +600.000 empresas - **Codecov Breach** (2021) - script de bash uploader do Codecov comprometido para exfiltrar variáveis de ambiente de pipelines CI/CD > [!danger] Blast Radius Massivo > Em um ataque de supply chain confirmado, você provavelmente não é a única vítima. Coordene com CERT.br, fornecedor afetado e outras organizações impactadas. A resposta pode envolver comunicação setorial. --- ## Fluxo de Resposta ao Incidente ```mermaid flowchart TD A([🚨 Alerta: Software Confiável<br/>com Comportamento Anômalo]) --> B{Fonte do\nCompromisso} B -->|Fornecedor de software notificou| C[Verificar Versões Instaladas<br/>em toda a Organização] B -->|Detecção interna via hunting| D[Isolar Software Suspeito<br/>em Sistemas Críticos] B -->|CERT/CISA emitiu advisory| E[Avaliar Exposição:<br/>usamos este software?] C --> F[Identificar Todos os Sistemas<br/>Afetados via SIEM/CMDB] D --> F E --> F F --> G{Backdoor/Malware\nAtivado?} G -->|Sim — atividade C2 detectada| H[INCIDENTE P1<br/>Resposta a Intrusão Ativa] G -->|Não — software instalado mas sem atividade| I[Remoção Preventiva<br/>e Monitoramento Intensivo] H --> J[Seguir IR Playbook<br/>de Espionagem APT29] I --> K[Remover Versão Afetada<br/>em Todos os Sistemas] J --> K K --> L[Instalar Versão Limpa<br/>ou Alternativa Segura] L --> M[Hunting Retroativo<br/>90 dias de Logs] M --> N{Evidência de\nExfiltração?} N -->|Sim| O[Escalar para IR Forense<br/>Completo] N -->|Não| P[Monitoramento 30 dias] O --> P P --> Q([✅ Incidente Encerrado]) style A fill:#9933ff,color:#fff style H fill:#ff4444,color:#fff style Q fill:#00aa44,color:#fff style K fill:#ff9900,color:#000 ``` --- ## Diagrama de Comúnicação ```mermaid sequenceDiagram participant SOC as SOC / Threat Hunter participant IR as IR Lead participant CISO as CISO participant IT as TI / Infra participant Vendor as Fornecedor Comprometido participant Legal as Jurídico/DPO participant CERT as CERT.br / Setor participant Exec as Board / Executivos Note over SOC,Vendor: FASE 1 — Avaliação Inicial SOC->>IR: Advisory recebido ou hunting detectou anomalia IR->>IT: Inventariar todos os sistemas com software afetado IR->>Vendor: Solicitar IoCs, versões afetadas, timeline de comprometimento Vendor->>IR: Detalhes técnicos e recomendações de remediação Note over IR,Exec: FASE 2 — Escalonamento IR->>CISO: Escopo confirmado — [N] sistemas afetados CISO->>Exec: Briefing executivo — supply chain confirmado CISO->>Legal: Avaliação de responsabilidade e obrigações regulatórias Legal->>CERT: Notificação setorial (se infraestrutura crítica) Note over IT,CERT: FASE 3 — Contenção e Remediação IT->>IT: Remoção/atualização em [N] sistemas IR->>SOC: Hunting retroativo de 90 dias IR->>CISO: Relatório de contenção CISO->>Exec: Updaté — timeline de recuperação IR->>CERT: Compartilhar IoCs com comunidade (MISP/CERT.br) ``` --- ## Avaliação de Exposição ### Passo 1 - Inventário de Software Afetado ```bash # Verificar instalação via Velociraptor em todos os endpoints velociraptor query "SELECT * FROM Artifact.Windows.Sys.Programs() WHERE Name LIKE '%SolarWinds%'" # Verificar via PowerShell (ambiente Windows) Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | Get-ItemProperty | Where-Object { $_.DisplayName -like "*[SOFTWARE_AFETADO]*" } | Select-Object DisplayName, DisplayVersion, InstallDaté ``` ### Passo 2 - Verificar Versões Vulneráveis | Software | Versão Afetada | Versão Segura | |----------|---------------|---------------| | SolarWinds Orion | 2019.4 a 2020.2.1 HF1 | 2020.2.1 HF2+ | | 3CX Desktop App | Windows 18.12.407/416, Mac 18.11.1213 | 18.12.422+ | | XZ Utils | 5.6.0, 5.6.1 | 5.4.6 ou 5.6.2+ | ### Passo 3 - Verificar Ativação do Backdoor Para SUNBURST/SolarWinds: ```spl # Splunk - verificar DNS queries para domínio C2 SUNBURST index=dns query IN ( "avsvmcloud.com", "virtualdataserver.com", "websitetheme.com", "highdatabase.com", "freescanonline.com" ) | table _time, src_ip, query | sort -_time ``` --- ## Ferramentas Recomendadas ### Detecção e Hunting | Ferramenta | Uso | Detalhe | |------------|-----|---------| | **Velociraptor** | Hunting em escala - inventário de software, artefatos maliciosos | `velociraptor artifacts collect Generic.Applications.Inventory` | | **Sysinternals Sigcheck** | Verificar assinatura de DLLs e executáveis | `sigcheck.exe -u -e C:\Program Files\[software]\ ` | | **KAPE** | Coleta forense - logs, prefetch, registry | Target: `!SANS_Triage` | | **Yara** | Scanner de assinaturas em disco e memória | `yara -r rules/supply_chain.yar C:\Program Files\` | | **PE-sieve** | Detectar injeções em processos em execução | `pe-sieve.exe /pid [PID] /dir output\` | ### Análise de Código e Build | Ferramenta | Uso | |------------|-----| | **OSSF Scorecard** | Avaliar postura de segurança de projetos open source | | **Trivy** | Scan de vulnerabilidades em containers e dependências | | **Snyk** | Análise de dependências maliciosas ou comprometidas | | **socket.dev** | Detectar pacotes npm/PyPI maliciosos antes da instalação | ### Rede | Ferramenta | Uso | |------------|-----| | **Zeek** | Detectar beaconing DNS com codificação base32 (padrão SUNBURST) | | **NetworkMiner** | Análise de sessões de rede do período suspeito | --- ## Checklist de Contenção ### Resposta Imediata (T+0 a T+2h) - [ ] Confirmar quais versões do software afetado estão instaladas via CMDB/inventário - [ ] Identificar todos os hosts com o software vulnerável via Velociraptor/EDR - [ ] Verificar se o backdoor foi ativado: buscar IoCs de C2 nos logs DNS, proxy, firewall - [ ] Isolar sistemas críticos onde o software está presente (especialmente servidores) - [ ] **Não desinstalar** antes da coleta forense - preservar evidências - [ ] Capturar imagem de memória RAM de sistemas críticos onde o software roda - [ ] Capturar logs de rede dos últimos 90 dias para análise retroativa - [ ] Bloquear domínios/IPs de C2 conhecidos no firewall e DNS recursivo - [ ] Notificar CISO e acionar IR team completo - [ ] Contatar o fornecedor comprometido para obter IoCs e orientações ### Se Backdoor Ativado (P1) - [ ] Escalar para IR P1 - comprometimento ativo - [ ] Seguir o playbook [[ir-apt29-espionage]] para espionagem avançada - [ ] Isolamento de rede completo dos sistemas afetados - [ ] Acionar empresa de forense externa (Mandiant/CrowdStrike/KPMG) --- ## Hunting Retroativo (90 dias) ### Splunk - Processo de Software Comprometido Gerando Filhos Suspeitos ```spl index=sysmon EventCode=1 ParentImage="*\\[software_comprometido.exe]*" Image IN ("*\\cmd.exe", "*\\powershell.exe", "*\\wscript.exe", "*\\mshta.exe", "*\\regsvr32.exe", "*\\rundll32.exe") | stats count by Computer, User, Image, ParentImage, CommandLine, _time | sort -_time ``` ### Splunk - DNS Beaconing com Base32 (padrão SUNBURST) ```spl index=dns message_type=QUERY | where match(query, "^[a-z2-7]{20,}\.[a-z0-9\-]+\.(com|net|org)quot;) | stats count by src_ip, query | where count > 3 | sort -count ``` ### Splunk - Exfiltração de Configurações Comprimidas ```spl index=sysmon EventCode=11 TargetFilename IN ("*.gz", "*.zip", "*.tar") Image="*\\[software_comprometido.exe]*" | table _time, Computer, User, Image, TargetFilename ``` ### KQL - Microsoft Sentinel - Software Comprometido Conectando a IPs Externos ```kql DeviceNetworkEvents | where InitiatingProcessFileName =~ "[software_comprometido.exe]" | where RemoteIPType == "Public" | where RemotePort !in (80, 443, 53) | project Timestamp, DeviceName, LocalIP, RemoteIP, RemotePort, InitiatingProcessFileName | order by Timestamp desc ``` ### YARA Rule - Detecção de SUNBURST em Memória ```yara rule SUNBURST_Backdoor_Memory { meta: description = "Detects SUNBURST backdoor strings in memory" author = "FireEye/Mandiant — Public" reference = "https://www.mandiant.com/resources/blog/sunburst-additional-technical-details" strings: $str1 = "avsvmcloud.com" ascii wide $str2 = "SolarWinds.Orion.Core.BusinessLayer" ascii wide $str3 = "ConfigurationManager" ascii wide $hex1 = { 72 65 61 64 6F 6E 6C 79 5F 61 70 69 5F 6B 65 79 } condition: any of ($str*) or $hex1 } ``` --- ## Checklist de Erradicação - [ ] Documentar todas as versões afetadas identificadas antes de remover - [ ] Remover o software comprometido de TODOS os sistemas identificados - [ ] Validar remoção: verificar que binários afetados não existem mais nos sistemas - [ ] Instalar versão limpa/segura do software (conforme recomendação do fornecedor) - [ ] Verificar integridade da versão instalada (hash SHA256 vs. hash públicado pelo fornecedor) - [ ] Resetar credenciais de todos os serviços que o software gerenciava/acessava - [ ] Auditar modificações feitas pelo software nos últimos 90 dias - [ ] Verificar e remover qualquer backdoor persistente plantado durante o período de comprometimento - [ ] Revisar e reconfigurar permissões do software substituído --- ## Checklist de Recuperação - [ ] Instalar versão limpa do software ou alternativa segura - [ ] Validar integridade com hash publicado pelo fornecedor antes de instalar - [ ] Aplicar princípio de mínimo privilégio - o software precisa de menos permissões do que tinha? - [ ] Segmentar o software em rede dedicada se possível (ex.: FortiManager em VLAN isolada) - [ ] Configurar monitoramento específico para o comportamento normal do software - [ ] Implementar inspeção de TLS nos sistemas de rede para monitorar tráfego do software - [ ] Monitoramento intensivo por 30 dias após recuperação --- ## Comúnicação ### Templaté - Notificação Setorial / CERT ``` Para: CERT.br ([email protected]) / parceiros setoriais Assunto: Supply Chain Compromise — [Nome do Software] Confirmamos o uso de [software] versão [X.X] em nossa organização. Identificamos [atividade de backdoor / apenas software instalado sem ativação]. IoCs identificados em nosso ambiente: - [lista de IPs, domínios, hashes] Ações tomadas: - Isolamento em [data] - Remoção do software em [data] - Hunting retroativo concluído em [data] Estamos disponíveis para compartilhar informações técnicas adicionais. Contato: [nome, e-mail, telefone] ``` --- ## Gestão de Fornecedores (Pós-Incidente) ### Avaliação de Risco de Terceiros - [ ] Solicitar ao fornecedor relatório de análise forense do comprometimento - [ ] Exigir certificação de terceiros (SOC 2 Type II, ISO 27001) na renovação de contrato - [ ] Implementar revisão anual de postura de segurança de fornecedores críticos - [ ] Incluir cláusulas de notificação de incidente no SLA (máx. 24h para notificação) - [ ] Avaliar alternativas ao software comprometido para reduzir dependência --- ## Lições Aprendidas ### Questões Obrigatórias 1. Como identificamos o comprometimento? Notificação do fornecedor ou detecção interna? 2. Quanto tempo o software afetado estava instalado antes da detecção? 3. O backdoor foi ativado em nosso ambiente? Houve exfiltração? 4. Tínhamos visibilidade do comportamento de rede deste software? 5. Nosso processo de avaliação de fornecedores teria detectado este risco? ### Melhorias Recomendadas - [ ] Implementar monitoramento de comportamento de rede para todos os softwares gerenciados - [ ] Criar processo formal de avaliação de segurança de fornecedores (TPRM) - [ ] Implementar SBOM (Software Bill of Materials) para rastrear dependências - [ ] Assinar feeds de IA como CISA KEV e boletins de fornecedores críticos - [ ] Implementar verificação de hash SHA256 de todos os instaladores antes da implantação - [ ] Segmentar software de gerenciamento em VLANs dedicadas e monitoradas --- ## Referências - [[t1195-002-supply-chain-compromise|T1195.002 - Supply Chain Compromise]] - técnica MITRE ATT&CK - [[t1195-001-compromise-software-dependencies|T1195.001 - Compromise Software Dependencies]] - dependências maliciosas - [[t1553-subvert-trust-controls|T1553.002 - Code Signing]] - abuso de certificados de code signing - [[g0016-apt29]] - grupo responsável pelo SolarWinds - [[g0032-lazarus-group]] - grupo responsável pelo 3CX - [[s0559-sunburst]] - backdoor SolarWinds - [[solarwinds-supply-chain-attack]] - campanha 2020 - [CISA Alert AA20-352A - Supply Chain Attack](https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-352a) - [Mandiant - SolarWinds Compromise Analysis](https://www.mandiant.com/resources/blog/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor) - [CISA - Software Supply Chain Security](https://www.cisa.gov/resources-tools/resources/software-supply-chain-security) - [NIST SP 800-161r1 - Cybersecurity Supply Chain Risk Management](https://csrc.nist.gov/publications/detail/sp/800-161/rev-1/final) --- *Última revisão: 2026-03-23 | Próxima revisão recomendada: 2026-09-23*