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