LoginSignup
33
38

More than 3 years have passed since last update.

サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介:使用方法・トレーニング編

Last updated at Posted at 2020-07-15

サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介:使用方法・トレーニング編

はじめに

趣旨

本記事は、『サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介』の 第四弾「使用方法・トレーニング編」です。
本編では、セキュリティ人材育成に活用できる MITRE CALDERA の使い方を紹介します。
機能概要や環境構築につきましては第一弾「機能概要・動作環境構築編」をご覧ください。

記事構成

紹介内容が多いため、以下の4記事に分けて紹介しています。

注意・免責事項

本連載記事には、サイバー攻撃を模擬再現する方法が含まれています。
これは、サイバー攻撃されることによってどのような事象が発生するのか、どう対処すれば良いのかを確認・検討・改善したり、サイバーセキュリティ人材育成に活用することが目的です。
他のシステムやネットワークに影響を与えないように、閉じたネットワーク環境を作って実施してください。
許可を得ていない相手に対して実施した場合、不正アクセス禁止法などの法律に抵触しますので、絶対にやめてください。

本記事の内容は私個人の見解であり、所属する組織の公式見解ではありません。
本記事に書いてあることを試して、利用者および第三者に何らかのトラブル・被害・損害が発生しても、筆者および所属組織では一切責任を負いません。

概要

MITRE CALDERA バージョン 2.6.4 で Trainingプラグイン が提供され、トレーニングメニューが追加されました。
クイズ形式で問題が出され、想定された状態になれば正解となり、次の問題が出題されます。
本連載で使用している MITRE CALDERA 2.6.6 では、MITRE CALDERA を使いこなせるユーザであることを確認・認定する問題が用意されています。
なお、2.6.6 では redチームでログインしたときのみ問題が表示されます。2.7.0 では blueチーム でログインした場合にも問題が表示され、問題数も増えています。今後もトレーニング問題が追加されていくことが期待できます。
自分で問題を作って登録することも可能です。問題登録方法についても説明します。

「User Certificate」トレーニング開始時のスクリーンショットを以下に示します。
training_user_sertificate.png

環境構築

使用方法:レッドチーム編」と同じ環境を使用します。
なお、Ubuntu Linux 20.04 の Chromium ブラウザでトレーニング問題を表示すると、絵文字の旗が正しく表示されませんでした。そのため、以下のコマンドを実行して絵文字フォントをインストールしてOSに再ログインしました。(OSの種類やバージョンによってフォント名が異なります)

$ sudo apt install ttf-ancient-fonts-symbola

操作手順

ログイン

使用方法:レッドチーム編」に記載されている起動手順に従って MITRE CALDERA サーバにログインします。

トレーニングメニュー表示

Plugins メニューにマウスカーソルを移動すると直下にサブメニューが表示されるので、サブメニューの中のtraining をクリックします。
training_menu.png

問題集選択

Web画面左側にある「Select a certificate」プルダウンメニューをクリックすると、問題集の名称が一覧表示されるので選択します。
MITRE CALDERA 2.6.6 では「User Certificate」だけが選択できます。MITRE CALDERA を使いこなせるようになったかを確認・認定する問題集です。

training_select_certificate.png

なお、ウィンドウ右側上部に、「コードを獲得したらメールしてください。確認のうえ修了認定コードを返送します」といった内容の英文が表示されています。全問制覇に挑戦してみませんか?

問題に挑戦

問題集を選択すると、画面左側に問題ジャンルが表示され、画面右側に問題文が書かれたカードが表示されます。
本記事の最初のスクリーンショットに示してあるように、カードには問題タイトルと問題文が書かれています。
カードの上にマウスカーソルを移動すると、カードが裏返って下図のように赤いカードが表示され、詳細やヒントが表示されます。
現在のところジャンルは表示されるだけですが、将来、ジャンルをクリックするとそのジャンルの問題を選べるようになるかもしれません。そういう機能をリクエストしたり実装して取り入れてもらうリクエストをするのもオープンソースソフトウェアの使い方です。
問題に正解すると次の問題が追加表示されます。

training_genre_q1_back.png

ジャンル毎に問題が出題されます。最初は AGENTS(エージェント)ジャンルから出題されます。

第1問: ローカルホストでエージェントを起動せよ

表:問題文 裏:詳細・ヒント
training_q1_front.png training_q1_back.png

ローカルホストでエージェントを起動できると、第2問が表示されます。

第2問: リモートホストでエージェントを起動せよ

表:問題文 裏:詳細・ヒント
training_q2_front.png training_q2_back.png

問題文に書いてあるように、MITRE CALDERAサーバとは違う種類のOSのホストでエージェントを起動しなければいけません。
MITRE CALDERA サーバは Linux OS 上で動作しているので、Windows OS あるいは Mac OS 上でエージェントを起動してリモート接続できれば問題クリアとなり、第3問目が表示されます。

このように次々と問題が出題されます。
ジャンル内の問題をすべて解くと、ジャンルのアイコンに色が付きます。
問題に正解した日付が記録されており、MITRE CALDERA サーバを再起動しても、続きから解くことができます。

AGENTSジャンルの全8問を解いた状態のスクリーンショットを以下に示します。

training_cleared_agents.png

Trainingプラグインの構造

Trainingプラグインのディレクトリ・ファイル構成を以下に示します。
構成に合わせて、自分で問題を作って登録することもできます。

ディレクトリ・ファイル構成

plugins/training/
├── README.md
├── __init__.py
├── app
│   ├── c_badge.py
│   ├── c_certification.py
│   ├── c_flag.py
│   ├── flags
│   │   ├── advanced
│   │   │   ├── flag_0.py
│   │   │   ├── flag_1.py
│   │   │   └── flag_2.py
│   │   ├── adversaries
│   │   │   ├── flag_0.py
│   │   │   ├── flag_1.py
│   │   │   └── flag_2.py
│   │   ├── agents
(中略)
│   │   └── plugins
│   │       ├── atomic
│   │       │   └── flag_0.py
│   │       ├── compass
(中略)
│   │       └── mock
│   │           └── flag_0.py
│   └── training_api.py
├── data
│   └── 9cd5f3a0-765d-45bc-85c2-bc76d4282599.yml
├── hook.py
├── static
│   ├── css
│   │   └── training.css
│   └── img
│       ├── badges
│       │   ├── advanced.png
(中略)
│       │   └── operations.png
│       └── certification.png
└── templates
    └── training.html

問題集定義ファイル

「User Certificate」などの問題テーマに関する問題を集めた問題集定義ファイルです。
問題集毎に UUID をファイル名にしたyamlファイルがdataディレクトリ配下にあります。
同様の形式で問題集定義ファイルを自作してdataディレクトリに格納しておくと、問題集選択プルダウンメニューに自動追加されて選択できるようになります。

問題集定義ファイルの定義フォーマットを以下に示します。

data/*.yaml
id: 問題集UUID
name: 問題集名
badges:
  問題ジャンル名:
    flags:
      - 問題定義PythonスクリプトのPythonモジュール名

問題定義ファイル

個々の問題定義ファイルです。
Pythonスクリプトになっていて、問題タイトル、問題文、詳細説明を変数定義し、正解を判定する処理を関数定義しておきます。
Pythonモジュールとしてimport処理されるため、appディレクトリ配下にPythonモジュール形式に合わせてPythonスクリプトを配置します。

問題定義ファイルの定義フォーマットを以下に示します。
変数名および関数名が決められていて、問題として自動認識されます。

app/flags/*/*.py
name = '問題タイトル'
challenge = '問題文'
extra_info = """詳細・ヒント"""

async def verify(services):
    正解していれば True正解していないなら False を返す処理

さいごに

『サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介』は以上で終了です。
興味・関心を持っていただき、業務や人材育成などに活用するきっかけになりましたら幸いです。
テクニック、シナリオ、トレーニングメニュー、新たなプラグインなどが今後増えていくことが大いに期待できます。
フレームワークなので、オリジナルのテクニックやトレーニングを定義したり、新たなプラグインを考案・制作するのも面白いと思います。プラグイン開発環境構築方法については、いずれ紹介したいと考えています。

MITRE ATT&CK および MITRE CALDERA をサイバーセキュリティに活用していきましょう。

最後まで読んでいただき、ありがとうございました。

33
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
38