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