
Uno strumento per creare (e smantellare!) infrastrutture cloud volutamente insicure
sadcloud è uno strumento per creare infrastrutture AWS insicure con Terraform.
Supporta circa 84 configurazioni errate su 22 servizi AWS. Il set iniziale di configurazioni errate è stato tratto da ScoutSuite, lo strumento di audit multi-cloud di NCCGroup.
sadcloud è stato creato per permettere ai ricercatori di sicurezza di creare facilmente configurazioni AWS errate per scopi di formazione, o per valutare gli strumenti di sicurezza AWS – inclusi quelli integrati e di terze parti.
Questo strumento crea risorse AWS configurate intenzionalmente vulnerabili. Per favore, non eseguirlo nel tuo cloud di produzione, né in qualsiasi ambiente che debba essere sicuro. Valuta di creare un nuovo account AWS su cui eseguire questo strumento. Poiché questo strumento crea risorse cloud, comporterà dei costi sul tuo account AWS. Sono stati fatti sforzi per ridurre al minimo i costi sostenuti, ma NCC Group e i manutentori di questo strumento non sono responsabili di eventuali addebiti o problemi di sicurezza che potrebbero derivare dall'uso di questo strumento. Assicurati di eliminare tutte le risorse Terraform quando non le usi!
Un test di 24 ore di sadcloud ha generato una fattura di circa $10. La maggior parte di questo costo deriva dal modulo Redshift (25c/ora = $6/giorno) e dal modulo EKS (10c/ora = $2.40/giorno).
Usiamo periodicamente sadcloud per dimostrare vari strumenti di audit per AWS e Terraform. Tutti gli audit vengono eseguiti sull'intero corpus di possibili configurazioni errate.
Software richiesto: Terraform
Assicurati che le tue chiavi SSH siano scritte in 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 il provider AWS (vedi la sezione "Uso dei provider invece delle variabili d'ambiente" più sotto per istruzioni su come evitare questo passaggio):
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 le configurazioni errate desiderate:
Per abilitare tutte le segnalazioni (... esclusi quelli in conflitto con altre segnalazioni):
sadcloud/main.tfall_findings in sadcloud/terraform.tfvars impostandolo a true, oppure esegui terraform apply con il flag --var="all_findings=true"Per abilitare tutte le segnalazioni in uno o più servizi:
sadcloud/main.tfall_{service}_findings pertinente in sadcloud/terraform.tfvars impostandolo a true, oppure esegui terraform apply con il flag --var="all_{service}_findings=true"Nota: Tutte le configurazioni errate in sadcloud sono disabilitate per impostazione predefinita. Tutti i servizi sono disabilitati per impostazione predefinita per evitare di creare risorse non necessarie. Impostare la variabile di una configurazione errata a true comporta sempre una configurazione errata. Eseguire all_findings può richiedere 10-15 minuti.
Verifica:
terraform plan
Distribuisci:
terraform apply
Smantella:
terraform destroy
Nota: terraform apply creerà servizi in AWS. Questi costano denaro. Non dimenticare di eseguire terraform destroy quando hai finito. Assicurati di eseguire terraform plan prima di lanciare all_findings per capire a cosa vai incontro!
È possibile configurare un provider AWS in modo da non dover impostare ogni volta le variabili d'ambiente.
Crea un file chiamato sadcloud/providers.tf con il seguente contenuto:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| Strumento | Report di esempio |
|---|
all_findings in sadcloud/terraform.tfvars impostandolo a true, oppure esegui terraform apply con il flag --var="all_findings=true"
NOTA: Attualmente esiste un bug di Terraform con il servizio Cloudformation. Per generare le segnalazioni Cloudformation, dovrai eseguire terraform apply due voltePer abilitare specifiche segnalazioni in modo granulare:
sadcloud/main.tfsadcloud/main.tf, impostandole a true dove desiderato.needs_network a true in sadcloud/main.tf