> [!warning] Aviso Importante
> Este playbook é um ponto de partida. Deve ser revisado, testado e adaptado ao ambiente da sua organização. Não substitui um plano formal de Incident Response. Queries e comandos devem ser válidados em ambiente de homologação antes do uso em produção. Itens marcados com `# [VALIDAR NO SEU AMBIENTE]` exigem ajuste obrigatório antes do uso operacional. **Especial aténção:** os três grandes provedores (AWS, Azure, GCP) possuem APIs e ferramentas distintas — adapte cada etapa ao(s) provedor(es) em uso.
## Visão Geral
O comprometimento de conta cloud é um dos vetores de incidente de maior impacto e crescimento mais rápido da atualidade. Diferente de um ataque convencional a endpoints, o atacante não precisa instalar malware — basta obter credenciais ou tokens válidos para mover-se lateralmente em toda a infraestrutura provisionada. Os três grandes provedores — AWS, Azure e GCP — possuem superfícies de ataque distintas, mas padrões de comprometimento convergentes.
**Por que este cenário é crítico para organizações brasileiras:**
- A **região AWS São Paulo (sa-east-1)** concentra a maior parte das cargas de trabalho cloud nativas do Brasil, tornando-a alvo prioritário para atores com motivação financeira e de espionagem
- O modelo de **responsabilidade compartilhada** cria lacunas: o provedor protege a infraestrutura, mas a organização é responsável pela gestão de identidade, configuração de serviços e dados armazenados
- Ambientes **multi-cloud** (AWS + Azure + GCP simultâneos) multiplicam a superfície de ataque e dificultam visibilidade centralizada
- **Cryptojacking** - uso abusivo de instâncias EC2/Azure VMs/Compute Engine para mineração de criptomoedas - é a consequência imediata mais comum e pode gerar faturas de dezenas de milhares de reais em horas
- **Exfiltração de dados via S3/Blob/GCS** pode violar obrigações da [[lgpd]] se envolver dados pessoais, exigindo notificação à ANPD em até 72 horas
**Atores relevantes:** [[g1015-scattered-spider]] é especialista em engenharia social para acesso a ambientes cloud corporativos, frequentemente comprometendo administradores de identidade via help desk. [[g0016-apt29]] utiliza tokens OAuth e aplicações registradas para persistência silenciosa em Microsoft 365 e Azure AD. Ambos exploram [[t1078-004-cloud-accounts|T1078.004 — Cloud Accounts]] como técnica central.
**Notas relacionadas:** [[t1537-transfer-data-to-cloud-account|T1537 — Transfer Data to Cloud Account]] · [[t1580-cloud-infrastructure-discovery|T1580 — Cloud Infrastructure Discovery]] · [[t1578-modify-cloud-compute-infrastructure|T1578 — Modify Cloud Compute Infrastructure]] · [[t1098-account-manipulation|T1098 — Account Manipulation]] · [[t1528-steal-application-access-token|T1528 — Steal Application Access Token]] · [[t1110-brute-force|T1110 — Brute Force]]
---
## Fluxo de Resposta
```mermaid
graph TB
A([🚨 Alerta: Atividade<br/>Anômala em Conta Cloud]) --> B{Confirmar<br/>Comprometimento}
B -->|Evidências claras| C[DECLARAR INCIDENTE P1<br/>Notificar IR Lead + CISO]
B -->|Incerto| D[Análise Rápida<br/>CloudTrail / Activity Log<br/>15 minutos]
D --> C
C --> E{Acesso<br/>ainda ativo?}
E -->|Sim| F[Revogar Sessões<br/>e Tokens Imediato]
E -->|Não/Desconhecido| G[Monitorar e<br/>Coletar Evidências]
F --> H[CONTENÇÃO]
G --> H
H --> H1[Desabilitar Usuário/<br/>Service Account IAM]
H1 --> H2[Revogar Access Keys<br/>e Tokens de API]
H2 --> H3[Aplicar SCP / Policy<br/>de Quarentena no IAM]
H3 --> H4[Isolar Recursos<br/>Comprometidos — VPC/VNET]
H4 --> I[COLETA FORENSE]
I --> I1[Exportar Logs de Auditoria<br/>CloudTrail / Activity Log]
I1 --> I2[Preservar Snapshots<br/>de VMs/Volumes]
I2 --> I3[Documentar Recursos<br/>Criados pelo Atacante]
I3 --> J[ERRADICAÇÃO]
J --> J1[Remover IAM Roles/<br/>Users Não Autorizados]
J1 --> J2[Revogar OAuth Apps<br/>e Service Principals]
J2 --> J3[Excluir Recursos<br/>Criados pelo Atacante]
J3 --> K[RECUPERAÇÃO]
K --> K1[Rebuild via IaC<br/>Terraform / CloudFormation]
K1 --> K2[Enforçar MFA e<br/>Policies Mínimas]
K2 --> K3[Monitoramento<br/>Intensivo 30 dias]
K3 --> L([✅ Incidente Encerrado])
style A fill:#ff4444,color:#fff
style C fill:#ff6600,color:#fff
style L fill:#00aa44,color:#fff
style H fill:#ffaa00,color:#000
style J fill:#0066cc,color:#fff
style K fill:#006633,color:#fff
```
---
## Diagrama de Comúnicação
```mermaid
sequenceDiagram
participant SOC as SOC Analyst
participant IR as IR Lead
participant CISO as CISO
participant Cloud as Cloud/DevOps Team
participant Legal as Jurídico/DPO
participant Exec as Executivos
participant ANPD as ANPD / CERT.br
SOC->>IR: T+0min: Alerta confirmado — conta cloud comprometida
IR->>Cloud: T+5min: Revogar sessões e tokens críticos
IR->>CISO: T+10min: Declaração de incidente P1 — escopo inicial
Cloud->>IR: T+15min: Confirmação de ações de contenção imediata
CISO->>Exec: T+20min: Briefing — impacto potencial, ações em curso
IR->>Legal: T+30min: Dados pessoais/sensíveis afetados? Avaliação LGPD
Note over IR,Legal: Canal out-of-band (Signal/telefone)<br/>e-mail corporativo pode estar comprometido
Legal->>CISO: T+1h: Parecer sobre obrigações regulatórias
IR->>Cloud: T+2h: Auditoria completa de recursos criados pelo atacante
IR->>CISO: T+4h: Relatório de contenção — escopo confirmado
CISO->>Exec: T+6h: Updaté — escopo definitivo, timeline de recuperação
Legal->>ANPD: T+72h: Notificação (se dados pessoais confirmadamente acessados)
IR->>Exec: T+72h: Relatório preliminar de post-mortem
```
---
## Indicadores de Comprometimento
> [!danger] Detectar o comprometimento ANTES da exfiltração ou provisionamento abusivo é o objetivo central. Em ambientes cloud, o atacante pode persistir silenciosamente por semanas usando credenciais válidas antes de executar o impacto.
### Fase 1 - Acesso Inicial
Os vetores mais comuns de comprometimento de conta cloud:
1. **Roubo de tokens STS/OAuth** - tokens de curta duração obtidos via phishing ou malware infostealer ([[t1528-steal-application-access-token|T1528]])
2. **Credenciais expostas em repositórios** - AWS Access Keys ou service account JSON commitados acidentalmente no GitHub/GitLab
3. **Phishing de credenciais** SSO/Entra ID com proxy reverso (Evilginx, Modlishka) para bypass de MFA
4. **Engenharia social no help desk** - técnica favorita do [[g1015-scattered-spider]]: ligar para o suporte de TI fingindo ser usuário e solicitar reset de MFA
5. **Brute force em APIs de gerenciamento** - ataques contra endpoints de autenticação não protegidos por MFA ([[t1110-brute-force|T1110]])
6. **Instance Metadata Service (IMDS)** - exploração de SSRF em aplicações web para roubar credenciais do metadata endpoint `169.254.169.254`
**Indicadores de acesso inicial — AWS CloudTrail:**
```
- ConsoleLogin com MFAUsed=No para usuário com acesso privilegiado
- AssumeRoleWithWebIdentity de IP geográfico atípico
- GetCallerIdentity de IP fora do baseline histórico
- Múltiplas falhas de autenticação (event: ConsoleLoginFailure) seguidas de sucesso
- Acesso ao endpoint /latest/meta-data/iam/security-credentials/ em logs ALB/WAF
```
**Indicadores de acesso inicial — Azure:**
```
- Sign-in com UserAgent incomum (Postman, curl, Burp) para conta de alto privilégio
- Sign-in de país não listado em Conditional Access Policy
- Uso de token com AudienceId = management.azure.com fora do baseline
- MFA Fatigue: múltiplos MFA prompts em curto período (push bombing)
```
### Fase 2 - Persistência
Após o acesso inicial, o atacante estabelece persistência para sobreviver à rotação de credenciais:
| Técnica | AWS | Azure/GCP |
|---------|-----|-----------|
| Novo usuário IAM com Access Key | `CreateUser` + `CreateAccessKey` | New service principal + client secret |
| Backdoor em Lambda/Azure Functions | `UpdateFunctionCode` | `Updaté function app` |
| Federation trust maliciosa | `CreateOpenIDConnectProvider` | `Add federation identity` no Entra ID |
| Role com trust policy ampla | `CreateRole` com `Principal: *` | `New-AzRoleAssignment` Owner scope |
| Snapshot compartilhado externamente | `ModifySnapshotAttribute` Public | - |
**Sinais de persistência — CloudTrail:**
```
- CreateUser fora do processo padrão de provisionamento
- AttachUserPolicy com AdministratorAccess
- CreateLoginProfile em usuário de serviço (não deveria ter console login)
- PutRolePolicy com permissões amplas após período de atividade suspeita
- CreateOpenIDConnectProvider (federation maliciosa)
```
### Fase 3 - Impacto
| Tipo de Impacto | Indicadores | Ferramentas |
|----------------|-------------|-------------|
| **Cryptojacking** | RunInstances em massa, altos custos súbitos, instâncias g4/p3 (GPU) | AWS Cost Anomaly, Azure Cost Alerts |
| **Exfiltração via S3** | GetObject em volume anômalo, PutBucketAcl Public, novas presigned URLs em massa | S3 Server Access Logs, Macie |
| **Exfiltração via Blob/GCS** | Leitura massiva fora do baseline, novo SAS token gerado, ACL alterada para Public | Azure Monitor, GCP Audit Logs |
| **Snapshot sharing** | ModifySnapshotAttribute com UserId externo, CreateVolume de snapshot de terceiro | CloudTrail, AWS Config |
| **Movimentação on-prem** | Acesso a serviços conectados via VPN/Direct Connect/ExpressRoute | VPC Flow Logs, NSG Flow Logs |
| **Destruição** | DeleteBucket, DeleteVolume, TerminateInstances em massa | AWS CloudTrail, Azure Activity Log |
---
## Ferramentas Recomendadas
### Nativas dos Provedores
| Ferramenta | Provedor | Uso Principal |
|------------|----------|--------------|
| **AWS GuardDuty** | AWS | Detecção de ameaças via ML - IAM anomalias, reconhecimento, cryptomining |
| **AWS Security Hub** | AWS | Agregação de findings de GuardDuty, Config, Inspector, Macie |
| **AWS CloudTrail** | AWS | Log de auditoria de todas as chamadas de API - obrigatório para IR |
| **AWS IAM Access Analyzer** | AWS | Identifica recursos com acesso público ou cross-account inesperado |
| **Amazon Macie** | AWS | Detecta dados sensíveis (PII, credenciais) em buckets S3 |
| **Microsoft Defender for Cloud** | Azure | CSPM + CWPP - postura de segurança e proteção de workloads |
| **Azure AD Identity Protection** | Azure | Detecção de sign-ins de risco, MFA anomalias, credential spray |
| **Azure Activity Log** | Azure | Log de operações no plano de controle - equivalente ao CloudTrail |
| **Azure Entra ID Sign-in Logs** | Azure | Logs de autenticação - análise de MFA, location, device compliance |
| **GCP Security Command Center** | GCP | Findings de segurança centralizados - IAM anomalias, exposed services |
| **GCP Cloud Audit Logs** | GCP | Admin Activity + Data Access logs - equivalente ao CloudTrail |
### Terceiros e Open Source
| Ferramenta | Uso | Instalação |
|------------|-----|-----------|
| **Prowler** | Auditoria de postura AWS - CIS Benchmark, LGPD, controles IR | `pip install prowler && prowler aws` |
| **ScoutSuite** | Auditoria multi-cloud (AWS, Azure, GCP) - mapeamento de configurações expostas | `pip install scoutsuite && scout aws` |
| **Cartography** | Grafo de relacionamento de recursos IAM - Neo4j backend | `pip install cartography` |
| **CloudMapper** | Visualização de rede e ACLs AWS - identifica exposições | `pip install cloudmapper` |
| **Pacu** | Framework de pentest AWS - simular movimento lateral para defesa | `git clone https://github.com/RhinoSecurityLabs/pacu` |
| **Stratus Red Team** | Simulação de TTPs cloud (AWS/Azure/GCP) para válidar detecções | `brew install datadog/stratus-red-team/stratus-red-team` |
| **CloudFox** | Enumeração de privilege escalation paths em AWS | `go install github.com/BishopFox/cloudfox@latest` |
| **MISP** | Compartilhar IoCs - IPs, domínios, hashes associados a campanhas cloud | - |
---
## Queries de Detecção
### KQL - Microsoft Sentinel - Login de IP de Alto Risco
```kql
// [VALIDAR NO SEU AMBIENTE] — Ajustar threshold de RiskLevelDuringSignIn
SigninLogs
| where TimeGenerated > ago(24h)
| where RiskLevelDuringSignIn in ("high", "medium")
or RiskState == "atRisk"
| where AppDisplayName has_any ("Azure Portal", "Microsoft Azure Management", "Azure Active Directory")
| project TimeGenerated, UserPrincipalName, IPAddress, Location,
RiskLevelDuringSignIn, RiskState, AppDisplayName, DeviceDetail,
ConditionalAccessStatus
| order by TimeGenerated desc
```
### KQL - Microsoft Sentinel - Novo Service Principal com Permissões Elevadas
```kql
AuditLogs
| where TimeGenerated > ago(7d)
| where OperationName has_any (
"Add service principal",
"Add app role assignment to service principal",
"Add member to role"
)
| where TargetResources has_any ("Global Administrator", "Privileged Role Administrator", "Owner")
| extend InitiatedByUser = tostring(InitiatedBy.user.userPrincipalName)
| extend TargetObject = tostring(TargetResources[0].displayName)
| project TimeGenerated, OperationName, InitiatedByUser, TargetObject, Result
| order by TimeGenerated desc
```
### KQL - Microsoft Sentinel - MFA Fatigue (Push Bombing)
```kql
SigninLogs
| where TimeGenerated > ago(2h)
| where AuthenticationRequirement == "multiFactorAuthentication"
| where Status.failureReason == "MFA denied; user did not respond to mobile app notification"
| summarize MFADenials = count(), Locations = make_set(Location) by UserPrincipalName, bin(TimeGenerated, 15m)
| where MFADenials >= 5
| order by MFADenials desc
```
### CloudWatch Insights - AWS - Atividade IAM Anômala
```
# [VALIDAR NO SEU AMBIENTE] - Rodar em log group: /aws/cloudtrail
fields @timestamp, eventSource, eventName, userIdentity.arn,
sourceIPAddress, userIdentity.sessionContext.sessionIssuer.userName
| filter eventSource = "iam.amazonaws.com"
and eventName in [
"CreateUser", "CreateAccessKey", "AttachUserPolicy",
"AttachRolePolicy", "CreateLoginProfile", "CreateRole",
"PutUserPolicy", "PutRolePolicy", "CreateOpenIDConnectProvider"
]
| stats count(*) as ActionCount by userIdentity.arn, eventName, sourceIPAddress
| sort ActionCount desc
| limit 50
```
### CloudWatch Insights - AWS - Tentativas de Exfiltração via S3
```
# [VALIDAR NO SEU AMBIENTE] - Rodar em log group: /aws/cloudtrail
fields @timestamp, eventName, requestParameters.bucketName,
userIdentity.arn, sourceIPAddress, requestParameters.key
| filter eventSource = "s3.amazonaws.com"
and eventName in ["GetObject", "PutBucketAcl", "PutBucketPolicy",
"PutObjectAcl", "CreatePresignedUrl"]
| stats count(*) as Requests,
sum(requestParameters.contentLength) as BytesTransferred
by userIdentity.arn, sourceIPAddress, requestParameters.bucketName
| where Requests > 500
| sort Requests desc
```
### CloudWatch Insights - AWS - Instâncias EC2 para Cryptomining
```
# [VALIDAR NO SEU AMBIENTE] - Alertar em instâncias GPU (p3, g4, g5, p4)
fields @timestamp, eventName, requestParameters.instanceType,
userIdentity.arn, sourceIPAddress, awsRegion
| filter eventSource = "ec2.amazonaws.com"
and eventName = "RunInstances"
and (requestParameters.instanceType like "p3"
or requestParameters.instanceType like "g4"
or requestParameters.instanceType like "g5"
or requestParameters.instanceType like "p4")
| stats count(*) as InstanceCount by userIdentity.arn, awsRegion, requestParameters.instanceType
| sort InstanceCount desc
```
### SPL - Splunk com CloudTrail (AWS) - Reconhecimento de Infraestrutura
```spl
index=aws sourcetype=aws:cloudtrail
eventName IN (
"DescribeInstances", "ListBuckets", "DescribeSecurityGroups",
"GetAccountSummary", "ListRoles", "ListUsers", "ListPolicies",
"DescribeVpcs", "DescribeSubnets", "ListFunctions"
)
| bucket _time span=5m
| stats count AS api_calls dc(eventName) AS unique_apis
BY _time, userIdentity.arn, sourceIPAddress
| where api_calls > 50 AND unique_apis > 5
| sort -api_calls
```
### SPL - Splunk - Detecção de Snapshot Público (AWS)
```spl
index=aws sourcetype=aws:cloudtrail
eventName="ModifySnapshotAttribute"
| rex field=requestParameters "(?<snapshot_id>snap-[0-9a-f]+)"
| eval is_public=if(searchmatch("createVolumePermission.*groups.*all"), "YES", "NO")
| where is_public="YES"
| table _time, userIdentity.arn, sourceIPAddress, snapshot_id, requestParameters
| sort -_time
```
---
## Contenção
> [!danger] Execute na ordem exata — revogar sessões antes de desabilitar contas evita que o atacante perceba a detecção e destrua evidências.
### Checklist de Contenção Imediata
- [ ] **T+0** - Confirmar comprometimento via GuardDuty / Defender for Cloud / GCP SCC
- [ ] **T+5min** - Declarar incidente P1, acionar IR Lead, CISO e Cloud/DevOps Team
- [ ] **T+10min** - **AWS:** `aws iam updaté-access-key --status Inactive --access-key-id <KEY>`
- [ ] **T+10min** - **Azure:** Revogar sessões no Entra ID: `Revoke-AzureADUserAllRefreshToken -ObjectId <ID>`
- [ ] **T+10min** - **GCP:** `gcloud iam service-accounts disable <email>` + revogar tokens OAuth
- [ ] **T+15min** - **AWS:** Aplicar inline policy de quarentena na conta IAM comprometida:
```json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": "*",
"Resource": "*"
}]
}
```
- [ ] **T+15min** - **Azure:** Bloquear sign-in do usuário: `Updaté-MgUser -UserId <ID> -AccountEnabled:$false`
- [ ] **T+20min** - Identificar e documentar TODOS os recursos criados após o comprometimento inicial
- [ ] **T+25min** - Isolar VMs/instâncias em Security Group / NSG sem regras de saída
- [ ] **T+30min** - Revogar todas as presigned URLs ativas (AWS S3: `PutBucketPolicy` bloqueando acesso externo)
- [ ] **T+35min** - Bloquear ACLs públicas em buckets S3 / Storage Accounts / GCS Buckets afetados
- [ ] **T+40min** - **AWS:** Desabilitar IAM Console login e forçar rotação de MFA
- [ ] **T+45min** - Exportar e preservar logs de auditoria em bucket/container separado e imutável
- [ ] **T+1h** - Verificar se há outros access keys ativos criados pelo atacante em contas laterais
- [ ] **T+1h** - Acionar jurídico/DPO para avaliação LGPD (dados pessoais acessados?)
- [ ] **T+2h** - Relatório de contenção: recursos afetados, ações tomadas, escopo estimado
### Comandos de Contenção Rápida
**AWS — Revogar todas as sessões ativas de um usuário IAM:**
```bash
# [VALIDAR NO SEU AMBIENTE]
# Attach política de negação imediata
aws iam put-user-policy \
--user-name <USUARIO_COMPROMETIDO> \
--policy-name QUARANTINE_DENY_ALL \
--policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Deny","Action":"*","Resource":"*"}]}'
# Desativar todos os access keys do usuário
for key in $(aws iam list-access-keys --user-name <USUARIO> \
--query 'AccessKeyMetadata[*].AccessKeyId' --output text); do
aws iam updaté-access-key --access-key-id $key --status Inactive --user-name <USUARIO>
echo "Chave $key desativada"
done
```
**Azure — Revogar sessões e bloquear usuário:**
```powershell
# [VALIDAR NO SEU AMBIENTE] - Requer módulo Microsoft.Graph
Connect-MgGraph -Scopes "User.ReadWrite.All", "Directory.ReadWrite.All"
# Revogar todos os tokens de refresh
Invoke-MgInválidateUserRefreshToken -UserId "<UPN_OU_OBJECT_ID>"
# Bloquear sign-in imediatamente
Updaté-MgUser -UserId "<UPN_OU_OBJECT_ID>" -AccountEnabled:$false
# Listar service principals registrados pelo usuário
Get-MgUserAppRoleAssignment -UserId "<UPN_OU_OBJECT_ID>"
```
**GCP — Revogar acesso de service account:**
```bash
# [VALIDAR NO SEU AMBIENTE]
# Desabilitar service account
gcloud iam service-accounts disable <SA_EMAIL> --project=<PROJECT_ID>
# Remover todas as chaves da service account
for key in $(gcloud iam service-accounts keys list \
--iam-account=<SA_EMAIL> --format="value(name)"); do
gcloud iam service-accounts keys delete $key \
--iam-account=<SA_EMAIL> --quiet
done
```
---
## Erradicação
- [ ] Auditar **todos** os usuários IAM / service principals criados após a data do comprometimento inicial
- [ ] Buscar roles com `AssumeRolePolicyDocument` contendo `Principal: "*"` ou trusts cross-account desconhecidos
- [ ] Identificar e revogar todos os OAuth apps / Enterprise Applications registrados pelo atacante no Azure Entra ID
- [ ] Verificar Lambda functions (AWS), Azure Functions e GCP Cloud Functions para código malicioso injetado
- [ ] Auditar CloudFormation stacks / ARM templates / Terraform state para recursos não autorizados
- [ ] Excluir instâncias EC2/VMs criadas pelo atacante - **após preservar snapshots para forense**
- [ ] Remover AMIs, snapshots e imagens de disco compartilhadas externamente
- [ ] Revogar e regenerar todas as credenciais de serviços integrados que usavam as contas comprometidas
- [ ] Auditar VPC Peerings, Transit Gateway attachments e ExpressRoute/Direct Connect para conexões externas adicionadas
- [ ] Verificar EventBridge rules / Azure Event Grid / GCP Pub/Sub para subscriptions maliciosas que mantêm persistência
- [ ] Confirmar que nenhuma instância de cryptominer está ainda ativa - verificar via AWS Cost Explorer pico de uso
- [ ] Executar Prowler ou ScoutSuite completo para identificar configurações remanescentes que abrem superfície
---
## Recuperação
- [ ] Planejar rebuild de todos os recursos afetados via **Infrastructure as Code** (Terraform, CloudFormation, Pulumi) - nunca recriar manualmente
- [ ] Restaurar dados de backups imutáveis verificados - S3 Object Lock (WORM), Azure Backup, GCP Snapshots com integridade válidada
- [ ] Enforçar **MFA obrigatório** para todos os usuários com acesso ao console cloud - sem exceções
- [ ] Implementar **SCPs (AWS) / Azure Policy / GCP Organization Policy** para prevenir reincidência:
- Bloquear criação de access keys para usuários não autorizados
- Exigir MFA para ações destrutivas (DeleteBucket, TerminateInstances)
- Restringir regiões permitidas (ex: apenas sa-east-1 para workloads brasileiros)
- [ ] Habilitar **AWS GuardDuty** em todas as contas e regiões (muitas organizações deixam regiões secundárias sem cobertura)
- [ ] Configurar alertas de custo para anomalias > 20% do baseline (detecta cryptomining em horas)
- [ ] Implementar **Least Privilege IAM**: auditar e remover permissões não utilizadas com IAM Access Analyzer
- [ ] Habilitar **S3 Block Public Access** em nível de conta (não apenas por bucket)
- [ ] Implementar **CloudTrail com integridade de logs** ativada e destino em conta separada de segurança (Log Archive Account)
- [ ] Configurar monitoramento intensivo 30 dias: alertas para qualquer operação IAM, novo recurso, ou acesso cross-region
- [ ] Documentar todas as credenciais rotacionadas e confirmar que sistemas dependentes foram atualizados
---
## Contexto LATAM/Brasil
> [!info] Relevância Regional
> O Brasil é o maior mercado cloud da América Latina e concentra riscos regulatórios e operacionais específicos que impactam diretamente a resposta a incidentes.
**AWS São Paulo (sa-east-1):** A região brasileira da AWS é a principal rota de migração cloud para empresas nacionais. Isso a torna alvo para atores que buscam dados de clientes de setores regulados (financeiro, saúde, governo). Incidentes de cryptomining na região já geraram faturas de R$ 50.000 a R$ 200.000 em 24 horas em casos documentados.
**LGPD e residência de dados:** A [[lgpd]] (Lei Geral de Proteção de Dados) impõe obrigações relevantes no contexto de comprometimento cloud:
- Art. 48: notificação à ANPD em prazo razoável (interpretado como até 72h após confirmação de incidente com dados pessoais)
- Dados pessoais armazenados em S3 / Azure Blob / GCS devem ser auditados para determinar se foram acessados pelo atacante
- Transferência internacional de dados roubados (exfiltração para servidor fora do Brasil) pode configurar violação adicional
**Adoção cloud no setor público:** O programa **gov.br** de transformação digital ampliou a adoção de Azure Government e AWS GovCloud entre órgãos federais e estaduais. Comprometimentos nesse contexto podem envolver dados de cidadãos e notificação ao CTIR.gov e ao Gabinete de Segurança Institucional (GSI).
**Grupos de ameaça com foco regional:** Grupos de cibercrime brasileiro têm demonstrado capacidade crescente em cloud attacks, especialmente:
- Abuso de contas de terceiros para infraestrutura de phishing (hospedagem em S3/Azure Blob)
- Cryptojacking oportunístico em contas AWS com credenciais expostas em repositórios públicos GitHub (técnica amplamente usada por grupos como TeamTNT, afetando Brasil desproporcionalmente por volume de repositórios públicos com credenciais hardcoded)
- Comprometimento de pipelines CI/CD no setor de fintechs para pivoting em ambientes cloud de produção
**Custo operacional:** O impacto financeiro do comprometimento cloud é imediato e mensurável via fatura. Organizações brasileiras devem configurar AWS Budget Alerts e Azure Cost Alerts com notificação automática para o CISO — isso pode ser o primeiro sinal de cryptojacking antes de qualquer alerta de segurança.
---
## Referências
- [[t1078-004-cloud-accounts|T1078.004 - Cloud Accounts]] - técnica MITRE ATT&CK de acesso inicial via contas cloud
- [[t1537-transfer-data-to-cloud-account|T1537 - Transfer Data to Cloud Account]] - exfiltração via cloud storage
- [[t1580-cloud-infrastructure-discovery|T1580 - Cloud Infrastructure Discovery]] - reconhecimento de infraestrutura cloud
- [[t1578-modify-cloud-compute-infrastructure|T1578 - Modify Cloud Compute Infrastructure]] - modificação de recursos cloud
- [[t1098-account-manipulation|T1098 - Account Manipulation]] - manipulação de contas IAM/Entra ID
- [[t1528-steal-application-access-token|T1528 - Steal Application Access Token]] - roubo de tokens OAuth/STS
- [[g1015-scattered-spider]] - grupo especialista em comprometimento cloud via engenharia social
- [[g0016-apt29]] - ator estatal com histórico de abuso de tokens OAuth em ambientes Microsoft 365/Azure
- [[lgpd]] - Lei Geral de Proteção de Dados - obrigações de notificação
- [CISA - Scattered Spider Advisory AA23-320A](https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-320a)
- [AWS Security Incident Response Guide](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/welcome.html)
- [Microsoft Incident Response - Compromised Credential Playbook](https://learn.microsoft.com/en-us/security/operations/incident-response-playbook-compromised-malicious-app)
- [GCP Incident Response - Best Practices](https://cloud.google.com/architecture/security-log-analytics)
- [Prowler - Cloud Security Tool](https://github.com/prowler-cloud/prowler)
---
*Última revisão: 2026-03-26 | Próxima revisão recomendada: 2026-09-26*