
docker-composeを使用したローカル侵入テストラボ。
もう積極的には開発していませんが、バグ修正やIssue・プルリクエストの確認は行います。 助けていただけると幸いです :)
このローカルペンテストラボは、docker composeを利用して複数の被害者サービスとKali Linuxが動作する攻撃者サービスを立ち上げます。初めてこのラボを実行する場合、さまざまなDockerイメージのダウンロードに時間がかかります。
実行したコマンド:
./lab.sh --help./lab.sh --check-dependencies./lab.sh --up --all-services./lab.sh --info./lab.sh --overview allssh root@kali -o "UserKnownHostsFile /dev/null"./lab.sh --down必要な依存関係がすべてインストールされていれば、ラボはすぐに動作するはずです。起動時に依存関係のチェックが実行されます。
git clone https://github.com/oliverwiegers/pentest_lab
cd pentest_lab
./lab.sh -u
デフォルトでは、ラボは全ての被害者サービスと1つのレッドチームサービスを起動します。他のサービスを起動したり追加したりできます。詳細は以下をご覧ください。
使用法の詳細については、./lab.sh -h | --helpで表示されるヘルプメッセージをご覧ください。
ラボには起動時に実行される組み込みの依存関係チェックがあります。手動で実行することもできます:./lab.sh -C。
使いやすくするために、Heimdallインターフェースが追加され、localhost:7000で公開されています。ローカルマシンに公開され、ブラウザでアクセスできるすべてのサービスがここにリストされます。インターフェースに加えた変更は自動的に./etc/heimheimdallに保存されます。このディレクトリはラボを停止する際に./etc/heimdall.tarに変換されます。このtarアーカイブは起動時に展開されます。./etc/heimdall.tarと./etc/heimdallはどちらもデフォルトでgitの管理対象外です。
使用されている壁紙はこちらで見つけられます。
このラボには以下の4種類のサービスがあります。
デフォルトのレッドチームサービス(Kaliサービス)はかなり基本的なKaliインスタンスです。ただし、kali-tools-webメタパッケージがインストールされています。Webアプリケーションテストラボでは、基本的なWebテストツールが有用と思われます。これは、イメージをビルドするDockerfile(./dockerfiles/kaliにあります)を編集することで変更できます。Kaliサービスはデフォルトでこれらのdotfilesをインストールします。これもDockerfileを調整することで変更可能です。
モニタリングサービスはブルーチームサービスでもありますが、別のカテゴリに分けられています。
このスタックはログとパフォーマンスの観測機能を提供します。
個々のインスタンスの詳細については以下を参照してください。
現在のモニタリング設定は以下のサービスで構成されています:
Grafanaインスタンスは、ログ用とメトリクス用の2つのダッシュボードを提供します。
これらはかなり基本的なものです。Grafanaインターフェースからダッシュボードを追加することでさらに追加できます。これらのダッシュボードはgrafanaボリュームが削除されると失われます。ダッシュボードを永続的に追加するには、GrafanaのProvisioning Docsを参照してください。プロビジョニングに使用されるディレクトリは./etc/grafana/にあります。
Grafanaインターフェースを介して設定を変更するには、adminとしてログインする必要があります。認証情報はデフォルトのadmin:adminです。 #hacktheplanet
LokiがDockerログを収集できるように、このラボはLoki Docker DriverをDockerプラグインとしてインストールします。
Prometheusがクラスタ内で実行中のコンテナのパフォーマンスメトリクスにアクセスできるように、cAdvisorが使用されます。
追加のサービスを追加するには、docker-compose.ymlファイルに関するある程度の知識が必要です。このリポジトリのルートにあるdocker-compose.ymlはラボ起動時に自動生成されます。このプロセスは./etc/services以下にあるyamlファイルを使用します。
➜ pentest_lab tree ./etc/services
./etc/services
├── blue_team
│ └── endlessh.yml
├── default.yml
├── monitoring
│ ├── cadvisor.yml
│ ├── grafana.yml
│ ├── loki.yml
│ └── prometheus.yml
├── red_team
└── victim
├── beginner
│ ├── bwapp.yml
│ ├── dvwa.yml
│ ├── hackazon.yml
│ ├── tiredful.yml
│ ├── webgoat.yml
│ └── xvwa.yml
├── expert
│ └── juice-shop.yml
└── intermediate
└── ninjas.yml
どのサービスを起動するかは、./lab.shを対応するオプションで呼び出すことで制御されます。サービスを恒久的に無効にするには、.ymlファイル拡張子を削除してください。
victimサービスの例は以下の通りです:
bwapp:
labels:
class: 'victim'
cluster: 'pentest_lab'
level: 'beginner'
image: raesene/bwapp
ports:
- '8080:80'
networks:
pentest_lab:
ipv4_address: 10.5.0.100
hostname: bwapp
volumes:
- bwapp-data:/var/lib/mysql
注意:サービスが最初の使用時に何らかのインストールを必要とする場合は、docker inspect <image_name>を使用してDockerイメージがデータを保存する場所を確認し、そのディレクトリを指すボリュームを追加してください。上記の例では以下のようになります:
volumes:
- bwapp-data:/var/lib/mysql
これにより、ラボを再起動するたびにサービスを再セットアップする必要がなくなります。ただし、ラボをリセットして完全に最初からやり直したい場合は、./lab.sh -p | --pruneを使用できます。これにより、ラボが所有するすべてのリソースが削除されます。
静的IPアドレスを使用した理由は、KaliボックスがSSHログインを簡単にするために変更されないIPアドレスを持つ必要があるためです。詳しくは下のTips/Tricksセクションを参照してください。
サービスを追加し、このラボを実行する人にとって有用な追加情報がある場合は、その情報を./etc/services_infoに追加できます。このファイルの内容は、./lab.sh -iを実行することでそのまま1行ずつ表示されます。
Kaliサービスへの簡単な接続のために、以下の内容を$HOME/.ssh/cofigに追加することができます:
Host kali
User root
Hostname 10.5.0.5
UserKnownHostsFile /dev/null
StrictHostKeyChecking accept-new
これにより、ssh [email protected] -o "UserKnownHostsFile /dev/null"の代わりにssh kaliを実行できます。
tmuxユーザーの場合、以下を追加すると自動的にtmuxセッションにアタッチします:
Host kali
User root
Hostname 10.5.0.5
UserKnownHostsFile /dev/null
StrictHostKeyChecking accept-new
RequestTTY yes
RemoteCommand tmux -L tmux new-session -As hacktheplanet