カスタム検出ルールを作成および管理する
適用対象:
- Microsoft Defender XDR
カスタム検出ルールは、 高度なハンティング クエリを使用して設計および調整できるルールです。 これらのルールを使用すると、侵害の疑いのあるアクティビティやエンドポイントの構成ミスなど、さまざまなイベントとシステムの状態を事前に監視できます。 一定の間隔で実行し、アラートを生成しながら一致するたびに応答アクションを実行するように設定できます。
カスタム検出を管理するのに必要なアクセス許可
重要
Microsoft では、アクセス許可が可能な限りで少ないロールを使用することをお勧めします。 これにより、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急時に限定する必要があります。
カスタム検出を管理するには、次の役割の割り当てのうちどれかが必要になります。
セキュリティ設定 (管理) - このMicrosoft Defender XDRアクセス許可を持つユーザーは、Microsoft Defender ポータルでセキュリティ設定を管理できます。
セキュリティ管理者 - このMicrosoft Entraロールを持つユーザーは、Microsoft Defender ポータルやその他のポータルやサービスでセキュリティ設定を管理できます。
セキュリティ オペレーター - このMicrosoft Entraロールを持つユーザーは、アラートを管理し、Microsoft Defender ポータルのすべての情報を含む、セキュリティ関連の機能へのグローバルな読み取り専用アクセス権を持つことができます。 このロールは、Microsoft Defender for Endpointでロールベースのアクセス制御 (RBAC) がオフになっている場合にのみ、カスタム検出を管理するのに十分です。 RBAC が構成されている場合は、Defender for Endpoint の [セキュリティ設定の管理] アクセス許可も必要です。
適切なアクセス許可がある場合は、特定のMicrosoft Defender XDR ソリューションのデータに適用されるカスタム検出を管理できます。 たとえば、Microsoft Defender for Office 365の管理アクセス許可しかない場合は、Email*
テーブルを使用してカスタム検出を作成できますが、テーブルIdentity*
作成することはできません。
同様に、IdentityLogonEvents
テーブルにはMicrosoft Defender for Cloud Appsと Defender for Identity の両方からの認証アクティビティ情報が保持されるため、両方のサービスの管理アクセス許可を持って、そのテーブルに対してクエリを実行するカスタム検出を管理する必要があります。
注:
カスタム検出を管理するには、RBAC が有効になっている場合、セキュリティオペレーターはMicrosoft Defender for Endpointの [セキュリティ設定の管理] アクセス許可を持っている必要があります。
必要なアクセス許可を管理するには、グローバル管理者は次のことができます。
ロール>セキュリティ管理者の下のMicrosoft 365 管理センターでセキュリティ管理者またはセキュリティ オペレーター ロールを割り当てます。
[設定>Permissions>Roles] で、Microsoft Defender XDRのMicrosoft Defender for Endpointの RBAC 設定を確認します。 対応するロールを選択して、 セキュリティ設定の管理 アクセス許可を割り当てます。
注:
ユーザーは、先に進む前に、作成または編集しているカスタム検出ルールの デバイス スコープ 内のデバイスに対する適切なアクセス許可を持っている必要もあります。 ユーザーがすべてのデバイスに対するアクセス許可を持っていない場合、すべてのデバイスで実行するようにスコープが設定されているカスタム検出ルールを編集することはできません。
カスタム検出ルールを作成する
1. クエリを準備する
Microsoft Defender ポータルで、[高度な検索] に移動し、既存のクエリを選択するか、新しいクエリを作成します。 新しいクエリを使用する場合は、クエリを実行してエラーを特定し、あり得る結果を想定します。
重要
サービスでアラートの数が多くなりすぎないように、各ルールの実行時に生成されるアラートは 100 個に制限されています。 ルールを作成する前に、クエリを調整して、通常の毎日のアクティビティに対してアラートが生成されないようにします。
クエリ結果に必要な列
カスタム検出ルールを作成するには、クエリで次の列を返す 必要があります。
-
Timestamp
- 生成されたアラートのタイムスタンプを設定するために使用されます -
ReportId
- 元のレコードの参照を有効にします - 特定のデバイス、ユーザー、またはメールボックスを識別する次のいずれかの列。
DeviceId
DeviceName
RemoteDeviceName
RecipientEmailAddress
-
SenderFromAddress
(封筒送信者または Return-Path アドレス) -
SenderMailFromAddress
(メール クライアントによって表示される送信者アドレス) RecipientObjectId
AccountObjectId
AccountSid
AccountUpn
InitiatingProcessAccountSid
InitiatingProcessAccountUpn
InitiatingProcessAccountObjectId
注:
高度なハンティング スキーマに新しいテーブルが追加されると、追加のエンティティのサポートが追加されます。
project
演算子や summarize
演算子を使用して結果をカスタマイズまたは集計しないクエリなどの単純なクエリは、通常、これらの一般的な列を返します。
より複雑なクエリがこれらの列を返すようにするには、さまざまな方法があります。 たとえば、DeviceId
などの列の下でエンティティを集計してカウントする場合でも、一意の各DeviceId
を含む最新のイベントから取得することで、Timestamp
とReportId
を返すことができます。
重要
Timestamp
列を使用してカスタム検出をフィルター処理しないようにします。 カスタム検出に使用されるデータは、検出頻度に基づいて事前にフィルター処理されます。
次のサンプル クエリでは、ウイルス対策検出を備えた一意のデバイス (DeviceId
) の数をカウントし、この数を使用して 5 つを超える検出を持つデバイスのみを検索します。 最新のTimestamp
と対応するReportId
を返すには、arg_max
関数で summarize
演算子を使用します。
DeviceEvents
| where ingestion_time() > ago(1d)
| where ActionType == "AntivirusDetection"
| summarize (Timestamp, ReportId)=arg_max(Timestamp, ReportId), count() by DeviceId
| where count_ > 5
ヒント
クエリのパフォーマンスを向上させるには、ルールの目的の実行頻度に一致する時間フィルターを設定します。 最も頻度の低い実行は 24 時間ごとに実行されるため、過去 1 日のフィルター処理はすべての新しいデータに対応します。
2. 新しいルールを作成し、アラートの詳細を指定する
クエリ エディターで [ 検出ルールの作成 ] を選択し、次のアラートの詳細を指定します。
- 検出名 - 検出規則の名前。一意である必要があります
- Frequency - クエリを実行してアクションを実行するための間隔。 ルールの頻度に関するセクションで、その他のガイダンスを参照してください
- アラート タイトル - ルールによってトリガーされたアラートと共に表示されるタイトル。は一意である必要があります。
- 重大度 - ルールによって識別されるコンポーネントまたはアクティビティの潜在的なリスク。
- カテゴリ - ルールによって識別される脅威コンポーネントまたはアクティビティ。
- MITRE ATT&CK 手法 - MITRE ATT&CK フレームワークに記載されているように、ルールによって識別される 1 つ以上の攻撃手法。 このセクションは、マルウェア、ランサムウェア、不審なアクティビティ、不要なソフトウェアなど、特定のアラート カテゴリでは非表示になります。
- 説明 - ルールによって識別されるコンポーネントまたはアクティビティの詳細。
- 推奨されるアクション - アラートに応答してレスポンダーが実行する可能性があるその他のアクション。
ルールの頻度
新しいルールを保存すると、過去 30 日間のデータの一致が実行されてチェックされます。 その後、ルールは一定の間隔で再度実行され、選択した頻度に基づいてルックバック期間が適用されます。
- 24 時間ごと - 過去 30 日間のデータを確認し、24 時間ごとに実行します。
- 12 時間ごと - 過去 48 時間のデータを確認して、12 時間ごとに実行します。
- 3 時間ごと - 過去 12 時間のデータを確認し、3 時間ごとに実行します。
- [1 時間ごと ] - 過去 4 時間のデータを確認して、1 時間ごとに実行します。
- 継続的 (NRT) - 継続的に実行され、ほぼリアルタイム (NRT) で収集および処理されるイベントからのデータを確認します。 「継続的 (NRT) 頻度」を参照してください。
ヒント
クエリ内の時間フィルターをルックバック期間と一致させます。 ルックバック期間外の結果は無視されます。
ルールを編集すると、設定した頻度に従ってスケジュールされた次の実行時に、適用する変更と一緒に実行されます。 ルールの頻度は、インジェスト時間ではなく、イベント タイムスタンプに基づいています。
連続 (NRT) 周波数
カスタム検出を継続的 (NRT) 頻度で実行するように設定すると、脅威をより迅速に特定するorganizationの能力を向上させることができます。 継続的 (NRT) 頻度の使用は、リソースの使用状況への影響を最小限に抑えるので、organization内の修飾されたカスタム検出ルールについて考慮する必要があります。
[カスタム検出ルール] ページでは、連続 (NRT) 頻度に合ったカスタム検出ルールを 1 つのボタンで移行できます。[今すぐ移行]
[移行] を選択すると、KQL クエリに従って互換性のあるすべてのルールの一覧が表示 されるようになりました 。 すべてのルールまたは選択したルールは、設定に従ってのみ移行できます。
[保存] をクリックすると、選択したルールの頻度が継続的 (NRT) 頻度に更新されます。
継続的に実行できるクエリ
クエリは、次の場合に限り継続的に実行できます。
- クエリは 1 つのテーブルのみを参照します。
- クエリでは、サポートされている KQL 演算子の一覧から演算子を使用します。 サポートされている KQL 機能
- クエリでは、結合、共用体、または
externaldata
演算子は使用されません。 - クエリにはコメント行/情報は含まれません。
継続的 (NRT) 頻度をサポートするテーブル
次の表では、ほぼリアルタイムの検出がサポートされています。
AlertEvidence
CloudAppEvents
DeviceEvents
DeviceFileCertificateInfo
DeviceFileEvents
DeviceImageLoadEvents
DeviceLogonEvents
DeviceNetworkEvents
DeviceNetworkInfo
DeviceInfo
DeviceProcessEvents
DeviceRegistryEvents
EmailAttachmentInfo
-
EmailEvents
(LatestDeliveryLocation
列とLatestDeliveryAction
列を除く) EmailPostDeliveryEvents
EmailUrlInfo
IdentityDirectoryEvents
IdentityLogonEvents
IdentityQueryEvents
UrlClickEvents
注:
継続的 (NRT) 頻度をサポートできるのは、一般公開されている列のみです。
3. 影響を受けたエンティティの選択
主な影響、影響を受けたエンティティを見つけるクエリ結果の列を特定します。 たとえば、クエリは送信者 (SenderFromAddress
または SenderMailFromAddress
) アドレスと受信者 (RecipientEmailAddress
) アドレスを返す場合があります。 これらの列の中で影響を受ける主なエンティティがある列を特定すると、サービスで関連するアラートの集計、インシデントの関連付け、応答アクションのターゲットができるようになります。
エンティティの種類 (メールボックス、ユーザー、またはデバイス) ごとに 1 つの列のみを選択できます。 クエリによって返すことができない列は選択できません。
4. アクションを指定する
カスタム検出ルールは、クエリによって返されるデバイス、ファイル、ユーザー、または電子メールに対して自動的にアクションを実行できます。
デバイスでのアクション
これらのアクションは、クエリ結果の列 DeviceId
にあるデバイスに適用されます。
- デバイスの分離 - Microsoft Defender for Endpointを使用して完全なネットワーク分離を適用し、デバイスがアプリケーションまたはサービスに接続できないようにします。 詳しくは、Microsoft Defender for Endpointマシンの分離に関するページをご覧ください。
- 調査パッケージの収集 - ZIP ファイル内のデバイス情報を収集します。 Microsoft Defender for Endpoint調査パッケージの詳細については、こちらをご覧ください。
- ウイルス対策スキャンの実行 - デバイスで完全なMicrosoft Defenderウイルス対策スキャンを実行します。
- 調査の開始 - デバイスの 自動調査 を開始します。
- アプリの実行を制限 する - Microsoft が発行した証明書で署名されたファイルのみを実行できるように、デバイスに制限を設定します。 Microsoft Defender for Endpointでのアプリの制限について詳しくは、こちらをご覧ください。
ファイルへのアクション
選択すると、[ 許可/ブロック] アクションをファイルに適用できます。 ファイルのブロックは、ファイルの 修復 アクセス許可があり、クエリ結果で SHA1 などのファイル ID が識別されている場合にのみ許可されます。 ファイルがブロックされると、すべてのデバイス内の同じファイルの他のインスタンスもブロックされます。 ブロックが適用されるデバイス グループは制御できますが、特定のデバイスには適用されません。
選択すると、クエリ結果の
SHA1
、InitiatingProcessSHA1
、SHA256
、またはInitiatingProcessSHA256
列内のファイルに対して [ファイルの検疫] アクションを適用できます。 このアクションでは、ファイルが現在ある場所から削除され、コピーが検疫に入ります。
ユーザーへのアクション
選択されると、ユーザーを侵害済みにする アクションをクエリ結果の
AccountObjectId
、InitiatingProcessAccountObjectId
、またはRecipientObjectId
列にあるユーザーに適用することができます。 このアクションにより、ユーザーのリスク レベルがMicrosoft Entra IDで "高" に設定され、対応する ID 保護ポリシーがトリガーされます。[ ユーザーを無効にする] を選択 すると、ユーザーが一時的にログインできなくなります。
[ パスワードのリセットを強制 する] を選択して、次のサインイン セッションでパスワードを変更するようにユーザーに求めます。
Disable user
とForce password reset
の両方のオプションには、ユーザー SID が必要です。これは、AccountSid
、InitiatingProcessAccountSid
、RequestAccountSid
、およびOnPremSid
の列にあります。
ユーザーアクションの詳細については、「Microsoft Defender for Identityの修復アクション」を参照してください。
メールに対するアクション
カスタム検出によってメール メッセージが生成される場合は、[ メールボックス フォルダーに移動 ] を選択して、選択したフォルダー ( 迷惑メール、 受信トレイ、または 削除済みアイテム のフォルダー) にメールを移動できます。 具体的には、[ 受信トレイ ] オプションを選択すると、検疫されたアイテム (たとえば、誤検知の場合) から電子メールの結果を移動できます。
または、[ メールの削除 ] を選択し、メールを削除済みアイテム (論理的な削除) に移動するか、選択したメールを完全に削除 (ハード削除) するかを選択できます。
電子メール メッセージにアクションを適用するには、クエリの出力結果に NetworkMessageId
列と RecipientEmailAddress
列が存在する必要があります。
5. ルールの範囲を設定する
範囲を設定してルールの対象となるデバイスを指定します。 この範囲で、デバイスをチェックするルールが影響されますが、メールボックスのみをチェックするルールやユーザー アカウントまたは ID のみをチェックするルールには影響はありません。
範囲を設定する場合は、次の項目を選択できます。
- すべてのデバイス
- 特定のデバイス グループ
スコープ内のデバイスからのデータのみがクエリされます。 また、これらのデバイスでのみアクションが実行されます。
注:
ユーザーは、ルールのスコープに含まれるデバイスに対応するアクセス許可を持っている場合にのみ、カスタム検出ルールを作成または編集できます。 たとえば、管理者は、すべてのデバイス グループに対するアクセス許可がある場合にのみ、すべてのデバイス グループを対象とするルールを作成または編集できます。
6. ルールを確認して有効にする
ルールを確認した後、[作成] を選択して保存します。 カスタム検出ルールが直ちに実行されます。 構成された頻度に基づいて再度実行され、一致の確認後アラートが生成されると応答アクションが実行されます。
重要
効率と有効性については、カスタム検出を定期的に確認する必要があります。 真のアラートをトリガーする検出を作成していることを確認するには、「既存のカスタム検出ルールを管理する」の手順に従って 、既存のカスタム検出を確認する時間がかかります。
カスタム検出によって生成された誤ったアラートがルールの特定のパラメーターを変更する必要があることを示す可能性があるため、カスタム検出の広さまたは特異性を制御します。
既存のカスタム検出ルールを管理する
既存のカスタム検出ルールの一覧を表示し、以前の実行をチェックし、トリガーされたアラートを確認できます。 必要に応じてルールを実行し、変更することもできます。
ヒント
カスタム検出によって発生したアラートは、アラートとインシデント API を介して使用できます。 詳細については、「サポートされているMicrosoft Defender XDR API」を参照してください。
既存のルールを表示する
既存のすべてのカスタム検出ルールを表示するには、[ ハンティング>カスタム検出ルール] に移動します。 ページには、次の実行情報を含むすべてのルールが一覧表示されます。
- 最終実行 - クエリの一致をチェックしてアラートを生成するルールが最後に実行されたとき
- 最終実行状態 - ルールが正常に実行されたかどうか
- 次の実行 - 次にスケジュールされた実行
- 状態 - ルールがオンまたはオフになっているかどうか
ルールの詳細の表示、ルールの変更、およびルールの実行
カスタム検出ルールに関する包括的な情報を表示するには、[ ハンティング>カスタム検出ルール ] に移動し、規則の名前を選択します。 その後、情報、実行状態、スコープなど、ルールに関する一般的な情報を表示できます。 このページには、トリガーされたアラートとアクションの一覧も表示されます。
また、このページからルールに対して次のアクションを実行することもできます。
- [実行 ] - ルールを直ちに実行します。 これにより、次の実行の間隔もリセットされます。
- [編集] - クエリを変更せずにルールを変更します。
- クエリの変更 - 高度な検索でクエリを編集します。
- オンにします / オフにする - ルールを有効にするか、実行を停止します。
- 削除 - ルールをオフにして削除します。
トリガーされたアラートを表示して管理する
ルールの詳細画面 (ハンティング>Custom 検出>[ルール名]) で、[ トリガーされたアラート] に移動します。ルールに一致して生成されたアラートが一覧表示されます。 アラートを選択して、アラートに関する詳細情報を表示し、次のアクションを実行します。
- 状態と分類 (true または false アラート) を設定してアラートを管理する
- アラートをインシデントにリンクする
- 高度な捜索でアラートをトリガーしたクエリを実行する
アクションを確認する
ルールの詳細画面 (ハンティング>Custom 検出>[ルール名]) で、[ トリガーされたアクション] に移動します。これにより、ルールへの一致に基づいて実行されたアクションが一覧表示されます。
ヒント
情報をすばやく表示し、テーブル内の項目に対してアクションを実行するには、テーブルの左側にある選択列 [✓] を使用します。
注:
この記事の一部の列は、Microsoft Defender for Endpointでは使用できない場合があります。 Microsoft Defender XDRをオンにして、より多くのデータ ソースを使用して脅威を探します。 高度なハンティング ワークフローをMicrosoft Defender for EndpointからMicrosoft Defender XDRに移動するには、「高度なハンティング クエリをMicrosoft Defender for Endpointから移行する」の手順に従います。
関連項目
- カスタム検出の概要
- 高度な追求の概要
- 高度な捜索のクエリ言語について学習する
- 高度なハンティング クエリをMicrosoft Defender for Endpointから移行する
- カスタム検出用の Microsoft Graph セキュリティ API
ヒント
さらに多くの情報を得るには、 Tech Community 内の Microsoft Security コミュニティにご参加ください: 「Microsoft Defender XDR Tech Community」。