
レッドチームインフラとサイバーレンジのためのキャンバス。トポロジーを構成し、実行可能なTerraformとAnsibleをエクスポートして、自分でデプロイできます。クラウド認証情報があなたのマシンから外に出ることはありません。

トポロジーとしてインフラストラクチャを構築し、完全で実行可能な Terraform と Ansible の 作業ディレクトリをエクスポートする Web キャンバスです。実行はご自身のマシンから行います。 redStackPRO がクラウド認証情報を保持することはありません。
[!IMPORTANT] redStackPRO はプレリリース (ベータ) です。 スキーマと機能はまだ流動的です。 GCP と AWS はエンドツーエンドでテスト済みです。Azure、Proxmox、ESXi はロードマップ上にあります。 粗削りな部分は想定内です。安定性が必要な場合はリリース済みバージョンに固定してください。
粗削りな部分に遭遇した、またはフィードバックがありますか? Issues で issue を作成してください。 デプロイに関するものであれば、実行時に書き出されたサニタイズ済みの
logs/deploy-*.logを添付してください (バージョン、プロバイダー、停止した箇所が記録されており、シークレットは除去されています)。迅速に分析できます。 皆様の報告がリリースを形作ります。
redStackPRO は攻撃インフラストラクチャとターゲットレンジを同じキャンバス上に配置します。2 つの
キャンバスモードは Offense (攻撃インフラストラクチャ) と Defense (防御側 AD レンジ) です。
エクスポートはこれに対応して、ハンドオフを OFFENSE-BRIEFING.md または DEFENSE-BRIEFING.md と命名します。
スプリットホライズン C2、攻撃インフラストラクチャ: 運命を共有しない 2 つのフロントドア、 Apache が Sliver を、Nginx が Mythic をフロントし、各リダイレクターは独自のピアリングされた ネットワーク上にあり、teamserver、コレクター、オペレーターはジャンプボックスの背後に配置されます。

複数のオペレーター、1 つのスタック。 攻撃インフラストラクチャのジャンプボックスは
operators のリスト (ハンドルとロール) を指定でき、各オペレーターは共有ラボパスワードで
Guacamole ポータルログインを取得します。ジャンプボックスの access_mode を wireguard または
openvpn に設定すると (デフォルトはパブリックポータル)、各オペレーターは apply 時にジャンプボックス上で
生成される個人用 VPN 認証情報も取得します。鍵がボックスから出たりエクスポートに含まれたりすることはなく、
クライアント設定ファイルのみが含まれます。ポータルログインは現在 1 つのラボパスワードを共有しているため、
オペレーターごとの分離はポータルログインではなく各オペレーター自身の VPN 認証情報によって実現されます。
個別のポータルパスワードはロードマップ上にあります。VPN アクセスモードではポータルはインターネットから
閉じられトンネルの背後に移動しますが、SSH は開いたままなので管理者はボックスのデプロイと管理を続けられます。
稼働中のジャンプボックスでチームメイトを追加または削除するには
sudo rsp-operator add <handle> を実行します。詳細は
wiki の Deploying a Range を参照してください。
Harbor、ターゲットレンジ: 小さな企業フォレスト、ルートドメインとその子ドメインが 親子信頼関係で結ばれ、フィッシングされたワークステーションからフォレストへの通常の経路があります。

GOAD、フルラボ: 2 つのフォレストにまたがる 3 つのドメイン、5 台のマシンとそれらの信頼関係、 記述されたソリューションが従う参照レンジです。

[!IMPORTANT] エクスポートが境界です。 キャンバスはファイルを生成し、あなたが自身の認証情報で実行します。 redStackPRO は何もデプロイせず、シークレットを保持することもありません。
[!CAUTION] 許可された使用のみ。 redStackPRO は攻撃インフラストラクチャと 意図的に脆弱なレンジを構築します。自身が所有する、または明示的にテストを許可された ラボ環境でのみ使用し、書面による許可のないシステムに対しては決して使用しないでください。
プレリリースであり、トポロジースキーマはまだ流動的です。パイプライン自体はエンドツーエンドで 動作します: トポロジーが Terraform と Ansible にコンパイルされ、エクスポートがデプロイされます。
| プロバイダー | 状態 |
|---|---|
| GCP、AWS | ターゲットレンジと攻撃インフラストラクチャの両方でサポートされ、エンドツーエンドでテスト済み。 |
| Azure、Proxmox、ESXi | ロードマップ上にあり、まだサポートされていません。 |
キャンバス全体を 1 つのコンテナで、API と Web アプリを 1 つのポートで:
docker compose up # builds from this repo, http://127.0.0.1:8000
または、ビルドする代わりに公開イメージをプルします:
docker run -p 8000:8000 -v redstackpro-data:/data \
ghcr.io/devzero-security/redstackpro:0.9.0
キャンバスはコンテナ内の 8000 番で待ち受けます。別のホストポートで提供するには、
マッピングの左側を変更するか (-p 8787:8000)、compose 用に
REDSTACKPRO_PORT を設定します (REDSTACKPRO_PORT=8787 docker compose up)。
Compose は共有デプロイ用のオプションの Postgres バックエンドも備えています:
REDSTACKPRO_DATABASE_URL=postgresql+psycopg://redstackpro:redstackpro@db:5432/redstackpro \
docker compose --profile postgres up
イメージはコンポジション層のみです。Terraform や Ansible は含まれず、 クラウド認証情報を保持することもありません。生成されたエクスポートは、以下のソースからのフローと まったく同じように、ご自身のマシンから実行します。
Python 3.11 以降、およびキャンバス用に Node 24 が必要です。
git clone <this repo> && cd redStackPRO
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
キャンバスは API と Web アプリの 2 つのプロセスで構成されます:
redstackpro serve # http://127.0.0.1:8000
cd frontend && npm install && npm run dev
redstackpro serve --port 8787 で API を別のポートに移動できます。キャンバスの
開発サーバーをそこに向けるには REDSTACKPRO_API=http://127.0.0.1:8787 を設定します。
開いて、Load blueprint (ボタン、またはモードパレット) を使って 同梱の出発点を開き、ツールバーのプロバイダーセレクターでクラウド (GCP または AWS) を選択し、Export タブを開き (進行に応じてコンパイルされます)、 Download します。以下で説明する作業ディレクトリの zip が得られます。
またはキャンバスを完全にスキップして、同梱のブループリントをコマンド ラインからコンパイルします。同じコンパイラー、同じ出力です:
redstackpro compile frontend/public/goad/goad-light.json -o export
コマンドラインはデフォルトで GCP です。AWS には --provider aws を渡します。
これにより約 200 ファイルが書き出されます: クラウド用の Terraform、ボックス上で
行われるすべての処理用の Ansible、deploy.sh、そして認証情報と何がどこに
仕込まれているかを伝える DEFENSE-BRIEFING.md です。goad-light は 2 ドメインの Active
Directory レンジです: sevenkingdoms とその子 north、1 つのフォレスト内の親子信頼関係、
2 つのドメインコントローラーとメンバーサーバー、そしてジャンプボックスです。
[!IMPORTANT] デプロイ前に 2 つのこと。 クラウド ID には、エクスポートが構築するリソース (VPC またはネットワーク、サブネット、セキュリティグループまたはファイアウォールルール、インスタンス、 Elastic IP または静的 IP) を作成する権限が必要であり、マシンには
terraform、ssh、tar、 Python 3.8 以降が必要です。redStackPRO はコードを生成するだけで、それらをインストールすることは ありません。Ansible はジャンプボックス上で自身をインストールします。AWS CLI や gcloud が初めてですか? ターゲットに応じたクイックセットアップ:
AWS
aws configure aws sts get-caller-identity設定する IAM ユーザーまたはロールに
AmazonEC2FullAccessマネージドポリシーを アタッチします。GCP
gcloud auth login gcloud auth application-default login gcloud config set project <project-id> gcloud services enable compute.googleapis.com --project <project-id>プロジェクトでアカウントに
roles/compute.adminを付与します。完全な権限テーブル、インストールリンク、GCP vCPU クォータの注意 (
CPUS_ALL_REGIONS、プロジェクトあたりデフォルト 32) は wiki の Cloud Prerequisites にあります。 完全なチェックリストは Getting Started を参照してください。
デプロイするには、export/deploy.tfvars (エクスポートルート) を記入して実行します:
cd export && bash deploy.sh
deploy.sh は apply 時に deploy.tfvars を terraform/terraform.tfvars にコピーし、
deploy.tfvars が存在しない場合は中止します。したがって、terraform/ 配下のファイルではなく
ルートのファイルを編集してください。
Windows では代わりに .\deploy.ps1 を実行します: PowerShell プロンプトで bash deploy.sh を
実行すると WSL が起動しますが、これは異なるファイルシステムと異なる認証情報です。詳細は wiki の
Deploying a Range
を参照してください。
deploy.sh は Terraform を apply した後、レンジ自身の
ジャンプボックスからプロビジョニングします。管理対象ホストは他からは到達できないプライベートサブネット上に
あるためです。クラウド認証情報はその間ずっとご自身のマシン上に留まります。
すべての実行は、タイムスタンプ付きでシークレットが除去されたログを
エクスポート内の logs/deploy-<timestamp>.log に書き出します。デプロイが失敗した場合やレンジが
正しく起動しない場合は、最新のものを GitHub issue に添付してください。deploy.sh は
何か問題が発生したときにそのパスとリンクを出力します。