
Un outil pour déployer (et démanteler !) une infrastructure cloud délibérément non sécurisée
sadcloud est un outil permettant de déployer une infrastructure AWS non sécurisée avec Terraform.
Il prend en charge environ 84 mauvaises configurations réparties sur 22 services AWS. L'ensemble initial de mauvaises configurations a été tiré de ScoutSuite, l'outil d'audit multi-cloud de NCCGroup.
sadcloud a été créé pour permettre facilement aux chercheurs en sécurité de mal configurer AWS à des fins de formation, ou pour évaluer des outils de sécurité AWS - y compris les outils intégrés et tiers.
Cet outil déploie des ressources AWS configurées volontairement vulnérables. Veuillez ne pas l'exécuter dans votre cloud de production, ni dans un environnement censé être sécurisé. Pensez à créer un nouveau compte AWS dans lequel exécuter cet outil. Cet outil déployant des ressources cloud, cela entraînera des frais sur votre compte AWS. Des efforts ont été faits pour minimiser les coûts encourus, mais NCC Group et les mainteneurs de cet outil ne sont pas responsables des frais ou des problèmes de sécurité qui pourraient résulter de son utilisation. Assurez-vous de détruire toutes les ressources Terraform lorsque vous ne les utilisez pas !
Un test d'exécution de sadcloud sur 24 heures a généré une facture d'environ 10 $. La majeure partie de ce coût provient du module Redshift (25c/heure = 6 $/jour) et du module EKS (10c/heure = 2,40 $/jour).
Nous utilisons périodiquement sadcloud pour démontrer divers outils d'audit AWS et Terraform. Tous les audits sont effectués sur l'ensemble complet des mauvaises configurations possibles.
Logiciel requis : Terraform
Assurez-vous que vos clés SSH sont écrites dans 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/sadcloudConfigurez le provider AWS (voir la section « Utiliser des providers au lieu de variables d'environnement » ci-dessous pour éviter cette étape) :
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
Préparez Terraform :
terraform init
Configurez sadcloud avec les mauvaises configurations de votre choix :
Pour activer tous les résultats (... à l'exception de ceux qui sont en conflit avec d'autres résultats) :
sadcloud/main.tfall_findings dans sadcloud/terraform.tfvars pour la passer à true, soit appelez terraform apply avec l'option --var="all_findings=true"Pour activer tous les résultats d'un ou plusieurs services :
sadcloud/main.tfall_{service}_findings correspondante dans sadcloud/terraform.tfvars pour la passer à true, soit appelez terraform apply avec l'option --var="all_{service}_findings=true"all_findings dans sadcloud/terraform.tfvars pour la passer à true, soit appelez terraform apply avec l'option --var="all_findings=true"
REMARQUE : Il existe actuellement un bug Terraform avec le service Cloudformation. Pour générer les résultats Cloudformation, vous devrez exécuter Terraform apply deux foisPour activer des résultats spécifiques de manière granulaire :
sadcloud/main.tfsadcloud/main.tf, en les passant à true là où vous le souhaitez.needs_network à true dans sadcloud/main.tfRemarque : Toutes les mauvaises configurations de sadcloud sont désactivées par défaut. Tous les services sont désactivés par défaut afin d'éviter de créer des ressources inutiles. Définir la variable d'une mauvaise configuration à true entraîne toujours une mauvaise configuration. L'exécution de all_findings peut prendre 10 à 15 minutes.
Vérifiez-le :
terraform plan
Déployez-le :
terraform apply
Détruisez-le :
terraform destroy
Remarque : terraform apply va déployer des services dans AWS. Cela coûte de l'argent. N'oubliez pas d'exécuter terraform destroy une fois que vous avez terminé. Assurez-vous d'exécuter terraform plan avant de lancer all_findings afin de comprendre dans quoi vous vous engagez !
Il est possible de configurer un provider AWS afin de ne pas avoir à définir les variables d'environnement à chaque fois.
Créez un fichier nommé sadcloud/providers.tf avec le contenu suivant :
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}