
开始黑客之旅: CloudFoxable
阅读博客了解更多详情: 介绍 CloudFoxable:一个游戏化的云黑客沙箱
CloudFox 帮助渗透测试人员和安全专业人员发现云基础设施中可利用的攻击路径。但是,如果你想查找并利用当前环境中尚不存在的服务呢?如果你无法访问企业 AWS 环境,又该怎么办?
这就是 CloudFoxable 的用武之地——一个特意构建的易受攻击 AWS 环境,专门用于展示 CloudFox 的功能,并帮助你更有效地发现潜在攻击路径。CloudFoxable 从 CloudGoat、flaws.cloud、flaws2.cloud 和 Metasploitable 1-3 中汲取灵感,以 CTF 形式提供了大量 flag 和攻击路径。
与 CloudGoat 和 IAM-Vulnerable 类似,CloudFoxable 会在用户管理的实验账户中部署特意构建的易受攻击 AWS 资源,供用户学习如何识别和利用云漏洞。不过,与 flaws.cloud 更相似的是,你的体验更偏向 Web 端且具有引导性。
CloudFoxable 使用 Terraform 来部署和管理特意构建的易受攻击 AWS 基础设施。本节提供安装 Terraform 以及部署、修改和移除 CloudFoxable 资源所需的最少指导。
在部署 CloudFoxable 之前,必须先在本机安装 Terraform。
请按照适用于你操作系统的官方 HashiCorp 安装指南操作:
https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
验证安装:
terraform version
安装成功后将会打印 Terraform 版本。
在运行 Terraform 之前:
aws configure、环境变量或假定角色)。重要提示: CloudFoxable 部署的是特意构建的易受攻击的基础设施。 请勿在生产环境、共享或企业 AWS 账户中部署。
所有 Terraform 命令都应在以下目录中运行:
cd cloudfoxable/aws
初始化工作目录并下载所需的提供商插件:
terraform init
每个工作区需要执行一次此操作(或在提供商配置更改时执行)。
若要查看 Terraform 将要创建、修改或销毁的内容:
terraform plan
要部署当前已启用的挑战:
terraform apply
在提示时输入 yes 确认。
要移除所有由 CloudFoxable 创建的资源:
terraform destroy
在提示时输入 yes 确认。
| 命令 | 描述 |
|---|---|
terraform init | 初始化 Terraform 项目 |
terraform plan | 显示提议的基础设施变更 |
terraform apply | 创建或更新资源 |
与 IAM-Vulnerable 类似,某些挑战默认启用(那些几乎没有或没有成本影响的挑战),而其他挑战默认禁用(那些部署后会产生成本的挑战)。这样,你可以根据需要启用特定模块。不过,启用/禁用挑战的机制与 IAM-Vulnerable 略有不同。
在 cloudfoxable.bishopfox.com 中,每个挑战都会告诉你是否需要做任何 terraform 更改(即部署某些内容)才能完成挑战。操作方式是编辑 terraform.tfvars,并根据需要将 enabled 标志从 false 更新为 true。
下面是一个示例:
############################
# Enabled/Disabled Challenges
############################
# Always on (Low or No cost)
challenge_foo_enabled = true
challenge_bar_enabled = true
challenge_alice_enabled = true
# Enable as needed (These challenges incur cost)
challenge_bob_enabled = false
challenge_mallory_enabled = false
要启用 mallory 挑战,只需更新下面这一行:
challenge_mallory_enabled = true
启用挑战后,你需要重新运行 terraform apply:
terraform apply
现在你已经部署了 mallory 挑战。
清理
只要你想移除所有由 CloudFoxable 创建的资源,就可以运行以下命令:
cd cloudfoxable/awsterraform destroy如果你使用的是 Windows,在部署某些挑战时可能会遇到平台特定的限制问题。为避免这种情况,我们提供了一个 Dockerfile,帮助你在不同系统中构建并在一致的环境中运行该应用程序。
首先将仓库克隆到本地机器:
git clone https://github.com/BishopFox/cloudfoxable.git
cd cloudfoxable
克隆仓库后,使用以下命令构建 Docker 镜像。这将确保你使用的是全新的构建,不包含任何缓存层:
docker build --no-cache -t cloudfoxable .
如果你使用的是 Windows,请使用以下 PowerShell 命令运行 Docker 容器。该命令将:
cd aws
docker run -it -v $env:USERPROFILE/.aws/credentials:/root/.aws/credentials -v ${PWD}:/cloudfoxable/aws cloudfoxable
https://github.com/iknowjason/Awesome-CloudSec-Labs
如果你想添加一个新挑战,以下是 fork 该仓库后在 CloudFoxable 中的操作步骤:
cp aws/challenges/1_challenge_template aws/challenges/challenge_namechallenge_name.tf 文件重命名为你的挑战名称。variable "challenge_name_enabled" {
description = "Enable or disable challenge_name challenge (true = enabled, false = disabled)"
type = bool
default = false
}
terraform.tfvars.example 中的“启用/禁用挑战”部分。指定其默认启用(低成本/零成本)还是默认禁用(需付费 $$)
challenge_name_enabled = false
module "challenge_challenge_name" {
source = "./challenges/challenge-name"
count = var.challenge_name_enabled ? 1 : 0
aws_assume_role_arn = (var.aws_assume_role_arn != "" ? var.aws_assume_role_arn : data.aws_caller_identity.current.arn)
account_id = data.aws_caller_identity.current.account_id
aws_local_profile = var.aws_local_profile
user_ip = local.user_ip
}
enabled_challenges 本地变量:
var.challenge_name_enabled ? "name | $12/month |" : ""
terraform destroy | 移除所有已部署的资源 |