ぴろログ

Output Driven

Microsoft Defender ATP for Mac ( Advanced Hunting )で USB メモリ使用の検出・通知を試してみた

MicrosoftEDR ( Endpoint Detection and Response )サービスである Microsoft Defender Advanced Threat Protection ( MDATP )が気になっています。

EDR の機能ももちろんですが、 Advanced Hunting 機能を使うことでデバイス上でのユーザ操作も可視化できるようで、世の PC 操作ログ取得系ツールが一掃されるのではないかと思ってしまいます。

azuread.net

MDATPはあらかじめWindows 10のコンピューターでMDATPから提供されるスクリプトを実行すると、自動的にWindows 10コンピューターの操作ログを収集し、クラウド経由でその内容を参照できるというもので、・・・

対象が Mac でも同様のことができるのかを試してみたくなり「 Mac で USB メモリを利用したイベントを検出し、管理者へメール通知する」ところまでを確認しました。

なお、この検証は Microsoft 365 E5 ( M365 E5 )のライセンスを利用しており、事前準備として MDATP for Mac の構成を実施しています。こちらの公式ドキュメントを参考に進めました。(本記事では割愛)

M365 E5 を保有していない場合は 30 日間のトライアルが可能です。

Microsoft Defender ATP for Mac

MDATP は Windows 10 向けにスタートした EDR ソリューションで、 OS にネイティブに組み込まれエージェントレスで動作することが特長です。

www.microsoft.com

2019 年 に MDATP for Mac が正式リリースされ、 Mac もサポート対象となりました。( for Mac ではエージェントが必要です。)単なるアンチウイルス機能だけではなく、 EDR としてコンテキストベースでの脅威検出が可能とのこと。

techcommunity.microsoft.com

Advanced Hunting で USB メモリの利用を検出する

Advanced Hunting とは

こちらの記事から説明を抜粋します。

Windows Defender ATP Advanced Hunting の概要

これは、Windows Defender ATP テナント内の生データにフィルタリングせずにアクセスして、強力な検索機能とクエリ言語によってプロアクティブに脅威を検知する機能です。

※現在は Windows Defender ATP から Microsoft Defender ATP に名称が変わっています。

MDATP で収集したデータは Advanced hunting (高度な捜索)スキーマに最大 30 日間保存され、任意のクエリを書いて目的の情報を取得することができるようです。

Microsoft Threat Protection の高度な捜索スキーマのデータ テーブル - Microsoft 365 security

今回は検証していませんが、 MDATP 以外のサービスからもイベント情報を取得し、横断的な検索を行うことができます。

MDATP からデバイス上のイベントを、 Office 365 ATP から Eメール関連のイベントを、 Microsoft Cloud App Security + Azure ATP から ID やアプリ(クラウドサービス)関連のイベントを収集して「いま何が起きているのか網羅的に、リアルタイムで調査する」というコンセプトのようです。他のベンダーではなかなか真似できないカバー領域だなと思いました!!

de:code2020 で Microsoft Threat Protection の説明を聞きながらワクワクしていました。

www.microsoft.com

記事作成時点(2020/07/07)で、デバイス関連の情報は以下のテーブルに格納されています。

高度な捜索のスキーマ リファレンス - Windows security | Microsoft Docs

テーブル名 説明
DeviceAlertEvents Microsoft Defender セキュリティセンターの警告
DeviceInfo OS 情報を含むデバイス情報
DeviceNetworkInfo アダプター、IP アドレス、MAC アドレス、接続されているネットワーク、ドメインなど、デバイスのネットワークプロパティ
DeviceProcessEvents プロセスの作成と関連イベント
DeviceNetworkEvents ネットワーク接続と関連イベント
DeviceFileEvents ファイルの作成、変更、その他のファイルシステムイベント
DeviceRegistryEvents レジストリエントリの作成と変更
DeviceLogonEvents サインインとその他の認証イベント
DeviceImageLoadEvents DLL 読み込みイベント
DeviceEvents Microsoft Defender ウイルス対策および exploit protection などのセキュリティコントロールによってトリガーされるイベントを含む、複数のイベントの種類
DeviceFileCertificateInfo エンドポイントの証明書確認イベントから取得された署名済みファイルの証明書情報
DeviceTvmSoftwareInventoryVulnerabilities バイスのソフトウェアのインベントリ、およびこれらのソフトウェア製品の既知の脆弱性
DeviceTvmSoftwareVulnerabilitiesKB 公開された脆弱性の技術ベース (エクスプロイトコードが公開されているかどうかなど)
DeviceTvmSecureConfigurationAssessment 脅威・脆弱性管理評価イベント。デバイス上のさまざまなセキュリティ構成の状態を示す
DeviceTvmSecureConfigurationAssessmentKB 脅威・ 脆弱性管理によって使用されるさまざまなセキュリティ構成の知識ベースで、デバイスの評価を行う

こちらの記事によると USB デバイスのマウントは DeviceEvents ( ActionType = UsbDriveMount )に記録されるようなのですが、Mac ではうまくいかなかったので、今回は DevicePricessEvents から Volume ( USB メモリ)のマウントやファイルのコピー操作を抽出しました。

クエリの書き方

対象のデータを Kusto クエリ言語を使って抽出します。

https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/query/

Kusto クエリは、データを処理して結果を返すための、読み取り専用の要求です。 要求は、構文を読みやすく、作りやすく、自動化しやすくするように設計されたデータフロー モデルを利用してプレーンテキストで述べられます。 クエリでは、データベース、テーブル、列など、SQL に似た階層に編成されたスキーマ エンティティが使用されます。

SQL との紐付けという切り口で見ていくとわかりやすかったです。

docs.microsoft.com

実行結果

MDATP for Mac をインストールした Mac で以下の操作を行いました。

  • UEB メモリの接続( 自動でマウント )
  • ターミナルを起動し、デスクトップにあるファイルを USB メモリへコピー
    • cp Desktop/leak.txt /Volumes/TEST-USB/leak.txt

( 本当はドラッグ & ドロップでの書き出し操作を抽出したかったのですが、私の理解不足でうまくできなかったのでいったん諦め... )

まずは操作した時間帯に絞ってデータを抽出し、無関係なプロセスを除外していきながら、上記操作のプロセスを探しました。

なお、このときは実際の操作からダッシュボード上でデータが表示されるまでに約 20 分かかりました。

f:id:pirox07:20200706224553p:plain

表示される Process tree (画面右)で、 cp コマンドの Command line に対象のファイル名( leak.txt )が記録されていることを確認しました。

メール通知

次に「 USB メモリの利用イベントをメールで通知」するために、以下の設定を行いました。

  • カスタム検出ルールの作成
  • 通知の構成

カスタム検出ルールの作成

Advanced Hunting では、独自に作成したクエリ( Custom detection )を定期的に自動実行し、任意のイベントを検出することができます。

Microsoft Defender ATP でカスタム検出ルールを作成して管理する - Windows security | Microsoft Docs

少し範囲が大きくなりますが、今回は以下のクエリをカスタム検出ルールとして設定しました。

DeviceProcessEvents
// クエリ実行から 2h 以内のイベントが対象
| where Timestamp > ago(2h)
// ProcessCommandLine に文字列 "/Volume" を含む
| where ProcessCommandLine contains "/Volume"
| sort by Timestamp asc

Create detection rule をクリックして設定していきます。

f:id:pirox07:20200706225712p:plain

最初に Alert details を設定します。

  • Frequency : 実行周期 / 1 時間、 3 時間、 12 時間、 24 時間から選択
  • Severity : 重大度 / High 、 Middle、Low 、informational から選択

Frequency は、選択した時間ごとに確認対象のデータ( 時間帯 )が異なります。

  • 24 時間ごと: 過去30日間のデータを確認して24時間ごとに実行されます。

  • 12 時間ごと: 過去24時間以内にデータをチェックし、12時間ごとに実行されます。

  • 3 時間ごと: 3 時間ごとに実行され、過去6時間のデータがチェックされます。

  • 1 時間ごとに実行され、過去2時間のデータを確認します。

今回は 1 時間毎の実行( Every hour )、アラートの重大度は informational としました。その他項目も適当に選択・入力します。

f:id:pirox07:20200706230151p:plain

次に Actions で検出時の自動対応を指定します。

f:id:pirox07:20200706230721p:plain

これらのアクションは DeviceId 、クエリ結果の列のデバイスに適用されます。

  • [デバイスの分離]: 完全なネットワーク分離を適用し、MICROSOFT Defender ATP サービスを除き、デバイスがどのアプリケーションまたはサービスにも接続できないようにします。

  • 収集調査パッケージ: ZIP ファイル内のデバイス情報を収集します。 調査パッケージについて、詳細はこちらをご覧ください

  • ウイルス対策スキャンの実行—デバイスMicrosoft Defender ウイルス対策スキャンを実行します。 開始調査: デバイスでの自動調査を開始します。

攻撃の検出の場合は Isolate device でネットワークから切り離すように設定したくなりますね。( Mac でも有効なのかな?? )

今回は特に設定せず進めます。

最後に設定内容を確認して完了です。

アラート通知

Settings - General - Alert notifications で、アラート通知を設定します。

設定画面を確認したかぎり「 Device Group」と「 Severity 」の組み合わせをアラートの条件に指定できるようです。今回は Device Group を作成していないため、対象が all devices となっています。作成したカスタム検出ルールにあわせて、 対象の Severity は Infomational としました。

次に通知先のメールアドレスを登録して完了です。( 到達性を確認するためのテスト送信も可能です。)

f:id:pirox07:20200706234622p:plain

実行結果

カスタム検出の実行状況は、 Settings - Rules - Custom detections で確認できます。

f:id:pirox07:20200706234922p:plain

再度 Mac へ USB メモリへのファイルコピー操作を行い、検出されるのを待ちます。

検出されると、 URL 付きのメールが送信されます。

f:id:pirox07:20200707194933p:plain

Alert Page では、対象アラートの詳細が確認できます。時系列( Process tree )の確認や、対応する者のアサインや過検知として処理する等のインシデント管理も行えます。

f:id:pirox07:20200706235329p:plain

docs.microsoft.com

Incident Pageでもインシデント管理が行えます。(こちらがメインの画面で、同じ情報を Alert Page にも表示させている気がします。)

f:id:pirox07:20200707102538p:plain

docs.microsoft.com

Graph 機能で関連プロセスが図として描画されるのですが、ウネウネ動いてなんだかテンションあがったので GIF で。まだ beta 版だからなのか、ロードに時間がかかります。

f:id:pirox07:20200707005651g:plain

まとめ

  • MDATP for Mac で、 Mac 上のプロセス情報を取得できることを確認した
  • Advanced Hunting で USB メモリへのデータ書き出し操作を検知できた

MDATP 、先日 Linux をサポートしたと思ったら、今度は for Andoroid のパブリックプレビューを開始、 for iOS も 2020 年中にパブリックプレビューを計画中、と対象プラットフォームを着々と拡大しています。

techcommunity.microsoft.com

blogs.windows.com

Windows 以外のデバイスでも MDATP でデバイスの信頼( Trust )が検証でき、 Azure AD のリスクベースの条件付きアクセス等の機能とも連携してくれるようになると嬉しいです!!

参考情報


【Microsoft Digital Trust Summit 2019】もうセキュリティはやりたくない!! 第 4 弾​~ Microsoft Defender ATP Deep Dive ~


Advanced hunting in Microsoft Defender ATP