
CNAPPgoatは、クラウド環境において、意図的に脆弱性を含んだコンポーネントをモジュール式でプロビジョニングすることを目的として設計されたオープンソースプロジェクトです。
CNAPPgoat は、マルチクラウド対応の脆弱性を意図的に含んだ環境デプロイツールです。防御者やペネトレーションテスター向けの練習場を提供するために特別に設計されています。主な機能は、複数のクラウドサービスプロバイダにわたって意図的に脆弱な環境をデプロイし、脆弱性の悪用、検出、防止に関するスキルを磨くのに役立てることです。

警告: CNAPPgoat は脆弱な環境をデプロイします。安全で管理されたサンドボックス内でのみ使用してください。
CNAPPgoat はコマンドラインインターフェース(CLI)ツールとして動作し、脆弱な環境を多数のクラウドサービスプロバイダにデプロイできます。Go で構築され、Pulumi および Pulumi Automation API を利用して、シームレスな環境デプロイを実現します。ユニークな特徴の 1 つはモジュール設計で、さまざまなクラウドサービスプロバイダや新しい脆弱環境への拡張が容易です。現在、CNAPPgoat は AWS、Azure、GCP をサポートしています。
Pulumi の依存関係とプラグインは、最初の環境をプロビジョニングするときに、各シナリオの要件に応じてオンデマンドでインストールされます。そのため、初回のプロビジョニングは以降よりも少し時間がかかる場合があります。
CNAPPgoat は、macOS ユーザー向けに Homebrew パッケージマネージャーを使用して簡単にインストールできます。
brew tap ermetic-research/cnappgoat
brew install cnappgoat
最新リリースを こちら からダウンロードします。
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:<cnappgoat を含むディレクトリへのパス>' >> ~/.bashrc
source ~/.bashrc
zsh の場合:
echo 'export PATH=$PATH:<cnappgoat を含むディレクトリへのパス>' >> ~/.zshrc
source ~/.zshrc
<cnappgoat を含むディレクトリへのパス> は、cnappgoat バイナリが存在するディレクトリの絶対パスに置き換えてください。
NAME:
cnappgoat - 脆弱性を意図的に含んだクラウドリソースをデプロイするためのマルチクラウドオープンソースツール
USAGE:
cnappgoat [グローバルオプション] コマンド [コマンドオプション] [引数...]
VERSION:
0.1.0-beta, date: 2023-08-02T13:02:46Z, commit: 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 をインストールします。
次のコマンドを実行して AWS 認証情報を設定します:
aws configure
Access Key ID、Secret Access Key、デフォルトのリージョン名の入力を求められます。
こちらの手順に従って Azure CLI をインストールします。
次のコマンドを実行して Azure アカウントにログインします:
az login
新しいブラウザウィンドウが開き、ログインします。ログイン後、認証情報は将来の使用のために保存されます。
こちらの手順に従って Google Cloud SDK をインストールします。
次のコマンドを実行して 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 |