Microsoft Defender for Endpoint プラグイン for Windows Subsystem for Linux (WSL) を試す

# 1. はじめに
私は WSL2 (Windows Subsystem for Linux 2) が大好きで、主に API の接続テストや Python スクリプトの開発環境に用いています。仮想環境でも特殊なツールなので、セキュリティはあまり考えていなかったのですが、ふと Microsoft のサイトを見ていたら WSL2 用に Microsoft Defender for Endpoint のプラグインが提供されていることを見つけました。
かなりマニアックな部類ですが、こちらを試してみたいと思います。

https://learn.microsoft.com/en-us/defender-endpoint/mde-plugin-wsl

# 2. 何ができるのか
- WSL2 で動かしている Linux での EDR 検知が出来るようになります
- EPP は残念ながら未対応のようです


# [参考] 事前調査 - 企業内でハンティングする
企業内に WSL を用いているユーザー、端末があるかどうかをハンティングクエリーで調査することが出来ます。

- 企業内で ``wsl.exe`` を実行したことがある端末の調査

```sql
DeviceProcessEvents
| where ActionType has "ProcessCreated"
| where ProcessVersionInfoOriginalFileName has "wsl.exe"
| where ProcessVersionInfoFileDescription has "Windows Subsystem for Linux"
| summarize by DeviceName
```

- 既に Windows PC に MDE プラグインをインストールしているかの調査

```sql
DeviceTvmSoftwareInventory
| where SoftwareName has "microsoft_defender_for_endpoint_plug-in_for_wsl"
| summarize by DeviceName
```

- 組み合わせ (WSLをインストールしているが MDE プラグインをインストールしていない端末のリスト）

```sql
let WSLDevices = DeviceProcessEvents
| where ActionType has "ProcessCreated"
| where ProcessVersionInfoOriginalFileName has "wsl.exe"
| where ProcessVersionInfoFileDescription has "Windows Subsystem for Linux"
| project DeviceName;
WSLDevices
    | join kind=leftanti (DeviceTvmSoftwareInventory
    | where SoftwareName has "microsoft_defender_for_endpoint_plug-in_for_wsl"
    | project DeviceName
) on DeviceName
| distinct DeviceName
```

# 4. 試してみる
## 4.1 インストール
WSL2 のインストールは Defender XDR の設定画面より、「エンドポイント」の「デバイス管理」からオンボード画面に出てきます。こちらの「Linux 用 Windows サブシステム 2 (プラグイン）」から、インストールパッケージのダウンロードが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/b6ed35a9-f88c-9f8e-e91d-93423ea7cbec.png)

インストールは WSL 内の Linux 環境ではなく、利用している Windows マシンにプラグインのモジュールをインストール形式です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/b0494d1d-442e-27f5-f705-3e9def19cdef.png)

インストールが完了すると、以下のディレクトリに WSL2 を監視する MDE のモジュールが作成されます。

- ``C:Program Files\Microsoft Defender for Endpoint Plug-in for WSL``
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/7e90510f-c8d6-2bec-8eea-b2a6affa0cf8.png)
- ``C:Program Data\Microsoft Defender for Endpoint Plug-in for WSL``
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/33aec493-d473-e17a-6c59-8dace9d0beb7.png)

## 4.2 動作確認
実際に WSL2 の Linux 側のエージェントが導入されてはいないので、MDE Linux の ``mdatp`` コマンドは使えません。ヘルスチェック用のコマンドとして、上記インストールフォルダの ``tools`` 内に ``healthcheck.exe`` が用意されています。
以下のような ``healthy`` ステータスになっていれば、Microsoft Defender for Endpoint プラグイン for WSL が正常に起動していることになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/97c85dcf-2900-95e1-f4dd-84831ada6732.png)

## 4.3 Defender XDR 側での見え方
Defender XDR 側では、デバイスのアセットとして WSL2 の Linux が表示されます。
- マシン名は、Windows デバイスと一緒
- タグに ``WSL2`` が自動付与（カスタマイズで変更も可能）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/d9f3163f-d8c3-9c08-7e2f-696fff836fe4.png)

デバイスの情報は以下のように表示されます。
IaaS の他マシンとは異なり、脆弱性やアセット情報（在庫）、セキュリティ推奨事項などは表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/d35a49a2-f73f-0543-ed79-3213a154706e.png)
タイムラインは Linux と同じように見ることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/db28ec81-cd92-7ae9-c0a1-be3786f94b00.png)
EDR による検知では、アラートとインシデントが作成され、XDR ポータルで確認することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/15195e09-947e-9f23-dde2-0311312b17bc.png)

## 4.4 EDR テスト方法
MDE Linux 用に提供されているスクリプトを用いて、疑似アラートが生成できます。

```bash
$ wget -o MdeLinuxEdrTest.zip https://aka.ms/LinuxDIY
$ unzip MdeLinuxEdrTest.zip
$ chmod +x ./mde_linux_edr_diy.sh
$ ./mde_linux_edr_diy.sh
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/1a333eb4-3c7f-5ccc-3dcb-02571a51f1e6.png)

なお、組み込み型の MDE ではないため、EPP (マルウェア保護）は対象外です。
EICAR ツールは普通にDLができてしまいますのでご注意ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/a4e59621-2b8b-fa98-277d-34207d218a5d.png)

# 5. まとめ
企業内で WSL2 を開発用として許可している場合に、WSL2 側で疑わしい試みを実施しているような逃げ道を検知する手段として使えるのではと思います。MDE を試している方でご興味がある方はぜひ試していただけたらと思います。

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。

# 6. 参考リンクなど

https://www.michalos.net/2024/06/25/keeping-an-eye-on-wsl-through-microsoft-defender-for-endpoint/