
Uma ferramenta para implantar (e derrubar!) infraestrutura de nuvem propositalmente insegura.
sadcloud é uma ferramenta para criar infraestrutura AWS insegura com Terraform.
Ela suporta aproximadamente 84 configurações incorretas em 22 serviços AWS. O conjunto inicial de configurações incorretas foi extraído do ScoutSuite, a ferramenta de auditoria multi-nuvem da NCCGroup.
O sadcloud foi criado para permitir que pesquisadores de segurança configurem facilmente a AWS de forma incorreta para fins de treinamento, ou para avaliar ferramentas de segurança AWS — incluindo nativas e de terceiros.
Esta ferramenta cria recursos AWS configurados intencionalmente vulneráveis. Não a execute na sua nuvem de produção, nem em qualquer ambiente que deva ser seguro. Considere criar uma nova conta AWS para executar esta ferramenta. Como a ferramenta cria recursos na nuvem, isso resultará em cobranças na sua conta AWS. Foram feitos esforços para minimizar os custos envolvidos, mas a NCC Group e os mantenedores desta ferramenta não são responsáveis por quaisquer cobranças ou problemas de segurança que possam resultar do uso desta ferramenta. Certifique-se de derrubar todos os recursos do Terraform quando não estiver usando-os!
Um teste de 24 horas com o sadcloud gerou uma conta de aproximadamente US$ 10. A maior parte desse custo vem do módulo Redshift (25 centavos/hora = US$ 6/dia) e do módulo EKS (10 centavos/hora = US$ 2,40/dia).
Periodicamente usamos o sadcloud para demonstrar diversas ferramentas de auditoria AWS e Terraform. Todas as auditorias são feitas contra o conjunto completo de configurações incorretas possíveis.
Software necessário: Terraform
Garanta que suas chaves SSH estejam gravadas em data/ssh_keys/terraform_rsa{,.pub}.
ssh-keygen -t rsa -b 4096 -f data/ssh_keys/terraform_rsa
git clone https://github.com/nccgroup/sadcloud.gitcd sadcloud/sadcloudConfigure o provider AWS (veja a seção "Usando Providers em vez de Variáveis de Ambiente" abaixo para instruções sobre como evitar esta etapa):
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
Prepare o Terraform:
terraform init
Configure o sadcloud com as configurações incorretas desejadas:
Para habilitar todas as descobertas (... excluindo aquelas que entram em conflito com outras descobertas):
sadcloud/main.tfall_findings em sadcloud/terraform.tfvars para true, ou execute terraform apply com a flag --var="all_findings=true"Para habilitar todas as descobertas em um ou mais serviços:
sadcloud/main.tfall_{service}_findings correspondente em sadcloud/terraform.tfvars para true, ou execute terraform apply com a flag --var="all_{service}_findings=true"all_findings em sadcloud/terraform.tfvars para true, ou execute terraform apply com a flag --var="all_findings=true"
NOTA: Atualmente existe um bug do Terraform com o serviço Cloudformation. Para gerar descobertas do Cloudformation, você precisará executar Terraform apply duas vezesPara habilitar descobertas específicas de forma granular:
sadcloud/main.tfsadcloud/main.tf, alterando-as para true onde desejado.needs_network como true em sadcloud/main.tfNota: Todas as configurações incorretas no sadcloud estão desabilitadas por padrão. Todos os serviços estão desabilitados por padrão para evitar a criação de recursos desnecessários. Definir a variável de uma configuração incorreta como true sempre resulta em configuração incorreta. Executar all_findings pode levar de 10 a 15 minutos.
Verifique:
terraform plan
Implante:
terraform apply
Derrube tudo:
terraform destroy
Nota: terraform apply criará serviços na AWS. Isso custa dinheiro. Não se esqueça de executar terraform destroy quando terminar. Certifique-se de executar terraform plan antes de rodar all_findings para entender no que você está se metendo!
É possível configurar um provider AWS para não precisar definir variáveis de ambiente toda vez.
Crie um arquivo chamado sadcloud/providers.tf com o seguinte conteúdo:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}