
Una herramienta para crear (¡y destruir!) infraestructura cloud deliberadamente insegura
sadcloud es una herramienta para crear infraestructura AWS insegura con Terraform.
Es compatible con aprox. 84 configuraciones incorrectas en 22 servicios de AWS. El conjunto inicial de configuraciones incorrectas se basó en ScoutSuite, la herramienta de auditoría multinube de NCCGroup.
sadcloud fue creado para permitir a los investigadores de seguridad configurar incorrectamente AWS fácilmente con fines de formación, o para usarlo para evaluar herramientas de seguridad de AWS, incluidas las integradas y las de terceros.
Esta herramienta crea recursos AWS intencionalmente vulnerables. No la ejecutes en tu nube de producción ni en ningún entorno que deba ser seguro. Considera crear una nueva cuenta de AWS en la que ejecutar esta herramienta. Dado que esta herramienta crea recursos en la nube, se te cobrarán cargos en tu cuenta de AWS. Se han realizado esfuerzos para minimizar los costos incurridos, pero NCC Group y los mantenedores de esta herramienta no son responsables de los cargos ni de los problemas de seguridad que puedan derivarse del uso de esta herramienta. ¡Asegúrate de destruir todos los recursos de Terraform cuando no los estés usando!
Una ejecución de prueba de sadcloud durante 24 horas generó una factura de aproximadamente $10. La mayor parte de ese costo proviene del módulo Redshift (25c/hora = $6/día) y del módulo EKS (10c/hora = $2.40/día).
Periódicamente usamos sadcloud para demostrar diversas herramientas de auditoría de AWS y Terraform. Todas las auditorías se realizan contra el corpus completo de posibles configuraciones incorrectas.
Software requerido: Terraform
Asegúrate de que tus claves SSH se encuentren en 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/sadcloudConfigura el proveedor de AWS (consulta la sección "Uso de proveedores en lugar de variables de entorno" a continuación para obtener instrucciones sobre cómo omitir este paso):
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
Prepara Terraform:
terraform init
Configura sadcloud con las configuraciones incorrectas que desees:
Para habilitar todos los hallazgos (... excluyendo aquellos que están en conflicto con otros hallazgos):
sadcloud/main.tfall_findings en sadcloud/terraform.tfvars a true, o ejecuta terraform apply con la opción --var="all_findings=true"Para habilitar todos los hallazgos en uno o más servicios:
sadcloud/main.tfall_{service}_findings correspondiente en sadcloud/terraform.tfvars a true, o ejecuta terraform apply con la opción --var="all_{service}_findings=true"Nota: Todas las configuraciones incorrectas en sadcloud están deshabilitadas por defecto. Todos los servicios están deshabilitados por defecto para evitar la creación de recursos innecesarios. Establecer la variable de una configuración incorrecta en true siempre resulta en una configuración incorrecta. Ejecutar all_findings puede tomar de 10 a 15 minutos.
Verifícalo:
terraform plan
Despliégalo:
terraform apply
Destrúyelo:
terraform destroy
Nota: terraform apply creará servicios en AWS. Estos cuestan dinero. No olvides ejecutar terraform destroy cuando termines. Asegúrate de ejecutar terraform plan antes de ejecutar all_findings para que entiendas en qué te estás metiendo.
Es posible configurar un proveedor de AWS para no tener que establecer variables de entorno cada vez.
Crea un archivo llamado sadcloud/providers.tf con el siguiente contenido:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| Herramienta | Informe de muestra |
|---|
all_findings en sadcloud/terraform.tfvars a true, o ejecuta terraform apply con la opción --var="all_findings=true"
NOTA: Actualmente hay un error de Terraform con el servicio Cloudformation. Para generar hallazgos de Cloudformation, necesitarás ejecutar Terraform apply dos vecesPara habilitar hallazgos específicos de forma granular:
sadcloud/main.tfsadcloud/main.tf, cambiándolas a true donde se desee.needs_network en true en sadcloud/main.tf