Microsoft Defender のマルチテナント管理をやってみた！

# 1. はじめに
本記事では、セキュリティオペレーションセンター（SOC）チームの方におススメな機能であるMicrosoft Defenderのマルチテナント管理をご紹介します。
本機能を利用することで、複数テナントのDefender Portalのインシデントを一元管理することができます。さらに、デバイスの一元的な監視、カスタム検出ルールの一元的な適用などを実現することができます。

例えば、以下画像はDefender Portalのインシデント管理の画面です。
この画像のオレンジ枠のところにテナント名が表示されており、複数テナントで発生したインシデントを一元的に監視することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/c48570e4-883b-4336-b19f-9fc3c2d0f86e.png)



# 2. 今回の設定手順
本記事では、MDEの脅威ハンティングみたいなことをマルチテナント管理で実施してみます。
設定手順は以下となり、設定後にカスタム検出ルールによってインシデントのアラートを生成してみます。

① 監視対象のテナントへのEntra B2B によるアクセス許可
② マルチテナント管理の設定
③ カスタム検出ルールの作成
④ テナントグループの作成による複数テナントへのカスタム検出ルールの同期

### 2-1. 監視対象のテナントへのEntra B2B によるアクセス許可

まずは監視したいテナントにゲストユーザとして、対象ユーザの招待を行います。
特に、マルチテナント管理固有の設定ではなく、Entra B2Bの機能を利用すれば大丈夫です。
ゲスト招待が完了しますと、マイアカウントの画面でゲストユーザとして参加しているテナントを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/e7d81226-a6ec-46c0-965a-2ad26f85753e.png)

:::note info 
Entra B2B コラボレーション
もし、ゲストユーザの招待のやり方が不明な場合は、以下URLをご確認下さい。
Entra管理センターで、「外部ユーザの招待」を実施し、電子メールを受信しましたら承認することで、アクセス権限を得ることができます。

【URL：クイック スタート: ゲスト ユーザーを追加して招待を送信する】
https://learn.microsoft.com/ja-jp/entra/external-id/b2b-quickstart-add-guest-users-portal
:::

<BR>
そして、当該のゲストユーザに各テナントのセキュリティ管理者ロール等、必要なロールを付与しておきます。今回の設定ではMDEの脅威ハンティングのみを目的としているので、セキュリティ管理者のロールを付与しています。

https://learn.microsoft.com/ja-jp/unified-secops-platform/mto-requirements#review-the-requirements


### 2-2. マルチテナント管理の設定

以下URLにアクセスすることで、Microsoft Defenderのマルチテナント管理の設定をすることができます。
先ほど各テナントへのアクセス権限を付与したユーザでアクセスします。
これは通常のDefender PortalのFQDNに対して、***mto***が付与されたURLになっていますね。

[https://mto.security.microsoft.com](https://mto.security.microsoft.com)

Microsoft Defenderのマルチテナント管理ポータルにアクセスします。このあと、テナントの追加を実行すると左側のサイドメニューの中身が増えます。
左側のサイドメニューの「設定」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/c979410c-9c05-48cd-a0f5-fd62345b044c.png)

次に、「テナントの追加」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/8789466b-5f79-46ce-9ca7-6155fda73c67.png)

先ほど、アクセス権限を付与したテナントが表示されます。
インシデント監視をしたいテナントにチェックを付けて、「テナントの追加」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/3b696182-cb58-4e3e-87c5-379c882f2b7d.png)

あっという間ですが、これでテナント追加完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/202a3576-70f4-4b1c-9244-a28b1b16122d.png)

いつの間にか増えているサイドメニューの中身から、「インシデント」を選びます。
すると、各テナントのインシデントを見ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/5d367fc9-d079-40be-a6a3-df60af5ef8ea.png)

ただし、インシデントをクリックすると、各テナント単位のDefender Portalに移動します。
左上の表記も***Multi-tenant*** から ***テナント名***に変わっています。
インシデントの一元把握までで、詳細確認は各テナントで実施するということですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/58566652-1408-42ea-a67e-8074b1c3b233.png)

では再び、Microsoft Defenderのマルチテナント管理のポータルに戻ります。
ここで、「デバイス」の「テナント」をクリックすると、各テナント上で監視対象となっている、または、検出されたデバイス数も確認することができます。
これもテナント名をクリックすると、各テナントに移動できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/9bf8121d-c289-4638-8f53-4ad86e3f7add.png)


「デバイスのインベントリ」も見てみると、各テナント上のデバイスのインベントリを一元的に確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/1b801bd4-bb30-4936-a9c4-cade34fd8310.png)



### 2-3. カスタム検出ルールの作成

それでは脅威ハンティングもどきを作っていきます。
カスタム検出ルール自体はマルチテナント管理のDefenderポータルではなく、管理対象のDefender Portalの１つで作成します。
[追求]の中にある[高度な追及]へアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/2143a27f-db25-4499-ab79-0d491c34b011.png)


クエリの実行箇所で、以下 KQL（Kusto Query Language）を入力します。
このクエリは、「schtasks.exe を使って CustomDetectionTest という文字列を含むコマンドラインが実行されたプロセスイベント」を探しています。

```
DeviceProcessEvents 
| where FileName == "schtasks.exe"
| where ProcessCommandLine contains "CustomDetectionTest"
```

【補足説明】
```DeviceProcessEvents```というテーブルを参照することで、MDE(Microsoft Defender for Endpoint)から得られる***プロセス実行のログ***を抽出することができます。
そして、```| where FileName == "schtasks.exe"```を入れることで、***実行ファイルがschtasks.exeとなるタスクスケジューラに一致するものだけ***を絞り込むことができます。
最後に、```| where ProcessCommandLine contains "CustomDetectionTest"```とすることで、実行時のコマンドライン中に、***CustomDetectionTestという文字列が含まれるものだけ***にさらに絞り込むことができます。

<br>
次に、本画面の右上にある「検出ルールを作成」をクリックします。
入力内容は任意で良いですが、頻度のところを連続(NRT)とすることで可能な限り最速の検知ができるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/f8bf1f6c-d219-4103-925a-020e655d54ac.png)

次は影響を受けるエンティティを入力します。
今回は```DeviceProcessEvents```というテーブルを利用しているので、デバイス名情報も含まれますので、```DeviceName```を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/79f79a4f-3ce2-4124-be35-f2e4babad2e5.png)

最後に自動化されたアクションをいれます。
今回は検証用途なので、特に何もチェックを入れず「次へ」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/3f85388a-2558-4264-a560-b2113aa6a95a.png)

確認画面です。入力ミスがなければ「送信」を選び完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/c62a13c8-5258-41ff-b1dc-2384a55003a1.png)

### 2-4. テナントグループの作成による複数テナントへのカスタム検出ルールの同期

再び、Microsoft Defenderのマルチテナント管理ポータルに戻ります。
サイドメニューの「構成」の中にある「テナントグループ」を選び、「テナントグループの作成」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/3bb7159b-b443-414e-99a1-5636eac105a8.png)

任意のテナントグループ名を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/43a8fbca-3a07-40fc-b1c2-3cace1ac0d48.png)

画面中央の「＋テナントの追加」を選び、対象テナントの割り当てを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/b7d9a4a5-ce35-4637-b8ab-debc8fe2d51c.png)

カスタム検出ルールの同期をしたいテナントを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/2e3af609-d0ed-400d-80d0-07a228c905c8.png)

割り当てたテナントを確認し、「次へ」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/3b76c697-d1d0-4c77-803d-1de61e8f9a8b.png)

コンテンツとして、「カスタム検出ルール」にチェックが入っていることを確認して、「次へ」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/0a825222-ff43-45b3-88e0-dc352214b5f5.png)

画面中央の「＋コンテンツの追加」を選び、対象となるカスタム検出ルールを選択していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/f32868c3-1b02-471c-bc92-29e9d078e627.png)

先ほど作成したカスタム検出ルールを選びます。この検出ルールはテナントグループ間で同期され、各テナントで実行されるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/8f548a70-2258-4cc1-b74a-1a59d6cb9ab5.png)

対象となるデバイスグループを選びます。特に指定はないので、何もせずに「次のテナント」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/f6ef1756-3d79-4665-bccf-bb5f3c0ba41f.png)


特に指定はないので、何もせずに「次へ」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/082229a6-617d-4655-b8f2-304db8d0bb15.png)

最後に、「送信」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/ed470ecd-ecb5-429f-b9c8-e3c32d91f4a4.png)

問題なければ、正常に作成されましたと表示されるので、「完了」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/4b0fe944-ce76-4907-8124-ca5f279c3b96.png)

# 3. 動作確認

それでは動作確認をしていきます。
MDEをインストールしているWindows PC上で、コマンドプロンプトを立ち上げて以下コマンドを実行します。
このコマンドはタスクスケジューラに、```CustomDetectionTest```という名前のタスクを作成し、毎日18:30にポップアップによるメッセージを表示します。

```
schtasks /create /tn "CustomDetectionTest" /tr "msg * 'CustomDetectionTest'" /sc daily /st 18:30
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/5a882f19-b5d3-4119-a7ca-7953098e693a.png)

タスクスケジューラを見てみると、作成したタスクが登録されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/c715980a-f828-46a6-bf0f-de7c84c72e55.png)

Microsoft Defenderのマルチテナント管理ポータルに戻り、インシデント画面を見てみると無事検出されていました。なお、フィルターで「情報」も含まれる形にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256868/207b0c55-6f2a-4ef8-8cb5-fdd43835e1db.png)

以上で動作確認完了なので、テナントグループの削除等、クリーンアップします。

# 4. おわりに

お疲れさまでした。以上で「Microsoft Defender のマルチテナント管理をやってみた！」は終わりです。
複数のテナント管理をする必要があるSOCの担当者の方にはおススメな機能のように感じます。といっても、詳細調査には各ポータルへのアクセスは必要となりますので、一元的な監視場所という使い方がメインかなと思いました。