ZANSINとは
ZANSINとは、実際のサイバー攻撃を想定したインシデント・レスポンスを体験するためのトレーニングツールとして公開されたツールです。
ZANSINはコントロールサーバとトレーニングサーバの2台のサーバから構成されます。
-
コントロールサーバ
攻撃の実施やクローリング、スコアの算出といった訓練の制御を行う。 -
トレーニングサーバ
訓練を受ける側が操作して防御を実践する訓練用マシン。
構築
ZANSINサーバはUbuntu Serverで構築します。
Ubuntu Serverは20.04以上が必要とされており、22.04まではインストールが正常な確認されています。
それ以降ではインストール時にエラーが出ることもあるようです。
可能であれば20.04~22.04で構築しましょう。
また、繰り返しトレーニングを可能にするため、仮想環境で構築することがお勧めです。
Ubuntuのインストール
まずはUbuntuのインストールを行います。
インストールする際に必要となる条件は以下のとおり。
- コントロールサーバとトレーニングサーバが互いに通信できること
- 2台ともインターネットにアクセス可能であること
- 2台ともsudo可能な”zansin”ユーザが作成されていること
- zansinユーザのパスワードは2台で共通であること
- 2台ともパスワード認証可能なSSHサーバが導入されていること
1つ目と2つ目の要件を満たすネットワーク環境を整備します。
コントロールサーバとトレーニングサーバで通信できるように環境を構築しますが、
このネットワーク環境からインターネットに出られる場合はこのネットワークのみで大丈夫です。
インターネット接続ネットワークを別にしたい場合は、これとは別のネットワーク環境を構築します。
ネットワーク環境の準備ができたら早速Ubuntuのインストールを行います。
インストールでの選択は基本的にデフォルトで大丈夫ですが以下のprofile setupでは要件にあった情報を入力します。
【コントロールサーバ】
Your name:zansin
Your Server Name:ControlServer
Pick a username:zansin
Choose a password:(任意の文字列)
【トレーニングサーバ】
Your name:zansin
Your Server Name:TrainingServer
Pick a username:zansin
Choose a password:(任意の文字列)
コントロールサーバとトレーニングサーバで作成するユーザ:zansinのパスワードは同じパスワードを登録する。
以下のSSH Setupの画面ではInstall OpenSSH Serverにチェックを入れる。
以降画面に従ってUbuntu Serverをインストールします。
ZANSINサーバのネットワーク設定
ZANSINコントロールサーバと、トレーニングサーバはネットワークで相互に通信できることが要件としてあがっています。
なので、筆者の環境としては以下のような構成としています。
コントロールサーバ | トレーニングサーバ | |
---|---|---|
IPアドレス | 10.10.1.102 | 10.10.1.103 |
必用に応じてUbuntsのネットワーク設定を変更します。
ZANSINのセットアップ
ZANSINのセットアップはコントロールサーバ側で、GitHubからセットアップ用スクリプトをダウンロードしてきて実行します。
# セットアップスクリプトのダウンロード
~$wget https://raw.githubusercontent.com/ZANSIN-sec/ZANSIN/main/zansin.sh
ダウンローが完了したら実行します。
# パーミッション変更して実行
~$chmod +x zansin.sh
~$./zansin.sh
スクリプトを実行するとインストールが始まります。
インストールに必要な情報として以下を入力するよう求められます。
- コントロールサーバとなるマシンのIPアドレス
- トレーニングサーバとなるマシンのIPアドレス
- 共通のユーザ:zansinのパスワード(インストール時に設定したパスワード)
後は自動でコントロールサーバとトレーニングサーバの構築が行われます。
完了したらトレーニングサーバで”mini QUEST”が動いているか、ブラウザで確認します。
ブラウザからトレーニングサーバのアドレスを開くと以下の画面になります。
”Create Account”で任意のユーザを作成した後、そのユーザでログインすると”mini Quest”を開くことができます。
これで、zansinでトレーニングする準備ができました。
実際に以下コマンドでトレーニングを開始できます。
(test01ユーザによるトレーニング開始)
# 通常モードでトレーニング開始
~$ source red-controller/red_controller_venv/bin/activate
~$ cd red-controller/
~$ python3 red_controller.py -n test01 -t 10.10.1.103 -c 10.10.1.102 -a 1
コマンド実行後、少しするとコントロールサーバから攻撃が始まります。
時間は4時間がリミットとなります。
システムを以下の行為から守ってください。
- サイバー攻撃
- チート行為
これらの被害をどれだけ少なく抑えるかで得点が変化します。
トレーニングマシンにユーザ:vender、パスワード:Passw0d!23でログインし、防御していきましょう。
アカウント:zansinではないでの注意してください。
トレーニング終了時に自身のスコアが表示されます。
+----------------------------------+----------------------------------+
| Technical Point (Max 100 point) | Operation Ratio (Max 100 %) |
|----------------------------------+----------------------------------+
| Your Score : 70 point | Your Operation Ratio : 60 % |
+----------------------------------+----------------------------------+
ZANSIN環境
サーバの環境は以下のとおりとなっています。
さまざまな API がDocker を使用してLinuxサーバー内に実装されています。
Game API
ゲームに実装されている API は次のとおりです。
- User Registration API
- Login API
- Withdrawal API
- Player Data API
- Upload an Image API
- Battle Course List API
- Determination of the Battle Course API
- Battle API
- Stamina Recovery API
- Gatcha API
- In-game purshase API
- Ranking API
ブラウザゲーム - "MINI QUEST"
オンラインゲーム(MINI QUEST)にアクセスする場合は、HTTP (ポート 80/tcp) を使用してゲームサーバーのIPアドレス(トレーニングサーバのIP)にアクセスします。
http://{IP ADDRESS}
Admin Panel
ゲームサーバーの管理者として、以下URLでプレイヤーを管理することができます。
http://{IP ADDR}/user_list/
不正行為を行っているプレイヤーがいた場合は、「BAN!!」ボタンを使用することで、そのプレイヤーを排除することができます。
ユーザーランキング
このページでは、各プレーヤーランキングを確認できます。
このページは公開されているため、誰でもアクセスできます。
http://{IP ADDRESS}/ranking/
MINI QUEST Serverについて
-
ZANSINトレーニングサーバの認証情報
アカウント名 Password 補足 vendor Passw0rd!23 このアカウントを利用してください。’sudo'の利用も可能です。 mario Passw0rd!23 link Passw0rd!23 sonic Passw0rd!23 -
サービス
Service Note SSH アカウント: vendor
パスワード:Passw0rd!23
MySQL アカウント: root
パスワードpassword
HTTP MINI QUEST: http://{IP ADDRESS}
管理者ページ: http://{IP ADDRESS}/user_liset/
ユーザーランキング: http://{IP ADDRESS}/ranking/
phpMyAdmin: http://{IP ADDRESS}:5555 -
Game API
- 以下フォルダに各APIが保存されています。
/home/vendor/game-api
- ゲームAPIのコンテナーをアップ/ダウンしたい場合は、以下を参照にしてください。
- containers開始
docker-compose up -d
- containers停止
docker-composer down
- containers開始
- 以下フォルダに各APIが保存されています。
トレーニングにおける禁止行為
-
アクセス制御
- 送信元IPアドレスに基づいて ZANSINコントロールサーバーからの接続をブロックしないでください。
- 正当なユーザーの接続と攻撃の接続はどちらも、ZANSINコントロールサーバーのIPアドレスから発信されます。これをブロックすると、ZANSINクロールモジュールとスコアリングモジュールがアクセスできなくなり、スコア評価ができなくなります。
- 同様に、ZANSINクロール モジュールとZANSINスコアリングモジュールの両方からの通信をブロックしないように注意してください。ブロックすると、評価が正常に行えない可能性があります。
- 送信元IPアドレスに基づいて ZANSINコントロールサーバーからの接続をブロックしないでください。
-
API
- APIの応答はJSONの構造を維持しています。
- API応答の値を変更または削除することはできますが、キーの変更は行わないでください。キーの変更を行うと、ZANSINクロールモジュールが応答を取得できなくなってしまいます。
- APIの応答はJSONの構造を維持しています。