
Инструмент для развёртывания (и уничтожения!) заведомо небезопасной облачной инфраструктуры
sadcloud — это инструмент для развёртывания небезопасной AWS-инфраструктуры с помощью Terraform.
Он поддерживает около 84 неверных конфигураций в 22 сервисах AWS. Исходный набор неверных конфигураций был заимствован из ScoutSuite, мультиоблачного инструмента аудита NCCGroup.
sadcloud был создан, чтобы позволить исследователям безопасности легко создавать неверные конфигурации AWS в учебных целях или для оценки инструментов безопасности AWS — как встроенных, так и сторонних.
Этот инструмент развёртывает намеренно уязвимые ресурсы AWS. Пожалуйста, не запускайте его в вашем production-облаке или где-либо ещё, что должно быть защищённым. Рекомендуется создать отдельный AWS-аккаунт для запуска этого инструмента. Поскольку этот инструмент развёртывает облачные ресурсы, это приведёт к списанию средств с вашего AWS-аккаунта. Были предприняты усилия для минимизации расходов, однако NCC Group и сопровождающие этот инструмент не несут ответственности за любые расходы или проблемы безопасности, которые могут возникнуть в результате его использования. Обязательно удаляйте все ресурсы Terraform, когда не используете их!
Суточный тестовый прогон sadcloud сгенерировал счёт примерно на $10. Основная часть этой суммы приходится на модуль Redshift (25 центов/час = $6/день) и модуль EKS (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-провайдер (см. раздел «Использование провайдеров вместо переменных окружения» ниже, чтобы узнать, как пропустить этот шаг):
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.tfall_findings в sadcloud/terraform.tfvars на true, либо вызовите terraform apply с флагом --var="all_findings=true"Чтобы включить все находки в одном или нескольких сервисах:
sadcloud/main.tfall_{service}_findings в sadcloud/terraform.tfvars на true, либо вызовите terraform apply с флагом --var="all_{service}_findings=true"Примечание. Все неверные конфигурации в sadcloud по умолчанию отключены. Все сервисы по умолчанию отключены, чтобы не разворачивать лишние ресурсы. Установка переменной неверной конфигурации в true всегда приводит к неверной конфигурации. Запуск all_findings может занять 10–15 минут.
Проверьте:
terraform plan
Разверните:
terraform apply
Удалите:
terraform destroy
Примечание. terraform apply развернёт сервисы в AWS. Это стоит денег. Не забудьте выполнить terraform destroy после завершения работы. Обязательно выполните terraform plan перед запуском all_findings, чтобы понимать, во что вы ввязываетесь!
Можно настроить AWS-провайдер, чтобы не задавать переменные окружения каждый раз.
Создайте файл sadcloud/providers.tf со следующим содержимым:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| Инструмент | Пример отчёта |
|---|
all_findings в sadcloud/terraform.tfvars на true, либо вызовите terraform apply с флагом --var="all_findings=true"
ПРИМЕЧАНИЕ. В настоящее время существует ошибка Terraform с сервисом Cloudformation. Чтобы сгенерировать находки Cloudformation, вам нужно будет запустить Terraform apply дваждыЧтобы точечно включить конкретные находки:
sadcloud/main.tfsadcloud/main.tf, установив их в true там, где необходимо.needs_network в true в sadcloud/main.tf