Defender for Cloud のアラート検出を検証 (シミュレーション) する！

# はじめに
Azure リソースのセキュリティ保護サービスは、Defender for Cloud が提供しています。Azure に構築したシステムのセキュリティ保護を検討する際に有用なサービスです。
本投稿では、Defender for Cloud で保護しているリソースでセキュリティ脅威検出できるかを確認する方法をまとめていきます！

# 1. Defender fo Cloud とは
Defender for Cloud は CNAPP (Cloud Native Application Protection Platform) に分類され、セキュリティ状態の可視化、脅威検出、セキュリティリスク軽減、そして自動化された修復ガイダンスをマルチクラウド環境 (Azure、AWS、GCP、オンプレ) に提供するプラットフォームです。

https://www.microsoft.com/ja-jp/security/business/security-101/what-is-cnapp?msockid=2e6e9350f09564dd0ddd808ef1ef6555

主要な機能は以下の 3 つですが、本投稿では CWPP で提供されるクラウドワークロード保護によるセキュリティアラート検出を試します。
+ セキュリティ態勢強化 (CSPM)
+ 脅威の検出と応答 (CWPP) 
+ DecOps セキュリティ (DevSecOps)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/bbf4f9a7-7bb5-1ff6-2af3-a38c892e6b34.png)

# 2. Defender for Cloud のワークロード保護
Defender for Cloud はクラウドサービスとして提供され、毎月多くの新機能やアップデートが提供されています。
本日時点では、下記のワークロード保護機能が提供されています。

|機能|Defenderプラン|解決される問題|
|--|--|--|
|サーバーを保護|Defender for Servers|Microsoft Defender for Endpoint によるサーバー保護や、Just-In-Time ネットワーク アクセス、ファイル整合性の監視、脆弱性評価などによる拡張保護を提供|
|ストレージ リソースに対する脅威を特定|Defender for Storage|高度な脅威検出機能と Microsoft Threat Intelligence データを使用して、ストレージ アカウントにアクセスまたは悪用しようとする有害な可能性のある異常な試みを検出|
|クラウド データベースを保護|Defender for SQL|Azure で最も一般的なデータベースの種類に対する攻撃検出と脅威対応を使用して、データベース資産全体を保護し、攻撃面とセキュリティ リスクに応じてデータベース エンジンとデータ型を保護|
|コンテナーを保護|Defender for Containers|環境の強化、脆弱性評価、実行時の保護を使用して、クラスター、コンテナー、アプリケーションのセキュリティを向上、監視、および維持できるように、コンテナーをセキュリティで保護|
|インフラストラクチャ サービスの分析情報|- Defender for App Service<br>- Defender for Key Vault<br>- Defender for Resource Manager<br>- Defender for DNS<br>|環境が攻撃の影響を受けやすくなる可能性があるアプリケーション インフラストラクチャの弱点を診断|


https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/defender-for-cloud-introduction#protect-cloud-workloads

# 3. Defender プランの有効化
Defender プランは、クラウドワークロードごとに保護プランが提供されています。各プランごとに 30 日間の無料評価期間が提供されます。
各 Defender プランで無料評価期間の実施有無を確認できます。価格の横の**プレゼントマーク**から確認可能です。評価期間の残り日数は**時計マーク**から残日数を確認できます。
利用したい Defende プランを **オン** にすると保護が開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/c06299af-e819-af3e-b63a-fc95d8485227.png)

Azure ポリシーによる有効化の強制も可能です。
**Microsoft Defender for Cloud プランを構成する** イニシアティブを管理グループやサブスクリプションに適用することで、Defender for Cloud プランの強制有効化を実施することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/658fc6a7-b2e2-1cd3-8af4-85464ff4860c.png)

# 4. クラウドワークロード保護で検出されるアラートリファレンス
Defender for Cloud のワークロード保護にて保護されるリソースで、不審な振る舞いやマルウェアなどを検出した際にセキュリティアラートを発砲します。
検出されたアラートは MITER ATT&CK Tactics にマッピングされており、該当アラートの攻撃フェーズも把握しやすいです。

各 Defender プランで保護されたリソースで検出可能なアラートリファレンスも公開されています。どのような脅威を検出できるのかイメージがつきやすくなりますので、ぜひご参照ください。

* Azure VM 拡張機能のアラート
* Windows マシンのアラート
* Linux マシンのアラート
* DNS のアラート
* Azure App Service のアラート
* Azure Storage のアラート
* SQL Database と Azure Synapse Analytics のアラート
* Azure Cosmos DB のアラート
* オープンソース リレーショナル データベースのアラート
* コンテナーのアラート - Kubernetes クラスター
* Resource Manager のアラート
* Azure Key Vault のアラート
* Azure ネットワーク レイヤーのアラート
* Azure DDoS Protection のアラート
* Defender for API のアラート
* AI ワークロードのアラート

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/alerts-reference#mitre-attck-tactics

# 5. セキュリティアラート検出を検証する
Defender プランで保護されるリソースのセキュリティアラート検証は下記に公開されていますので、いくつか試してみます。
Defender for Clouds のセキュリティ警告にアラートが表示されるまで少し時間がかかる (最大10分くらい?) ので、試してみる際は注意してください。

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/alert-validation

:::note warn
**注意!!**
本手順を実施したリソースでセキュリティアラートが検出されます。
本番環境ではなく、テスト環境での検証をお勧めします。
:::

## 5.1 Azure VM でセキュリティアラート検出
Azure VM でアラート検出する際は、下記の拡張機能がインストール済みを確認してください。
* MDE.Windows
* MDE.Linux

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/a5d344ff-8312-1084-ed6a-f34eb8bcad83.png)


### 5.1.1 Windows サーバーのセキュリティアラート検出
Windows サーバーで、コマンドプロンプトから下記コマンドを実行します。
```CMD
powershell.exe -NoExit -ExecutionPolicy Bypass -WindowStyle Hidden $ErrorActionPreference = 'silentlycontinue';(New-Object System.Net.WebClient).DownloadFile('http://127.0.0.1/1.exe', 'C:\\test-MDATP-test\\invoice.exe');Start-Process 'C:\\test-MDATP-test\\invoice.exe
```
Eicar ファイルのダウンロードによる検出も可能です。

```PowerShell
Invoke-WebRequest https://secure.eicar.org/eicar.com -OutFile eicar.com.txt
```

### 5.1.2 Linux サーバーのセキュリティアラート検出
Linux サーバーで、下記コマンドにより Eicar ファイルをダウンロードして検出します。

```
curl -O https://secure.eicar.org/eicar.com
```
上記コマンドでリアルタイム検出しない場合、下記のコマンドでもご確認ください。
```
wget https://secure.eicar.org/eicar.com
```

:::note warn
注意
Linux サーバーで MDE のリアルタイムスキャンが有効になっている必要があります。
下記のコマンドで、設定状態の確認やリアルタイムスキャンを有効化してください。

```shell
mdatp health
sudo mdatp config real-time-protection --value enabled
:::

## 5.2 Kubernetes のセキュリティアラート検出

Kubernetes クラスターワーカーノードと、Pod でのセキュリティアラートを検出できます。

### 5.2.1 ワーカーノードのセキュリティアラート検出
Kubesctl で下記コマンドを実行します。アラート検出まで30分ほどかかる場合があります。

```kubectl
kubectl get pods --namespace=asc-alerttest-662jfi039n
```

### 5.2.2 Pod のセキュリティアラート検出
アラート検出用のテスト Pod を展開し、操作をすることで検出できます。
詳細はこちらをご参照ください・・・。
https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/alert-validation#simulate-workload-alerts-k8snode_-prefix

## 5.3 ストレージアカウントのセキュリティアラート検出
Blob ストレージに配置されたファイルの SAS URL を生成し、TOR ブラウザからアクセスします。

ストレージアカウントから SAS URL の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/74cbef86-309e-a073-13bf-3fde9b0260d5.png)

Tor ブラウザから SAS URL に匿名 IP アドレスでアクセスすることでアラートが検出されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/96890bc0-a859-a870-98b6-0801b0bfd5b6.png)

## 5.4 App Service のセキュリティアラート検出
App Service URL エンドポイントに `/This_Will_Generate_ASC_Alert` を追加してアクセスします。

例) https://<App Service 名>.azurewebsites.net/This_Will_Generate_ASC_Alert

アクセスするとこのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/e5287e91-0943-b3e9-99a3-924daf51d862.png)

## 5.5 Key Vault、Azure Resource Manager のセキュリティアラート検出
Tor ブラウザを利用した匿名 IP アドレスから Azure ポータルにアクセスして Key Vault の操作をすることで、セキュリティアラートを検出します。

まず、Tor ブラウザから Azure ポータルにアクセスします。
次に Edgeなどの通常のブラウザから Key Vault のシークレットにアクセスし、その URL を Tor ブラウザに張り付けてアクセスします。

Defender for Resource Manager や Defender for Key Vault を有効化していると、セキュリティアラートが検出されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/4ac46ff5-a6f9-dcc1-6f9b-d321534b9d85.png)

## 5.6 Azure DNS のセキュリティアラート検出
Defender for DNS を利用することで、Azure DNS に接続されている Azure リソースの脅威検出を提供します。
例えば、Azure VM からフィッシングサイトで利用されるドメインへの名前解決を検出することができます。

Azure 上の Windows サーバーから、下記名前解決を実施してフィッシングドメインへの名前解決を検出します。
```cmd
resolve-DnsName kcp53.msupdate.us
Resolve-DnsName all.mainnet.ethdisco.net
Resolve-DnsName micros0ft.com
Resolve-DnsName 164e9408d12a701d91d206c6ab192994.info
```

Defender for DNS の攻撃シミュレーションについては、詳細が紹介あれたブログがございます。
https://techcommunity.microsoft.com/blog/microsoftdefendercloudblog/validating-microsoft-defender-for-dns-alerts/2227845

## 5.7 Defender for APIs のセキュリティアラート検出
Azure API Management を保護する Defender for API の攻撃シミュレーションについては、こちらのブログで詳細手順が紹介されています。
https://techcommunity.microsoft.com/blog/microsoftdefendercloudblog/validating-microsoft-defender-for-apis-alerts/3803874

## 5.8 検出したセキュリティアラート
これらの攻撃シミュレーションにより検出したセキュリティアラートは、Defender for Cloud の `セキュリティ警告` から確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/f5a27bba-5872-9cf7-6efb-855865e6f291.png)

# 6. セキュリティ警告の通知
Defender for Cloud で検出したセキュリティアラートはメール通知する機能が提供されています。
セキュリティオペレータのアラート疲れ対策として、以下の制限がされています。

* 重要度レベル高のアラートの場合は 6 時間ごとに最大 1 通のメール、
* 重要度レベル中のアラートの場合は 12 時間ごとに最大 1 通のメール
* 重要度レベル低のアラートの場合は 24 時間ごとに最大 1 通のメール

また、通知されるアラートは英語表示のため、アラート内容を理解するのに少し時間がかかるかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/86e6c068-c233-0ecc-44a3-8dcb96548e0c.png)

Azure Open AI に Defender for Cloud のアラートの要約や翻訳をして、メールや Teams に通知するテンプレートが Github で公開されています。

https://github.com/hisashin0728/Notify-MDC-CWP-MailTeams

こちらのテンプレートを利用することで、Azure と OA 環境のテナントが分かれていても、メールや Teams 通知が実現できますのでご活用ください！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/80bc918d-fbc8-af46-d58d-e27a52e20ed7.png)

こちらを活用することで、セキュリティアラート内容を把握しやすくなり、修復アクションも即時に対応できる内容で通知されます。
Defender for Cloud で検出したセキュリティアラートすべてがリアルタイムで処理されますので、上記の仕様による通知されないアラートもなくなります。

* メール通知のイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/9bb46cf0-8ee8-1864-78e3-42649129f874.png)

* Teams 通知イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981190/8de556ff-b0f7-52cb-8a3d-aea691739c4d.png)

# まとめ
Defender for Cloud では、多くのセキュリティアラートが定義されています。
本投稿で保護されていることを確認いただき、セキュリティアラート通知を実装して、円滑なアラート対応が仕組みを取り入れていただければと思います！