# DC0028 - Snapshot Creation > [!info] Monitora a criação de snapshots de volumes, instâncias e bancos de dados em cloud. Adversários criam snapshots para exfiltrar dados silenciosamente — o snapshot pode ser compartilhado com conta externa sem gerar alertas de DLP de rede. ## Descrição Snapshot Creation monitora a criação de snapshots de volumes, instâncias e bancos de dados em ambientes cloud. Adversários criam snapshots de instâncias ou volumes comprometidos para exfiltrar dados de forma silenciosa: o snapshot pode ser compartilhado com uma conta AWS externa ou copiado para outra região, contornando controles de DLP que monitoram transferências de rede convencionais. Esta técnica é especialmente eficaz para exfiltrar grandes volumes de dados sem gerar alertas de rede. ## Fonte de Dados Parent: [[ds0020-snapshot|DS0020 - Snapshot]] ## Pipeline de Detecção ```mermaid graph TB A["📸 CloudTrail CreateSnapshot<br/>Snapshot Criado"] --> B["🔍 Atributos<br/>Verificados"] B --> C{"🤝 Snapshot<br/>Compartilhado?"} C -->|Com conta externa| D["🚨 Alerta P1<br/>Exfiltração via Snapshot"] C -->|Público| E["🚨 Alerta P1<br/>Snapshot Público"] C -->|Não compartilhado| F{"🕐 Dentro da Janela<br/>de Backup?"} F -->|Fora do horário| G["🟧 Alerta P2<br/>Snapshot Não Programado"] F -->|Horário normal| H["✔️ Backup<br/>Legítimo"] classDef p1 fill:#e74c3c,color:#ecf0f1 classDef p2 fill:#e67e22,color:#ecf0f1 classDef ok fill:#2ecc71,color:#2c3e50 classDef proc fill:#2c3e50,color:#ecf0f1 class D,E p1 class G p2 class H ok class A,B,C,F proc ``` ## O Que Monitorar - AWS CloudTrail: `CreateSnapshot`, `ModifySnapshotAttribute` (compartilhamento externo) - AWS: `CopySnapshot` para regiões diferentes ou contas externas - Azure: criação de snapshots de disco por usuários não autorizados - GCP: `compute.snapshots.create` fora de janelas de backup programadas - Snapshots de RDS/bancos de dados criados e imediatamente compartilhados - Modificações de atributos de snapshot para tornar público (`--attribute createVolumePermission`) - Criação de snapshots de instâncias contendo dados sensíveis em horários incomuns ## Técnicas Detectadas | Técnica | ID | Como Detectar | |---------|-----|---------------| | Create Snapshot | [[t1578-modify-cloud-compute-infrastructure\|T1578.001]] | Snapshot criado e compartilhado com conta externa | | Data from Local System | [[t1005-data-from-local-system\|T1005]] | Snapshot criado para acessar dados de volume sem montar instância | | Transfer Data to Cloud Account | [[t1537-transfer-data-to-cloud-account\|T1537]] | Snapshot copiado para conta adversarial externa | ## Implementação **AWS - detectar compartilhamento de snapshot:** ```python # CloudWatch Events Rule para ModifySnapshotAttribute { "source": ["aws.ec2"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventName": ["ModifySnapshotAttribute"], "requestParameters": { "createVolumePermission": { "add": { "userId": [{"exists": true}] } } } } } ``` **AWS Config Rule:** Configurar regra `ec2-snapshot-public` para detectar snapshots tornados públicos. **Política preventiva:** Usar SCP para negar `ec2:ModifySnapshotAttribute` com permissão para grupos externos. **Ferramentas:** AWS Security Hub, AWS Config, Prisma Cloud, Wiz, Lacework, CloudSploit. ## Consultas KQL — Microsoft Sentinel / Defender ### Snapshot Compartilhado com Conta AWS Externa ```kql // DC0028 - Detecção de snapshot AWS compartilhado externamente AWSCloudTrail | where TimeGenerated > ago(1d) | where EventName == "ModifySnapshotAttribute" | where tostring(RequestParameters) has "createVolumePermission" | where tostring(RequestParameters) has "add" | extend SnapshotId = tostring(RequestParameters.snapshotId), TargetUserId = tostring(RequestParameters.createVolumePermission.add.userId), UserIdentity = tostring(UserIdentityArn) | where isnotempty(TargetUserId) | project TimeGenerated, AwsRegion, SnapshotId, TargetUserId, UserIdentity, SourceIpAddress | order by TimeGenerated desc ``` ### Snapshot de RDS Criado Fora de Janela de Backup ```kql // DC0028 - Snapshot de RDS criado manualmente fora do horário de backup automático AWSCloudTrail | where TimeGenerated > ago(7d) | where EventName == "CreateDBSnapshot" | where UserIdentityType != "AWSService" // Excluir backups automáticos | extend DBInstanceId = tostring(RequestParameters.dBInstanceIdentifier), SnapshotId = tostring(RequestParameters.dBSnapshotIdentifier), UserIdentity = tostring(UserIdentityArn) | where not( // Janela de backup típica 02:00-04:00 UTC hourofday(TimeGenerated) between (2 .. 4) ) | project TimeGenerated, AwsRegion, DBInstanceId, SnapshotId, UserIdentity, SourceIpAddress | order by TimeGenerated desc ``` ## Contexto LATAM > [!latam] Relevância Regional > **Exfiltração via snapshots cloud é técnica crescente em ataques a organizações com dados sensíveis no Brasil.** Em 2024, incidentes documentados no setor financeiro e de saúde brasileiro incluíram adversários criando snapshots de volumes EBS contendo bancos de dados de clientes e os compartilhando com contas AWS externas — contornando todo o monitoramento de DLP de rede. A LGPD (Lei Geral de Proteção de Dados) torna esta técnica particularmente crítica no Brasil: uma exfiltração bem-sucedida via snapshot pode resultar em multas de até 2% do faturamento. O **AWS Config** com a regra `ec2-snapshot-public` e alertas para `ModifySnapshotAttribute` deve ser configuração obrigatória para qualquer empresa brasileira com dados pessoais na AWS. ## Referências - [MITRE ATT&CK - DS0020 Snapshot](https://attack.mitre.org/datasources/DS0020/) - [AWS Snapshot Security - AWS Documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) - [Cloud Exfiltration via Snapshots - Wiz Research](https://www.wiz.io/blog/tag/research) - [LGPD - ANPD Brasil](https://www.gov.br/anpd)