
Ein Tool zum Aufsetzen (und Abreißen!) von absichtlich unsicherer Cloud-Infrastruktur
sadcloud ist ein Tool zum Aufsetzen unsicherer AWS-Infrastruktur mit Terraform.
Es unterstützt ca. 84 Fehlkonfigurationen in 22 AWS-Services. Die anfängliche Auswahl an Fehlkonfigurationen stammt aus ScoutSuite, dem Multi-Cloud-Auditing-Tool von NCCGroup.
sadcloud wurde entwickelt, um Sicherheitsforschern zu ermöglichen, AWS für Schulungszwecke absichtlich falsch zu konfigurieren oder AWS-Sicherheitstools zu testen – einschließlich integrierter und Drittanbieter-Tools.
Dieses Tool erstellt absichtlich verwundbare AWS-Ressourcen. Bitte führen Sie es nicht in Ihrer Produktions-Cloud oder an einem Ort aus, der sicher sein soll. Erwägen Sie, ein neues AWS-Konto einzurichten, in dem Sie dieses Tool ausführen. Da dieses Tool Cloud-Ressourcen erstellt, entstehen dadurch Kosten auf Ihrem AWS-Konto. Es wurde versucht, die anfallenden Kosten zu minimieren, aber NCC Group und die Betreuer dieses Tools sind nicht verantwortlich für Kosten oder Sicherheitsprobleme, die durch die Nutzung dieses Tools entstehen können. Stellen Sie sicher, dass Sie alle Terraform-Ressourcen entfernen, wenn Sie sie nicht verwenden!
Ein 24-stündiger Testlauf von sadcloud erzeugte eine Rechnung von ungefähr 10 $. Der Großteil dieser Kosten entfällt auf das Redshift-Modul (25 ct/Stunde = 6 $/Tag) und das EKS-Modul (10 ct/Stunde = 2,40 $/Tag).
Wir verwenden sadcloud regelmäßig, um verschiedene AWS- und Terraform-Audit-Tools zu demonstrieren. Alle Audits werden gegen den vollständigen Korpus möglicher Fehlkonfigurationen durchgeführt.
Benötigte Software: Terraform
Stellen Sie sicher, dass Ihre SSH-Schlüssel in data/ssh_keys/terraform_rsa{,.pub} geschrieben sind.
ssh-keygen -t rsa -b 4096 -f data/ssh_keys/terraform_rsa
git clone https://github.com/nccgroup/sadcloud.gitcd sadcloud/sadcloudRichten Sie den AWS-Provider ein (siehe Abschnitt „Verwenden von Providern anstelle von Umgebungsvariablen“ unten für Anweisungen, um diesen Schritt zu vermeiden):
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
Terraform vorbereiten:
terraform init
Konfigurieren Sie sadcloud mit Ihren gewünschten Fehlkonfigurationen:
Um alle Findings zu aktivieren (... ausgenommen solche, die mit anderen Findings in Konflikt stehen):
sadcloud/main.tf aus.all_findings in sadcloud/terraform.tfvars auf true, oder rufen Sie terraform apply mit dem Flag --var="all_findings=true" auf.Um alle Findings in einem oder mehreren Services zu aktivieren:
sadcloud/main.tf aus.all_{service}_findings in sadcloud/terraform.tfvars auf true, oder rufen Sie terraform apply mit dem Flag --var="all_{service}_findings=true" auf.Hinweis: Alle Fehlkonfigurationen in sadcloud sind standardmäßig deaktiviert. Alle Services sind standardmäßig deaktiviert, um das Erstellen unnötiger Ressourcen zu verhindern. Das Setzen der Variable für eine Fehlkonfiguration auf true führt immer zu einer Fehlkonfiguration. Das Ausführen von all_findings kann 10-15 Minuten dauern.
Prüfen Sie es:
terraform plan
Stellen Sie es bereit:
terraform apply
Entfernen Sie es:
terraform destroy
Hinweis: terraform apply erstellt Services in AWS. Diese kosten Geld. Vergessen Sie nicht, nach der Arbeit terraform destroy auszuführen. Stellen Sie sicher, dass Sie vor dem Ausführen von all_findings ein terraform plan durchführen, damit Sie verstehen, worauf Sie sich einlassen!
Es ist möglich, einen AWS-Provider einzurichten, damit Sie nicht jedes Mal Umgebungsvariablen setzen müssen.
Erstellen Sie eine Datei mit dem Namen sadcloud/providers.tf mit folgendem Inhalt:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| Tool | Beispielbericht |
|---|
all_findings in sadcloud/terraform.tfvars auf true, oder rufen Sie terraform apply mit dem Flag --var="all_findings=true" auf.
HINWEIS: Derzeit gibt es einen Terraform-Bug mit dem Cloudformation-Service. Um Cloudformation-Findings zu erzeugen, müssen Sie terraform apply zweimal ausführen.Um bestimmte Findings granular zu aktivieren:
sadcloud/main.tf aus.sadcloud/main.tf und setzen Sie sie bei Bedarf auf true.needs_network in sadcloud/main.tf auf true setzen.