# 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)