Defender for Servers/Endpoint で保護した Azure Windows 仮想マシンでアラート検知時にネットワークから自動隔離する！

こんにちは。
Microsoft Defender for Servers(以下、MDS)、Microsoft Defender for Endpoint(以下、MDE) で保護した Azure 仮想マシンでアラート検知した際に、MDE の機能でネットワークから自動隔離を試してみます。



## 1. Azure 仮想マシンの MDE オンボーディング
Azure 仮想マシンで MDE を有効化するには、Defender for Cloud から提供されている MDS を有効化します。
有効化する方法は色々ありますが、一番簡単な自動オンボーディングを実施します。

MDS ではプラン1 と プラン2 が提供されています。プラン1では MDE を利用できます。プラン2 では MDVM Add-on、Just-in-time VM アクセスやファイル整合性監視など追加の機能が提供されています。 
機能の違いはこちらをご参照ください。
* [Defender for Servers 機能の比較](https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/plan-defender-for-servers-select-plan#plan-features)

### Defender for Servers の有効化
まず初めに MDS を有効化します。Azure ポータルにアクセスし、少ししたにスクロールして Defender for Cloud を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/912cdf30-495e-5085-64a2-cc8f5d50f756.png)

次に [環境設定] から Azure 仮想マシンが展開されたサブスクリプションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/15d2e413-29a0-5827-d6eb-e3b2f6e5eed4.png)

最後に、クラウドワークロード保護 (CWPP) から サーバーを有効化します。
この方法では、サブスクリプションに存在するすべての仮想マシンに MDE をオンボードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/c442f52f-edc8-92e9-0a20-71240bafb9e6.png)

:::note info
本手順を実施すると、サブスクリプションに展開されたすべての仮想マシンで MDE にオンボーディングされます。
特定の仮想マシンのみ有効化する場合は、リソースレベルで有効化する方法を参照してください。
* [リソース レベルで Defender for Servers を有効にする](https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/tutorial-enable-servers-plan#enable-defender-for-servers-at-the-resource-level)
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/7f48400c-f3b4-175c-01c8-8814fb2c7f79.png)

この画面から、Defender for Servers のプランや設定を変更することができます。
MDE のみ利用であればプラン1 を選択すれば大丈夫です。

「設定と監視」では MDE を利用するための `Endpoint Protection` をオンにしてください。「マシンの脆弱性評価」も利用できるのでオンにするのがお勧めです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/3fb62194-7750-521e-86e3-78363d871577.png)

MDS を有効化後、しばらくすると仮想マシンに `MDE.Windows` という拡張機能がインストールされ、MDE にオンボーディングされます。このインストールが成功していれば準備完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/c199b427-ec50-3d95-1baa-620c0ab38ef7.png)

なお、MDE にオンボーディングされると、Defender XDR ポータルからデバイスを確認することもできます。下記 URL にアクセスしてみてください。
* Microsoft Defender XDR ポータル：https://security.microsoft.com

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/b29a0a51-2749-96ae-73e5-1bf9f626ff23.png)

## 2. アラート検知時に自動隔離する Logic Apps の作成
次に、Defender for Endpoint でアラート検知時にネットワークから自動隔離する Logic Apps を作成します。

:::note
Logic Apps にマネージド ID を付与し、マネージド ID に付与した権限で MDE の自動隔離を実施するのがお勧めです。こちらのブログで手順が紹介されていますので、ご参照ください。
* [Logic Apps の Defender for Endpoint コネクタでサービス プリンシパル・マネージド ID を使う](https://zenn.dev/microsoft/articles/ff652fdf3ba6a1)
:::

まずロジックアプリを作成します。特に要件がなければ、`消費` プランで作成して問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/e18c9fba-41e0-3c69-838c-e55406cf41f2.png)

次にロジックアプリのロジックアプリデザイナーで Azure 仮想マシンをネットワーク隔離するフローを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/14209b1d-2e10-5d0b-89f7-14084697e52a.png)

フローは以下のように作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/b87d3433-7698-9b52-d5ed-e204340e3760.png)

各フローを作成していきます。

1、空のロジックアプリを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/90c2cd76-d71d-d582-d7c3-78c13e24b116.png)

2、 wdatp (MDE の旧名称) で検索し、`新しい WDATP アラートが発生したときのトリガー` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/23ddb3e2-4bd1-6e8e-0dc8-5a7a075f7d32.png)

3、 MDE にアクセスできる権限のあるアカウントでサインインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/aaf2548c-946c-754c-8703-6bee62fc80f1.png)

4、 アクションの1つ目として、`単一のアラートの取得` を選択し、`動的なコンテンツのトリガー` から取得した アラート ID を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/ccd004d2-c0c4-0a2b-4988-548a0f779cd9.png)

5、 次のアクションとして `単一のマシンの取得` を選択し、`動的なコンテンツのトリガー` から取得したマシンID を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/cfbfe251-bea6-4ecc-f994-66a78e56d5fe.png)

6、 検知したアラートの条件を設定するため、`制御` から `条件` を選択し、条件を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/4cfb1083-51bc-339b-669c-afda291bfd83.png)

条件は自由に設定できますが、以下のようにしてみました。

+ `通知アラートの重大度` が **High**
+ `マシン OS のプラットフォーム` に **WindowsServer** が含まれている  
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/690e9cf3-5a1e-605b-f07f-e5a14cdc9b79.png)

7、 条件に合致する場合、マシンの分離を実施するフローを作成します。
マシンを分離してしまうと Azure 仮想マシンに RDP 接続できなくなるため、MDAV のフルスキャン、自動調査の実行、Teams への通知も追加してみます。

`マシンの分離` アクションを選択し、マシンコンピューターID を入力、分離の種類を Full とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/1eac17d1-6412-6483-f881-6a2692717c4f.png)

:::note
デバイスの分離に関する詳細な情報はこちらにまとまっています！
+ [Microsoft Defender for Endpoint(MDE) デバイス分離機能の解除ができない場合のトラブルシューティング](https://jp-sec.github.io/blog/Endpoint-MDAV-2023-05-02/)
:::

その他のアクションも必要なパラメーターを追加してセットアップして、保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/ae1e6270-e7ed-7384-ba31-528fd30f5834.png)

これでロジックアプリの設定は完了です。全体的なフローはこのようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/3144b9be-f5e3-c88e-2d0b-4c13a28df507.png)

## 3. 重要度高のアラートを発生させて動作確認
重要度高のアラートは、パスワードハッシュや Kerberosチケットの窃取などによく使われる mimikaz をダウンロードすることで検出できます。

:::note warn
本番環境で mimikatz のダウンロードするといろいろ大変なことが起きるかもしれないので、検証環境で実施をお勧めします。
:::

mimikatz は Github で公開されています。
https://github.com/ParrotSec/mimikatz

ダウンロードする際、SmartScreen 機能で警告が表示されますが、保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/4c0a3d28-6e33-1ab3-ffc0-44afbf57ad8a.png)

再度警告が表示されても保持します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/d19e3edf-dac4-1d14-ba58-d76317243d08.png)

するとダウンロードされ、MDAV でウイルス検知します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/e61649b3-a76a-2f1e-95de-c2d40fd0f090.png)

この操作が重要度高としてインシデントが生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/e3b77fde-54a4-f203-0c5d-bd699f578a75.png)

Defender for Endpoint でインシデントが生成されると、先ほど作成したロジックアプリが実行され、重要度高の場合かつ Windows Server OS の場合に、デバイスの隔離や MDAV のフルスキャンなどのアクションが実行されます。
ロジックアプリの実行履歴から確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/a0aede84-9132-c9cc-4631-0362e4bce402.png)

## 4. 隔離した Azure 仮想マシンの状態確認

Defender XDR ポータルからデバイスの詳細を確認すると、隔離状態やフルスキャンの実行日時を確認することが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/a8c765b2-291f-f313-0d30-169960b5b1ca.png)

また、自動調査と修復を実行した場合は、アクションセンターから調査結果を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/7c0fc398-be87-0efb-f570-88bd9cca5646.png)

ライブレスポンスを利用することで、隔離中の Azure 仮想マシンに対する調査も実施できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/120debcd-c40e-1525-f909-65d9be5530ce.png)

調査が終了したら隔離を解除して通常運用に戻すことで、迅速にインシデント対応ができるようになるかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/451626ba-2482-7497-4d9b-743fd954e50f.png)

## まとめ
Azure 仮想マシンでマルウェアなどのウイルス検知した際に、ロジックアプリを活用して MDE 機能でネットワークから自動隔離する方法を試してみました。
マルウェア感染したサーバーやエンドポイントから横移動される前に、ネットワークから隔離して調査や対策をすることで被害を最小限に抑えることにつながると思いますので、同じように試してみてください！