CNAPPgoat 是一款多云、自带漏洞的环境部署工具——专门为防御者和渗透测试者打造演练场地。其主要功能是在多个云服务提供商上部署故意配置了漏洞的环境,帮助你磨练利用、检测和防范此类漏洞的技能。

警告:CNAPPgoat 会部署存在漏洞的环境。请仅在安全、可控的沙箱中使用。
CNAPPgoat 作为命令行界面(CLI)工具,能够将漏洞环境部署到多个云服务提供商。它基于 Go 构建,并利用 Pulumi 和 Pulumi 自动化 API,确保环境部署无缝进行。其独特特性之一是模块化设计,可轻松扩展以支持更多云服务提供商和新的漏洞环境。目前,CNAPPgoat 支持 AWS、Azure 和 GCP。
Pulumi 依赖项和插件将根据每个场景的需求按需安装,在首次部署环境时进行。这意味着首次部署可能比后续部署耗时稍长。
macOS 用户可通过 Homebrew 包管理器轻松安装 CNAPPgoat。
brew tap ermetic-research/cnappgoat
brew install cnappgoat
从此处下载最新发布版:https://github.com/ermetic-research/CNAPPgoat/releases/latest
tar -xvf cnappgoat-<version>.tar.gz
cd cnappgoat-<version>
(可选)如果你希望将解压后的二进制文件添加到系统 PATH 中(非必须,你也可以从本地目录直接以 ./cnappgoat 运行):
选项 A:移动到 PATH 中的某个目录(例如 macOS 和 Linux 上的 /usr/local/bin)
mv cnappgoat /usr/local/bin/
选项 B:将包含二进制文件的目录添加到 PATH
对于 bash:
echo 'export PATH=$PATH:<path_to_directory_containing_cnappgoat>' >> ~/.bashrc
source ~/.bashrc
对于 zsh:
echo 'export PATH=$PATH:<path_to_directory_containing_cnappgoat>' >> ~/.zshrc
source ~/.zshrc
将 <path_to_directory_containing_cnappgoat> 替换为 cnappgoat 二进制文件所在目录的绝对路径。
NAME:
cnappgoat - 一种多云开源工具,用于部署自带漏洞的云资源
USAGE:
cnappgoat [全局选项] 命令 [命令选项] [参数...]
VERSION:
0.1.0-beta, 日期: 2023-08-02T13:02:46Z, 提交: 6bef61857d9f3cf88215269df8976f96317711dc
COMMANDS:
clean 清理并删除所有已创建的资源,以及所有场景和相关文件
describe 描述某个场景
destroy 销毁 CNAPPgoat 模块场景
list 列出 CNAPPgoat 模块场景
provision 部署 CNAPPgoat 模块场景
help, h 显示命令列表或某个命令的帮助信息
GLOBAL OPTIONS:
--debug 启用调试模式(默认值:false)
--help, -h 显示帮助
--version, -v 打印版本
你可以使用空格分隔的多个参数。例如:
cnappgoat provision <场景-1> <场景-2> <场景-N>
--module - 按模块过滤场景(例如 CSPM、CIEM、CWPP、DSPM、KSPM 等)--platform - 按平台过滤场景(例如 AWS、Azure、GCP)--force - 启用强制模式(使用 pulumi cancel 解锁锁定堆栈)--debug - 启用调试日志。这些标志是命令标志,应放在命令后面。例如:
cnappgoat provision --module CSPM --platform AWS
该命令将部署所有 AWS CSPM 场景。
CNAPPgoat 每天首次运行时,从 cnappgoat-scenarios 仓库下载场景,这些场景会在你运行 CNAPPgoat 时自动下载,并存储在 ~/.cnappgoat/scenarios 目录中。
使用 CNAPPgoat 之前,你需要为 AWS、Azure 和 GCP 设置云凭据。CNAPPgoat 使用每个提供商的默认凭据。按照以下步骤设置凭据:
按照此说明安装 AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html
运行以下命令配置 AWS 凭据:
aws configure
系统会提示你输入 Access Key ID、Secret Access Key 和默认区域名称。
按照此说明安装 Azure CLI:https://docs.microsoft.com/cli/azure/install-azure-cli
运行以下命令登录 Azure 账户:
az login
这将打开新浏览器窗口供你登录。登录后,凭据将存储以备后续使用。
按照此说明安装 Google Cloud SDK:https://cloud.google.com/sdk/docs/install
运行以下命令进行 Google Cloud 身份验证:
gcloud auth login
这将打开新浏览器窗口供你登录。登录后,凭据将存储以备后续使用。
通过设置这些凭据,你将能够使用 CNAPPgoat 在 AWS、Azure 和 GCP 上部署场景。如果你计划将 CNAPPgoat 与其他提供商一起使用,请确保相应配置凭据。
要详细了解 CNAPPgoat,请查看 Ermetic 博客上的文章: https://ermetic.com/blog/cloud/cnappgoat-multicloud-open-source-tool-for-deploying-vulnerable-by-design-cloud-resources/
CNAPPgoat 在多个云上部署大量漏洞场景,用于测试检测和防御能力。还有其他优秀的项目专注于漏洞云环境的不同方面,例如利用、检测、CTF(夺旗)场景等。我们受到了这些工具和项目的启发,并推荐你去了解一下:
更多挑战和工具可以在 Mike Privitte 的 Awesome Cloud Security Challenges 仓库中找到,我们的列表特别关注由用户在自己的沙箱中部署的按设计漏洞的云环境。
如需向项目团队发送邮件,请联系 [email protected]
| 命令 | 描述 | 用法 |
|---|
list | 列出所有可供部署的场景。 | cnappgoat list |
describe | 提供指定场景的详细信息。 | cnappgoat describe <场景名称> |
provision | 部署指定名称的场景。要部署所有场景,请直接使用 cnappgoat provision | cnappgoat provision <场景名称> |
destroy | 销毁指定名称的场景。要销毁所有场景,请直接使用 cnappgoat destroy | cnappgoat destroy <场景名称> |
clean | 清理所有场景并删除 .cnappgoat 本地目录 | cnappgoat clean |
--version, -v | 显示当前 CNAPPgoat 版本 | cnappgoat --version |
--help, -h | 显示帮助菜单。 | cnappgoat --help |