Microsoft の EDR ( Endpoint Detection and Response )サービスである Microsoft Defender Advanced Threat Protection ( MDATP )が気になっています。
EDR の機能ももちろんですが、 Advanced Hunting 機能を使うことでデバイス上でのユーザ操作も可視化できるようで、世の PC 操作ログ取得系ツールが一掃されるのではないかと思ってしまいます。
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 にネイティブに組み込まれエージェントレスで動作することが特長です。
2019 年 に MDATP for Mac が正式リリースされ、 Mac もサポート対象となりました。( for Mac ではエージェントが必要です。)単なるアンチウイルス機能だけではなく、 EDR としてコンテキストベースでの脅威検出が可能とのこと。
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 の説明を聞きながらワクワクしていました。
記事作成時点(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 との紐付けという切り口で見ていくとわかりやすかったです。
実行結果
MDATP for Mac をインストールした Mac で以下の操作を行いました。
- UEB メモリの接続( 自動でマウント )
- ターミナルを起動し、デスクトップにあるファイルを USB メモリへコピー
cp Desktop/leak.txt /Volumes/TEST-USB/leak.txt
( 本当はドラッグ & ドロップでの書き出し操作を抽出したかったのですが、私の理解不足でうまくできなかったのでいったん諦め... )
まずは操作した時間帯に絞ってデータを抽出し、無関係なプロセスを除外していきながら、上記操作のプロセスを探しました。
なお、このときは実際の操作からダッシュボード上でデータが表示されるまでに約 20 分かかりました。
表示される 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 をクリックして設定していきます。
最初に 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
としました。その他項目も適当に選択・入力します。
次に Actions で検出時の自動対応を指定します。
これらのアクションは DeviceId 、クエリ結果の列のデバイスに適用されます。
攻撃の検出の場合は Isolate device
でネットワークから切り離すように設定したくなりますね。( Mac でも有効なのかな?? )
今回は特に設定せず進めます。
最後に設定内容を確認して完了です。
アラート通知
Settings - General - Alert notifications で、アラート通知を設定します。
設定画面を確認したかぎり「 Device Group」と「 Severity 」の組み合わせをアラートの条件に指定できるようです。今回は Device Group を作成していないため、対象が all devices
となっています。作成したカスタム検出ルールにあわせて、 対象の Severity は Infomational
としました。
次に通知先のメールアドレスを登録して完了です。( 到達性を確認するためのテスト送信も可能です。)
実行結果
カスタム検出の実行状況は、 Settings - Rules - Custom detections で確認できます。
再度 Mac へ USB メモリへのファイルコピー操作を行い、検出されるのを待ちます。
検出されると、 URL 付きのメールが送信されます。
Alert Page では、対象アラートの詳細が確認できます。時系列( Process tree )の確認や、対応する者のアサインや過検知として処理する等のインシデント管理も行えます。
Incident Pageでもインシデント管理が行えます。(こちらがメインの画面で、同じ情報を Alert Page にも表示させている気がします。)
Graph 機能で関連プロセスが図として描画されるのですが、ウネウネ動いてなんだかテンションあがったので GIF で。まだ beta 版だからなのか、ロードに時間がかかります。
まとめ
MDATP 、先日 Linux をサポートしたと思ったら、今度は for Andoroid のパブリックプレビューを開始、 for iOS も 2020 年中にパブリックプレビューを計画中、と対象プラットフォームを着々と拡大しています。
Windows 以外のデバイスでも MDATP でデバイスの信頼( Trust )が検証でき、 Azure AD のリスクベースの条件付きアクセス等の機能とも連携してくれるようになると嬉しいです!!
参考情報
【Microsoft Digital Trust Summit 2019】もうセキュリティはやりたくない!! 第 4 弾~ Microsoft Defender ATP Deep Dive ~