sadcloud 是一个用于通过 Terraform 搭建不安全 AWS 基础设施的工具。
它支持约 84 个错误配置,涵盖 22 个 AWS 服务。 初始的错误配置集取自 ScoutSuite——NCCGroup 的多云审计工具。
sadcloud 的创建旨在让安全研究人员能够轻松地出于培训目的而错误配置 AWS,或用于评估 AWS 安全工具——包括内置和第三方工具。
该工具会创建_故意存在漏洞_的 AWS 配置资源。请勿在你的生产云环境或任何需要保持安全的地方运行它。 建议新建一个 AWS 账户来运行此工具。由于该工具会创建云资源,因此你的 AWS 账户将产生费用。我们已尽力将费用降到最低,但 NCC Group 和该工具的维护者不对因使用此工具而产生的任何费用或安全问题负责。不使用时,请务必拆除所有 Terraform 资源!
sadcloud 的一次 24 小时测试运行产生了约 10 美元的费用。其中大部分费用来自 Redshift 模块(0.25 美元/小时 = 6 美元/天)和 EKS 模块(0.10 美元/小时 = 2.40 美元/天)。
我们定期使用 sadcloud 来演示各种 AWS 和 Terraform 审计工具。所有审计均针对全部可能的错误配置集。
所需软件:Terraform
确保你的 SSH 密钥已写入 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/sadcloud配置 AWS provider(有关如何跳过此步骤的说明,请参阅下方的"使用 Providers 代替环境变量"部分):
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
准备 Terraform:
terraform init
使用你想要的错误配置来配置 sadcloud:
启用所有发现项(……排除与其他发现项冲突的项目):
sadcloud/main.tf 中的所有模块sadcloud/terraform.tfvars 中的 all_findings 标志编辑为 true,或使用 --var="all_findings=true" 标志调用 terraform apply启用一个或多个服务中的所有发现项:
sadcloud/main.tf 中相关的服务sadcloud/terraform.tfvars 中相关的 all_{service}_findings 标志编辑为 true,或使用 --var="all_{service}_findings=true" 标志调用 terraform applysadcloud/terraform.tfvars 中的 标志编辑为 ,或使用 标志调用
注意: sadcloud 中的所有错误配置默认处于禁用状态。所有服务默认处于禁用状态,以防止创建不必要的资源。将错误配置的变量设置为 true 始终会引发错误配置。运行 all_findings 可能需要 10-15 分钟。
检查它:
terraform plan
部署它:
terraform apply
拆除它:
terraform destroy
注意: terraform apply 将在 AWS 中创建服务。这些服务需要付费。完成后不要忘记执行 terraform destroy。在运行 all_findings 之前,请务必先执行 terraform plan,这样你就能了解自己将要面对什么!
你可以设置一个 AWS provider,这样就不必每次都设置环境变量。
创建一个名为 sadcloud/providers.tf 的文件,内容如下:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| 工具 | 示例报告 |
|---|
all_findingstrue--var="all_findings=true"terraform applyTerraform apply 两次按粒度启用特定发现项:
sadcloud/main.tf 中相关的服务sadcloud/main.tf 中编辑感兴趣的变量,在需要的地方将它们改为 true。sadcloud/main.tf 中将 needs_network 设置为 true