
의도적으로 취약한 클라우드 인프라를 구축(및 해체!)하기 위한 도구
sadcloud은 취약한 AWS 인프라를 Terraform으로 구축하기 위한 도구입니다.
약 84가지의 잘못된 구성을 22개의 AWS 서비스에 걸쳐 지원합니다. 초기 잘못된 구성 세트는 NCCGroup의 멀티클라우드 감사 도구인 ScoutSuite에서 가져왔습니다.
sadcloud은 보안 연구자들이 교육 목적으로 AWS를 쉽게 잘못 구성하거나, 내장 및 타사 도구를 포함한 AWS 보안 도구를 평가하는 데 사용할 수 있도록 만들어졌습니다.
이 도구는 의도적으로 취약하게 구성된 AWS 리소스를 구동합니다. 프로덕션 클라우드나 보안이 유지되어야 하는 환경에서는 실행하지 마십시오. 이 도구를 실행할 새 AWS 계정을 만드는 것을 고려하세요. 이 도구는 클라우드 리소스를 구동하므로 AWS 계정에 비용이 청구됩니다. 비용을 최소화하기 위해 노력했지만, NCC Group 및 이 도구의 관리자는 이 도구 사용으로 인해 발생할 수 있는 요금이나 보안 문제에 대해 책임을 지지 않습니다. 사용하지 않을 때는 모든 Terraform 리소스를 반드시 삭제하세요!
sadcloud의 24시간 테스트 실행으로 약 $10의 청구서가 발생했습니다. 비용의 대부분은 Redshift 모듈(시간당 25c = 하루 $6)과 EKS 모듈(시간당 10c = 하루 $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/sadcloudAWS 프로바이더를 설정하세요 (이 단계를 건너뛰는 방법은 아래의 "환경 변수 대신 프로바이더 사용" 섹션을 참조하세요):
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 apply를 호출하세요.sadcloud/terraform.tfvars의 플래그를 로 편집하거나, 플래그와 함께 를 호출하세요.
참고: sadcloud의 모든 잘못된 구성은 기본적으로 비활성화되어 있습니다. 불필요한 리소스가 생성되는 것을 방지하기 위해 모든 서비스도 기본적으로 비활성화되어 있습니다. 잘못된 구성에 대한 변수를 true로 설정하면 항상 잘못된 구성이 생성됩니다. all_findings 실행은 10-15분이 소요될 수 있습니다.
확인:
terraform plan
배포:
terraform apply
해체:
terraform destroy
참고: terraform apply는 AWS에서 서비스를 구동합니다. 이는 비용이 발생합니다. 작업이 끝난 후 terraform destroy를 실행하는 것을 잊지 마세요. all_findings를 실행하기 전에 terraform plan을 실행하여 어떤 리소스가 생성될지 반드시 확인하세요!
매번 환경 변수를 설정하지 않아도 되도록 AWS 프로바이더를 설정할 수 있습니다.
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로 설정했는지 확인하세요.