开始Hacking: CloudFoxable
详细信息请查看博客: Introducing CloudFoxable: A Gamified Cloud Hacking Sandbox
背景
CloudFox帮助渗透测试人员和安全专业人员在云基础设施中找到可利用的攻击路径。但是,如果你想找到并利用尚未存在于当前环境中的服务呢?如果你无法访问企业AWS环境怎么办?
这就是CloudFoxable的用途,这是一个故意制造漏洞的AWS环境,专门用来展示CloudFox的功能,并帮助你更有效地发现潜在的攻击路径。CloudFoxable参考了CloudGoat、flaws.cloud、flaws2.cloud和Metasploitable 1-3,提供了各种各样的标志和攻击路径,采用CTF的形式。
与CloudGoat和IAM-Vulnerable类似,CloudFoxable在用户管理的游戏账户中部署了有意制造漏洞的AWS资源,供用户学习识别和利用云漏洞。但与flaws.cloud更类似,你的体验更加基于Web并有指引。
- 挑战总数: 18
模块化方法
与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/aws
terraform destroy
想要更多吗?
https://github.com/iknowjason/Awesome-CloudSec-Labs
贡献
如果你想添加一个新的挑战,在fork此仓库后,请按照以下步骤在CloudFoxable中进行:
cp aws/challenges/1_challenge_template aws/challenges/challenge_name
- 将挑战模板文件夹和
challenge_name.tf
文件重命名为你的挑战名称。 - 添加你的terraform代码
- 在aws/variables.tf中添加一个新变量
variable "challenge_name_enabled" { description = "Enable or disable challenge_name challenge (true = enabled, false = disabled)" type = bool default = false }
- 在
terraform.tfvars.example
的"Enabled/Disabled Challenge"部分添加它。指定它应该默认启用(低/无成本)还是默认禁用(有成本)challenge_name_enabled = false
- 在aws/main.tf中添加该模块
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 |" : ""