# T1619 - Cloud Storage Object Discovery
## Descrição
Adversários enumeram objetos armazenados em infraestrutura de nuvem para mapear ativos de dados antes de uma operação de coleta ou exfiltração. A técnica é o equivalente cloud de [[t1083-file-and-directory-discovery|File and Directory Discovery]] em hosts locais, mas opera contra serviços gerenciados de armazenamento de objetos como Amazon S3, Azure Blob Storage e Google Cloud Storage. Após identificar serviços de armazenamento disponíveis via [[t1580-cloud-infrastructure-discovery|Cloud Infrastructure Discovery]], o adversário utiliza APIs nativas - `ListObjectsV2` na AWS, `List Blobs` no Azure, `objects.list` no GCP - para obter o inventário completo de buckets e containers acessíveis.
No contexto do Brasil e da América Latina, essa técnica é crescentemente relevante à medida que organizações dos setores **financeiro**, **saúde** e **varejo** migram infraestrutura para AWS e Azure. Incidentes documentados na região envolvem buckets S3 mal configurados com acesso público inadvertido, expondo backups de banco de dados, logs de transações e arquivos com dados pessoais protegidos pela **LGPD**. Adversários que obtêm credenciais cloud - frequentemente via [[t1552-unsecured-credentials|Unsecured Credentials]] expostas em repositórios de código ou via comprometimento de identidade - executam enumeração sistemática para identificar os ativos mais valiosos antes de proceder com exfiltração seletiva.
Ferramentas de ataque cloud nativas como [[s1091-pacu|Pacu]] (framework de exploração AWS) e [[s0683-peirates|Peirates]] (framework Kubernetes/cloud) automatizam a enumeração T1619 com módulos específicos para listagem massiva de objetos, identificação de permissões permissivas e descoberta de dados sensíveis sem exfiltração imediata - permitindo reconhecimento de longa duração sem disparar alertas de volume de transferência.
---
## Attack Flow
```mermaid
graph TB
A([Comprometimento<br/>de Credencial Cloud]) --> B[Enumeração de<br/>Serviços IaaS]
B --> C[Cloud Infrastructure<br/>Discovery - T1580]
C --> D:::highlight[T1619 - Cloud Storage<br/>Object Discovery]
D --> E[Identificação de<br/>Objetos de Alto Valor]
E --> F[Exfiltração Seletiva<br/>de Dados]
E --> G[Acesso a Dados<br/>Sensíveis - LGPD]
F --> H([Vazamento / Extorsão])
G --> H
classDef highlight fill:#e74c3c,color:#fff,stroke:#c0392b,stroke-width:2px
```
---
## Como Funciona
**Passo 1 - Obtenção de credenciais com permissões de listagem**
O adversário utiliza credenciais cloud comprometidas - chaves de acesso AWS (Access Key ID + Secret), tokens de serviço Azure (SAS tokens ou Service Principal), ou credenciais de conta de serviço GCP - com permissão mínima de `s3:ListBucket` (AWS) ou `Storage Blob Reader` (Azure). Essas credenciais são frequentemente obtidas via [[t1552-unsecured-credentials|Unsecured Credentials]] em repositórios GitHub públicos, variáveis de ambiente expostas em imagens Docker, ou arquivos de configuração em servidores comprometidos. Ferramentas como [[s1091-pacu|Pacu]] incluem módulos para enumeração de permissões (`iam__enum_permissions`) antes da fase de listagem.
**Passo 2 - Enumeração sistemática de buckets e objetos**
Com credenciais válidas, o adversário executa chamadas de API para listar todos os buckets ou containers acessíveis e seus conteúdos. Na AWS: `aws s3api list-buckets` seguido de `aws s3api list-objects-v2 --bucket <nome>`. No Azure: `az storage container list` e `az storage blob list`. O resultado é um mapa completo de ativos de dados - nomes de arquivos, tamanhos, datas de modificação e metadados - sem transferir nenhum dado efetivamente, o que mantém o volume de dados transferidos próximo a zero nos logs iniciais.
**Passo 3 - Priorização e acesso seletivo a objetos de valor**
O adversário filtra os resultados da enumeração por padrões de nomes (backup, dump, export, credentials, config, database) e extensões de arquivo (.sql, .csv, .json, .env, .pem) para identificar os objetos de maior valor. Ferramentas como [[s0683-peirates|Peirates]] automatizam essa priorização em ambientes Kubernetes com storage cloud. Somente após identificar alvos específicos o adversário realiza downloads seletivos - reduzindo o footprint e o risco de detecção por alertas de volume de transferência anômala.
---
## Detecção
### Event IDs e Logs Cloud Relevantes
| Plataforma | Log / Serviço | Evento a Monitorar |
|---|---|---|
| AWS | CloudTrail | `ListBuckets`, `ListObjectsV2`, `ListObjects` - especialmente de IPs externos |
| AWS | CloudTrail | `GetBucketAcl`, `GetBucketPolicy` - enumeração de permissões |
| Azure | Azure Monitor / Storage Diagnostic Logs | `ListContainers`, `ListBlobs` com autenticação incomum |
| Azure | Microsoft Defender for Cloud | Alerta "Unusual number of resources enumerated" |
| GCP | Cloud Audit Logs | `storage.objects.list` por service account fora do padrão |
| GCP | Security Command Center | Alerta de acesso a bucket por IP externo |
### Regra Sigma
```yaml
title: Enumeração Massiva de Objetos em Cloud Storage - AWS CloudTrail
id: c9d4b7e1-2f3a-4c8e-b156-8e2f1d4a7c30
status: experimental
description: >
Detecta enumeração em massa de objetos S3 via CloudTrail, indicando
possível reconhecimento T1619. Alertas quando uma única identidade
realiza ListObjectsV2 em múltiplos buckets em curto intervalo.
author: RunkIntel
daté: 2026-03-24
logsource:
product: aws
service: cloudtrail
detection:
selection:
eventSource: s3.amazonaws.com
eventName:
- ListObjectsV2
- ListObjects
- ListBuckets
filter_automated:
userAgent|contains:
- 'aws-sdk'
- 'Boto3'
timeframe: 5m
condition: selection and not filter_automated | count(requestParameters.bucketName) by userIdentity.arn > 5
falsepositives:
- Ferramentas de backup e inventário legítimas com agente identificado
- Jobs de auditoria de conformidade com IAM role conhecida
level: high
tags:
- attack.discovery
- attack.t1619
```
---
## Mitigação
| Controle | Mitigação MITRE | Aplicação para Organizações Brasileiras |
|---|---|---|
| Princípio do menor privilégio em IAM | [[m1018-user-account-management\|M1018]] | Nenhuma conta de serviço deve ter `s3:ListBucket` em todos os buckets - usar políticas de recurso específicas por bucket |
| Monitoramento de CloudTrail obrigatório | Detecção | Habilitar CloudTrail em todas as regiões, incluindo regiões não utilizadas - adversários frequentemente ativam recursos em regiões sem monitoramento |
| Bloqueio de acesso público a buckets | Hardening | Habilitar "Block Public Access" nas configurações de conta AWS - crítico para compliance LGPD em dados de saúde e financeiro |
| Políticas de bucket com condições de IP | Hardening | Restringir `ListObjects` a ranges de IP corporativos conhecidos via Condition `aws:SourceIp` em bucket policies |
| Rotação periódica de chaves de acesso | [[m1018-user-account-management\|M1018]] | Implementar rotação automática de Access Keys via AWS Secrets Manager - chaves com mais de 90 dias são risco alto |
| Alertas do Defender for Cloud / GuardDuty | Detecção | Habilitar Amazon GuardDuty (finding `S3:UnauthorizedAccess/MaliciousIPCaller`) e Microsoft Defender for Storage em ambientes de produção |
| Inventário e classificação de dados | Compliance LGPD | Usar AWS Macie ou Azure Purview para identificar automaticamente buckets com PII - facilita priorização de controles |
---
## Threat Actors e Software Associado
### Contexto de Ameaça
Embora o MITRE não documente threat actors específicos para T1619 no momento desta nota, a técnica é amplamente utilizada por grupos de ransomware que operam extorsão dupla - exfiltram dados cloud antes de criptografar ambientes on-premise. Grupos com histórico documentado de ataques a organizações brasileiras, como aqueles explorando credenciais AWS vazadas, utilizam T1619 como etapa de reconhecimento antes de decisões de exfiltração.
A técnica é particularmente relevante em contextos de **comprometimento de cadeia de suprimentos** e ataques a **ambientes multi-cloud**, onde uma única identidade comprometida pode ter acesso a buckets em múltiplas contas e regiões.
### Software
- **[[s1091-pacu|Pacu]]** - framework open-source de exploração AWS com módulo `s3__bucket_finder` e `s3__download_bucket` específicamente para T1619. Amplamente usado em red teams e, documentadamente, em operações adversariais reais
- **[[s0683-peirates|Peirates]]** - ferramenta de ataque cloud-native voltada a Kubernetes que inclui enumeração de storage objects em buckets acessíveis via service accounts comprometidas
### Técnicas Correlatas
- [[t1580-cloud-infrastructure-discovery|T1580 - Cloud Infrastructure Discovery]] - precede T1619 para mapear quais serviços de storage existem
- [[t1083-file-and-directory-discovery|T1083 - File and Directory Discovery]] - equivalente on-premise de T1619
- [[t1552-unsecured-credentials|T1552 - Unsecured Credentials]] - vetor comum de obtenção das credenciais usadas em T1619
- [[m1018-user-account-management|M1018 - User Account Management]] - principal controle de mitigação
---
*Fonte: [MITRE ATT&CK - T1619](https://attack.mitre.org/techniques/T1619)*