Passei na microcredencial AWS Incident Response Demonstrated e resolvi documentar o processo completo. Diferente de provas teóricas, aqui você executa ações diretamente no console AWS em um ambiente simulado, respondendo a um ataque multivetorial em 90 minutos.
Resultado: APROVADO
Link: AWS Incident Response Demonstrated - Português
O que é essa microcredencial?
A microcredencial AWS Incident Response Demonstrated é um exame prático (hands-on) do AWS Skill Builder que valida sua capacidade de responder a um incidente de segurança real na AWS. Diferente de provas teóricas, aqui você executa ações diretamente no console AWS em um ambiente simulado.
O cenário simula um ataque multivetorial à empresa fictícia “AnyCompany Data”, onde um engenheiro de segurança em nuvem retorna de férias e descobre que a infraestrutura foi comprometida. Você precisa investigar, conter, eliminar e recuperar o ambiente em 90 minutos.
O que você vai aprender
- Análise forense de logs com Amazon Athena e CloudTrail
- Contenção de ameaças em S3 (Block Public Access, bucket policies)
- Identificação e remoção de instâncias EC2 comprometidas (crypto mining)
- Hardening de metadados EC2 (IMDSv2)
- Segmentação de rede com Security Groups e Network ACLs
- Erradicação de backdoors IAM
- Configuração de controles de auditoria (AWS Config, CloudTrail)
- Hardening de banco de dados RDS
Pré-requisitos recomendados
- Conhecimento intermediário de AWS (IAM, EC2, S3, VPC, RDS)
- Familiaridade com o console AWS
- Entendimento básico de resposta a incidentes
- Curso “AWS Cloud Quest: Security” (recomendado, não obrigatório)
Antes de começar: regras de ouro
- NÃO comece executando. Leia TODOS os desafios primeiro (5 min)
- Colete TODOS os recursos da solução antes de tocar em qualquer coisa
- Inicie tarefas com tempo de espera primeiro (RDS modifications, Instance Refresh)
- CloudShell está BLOQUEADO neste lab. Tudo é feito pelo console
- O console está em português. Campos de confirmação pedem texto em PT (ex: “excluir permanentemente”, “confirmar”)
- Os nomes nos recursos da solução podem estar traduzidos. Verifique o nome real no console
Fase 0: Reconhecimento (5 minutos)
0.1 Abra o Guia do Laboratório
Clique no link do guia dentro do Skill Builder. Leia o cenário para entender o contexto do ataque.
0.2 Colete os Recursos da Solução
Clique em “Recursos da Solução” e anote TUDO. Você vai precisar destes valores repetidamente:
| Recurso | Exemplo de valor |
|---|---|
| URL do aplicativo | http://LabSta-WebAL-xxx.us-east-1.elb.amazonaws.com |
| Banco de dados Athena | cloudtrail_logs (nome real, não o traduzido) |
| Grupo de Trabalho Athena | cloudtrail-analysis (nome real, não o traduzido) |
| ConfigBucketName | config-bucket-XXXXXX |
| Nome da função de configuração | lab-awsconfig-role-XXXXXX |
| Customer Data Bucket | customer-data-ACCOUNTID-us-east-1-XXXXXX |
| Security Group (DB) | sg-XXXXXXXXX |
| Forensic Bucket | incident-response-forensic-analysis-XXXXXX |
| Incident Response Trail | resposta-incidente-cloudtrail-XXXXXX |
| VPC ID | vpc-XXXXXXXXX |
| Security Group (server) | sg-XXXXXXXXX |
| WebServerASGName | (role para baixo nos recursos!) |
| WebServerLaunchTemplateId | (role para baixo nos recursos!) |
| ALBSecurityGroupId | (role para baixo nos recursos!) |
IMPORTANTE: Role para baixo nos recursos! Existem mais itens do que cabem na tela.
0.3 Leia todos os 6 desafios
Abra cada desafio e leia os critérios de sucesso. Isso evita retrabalho.
0.4 Defina a ordem de execução
A ordem recomendada (otimizada para tempo):
- Desafio UM (RDS): inicie as modificações primeiro (demoram 5-10 min para aplicar)
- Desafio D (S3/Athena/NACL): contenção de dados
- Desafio F (EC2/AMI/Launch Template): identificação e remediação
- Desafio C (IAM/SSM): erradicação de backdoors
- Desafio B (Security Groups): segmentação de rede
- Desafio E (CloudTrail/Config): auditoria e conformidade
Desafio UM: Segurança do banco de dados (iniciar PRIMEIRO)
Tempo estimado: 3 min de configuração + 5-10 min de espera Por que primeiro: As modificações do RDS demoram para aplicar. Inicie e vá para outros desafios.
Passo 1: Modificar a instância RDS
- Console RDS > Bancos de dados
- Selecione a instância MySQL > Modificar
- Altere:
- Acessibilidade pública: Não acessível publicamente
- Retenção de backup: 7 dias
- Proteção contra exclusão: Habilitar
- Clique “Continuar” > Aplicar imediatamente > Confirmar
CRÍTICO: Marque “Aplicar imediatamente” para não esperar a janela de manutenção.
Passo 2: Evidências forenses (feito junto com Desafio D)
Os arquivos database_dump.sql e database_dump.json serão copiados para o bucket forense durante o Desafio D. Não precisa fazer separado.
Desafio D: Conter exfiltração e bloquear atacante
Tempo estimado: 15-20 min Este é o desafio mais longo. Siga a ordem exata.
Passo 1: Identificar buckets do atacante no S3
- Console S3 > Lista de buckets
- Compare os timestamps de criação:
- Buckets da infraestrutura: criados no mesmo horário (ex: 10:29)
- Buckets do atacante: criados minutos depois (ex: 10:36)
- Os buckets do atacante terão nomes inocentes como
data-backup-XXXXXXedb-archive-XXXXXX
Passo 2: Copiar evidências para o bucket forense
Para CADA bucket do atacante:
- Entre no bucket > selecione todos os objetos
- Ações > Copiar
- Destino:
s3://incident-response-forensic-analysis-XXXXXX/ - Copiar
Arquivos esperados: customer_data.csv, financial_transactions.csv, database_dump.sql, database_dump.json
Passo 3: Esvaziar e deletar buckets do atacante
Para CADA bucket do atacante:
- Na lista de buckets, selecione o bucket
- Clique “Vazio” > digite “excluir permanentemente” > confirme
- Se der erro de permissão (DeleteObjectVersion), entre no bucket, selecione os objetos e delete individualmente
- Depois: selecione o bucket > “Excluir” > digite o nome do bucket > confirme
Passo 4: Block Public Access no bucket do cliente
- Entre no bucket
customer-data-ACCOUNTID-us-east-1-XXXXXX - Aba Permissões
- Bloquear acesso público > Editar > marque “Bloquear todo o acesso público” > Salvar > digite “confirmar”
- Política do bucket > Excluir > digite “excluir” (remove a policy pública com Principal: *)
Passo 5: Block Public Access no nível da conta
- S3 > Menu lateral > Configurações de conta e organização
- Bloquear acesso público > Editar > marque “Bloquear todo o acesso público” > Salvar > digite “confirmar”
Passo 6: Identificar IPs do atacante via Athena
- Console Athena > Editor de consultas
- Troque o workgroup para
cloudtrail-analysis(NÃO use “primary”, não tem permissão) - Se pedir local de resultados: use
s3://athena-result-bucket-XXXXXX/ - Banco de dados:
cloudtrail_logs, tabela:cloudtrail_events - Execute a query:
| |
- Analise o resultado. Procure os campos
sourceipaddressnos registros - Filtre IPs que NÃO são:
- *.amazonaws.com (serviços AWS)
- 10.x.x.x, 172.x.x.x, 192.168.x.x (IPs privados)
- Os IPs restantes são do atacante (geralmente 3 Tor exit nodes)
Passo 7: Bloquear IPs no Network ACL
- Console VPC > ACLs da rede
- Selecione a NACL associada à LabVPC (verifique o VPC ID)
- Aba “Regras de entrada” > Editar regras de entrada
- Adicione 3 regras DENY (uma para cada IP do atacante):
| Regra # | Tipo | Protocolo | Portas | Origem | Ação |
|---|---|---|---|---|---|
| 50 | Todo o tráfego | Tudo | Tudo | IP_ATACANTE_1/32 | Deny |
| 51 | Todo o tráfego | Tudo | Tudo | IP_ATACANTE_2/32 | Deny |
| 52 | Todo o tráfego | Tudo | Tudo | IP_ATACANTE_3/32 | Deny |
- NÃO altere a regra 100 (ALLOW). As regras DENY com números menores são avaliadas primeiro
- Salvar
Verificar
Clique “Verificar” no Desafio D e no Desafio UM (se o RDS já aplicou).
Desafio F: Identificar e remediar recursos comprometidos
Tempo estimado: 10-15 min
Passo 1: Identificar instâncias do atacante
- Console EC2 > Instâncias
- Identifique as instâncias suspeitas:
- Security Group “default” (legítimas usam “WebServerSG”)
- IP público atribuído
- Sem Auto Scaling Group
- Nomes suspeitos (ex: WebServer-Backup-1, WebServer-Backup-2)
Passo 2: Criar AMIs forenses
Para CADA instância do atacante:
- Selecione a instância > Ações > Imagem e modelos > Criar imagem
- Nome:
forensic-INSTANCE_ID - Em Tags, adicione (marque “Etiquetar imagem e snapshots juntos”):
incidenttype=crypto-miningsourceinstance=INSTANCE_ID(ex: i-0abc123def456)
- Criar imagem
Passo 3: Terminar instâncias do atacante
- Selecione TODAS as instâncias do atacante
- Estado da instância > Encerrar (excluir) instância > Confirmar
Passo 4: Corrigir o Launch Template (IMDSv2)
- EC2 > Modelos de execução (Launch Templates)
- Selecione o template do WebServer
- Ações > Modificar modelo (criar nova versão)
- Role até “Detalhes avançados” > seção Metadados:
- Versão de metadados: V2 only (token required)
- Limite de saltos de resposta de metadados: 1
- Criar versão
- Volte ao template > Ações > Definir versão padrão > selecione a versão mais recente
Passo 5: Atualizar o Auto Scaling Group
- EC2 > Grupos Auto Scaling
- Selecione o ASG do WebServer
- Edite o Launch Template para usar Latest (versão mais recente)
- Aba “Atualização da instância” > Iniciar Instance Refresh
- Aguarde completar (3-5 min). Vá para outros desafios enquanto espera
Verificar
Clique “Verificar”. Se disser que instâncias não usam o template mais recente, aguarde o Instance Refresh completar.
Desafio C: Erradicar backdoors e privilégio mínimo
Tempo estimado: 5-10 min
Passo 1: Deletar IAM users backdoor
- Console IAM > Usuários
- Identifique users suspeitos (nomes como
system-backup-XXXXXX,app-admin-XXXXXX) - Para cada user: clique no nome > Excluir > digite o nome > confirmar
Passo 2: Deletar documentos do Systems Manager
- Console Systems Manager > Documentos
- Aba “De minha propriedade” (Owned by me)
- Delete todos os documentos criados pelo atacante
Passo 3: Corrigir a IAM Role da instância EC2
- Console IAM > Funções (Roles)
- Busque por “WebServer” > abra a role
WebServerRole-XXXXXX - Na aba Permissões, identifique policies excessivas:
- REMOVER:
AmazonS3FullAccess,IAMReadOnlyAccess,SecretsManagerReadWrite - MANTER:
AmazonSSMManagedInstanceCore,CloudWatchAgentServerPolicy,WebServerRoleDefaultPolicy*
- REMOVER:
- Selecione as policies excessivas > Remover
- Clique “Adicionar permissões” > Anexar políticas > busque
MinimalEC2InstancePolicy> Anexar
Verificar
Clique “Verificar” no Desafio C.
Desafio B: Segmentação de rede
Tempo estimado: 5 min
Conceito
A arquitetura correta é: Internet > ALB > Web Tier > Database Tier. Cada camada só aceita tráfego da camada anterior.
Passo 1: Web tier Security Group
- EC2 > Security Groups > selecione o WebServerSG (ID dos recursos)
- Editar regras de entrada:
- Remover TODAS as regras com 0.0.0.0/0 ou ranges amplos (10.0.0.0/8, all TCP)
- Adicionar: TCP porta 5000, origem = ALB Security Group ID
- Deve ficar com APENAS UMA regra de entrada
Passo 2: Database tier Security Group
- EC2 > Security Groups > selecione o DB SG (ID dos recursos)
- Editar regras de entrada:
- Remover TODAS as regras com 0.0.0.0/0
- Adicionar: TCP porta 3306, origem = Web tier Security Group ID
- Deve ficar com APENAS UMA regra de entrada
Verificar
Clique “Verificar”. Se falhar, verifique se não sobrou nenhuma regra com 0.0.0.0/0 ou ranges amplos.
Desafio E: Controles de auditoria e conformidade
Tempo estimado: 10-15 min Este é o desafio mais complexo. Se o tempo estiver curto, faça na ordem de prioridade.
Passo 1: CloudTrail (prioridade alta, 1 min)
- Console CloudTrail > Trilhas
- Clique na trilha
resposta-incidente-cloudtrail-XXXXXX - Editar > Habilitar Validação de arquivo de log > Salvar
Passo 2: S3 Lifecycle (prioridade alta, 2 min)
- Console S3 > bucket
incident-response-cloudtrail-XXXXXX - Aba Gerenciamento > Criar regra de ciclo de vida
- Nome:
log-retention - Escopo: “Aplicar a todos os objetos” > marque “Reconheço…”
- Marque “Transição de versões atuais” > Glacier Flexible Retrieval > 90 dias (ou “Expirar versões atuais” > 90 dias)
- Criar regra
Passo 3: AWS Config Recorder (prioridade média, 3 min)
- Console AWS Config > Configurar
- Método de gravação: Todos os tipos de recursos com substituições personalizáveis
- Frequência: Gravação contínua
- Se aparecer substituição de IAM global, clique “Remover” (para incluir tudo)
- Função do IAM: Escolher existente >
lab-awsconfig-role-XXXXXX - Bucket S3: Escolher existente >
config-bucket-XXXXXX - Confirmar/Salvar
Erros comuns:
- “not authorized to perform s3:CreateBucket”: selecione bucket EXISTENTE, não crie novo
- “not authorized to perform iam:CreateServiceLinkedRole”: selecione role EXISTENTE, não crie nova
Passo 4: AWS Config Regras (prioridade média, 5 min)
- AWS Config > Regras > Adicionar regra
- Adicione 6 regras gerenciadas AWS (uma por vez):
| Regra | O que verifica |
|---|---|
s3-bucket-public-read-prohibited | Buckets S3 sem leitura pública |
s3-bucket-public-write-prohibited | Buckets S3 sem escrita pública |
rds-instance-public-access-check | RDS sem acesso público |
restricted-ssh | SGs sem SSH aberto (0.0.0.0/0) |
vpc-flow-logs-enabled | VPC Flow Logs habilitados |
cloud-trail-cloud-watch-logs-enabled | CloudTrail com CloudWatch Logs |
Para cada: Adicionar regra > busque o nome > Next > Next > Salvar (sem alterar parâmetros).
Verificar
Clique “Verificar” no Desafio E.
Checklist final (últimos 5 minutos)
Antes do tempo acabar, verifique TODOS os desafios:
- UM (RDS): Verificar (RDS pode ter terminado de aplicar)
- D (S3/NACL): Verificar
- F (EC2/AMI): Verificar (Instance Refresh pode ter completado)
- C (IAM/SSM): Verificar
- B (Security Groups): Verificar
- E (CloudTrail/Config): Verificar
Se algum falhar, leia a mensagem de erro com atenção. Geralmente indica exatamente o que falta.
Dicas finais
- Não entre em pânico. 90 minutos é suficiente se você seguir a ordem certa
- Leia as mensagens de erro. Elas dizem exatamente o que está errado
- Se algo falhar 2 vezes, mude a abordagem. Não insista no mesmo caminho
- Tarefas em paralelo: enquanto RDS aplica mudanças ou Instance Refresh roda, trabalhe em outros desafios
- Os desafios são randomizados. A ordem no painel pode ser diferente da ordem lógica
- Validade: a microcredencial vale 1 ano. Se reprovar, espera de 25 dias para tentar novamente
- Credly: após aprovação, você recebe um email da Credly com o selo digital para compartilhar no LinkedIn
Boa sorte! 🚀