Redcloud - Docker を使用した Red Team Infrastructure の自動展開

(Automated Red Team Infrastructure deployement using Docker)

Created at: 2019-03-10 11:15:46
Language: Python
License: MIT

天気予報。曇りで砲弾のチャンス!

早期リリース。Twitter で私をフォローして、Redcloud の開発に関する最新情報を入手してください。
💁☁️🐚🌱


クイック スタート-アーキテクチャ-ユースケース -スクリーンショット


序章

Redcloud は、 Docker を使用してフル機能のRed Team インフラストラクチャをデプロイするための強力で使いやすいツールボックスです。クラウドの速度をツールに活用します。数分で展開します。洗練された Web インターフェイスで使用および管理します。

侵入テスト、射撃場、レッド チーム、バグ報奨金に最適です。

攻撃インフラストラクチャを簡単に自己ホストし、ライブでスケーラブルで回復力のある独自の攻撃インフラストラクチャを数分で展開します。

デモ

次のデモは、ssh を介した Redcloud のデプロイと、それに続く Metasploit のデプロイを示しています。次に、Traefik と、Metasploit に接続されたライブ ボリュームを見ていきます。最後に、Web ターミナルで Metasploit の DB が機能していることを確認し、コンテナーを削除して、Redcloud を終了します。


特徴

  • 組み込みの SSH 機能や docker-machine を使用して、ローカルまたはリモートで Redcloud をデプロイします。
  • 数回クリックするだけで、Metasploit、Empire、GoPhish、脆弱なターゲット、完全にスタックされた Kali などを展開できます。
  • 美しい Web インターフェイスでインフラストラクチャを監視および管理します。
  • すべてのツールにリダイレクト、ソックス、または Tor プロキシをデプロイします。
  • 簡単なネットワーク管理とボリューム共有。
  • ユーザーとパスワードの管理。
  • ウェブ端末
  • 全体的にとても快適🐣

クイックスタート

設定:

# If deploying using ssh
> cat ~/.ssh/id_rsa.pub | ssh root@your-deploy-target-ip 'cat >> .ssh/authorized_keys'

# If deploying using docker-machine, and using a machine named "default"
> eval (docker-machine env default)

# Check your Python version
# Use python3 if default python version is 2.x
> python --version

配備:

> git clone https://github.com/khast3x/redcloud.git
> cd redcloud
> python redcloud.py

Redcloud は

PyYAML
、使用可能なテンプレートのリストを出力するために使用します。ほとんどのシステムにデフォルトでインストールされています。
そうでない場合は、次を実行します。

# Use pip3 if default python version is 2.x
> pip install -r requirements.txt

Redcloud には 3 つの異なるデプロイ方法があります。

  1. ローカルに
  2. ssh を使用してリモートで。ターゲットの
    authorized_keys
    ファイルに公開鍵が必要です。
  3. docker-machine を使用してリモートで
    eval (docker-machine env deploy_target)
    docker-machine で env をプリロードする行を実行し、実行します
    redcloud.py
    。Redcloud は自動的に docker-machine を検出し、docker-machine の展開に関連するメニュー項目を強調表示します。

テンプレート


簡単に言えば、

redcloud.py
攻撃的なエンゲージメント用の多くのツール テンプレートがプリロードされたPortainerスタックをデプロイし、Docker を利用します。デプロイしたら、 Web インターフェイスで Redcloud を制御します。リバース プロキシとしてTraefikを使用します。システムまたはを使用して、ターゲット サーバーに簡単にリモート展開します。
ssh
docker-machine

  • 🚀数回クリックするだけで、クラウドで Kali をスピンアップしたいと思ったことはありませんか?
  • 📦ツール、技術、およびステージの間に明確なサイロがありますか?
  • 🚑スキャンと C2 の健全性を監視しますか?
  • 🔥フィッシングキャンペーンを設定するためのシステム管理タスクをスキップして、より速く pwning を取得しますか?
  • 😈理想的な攻撃インフラストラクチャをどのように構築するか興味がありますか?

ウェブ UI を使用して、各コンテナを監視、管理、操作します。あなたのと同じように、snappy Web ターミナルを使用してください。Portainer のシンプルな UI を使用して、ボリューム、ネットワーク、およびポート転送を作成します。

データセンター グレードのインターネットの力を利用して、お気に入りのツールと技術をすべて展開して処理します🚀


次のセクションでは、Redcloud の設計コンセプトについて詳しく説明します。中に潜らなくても始められます。



詳細

レッドクラウド アーキテクチャ

  • redcloud.py
    : Docker と Portainer を使用して、Web インターフェイスとアプリ テンプレートを開始/停止します。
  • portainer
    : Portainer Web インターフェイス。
  • traefik
    : Web インターフェイス、API、およびファイル コンテナーへの Traefik リバース プロキシ コンテナー。一部のテンプレートには、利便性のためにルートが事前構成されています。を参照してください
    templates.yml
  • templates
    http.server
    :アプリ テンプレートをフィードするpython3コンテナー。「内部」ネットワークに住んでいます。
  • cert_gen
    :一般的なベスト プラクティスを使用して SSL 証明書を生成するomgwtfsslコンテナー。
  • https://your-server-ip/portainer : デプロイされた Redcloud Web インターフェイス。
  • https://your-server-ip/files : Redcloud
    redcloud_files
    ボリューム。また、Traefik
    redcloud_log
    と同じように保護されたコンテナーのコンテンツにアクセスすることもできます。
    .htpasswd
    デフォルトの資格情報:
    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
      存在しない場合。
    • を使用してターゲットに Web スタックをデプロイします
      docker-compose
  5. デプロイが完了
    redcloud.py
    すると、URL が出力されます。https://your-deploy-machine-ip/portainer にアクセスしてください。
  6. Web インターフェイスからユーザー名/パスワードを設定します。
  7. エンドポイント (リストにある唯一のエンドポイント) を選択します。
  8. 左側の [アプリ テンプレート] メニュー項目を使用してテンプレートにアクセスします。🚀

アプリ テンプレートのデプロイは次のとおりです。

  1. テンプレートを選択します。
  2. さらにオプションを追加する場合は、[+ 詳細オプションを表示] を選択します。
  3. 必要に応じて、ポート マッピング、ネットワーク オプション、およびボリューム マッピングを追加します。
  4. 「コンテナをデプロイする」を選択します。
  5. Portainer がコンテナを起動します。画像を取得する必要がある場合は、数分かかる場合があります。サーバーがデータセンターにある場合、この手順は非常に高速です。
  6. コンテナが実行されている必要があります🚀
  7. Portainer は「コンテナ」ページにリダイレクトします。そこから、次
    のことができます。ライブ コンテナ ログを表示します。
    b. コンテナーの詳細を調べます (
    docker inspect
    )。
    c. コンテナのライブ統計 (メモリ/CPU/ネットワーク/プロセス) を表示します。
    d. Web シェルを使用してコンテナーと対話します。
    e. アプリ テンプレートに応じて、 または のいずれ
    bash
    かを使用します
    sh
    。ドロップダウン メニューから適宜選択します。

ネットワーク

Redcloud を使用すると、ネットワークとコンテナーを簡単に操作できます。
さまざまなドライバーで追加のネットワークを作成し、必要に応じてコンテナーを接続できます。Redcloud には 2 つのネットワーク

redcloud_default
redcloud_inside
.

ボリューム

ボリュームを共有することで、コンテナ間でデータを共有できます。Redcloud には 3 つのボリュームが付属しています。

  • certs
    : omgwtfsslによって生成された証明書を含むコンテナ。
  • files
    : 標準のファイル共有ボリューム。今のところ、ファイルはhttps://your-server-ip/files を
    files
    参照するときに利用でき、ボリュームから直接 Traefik リバース プロキシ コンテナーによって提供されます。典型的なユースケースは、ボリュームを Metasploit コンテナーにアタッチし、ボリュームに直接ペイロードを生成すること
    files
    です。これで、Traefik からファイル サーバーへのルートを介して、新しいペイロードを直接提供できるようになりました。
  • logs
    : ファイル サーバーからも提供されるログに使用できます。アクセスには基本認証が必要です。デフォルトは
    admin:Redcloud
    です。

ターミナルからコンテナにアクセスする

デプロイされたコンテナーを操作するためにターミナルにとどまりたい場合は、Docker を使用すると非常に簡単です。次の点に注意してください。

  • ほとんどのコンテナにはがありますが、代わりに
    bash
    使用するコンテナもあります
    sh
  • すべての Redcloud App Templates コンテナー名は、次
    red_
    のように で始まります。
    red_msf-postgresql
  • docker exec
    Docker を使用すると、コンテナを使用したり
    attach
    、コンテナと対話し たりできます
    • exec
      新しいプロセスを作成するため、優先されます
    • attach
      実行中のプロセスに直接着陸し、実行中のコンテナーを強制終了する可能性があります
  • Redcloud を実行している場合:
    • ローカルで、または を使用して
      docker-machine
      、ローカル シェルでこれらを入力するだけです
    • を使用して
      ssh
      、最初に展開ターゲットに ssh し、次のコマンドを実行します

目的のデプロイ済みコンテナーとの対話を開始するには:

> docker exec -it red_container-name /bin/bash
root@70a819ef0e87:/#

次のメッセージが表示された場合は、

bash
がインストールされていないことを意味します。その場合、単純に次のように置き換え
/bin/bash
ます
/bin/sh

> docker exec -it red_container-name /bin/bash
OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown

> docker exec -it red_container-name /bin/sh
#

を使用する

docker attach
には、次を実行します。

> docker attach red_container-name

を使用している場合

attach
は、コンテナを で開始し
interactive mode
て、インタラクティブ シェルに移動する必要があります。

ファイルへのアクセス

ブラウザで にアクセスし

https://your-redcloud-ip/files
ます。
詳しくは
files
本編をご覧ください。

SSL証明書

Redcloud は、デプロイ時に新しい未署名のSSL 証明書を生成します。
証明書はomgwtfsslによって生成され、ほとんどのベスト プラクティスが実装されています。生成後:

生成した証明書をデフォルトで /certs にダンプし、標準の YAML 形式で stdout にも出力するため、YAML を使用する Ansible またはその他のツールで簡単に使用できます。

証明書は、 と呼ばれる共有ドッカー ボリュームに保存され

certs
ます。デプロイ時に「+ 詳細設定」で指定すると、コンテナーはこのボリュームにアクセスできます。Traefik リバース プロキシ コンテナーは、その構成ファイルから証明書を直接フェッチします。これらの証明書を自分のものに置き換えたい場合は、このボリュームで置き換えるだけです。

また、リバース コールバックやフィッシング キャンペーンのために、Empire や Metasploit などの他のコンテナーで、生成された証明書を共有できることも意味します。ほとんどの SSL 関連の構成は、

traefik/traefik.toml
または
docker-compose.yml
ファイルにあります。

レッドクラウドの停止

メニューから直接 Redcloud を停止できます。
デプロイされたアプリ テンプレートは、Redcloud を停止する前に手動で停止する必要があります。Portainer Web インターフェイスまたは を使用して停止できます

docker rm -f container-name

Redcloud を実行している Portainer コンテナーを強制的に停止する場合は、フォルダー
docker-compose kill
内で実行するだけです。localdocker-machine
redcloud/
の停止オプションは同じであるため、同じオプションにまとめられています。

Portainer アプリ テンプレート

Redcloud は Portainer を使用して、Docker エンジンとのオーケストレーションとインターフェースを行います。Portainer 自体は、Docker のデプロイをリモートで管理するための素晴らしいプロジェクトです。Portainer には、非常に便利なテンプレート システムも含まれています。これは、Redcloud 展開の主要なコンポーネントです。
テンプレートは にあります

./templates/templates.yml
。Portainer は、専用のコンテナー (
templates
) からテンプレート ファイルをフェッチします。

Traefik リバース プロキシ

Traefik は素晴らしい「クラウドネイティブ エッジ ルーター」です。これは、以前の NGINX リバース プロキシ セットアップに取って代わりました。
にある Dockerfile を使用して、デプロイ中に Traefik イメージがビルドされ

traefik/Dockerfile
ます。資格情報を追加
.htpasswd
admin:Redcloud
ます。

デフォルトでは、デプロイによって次のルートが生成されます。

  • https://your-server-ip/portainer
  • https://your-server-ip/files
  • https://your-server-ip/api

認証は

.htaccess
データに基づいています。

Traefik api Web インターフェイスから、デプロイされたルートを表示し、ヘルスを監視し、リアルタイムのメトリックを監視できます。とてもきれいです。

次のいずれかを使用して、Traefik にトラフィックをルーティングする場所を伝える追加のラベルを追加できます。

  • traefik/traefik.toml
    ファイル
  • docker-compose.yml
    ファイル
  • templates.yml
    ファイル
  • Portainer の Web インターフェイス

詳細については、公式ドキュメントを参照してください。

API

Redcloud のセキュリティに関する考慮事項

Redcloud は自己署名の https 証明書を使用してデプロイし、それを通じて Web コンソールとのすべてのやり取りをプロキシします。
ただし、デフォルトのネットワークでは、コンテナーのポートが外部に公開されます。

あなたはできる:

  • 公開されているポートを削除し、docker ネットワーク内のマシンから通常のポートにアクセスします
  • カスタム
    labels
    を追加して、Traefik でルートを作成します。
    docker-compose.yml
    インスピレーションについては、ファイルを参照してください。
  • テンプレートから noVNC (http を介した VNC) で Ubuntu または Kali を起動し、それを「内部」ネットワークと「外部」ネットワークの両方に追加して、内部から公開されたインターフェイスにアクセスします。
  • .htaccess 構成を追加する

さらに:

  • docker
    &
    docker-machine
    インストールにはルート権限が必要です。公式ドキュメントに従って権限要件をダウングレードできます。
  • インストール スクリプトは、公式の Docker リポジトリから直接取得されます。
  • redcloud.py
    icanhazip.com を使用して Redcloud のパブリック IP アドレスを取得します。

テスト済みの導入候補

デプロイ ターゲット 状態
Ubuntu バイオニック ✔️
Ubuntu ゼニアル ✔️
Debian ストレッチ ✔️

トラブルシューティング

  • でデフォルトの python バージョンを確認してください
    python --version
    。Redcloud には python 3+ が必要です。
  • 古いシステムでは if の
    python3
    代わりに使用します。
    python
  • redcloud.py
    は、配備候補が に公開鍵を持っていることを要求し
    .ssh/authorized_keys
    、ユーザーの公開鍵を使用してパスワードなしの認証を処理します。これは、ほとんどの VPS ワークフローのデフォルト構成です。
  • docker-machine のデプロイでは、ユーザーがクラウド インフラストラクチャ (AWS、GCP、Linodeなど) で実行中の docker-machine を既に持っている必要があります。デプロイしたら、
    eval
    上図のようにコマンドを実行するだけです。
  • docker
    &
    docker-machine
    インストールにはルート権限が必要です。公式ドキュメントに従って権限要件をダウングレードできます
  • 展開直後に [アプリ テンプレート] メニュー項目が表示されない場合は、Web ページを更新して、エンドポイント選択メニューが表示されていないことを確認してください。
  • If you wish to create a new username/password combo, remove Portainer persistent data on deployment candidate:
    rm -rf /opt/portainer/data
  • If you're running into python errors, you may need to install the
    python3-distutils
    package using
    apt-get install python3-distutils
    on debian/ubuntu base.
  • If you get an error when deploying an App Template saying the "container name already exists", it's probably because you're trying to deploy the same App Template without having removed a previously deployed one. Simply remove the old container with the same name, or change the name of your new container.
  • If something seems wrong with your container, the standard procedure is to check the container's logs from the web interface.
  • If running a local deployment on OSX,
    portainer
    will be unable to use its default volume location
    /opt/
    . To solve this, open the
    docker-compose.yml
    file, replace
    /opt/portainer/data:/data
    with a folder with write-access, for example:
    /tmp/portainer/:/data
    and create the
    /tmp/portainer
    directory before running Redcloud.
  • if you're getting issues with the web terminal, try disabling some addons, using private browsing, or try with a different browser. If all else fails, connect to your container through the terminal.

Use-cases

  • Create your personal pentest-lab, and practice your hacking skills with friends and colleagues.
  • Protect your offensive infrastructure using honeypots.
  • Recreate an APT infrastructure with reverse implant load-balancing, geo-stretched servers and multi-layered operations
  • Automate payload generation with Metasploit or Empire, AV bypass with gscript, served instantly through the
    /files/
    URI.
  • Perform your bug-bounty pipelines much faster than your competition.
    • Launch Sniper using Portainer api when a new bug-bounty is posted, fetch logs using
      /files/
      URI.
  • Use the reverse proxy to cover Metasploit or Empire.
  • Launch scans behind your own Tor socks proxy.
  • View .onion site using Tor socks + Ubuntu VNC.
  • Advanced OSINT with Spiderfoot and a Tor container as proxy.

Screenshots

  • Template List

  • Deploying a container

  • Using Metasploit's
    msfconsole
    through the web interface

  • Traefik real-time data on reverse-proxy routes

  • Deploying using ssh


Contribution guideline

Any help is appreciated. This is a side project, so it's probably missing a few bolts and screws. Above all:

  • Redcloud のバグと癖の報告または修正。
  • テンプレートの追加。可能であれば作成者の docker ハブ リポジトリから、クリーンな状態を維持してください。
  • ドキュメントの追加。
  • ブログ記事でのユースケースの詳細。ここにブログ投稿へのリンクを追加しますので、作成する場合は必ず私に連絡してください!✌️
  • Traefik をより多くのテンプレートと統合します。たとえば、現在、スパイダーフットとubuntu novncに問題があります。
  • 問題としてのタイプミス。(プルリクエストはご遠慮ください)

レッドクラウドのホスティング

Docker を実行する任意の Unix サーバーで Redcloud をホストできます。
Redcloud は、ssh を使用した単純な VPS、または AWS EC2、GCP などのクラウド環境で使用することを目的としています...

さまざまなクラウド プロバイダーが、サービスに慣れるために無料のクレジットを提供しています。多くのリストとチュートリアルでは、主要なベンダーからの無料のホスティング クレジットの取得について説明しています。このリストは、開始するのに適した場所です。

展開方法に関しては、個人的にはdocker-machineを使用することを好みます。これは、クラウド プロバイダーのドライバーのセットアップが完了したら、新しいマシンを生成して管理することが非常に簡単になるためです。を使用したい場合は

ssh
、evilsocket のshellzプロジェクトを参照して、鍵とプロファイルを管理してください。


インスピレーションと叫び


最後に、ツールの統合を希望する場合は、Twitter で私に連絡してください。このプロジェクトは私の空き時間に維持されます。今後の機能については、dev ブランチに注目してください。
Redcloud はもともと、情報セキュリティの学生向けのトレーニング環境の展開を容易にするために開発されました。


このプロジェクトの最新情報を入手したい場合:

ツイッター