
自動化されたRed TeamインフラストラクチャのDockerを使用した展開
早期リリースです。Redcloudの開発状況をフォローするには、Twitterをフォローしてください。
💁☁️🐚🌱
クイックスタート - アーキテクチャ - ユースケース - スクリーンショット
Redcloudは、Dockerを使用して本格的なレッドチームインフラを展開するための、パワフルでユーザーフレンドリーなツールボックスです。ツールのためにクラウドの速度を活用しましょう。数分でデプロイできます。洗練されたWebインターフェースで使用・管理できます。
ペネトレーションテスト、シューティングレンジ、レッドチーミング、バグバウンティに最適です!
攻撃インフラを苦労なくセルフホストし、数分で自前のライブでスケーラブルかつ回復力のある攻撃インフラを展開できます。
次のデモでは、SSHを介したRedcloudのデプロイと、その後のMetasploitを示しています。次にTraefikとMetasploitにアタッチされたライブボリュームを確認します。最後に、WebターミナルでMetasploitのデータベースが機能していることを確認し、コンテナを削除してRedcloudを終了します。
セットアップ:```bash
cat ~/.ssh/id_rsa.pub | ssh root@your-deploy-target-ip 'cat >> .ssh/authorized_keys'
eval (docker-machine env default)
python --version
デプロイ:```bash
> git clone https://github.com/khast3x/redcloud.git
> cd redcloud
> python redcloud.py
Redcloudは、利用可能なテンプレートのリストを表示するために PyYAML を使用します。ほとんどのシステムでデフォルトでインストールされています。
もしインストールされていない場合は、次のコマンドを実行してください:```bash
pip install -r requirements.txt
Redcloudには3つの異なるデプロイ方法があります:
1. **ローカル**
2. **SSHを使用したリモート**. ターゲットの `authorized_keys` ファイルに公開鍵が必要です。
3. **docker-machineを使用したリモート**. `eval (docker-machine env deploy_target)` を実行して環境を docker-machine で事前ロードし、`redcloud.py` を実行します。Redcloud は自動的に docker-machine を検出し、docker-machine デプロイに関連するメニュー項目を強調表示します。
___
<h4 align="center">
<b>テンプレート</b>
<br>
<br>
</h4>
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/e38f19fa9cc10216030f7856b99170a4ac7c35399c2dd9daf19156a6e9b75e46.png" width="540" title="Redcloud テンプレート">
</p>
___
**簡単に言うと、**
`redcloud.py` は、Dockerで動作する、**攻撃的な活動のための多くのツールテンプレートが事前ロードされた** [Portainer](https://www.portainer.io/) スタックをデプロイします。デプロイ後は、[Webインターフェース](#screenshots)で Redcloud を制御できます。リバースプロキシとして [Traefik](https://traefik.io/) を使用します。システムの `ssh` または `docker-machine` を使用して、ターゲットサーバーに簡単にリモートデプロイできます。
* :rocket: 数回のクリックでクラウド上にKaliを起動したいと思ったことはありませんか?
* :package: ツール、テクニック、ステージ間をクリーンなサイロに分けたいですか?
* :ambulance: スキャンやC2の健全性を監視したいですか?
* :fire: フィッシングキャンペーンの設定といったシステム管理タスクをスキップして、より早くpwnしたいですか?
* :smiling_imp: 理想的な攻撃インフラをどのように構築するか興味がありますか?
Web UIを使用して、各コンテナの監視、管理、**操作**ができます。あなた自身のターミナルと同じように、快適なWebターミナルを使用できます。PortainerのシンプルなUIを使用して、ボリューム、ネットワーク、ポートフォワーディングを作成できます。
データセンター級のインターネットの力で、お気に入りのツールやテクニックをすべてデプロイして管理しましょう :rocket:
___
*次のセクションでは、Redcloudの設計概念についてより詳しく説明します。ただし、内部に踏み込まなくても始めることはできます。*
___
* :book: **目次**
- [はじめに](#introduction)
- [機能](#features)
- [クイックスタート](#quick-start)
- [詳細](#details)
- [Redcloudアーキテクチャ](#redcloud-architecture)
- [デプロイワークフロー](#deployment-workflow)
- [ネットワーク](#networks)
- [ボリューム](#volumes)
- [ターミナルからコンテナにアクセスする](#accessing-containers-from-the-terminal)
- [ファイルへのアクセス](#accessing-files)
- [SSL証明書](#ssl-certificates)
- [Redcloudの停止](#stopping-redcloud)
- [Portainerアプリテンプレート](#portainer-app-templates)
- [Traefikリバースプロキシ](#traefik-reverse-proxy)
- [Redcloudのセキュリティに関する考慮事項](#redcloud-security-considerations)
- [テスト済みデプロイ候補](#tested-deployment-candidates)
- [トラブルシューティング](#troubleshooting)
- [ユースケース](#use-cases)
- [スクリーンショット](#screenshots)
- [コントリビューションガイドライン](#contribution-guideline)
- [Redcloudのホスティング](#hosting-redcloud)
- [インスピレーションと謝辞](#inspirations--shout-outs)
___
## 詳細
### Redcloudアーキテクチャ
* `redcloud.py`: DockerとPortainerを使用して、Webインターフェースとアプリテンプレートの開始/停止を行います。
* `portainer`: Portainer Webインターフェース。
* `traefik`: Webインターフェース、API、ファイルコンテナへのTraefikリバースプロキシコンテナ。一部のテンプレートは利便性のために事前設定されたルートを持っています。`templates.yml`を参照してください。
* `templates`: App Templatesを提供するpython3 `http.server` コンテナ。「内部」ネットワークに存在します。
* `cert_gen`: 一般的なベストプラクティスを使用してSSL証明書を生成する[omgwtfssl](https://github.com/paulczar/omgwtfssl)コンテナ。
* https://your-server-ip/portainer: デプロイ後のRedcloud Webインターフェース。
* https://your-server-ip/files: Redcloud `redcloud_files` ボリューム。Traefikと同じ `.htpasswd` で保護された `redcloud_log` コンテナのコンテンツにもアクセスできます。デフォルトの認証情報: `admin:Redcloud`
* https://your-server-ip/api: Traefikリバースプロキシのヘルスモニタリングページ。ルート、バックエンド、リターンコードのライブ統計を表示します。Traefikを介して設定されている場合、リバースコールバックインプラントデータも表示します。
### デプロイワークフロー
**Redcloudのデプロイワークフローは以下の通りです:**
1. Redcloudリポジトリをクローン/ダウンロードします。
2. `redcloud.py` を起動します。
3. メニューからデプロイ候補を選択します(ローカル、SSH、docker-machine)。
4. `redcloud.py` は自動的に:
* ターゲットマシン上の `docker` と `docker-compose` を確認します。
* 存在しない場合は `docker` と `docker-compose` をインストールします。
* `docker-compose` を使用してターゲットにWebスタックをデプロイします。
5. デプロイが完了すると、`redcloud.py` がURLを出力します。 https://your-deploy-machine-ip/portainer にアクセスしてください。
6. Webインターフェースからユーザー名/パスワードを設定します。
7. エンドポイントを選択します(リスト内の唯一のもの)。
8. 左側の「App Templates」メニュー項目を使用してテンプレートにアクセスします :rocket:
**アプリテンプレートのデプロイは以下の通りです:**
1. テンプレートを選択します。
2. 追加オプションを追加したい場合は、「+ Show advanced options」を選択します。
3. 必要に応じてポートマッピング、ネットワークオプション、ボリュームマッピングを追加します。
4. 「Deploy the container」を選択します。
5. Portainerがコンテナを起動します。イメージを取得する必要がある場合、数分かかることがあります。サーバーがデータセンターにある場合、この手順は非常に高速です。
6. コンテナが実行中になるはずです :rocket:
7. Portainerは「Containers」ページにリダイレクトします。そこから次のことができます:
a. ライブコンテナログを表示。
b. コンテナの詳細を検査(`docker inspect`)。
c. ライブコンテナ統計(メモリ/CPU/ネットワーク/プロセス)を表示。
d. Webシェルを使用してコンテナを操作。
e. アプリテンプレートに応じて、`bash` または `sh` を使用します。ドロップダウンメニューから適切なものを選択します。
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/cf013b73e9bb7dc6f94dafbd31d9d158f7736fc676f94995c64de133ad9bebbe.png" width="540" title="Redcloudメニュー">
</p>
### ネットワーク
Redcloudを使用すると、ネットワークとコンテナを簡単に操作できます。
異なるドライバーを持つ追加のネットワークを作成し、必要に応じてコンテナを接続できます。Redcloudには2つのネットワーク、`redcloud_default` と `redcloud_inside` が付属しています。
### ボリューム
ボリュームを共有することで、コンテナ間でデータを共有できます。Redcloudには3つのボリュームがあります:
* `certs`: [omgwtfssl](https://github.com/paulczar/omgwtfssl) によって生成された証明書を含むコンテナ。
* `files`: 標準のファイル共有ボリューム。現時点では、https://your-server-ip/files をブラウズするとファイルが利用可能で、Traefikリバースプロキシコンテナが `files` ボリュームから直接提供します。典型的なユースケースは、ボリュームをMetasploitコンテナにアタッチし、ペイロードを直接 `files` ボリュームに生成することです。これで、Traefikを介してファイルサーバールートに直接新しいペイロードを提供できます。
* `logs`: ログ用に利用可能で、ファイルサーバーでも提供されます。アクセスには基本認証が必要です。デフォルトは `admin:Redcloud` です。
### ターミナルからコンテナにアクセスする
デプロイされたコンテナをターミナルで操作したい場合、Dockerを使えば非常に簡単です。以下の点に注意してください:
* ほとんどのコンテナには `bash` がありますが、一部のコンテナは代わりに `sh` を使用します
* Redcloud App Templatesのすべてのコンテナ名は `red_` で始まります(例: `red_msf-postgresql`)
* Dockerでは、`docker exec` または `attach` を使用してコンテナを操作できます
* `exec` は新しいプロセスを作成するため推奨されます
* `attach` は実行中のプロセスに直接接続するため、コンテナが停止する可能性があります
* Redcloudを実行している場合:
* ローカルまたは `docker-machine` を使用している場合、ローカルシェルでこれらのコマンドを入力してください
* `ssh` を使用している場合、まずデプロイターゲットにSSH接続してから以下のコマンドを実行してください