
意図的に脆弱な設計の、独自のAWSペネトレーションテストプレイグラウンドを作成

ハッキングを始める: CloudFoxable
詳細はブログをご覧ください: Introducing CloudFoxable: A Gamified Cloud Hacking Sandbox
CloudFox は、ペネトレーションテスターやセキュリティ専門家がクラウドインフラストラクチャ内の悪用可能な攻撃経路を見つけるのに役立ちます。しかし、現在の環境に存在しないサービスを見つけて悪用したい場合はどうでしょうか? エンタープライズ AWS 環境へのアクセスがない場合はどうでしょうか?
CloudFoxable は、CloudFox の機能を紹介し、潜在的な攻撃経路をより効果的に見つけるのに役立つことを目的として作成された、意図的に脆弱な AWS 環境です。CloudGoat、flaws.cloud、flaws2.cloud、Metasploitable 1-3 から着想を得て、CloudFoxable は CTF 形式で多種多様なフラグと攻撃経路を提供します。
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
これはワークスペースごとに 1 回(またはプロバイダー設定が変更されたとき)に必要です。
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 に更新します。
以下に例を示します:
############################
# 有効/無効なチャレンジ
############################
# 常時オン(低コストまたは無コスト)
challenge_foo_enabled = true
challenge_bar_enabled = true
challenge_alice_enabled = true
# 必要に応じて有効化(これらのチャレンジはコストがかかります)
challenge_bob_enabled = false
challenge_mallory_enabled = false
mallory チャレンジを有効にするには、次の行を更新するだけです:
challenge_mallory_enabled = true
チャレンジを有効にした後、terraform apply を再実行する必要があります:
terraform apply
これで mallory チャレンジがデプロイされました。
クリーンアップ
CloudFoxable が作成したすべてのリソースを削除したい場合は、いつでも次のコマンドを実行できます:
cd cloudfoxable/awsterraform destroyWindows を使用している場合、プラットフォーム固有の制限により、一部のチャレンジのデプロイ中に問題が発生する可能性があります。これを回避するために、さまざまなシステム間で一貫した環境でアプリケーションをビルドおよび実行できるようにする 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
新しいチャレンジを追加したい場合は、リポジトリをフォークした後の 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 | デプロイされたすべてのリソースを削除する |