# T1526 - Cloud Service Discovery
## Descrição
**T1526 - Cloud Service Discovery** descreve como adversários, após obter acesso inicial a um ambiente cloud, enumeram os serviços, recursos e configurações disponíveis. O objetivo é construir um mapa operacional da infraestrutura da vítima - identificando quais serviços estão ativos, quais ferramentas de segurança estão presentes, quais dados são acessíveis e quais caminhos de escalonamento existem.
A enumeração pode ocorrer em qualquer provedor: **AWS**, **Microsoft Azure**, **Google Cloud Platform (GCP)** ou plataformas SaaS como o **Microsoft 365**. APIs como a Microsoft Graph API e o Azure Resource Manager permitem listar aplicações, grupos de gerenciamento, políticas e relacionamentos entre recursos - tudo acessível com uma credencial válida, mesmo sem privilégios administrativos.
No **Brasil e na América Latina**, a adoção acelerada de cloud (especialmente Microsoft 365 e Azure) pelo setor financeiro, governo e saúde criou uma superfície de ataque significativa. Grupos como [[g1053-storm-0501|Storm-0501]] utilizam T1526 como etapa central de reconhecimento antes de ataques de ransomware - mapeando buckets S3, contas de armazenamento Azure e instâncias de banco de dados para identificar os dados mais valiosos a cifrar ou exfiltrar.
Ferramentas abertas como **Pacu** (AWS) e **ROADTools** (Azure/Entra ID) permitem que atacantes com acesso mínimo produzam grafos completos de relacionamentos entre recursos, facilitando a descoberta de caminhos de escalonamento de privilégios que seriam invisíveis em uma análise manual.
> [!danger] Risco para Ambientes Brasileiros
> Organizações brasileiras com Entra ID (Azure AD) híbrido conectado a AD on-premises são particularmente vulneráveis. A enumeração de serviços cloud revela sincronizações entre ambientes, permitindo que o atacante planeje movimentos laterais que cruzam de cloud para on-premises - ou vice-versa.
## Attack Flow
```mermaid
graph TB
A([Credencial Válida<br/>Obtida]) --> B([Acesso ao Ambiente<br/>Cloud])
B --> C>service discovery:::highlight
C --> D([Enumerar Serviços<br/>Ativos])
C --> E([Identificar Ferramentas<br/>de Segurança])
C --> F([Mapear Permissões<br/>e Funções IAM])
D --> G([Localizar Dados<br/>Valiosos])
E --> H([Evasão de Defesas<br/>T1562])
F --> I([Escalonamento<br/>de Privilégios])
G --> J([Exfiltração<br/>ou Ransomware])
H --> J
I --> J
classDef highlight fill:#e74c3c,color:#fff
```
## Como Funciona
**Passo 1 - Enumeração de serviços via API**
Após obter uma credencial válida - sejá por phishing, credential stuffing ou roubo de token OAuth - o adversário utiliza as APIs nativas do provedor cloud para listar todos os serviços habilitados. No Azure, comandos como `az resource list` ou chamadas à Microsoft Graph API retornam todos os recursos associados à assinatura. No AWS, `aws sts get-caller-identity` confirma o contexto da credencial e `aws s3 ls` lista buckets acessíveis. Ferramentas como [[s1091-pacu|Pacu]] automatizam essa varredura com dezenas de módulos de descoberta em paralelo.
**Passo 2 - Mapeamento de configurações e serviços de segurança**
O adversário identifica quais controles defensivos estão ativos: AWS GuardDuty, Microsoft Defender for Cloud, GCP Security Command Center, Azure Sentinel. Com [[s0684-roadtools|ROADTools]] e [[s0677-aadinternals|AADInternals]], é possível extrair políticas de acesso condicional, configurações de MFA, grupos de segurança e aplicações registradas no Entra ID - incluindo service principals com permissões elevadas. Esse mapeamento direciona ações de [[t1562-001-disable-tools|Desabilitação de Ferramentas de Segurança]] e [[t1562-008-disable-or-modify-cloud-logs|Modificação de Logs de Cloud]].
**Passo 3 - Construção do grafo de ataque**
Com os dados coletados, o adversário monta um grafo de relacionamentos: quais identidades têm acesso a quais recursos, quais service accounts têm permissões excessivas, quais buckets/blobs têm ACLs mal configuradas. O [[g1053-storm-0501|Storm-0501]] usa esse grafo para identificar o caminho de menor resistência até os dados críticos - muitas vezes um service principal esquecido com permissão de Owner, ou uma conta de serviço com acesso a storage accounts que contêm backups cifrados.
## Detecção
### Event IDs e Fontes de Log Relevantes
| Fonte | Evento / Log | Descrição |
|-------|-------------|-----------|
| **AWS CloudTrail** | `ListBuckets`, `ListFunctions`, `DescribeInstances`, `GetCallerIdentity` | Chamadas de enumeração em sequência rápida de uma única identidade |
| **Azure Monitor** | `Microsoft.Resources/subscriptions/resources/read` | Leitura em massa de recursos via Resource Manager |
| **Microsoft Graph** | `ServicePrincipalSignIn`, `DirectoryAudit - List applications` | Enumeração de apps registrados e service principals |
| **Entra ID Sign-in Logs** | Sign-ins de localização/IP incomum acessando Graph API | Uso de ferramentas como ROADTools gera padrão de acesso atípico |
| **GCP Audit Logs** | `cloudresourcemanager.projects.list`, `serviceusage.services.list` | Listagem de projetos e serviços habilitados |
| **Azure Activity Log** | `List Keys`, `List Secrets` (Key Vault) | Tentativa de acesso a secrets e credenciais armazenadas |
### Sigma Rule - Enumeração de Recursos Azure em Massa
```yaml
title: Mass Azure Resource Enumeration via API
id: 3f7a1b2e-8c4d-4f9a-b6e2-2a3b4c5d6e7f
status: experimental
description: >
Detecta enumeração em massa de recursos Azure via Resource Manager API,
padrão típico de ferramentas de cloud discovery como Stormspotter, ROADTools
ou Pacu adaptado para Azure. Indica reconhecimento pós-comprometimento (T1526).
author: RunkIntel
daté: 2026-03-24
references:
- https://attack.mitre.org/techniques/T1526
logsource:
product: azure
service: activitylogs
detection:
selection:
operationName|startswith:
- 'Microsoft.Resources/subscriptions/resourceGroups/read'
- 'Microsoft.Resources/subscriptions/resources/read'
- 'Microsoft.Authorization/roleAssignments/read'
- 'Microsoft.Compute/virtualMachines/read'
- 'Microsoft.Storage/storageAccounts/read'
- 'microsoft.directory/applications/allProperties/read'
timeframe: 5m
condition: selection | count() by caller > 30
fields:
- caller
- operationName
- resourceGroup
- tenantId
falsepositives:
- Ferramentas legítimas de CSPM (Prisma Cloud, Defender CSPM)
- Scripts de inventário corporativo autorizados
- Pipelines CI/CD com permissões de leitura amplas
level: medium
tags:
- attack.discovery
- attack.t1526
- attack.cloud
```
## Mitigação
| Controle | Descrição | Aplicação para Organizações Brasileiras |
|----------|-----------|----------------------------------------|
| **Princípio do Menor Privilégio (IAM)** | Toda identidade - usuário, service principal, função Lambda - deve ter apenas as permissões estritamente necessárias | Revisar IAM Policies AWS e Azure RBAC; eliminar atribuições de Owner/Contributor desnecessárias; usar Azure PIM para acesso just-in-time |
| **Monitoramento de Chamadas API** | Alertar sobre padrões de enumeração - muitas chamadas de leitura em curto intervalo por uma única identidade | AWS CloudTrail + Athena queries; Azure Monitor Workbooks; regras no Microsoft Sentinel ou AWS GuardDuty |
| **Segmentação de Ambientes** | Isolar ambientes de produção, staging e dev em contas/assinaturas separadas | Evita que comprometimento de uma identidade de dev exponha toda a infraestrutura de produção |
| **Proteção de Service Principals** | Auditar e rotacionar regularmente credenciais de service principals e app registrations | AADInternals e ROADTools são frequentemente usados contra service principals esquecidos com permissões excessivas |
| **Conditional Access Policies** | Restringir acesso à Microsoft Graph API e Azure Resource Manager a IPs corporativos ou dispositivos gerenciados | Implementar políticas no Entra ID que bloqueiem chamadas API de localizações não autorizadas ou dispositivos não conformes |
| **CSPM (Cloud Security Posture Management)** | Usar ferramentas como Microsoft Defender CSPM, AWS Security Hub ou Prisma Cloud para identificar recursos superprovisionados antes que o atacante os encontre | Muitas organizações brasileiras têm buckets S3 ou blobs Azure com ACLs excessivamente permissivas que só são descobertas após um incidente |
## Threat Actors e Software Associado
### Grupos que Utilizam esta Técnica
**[[g1053-storm-0501|Storm-0501]]** - Grupo ransomware identificado pela Microsoft como operador ativo em ambientes híbridos Azure AD / on-premises. Utiliza T1526 sistematicamente para mapear toda a superfície de ataque cloud antes de distribuir ransomware. Documentado em ataques a setores de saúde, governo e manufatura. O grupo combina T1526 com [[t1538-cloud-service-dashboard|Cloud Service Dashboard]] para maximizar a cobertura do reconhecimento - usando tanto APIs quanto a interface gráfica do portal Azure.
### Ferramentas Associadas
| Ferramenta | Tipo | Uso nesta Técnica |
|-----------|------|-------------------|
| [[s0677-aadinternals\|AADInternals]] | Ferramenta de ataque Azure/O365 | Enumera usuários, grupos, apps, políticas e configurações do Entra ID; obtém tokens de acesso |
| [[s0684-roadtools\|ROADTools]] | Framework de auditoria Azure AD | Constrói banco de dados local com todos os objetos do Entra ID; gera grafo de relacionamentos |
| [[s1091-pacu\|Pacu]] | Framework de ataque AWS | Mais de 35 módulos de enumeração AWS - IAM, S3, EC2, Lambda, CloudTrail, GuardDuty |
> [!tip] Correlação de Técnicas
> T1526 é frequentemente combinada com [[t1538-cloud-service-dashboard|T1538 - Cloud Service Dashboard]] (reconhecimento via interface gráfica) e precede [[t1562-008-disable-or-modify-cloud-logs|T1562.008 - Disable Cloud Logs]] (evasão após mapeamento) e [[t1530-data-from-cloud-storage|T1530 - Data from Cloud Storage Object]] (exfiltração de dados).
---
*Fonte: [MITRE ATT&CK - T1526](https://attack.mitre.org/techniques/T1526)*