QRadar 検出ルールを Microsoft Sentinel に移行する

この記事では、QRadar 検出ルールを特定し、比較し、Microsoft Sentinel 組み込みルールに移行する方法について説明します。

ルールを特定して移行する

Microsoft Sentinel では、機械学習分析を使用して忠実で実用的なインシデントを作成します。既存の検出の一部は Microsoft Sentinel で冗長になる場合があります。 そのため、検出ルールと分析ルールをすべて無条件に移行しないようにしてください。 既存の検出ルールを特定するときに、これらの考慮事項を確認します。

  • ビジネスの優先度と効率を考慮して、ルールの移行を正当化するユース ケースを選択してください。
  • Microsoft Sentinel ルールの種類を理解していることを確認します。
  • ルールの用語を理解していることを確認します。
  • 過去 6 ~ 12 か月以内にアラートをトリガーしていないルールを確認し、それでも関連性があるかどうかを判断します。
  • 日常的に無視する低レベルの脅威やアラートを排除します。
  • 既存の機能を使用し、Microsoft Sentinel の組み込み分析ルールが現在のユース ケースに対応できるかどうかを確認します。 Microsoft Sentinel では機械学習分析を使用して、忠実性が高く実用的なインシデントが生成されるため、既存の検出の一部が不要になる可能性があります。
  • 接続されているデータ ソースと、データ接続方法を確認します。 データ収集の会話を見直して、検出を予定しているユース ケース全体のデータの深さと幅を確認します。
  • SOC Prime Threat Detection Marketplace などのコミュニティ リソースを調べて、ご自身のルールが使用可能かどうかを確認します。
  • Uncoder.io などのオンライン クエリ コンバーターがご自身のルールで機能するかどうかを検討します。
  • ルールが使用できない場合、または変換できない場合は、KQL クエリを使用して手動で作成する必要があります。 ルール マッピングを確認して新しいクエリを作成します。

検出ルールを移行するためのベスト プラクティスの詳細を参照してください。

Microsoft Sentinel に分析ルールを移行するには、次のようにします

  1. 移行するルールごとにテスト システムが配置されていることを確認します。

    1. 完全なテスト シナリオとスクリプトを含めて、移行したルールの検証プロセスを準備します

    2. 移行したルールをテストするのに役立つリソースがチームにあることを確認します

    3. 必要なデータ ソースが接続されていることを確認し、データ接続方法を確認します。

  2. Microsoft Sentinel で組み込みテンプレートとして検出が利用可能かどうかを確認します。

    • 組み込みのルールが十分な場合は、組み込みのルール テンプレートを使用して、独自のワークスペースのルールを作成します。

      Microsoft Sentinel で、[構成] > [分析] > [ルール テンプレート] タブにアクセスし、関連する各分析ルールを作成および更新します。

      詳細については、「難しい設定なしで脅威を検出する」を参照してください。

    • Microsoft Sentinel の組み込みルールでカバーされていない検出がある場合はUncoder.io などのオンライン クエリ コンバーターを使用してクエリを KQL に変換してください。

      トリガーの条件とルール アクションを特定し、KQL クエリを構築して確認します。

    • 組み込みのルールもオンライン ルール コンバーターも十分でない場合は、ルールを手動で作成する必要があります。 このような場合は、次の手順を使用してルールの作成を開始します。

      1. ルールで使用するデータ ソースを特定します。 Microsoft Sentinel でデータ ソースとデータ テーブルの間にマッピング テーブルを作成し、クエリを実行するテーブルを特定します。

      2. ルールで使用するデータの属性、フィールド、またはエンティティを特定します

      3. ルールの条件とロジックを特定します。 この段階で、KQL クエリを作成する方法のサンプルとしてルール テンプレートを使用することができます。

        フィルター、相関関係ルール、アクティブ リスト、参照セット、ウォッチリスト、検出の異常、集計などを検討してください。 レガシ SIEM から提供されている参照を使用して、クエリ構文を最適にマップする方法を理解することができます。

      4. トリガーの条件とルール アクションを特定し、KQL クエリを構築して確認します。 クエリを確認するときは、KQL の最適化に関するガイダンス リソースを検討してください。

  3. 関連する各ユース ケースでルールをテストします。 期待される結果が得られない場合は、KQL を確認し、もう一度テストすることをお勧めします。

  4. 問題がなければ、移行されたルールを検討できます。 必要に応じて、ルール アクションのプレイブックを作成します。 詳細については、「Microsoft Sentinel のプレイブックを使用して脅威への対応を自動化する」を参照してください。

分析ルールの詳細について、以下を確認してください。

ルールの用語を比較する

この表は、QRadar と比較して Microsoft Sentinel のルールの概念を明確にするのに役立ちます。

QRadar Microsoft Sentinel
規則の種類 • イベント
• フロー
• 共通
• 攻撃
• 異常検出ルール
• スケジュール済みクエリ
• フュージョン
• Microsoft セキュリティ
• 機械学習 (ML) による行動分析
条件 テスト条件で定義する KQL で定義する
トリガーの条件 ルールで定義する しきい値: クエリ結果の数
操作 • 攻撃を作成する
• 新しいイベントをディスパッチする
• 参照セットまたはデータに追加する
• その他
• アラートまたはインシデントを作成する
• Logic Apps と統合する

ルール サンプルをマップおよび比較する

これらのサンプルを使用して、さまざまなシナリオで QRadar のルールを比較し、Microsoft Sentinel にマップします。

ルール 構文 サンプル検出ルール (QRadar) サンプル KQL クエリ リソース
共通プロパティ テスト QRadar 構文 正規表現の例
AQL フィルター クエリの例
equals/not equals の例
正規表現の例
AQL フィルター クエリの例
equals/not equals の例
• 正規表現: RegEx と一致する
• AQL フィルター クエリ: 文字列演算子
• equals/not equals: 文字列演算子
日付/時刻テスト QRadar 構文 選択した日付の例
選択した曜日の例
after/before/at の例
選択した日付の例
選択した曜日の例
after/before/at の例
日付と日時の演算子
• 選択した日付: dayofmonth()
• 選択した曜日: dayofweek()
• after/before/at: format_datetime()
イベント プロパティ テスト QRadar 構文 IP プロトコルの例
イベント ペイロード文字列の例
IP プロトコルの例
イベント ペイロード文字列の例
• IP プロトコル: 文字列演算子
• イベント ペイロード文字列: has
関数: カウンター QRadar 構文 イベント プロパティと時刻の例 イベント プロパティと時刻の例 summarize
関数: 負の条件 QRadar 構文 負の条件の例 負の条件の例 join()
文字列演算子
数値演算子
関数: 単純 QRadar 構文 単純な条件の例 単純な条件の例 or
IP/ポート テスト QRadar 構文 ソース ポートの例
ソース IP の例
ソース ポートの例
ソース IP の例
ログ ソース テスト QRadar 構文 ログ ソースの例 ログ ソースの例

共通プロパティ テスト構文

共通プロパティ テスト ルールの QRadar 構文を次に示します。

共通プロパティ テスト ルールの構文を示す図。

共通プロパティ テスト: 正規表現の例 (QRadar)

正規表現を使用するサンプルの QRadar 共通プロパティ テスト ルールの構文を次に示します。

when any of <these properties> match <this regular expression>

QRadar のサンプル ルールを次に示します。

正規表現を使用する共通プロパティ テスト ルールを示す図。

共通プロパティ テスト: 正規表現の例 (KQL)

KQL の正規表現を使用した共通プロパティ テスト ルールを次に示します。

CommonSecurityLog
| where tostring(SourcePort) matches regex @"\d{1,5}" or tostring(DestinationPort) matches regex @"\d{1,5}"

共通プロパティ テスト: AQL フィルター クエリの例 (QRadar)

AQL フィルター クエリを使用するサンプルの QRadar 共通プロパティ テスト ルールの構文を次に示します。

when the event matches <this> AQL filter query

QRadar のサンプル ルールを次に示します。

AQL フィルター クエリを使用する共通プロパティ テスト ルールを示す図。

共通プロパティ テスト: AQL フィルター クエリの例 (KQL)

KQLの AQL フィルター クエリを使用した共通プロパティ テスト ルールを次に示します。

CommonSecurityLog
| where SourceIP == '10.1.1.10'

共通プロパティ テスト: equals/not equals の例 (QRadar)

equals または not equals 演算子を使用するサンプルの QRadar 共通プロパティ テスト ルールの構文を次に示します。

and when <this property> <equals/not equals> <this property>

QRadar のサンプル ルールを次に示します。

equals/not equals を使用する共通プロパティ テスト ルールを示す図。

共通プロパティ テスト: equals/not equals の例 (KQL)

KQLの equals または not equals 演算子を含む共通プロパティ テスト ルールを次に示します。

CommonSecurityLog
| where SourceIP == DestinationIP

日付/時刻テストの構文

日付/時刻テスト ルールの QRadar 構文を次に示します。

日付/時刻テスト ルールの構文を示す図。

日付/時刻テスト: 選択した日付の例 (QRadar)

選択した日付を使用するサンプル QRadar 日付/時刻テスト ルールの構文を次に示します。

and when the event(s) occur <on/after/before> the <selected> day of the month

QRadar のサンプル ルールを次に示します。

選択された日を使用する日付/時刻テスト ルールを示す図。

日付/時刻テスト: 選択した日付の例 (KQL)

KQL で選択した日付を含む日付/時刻テスト ルールを次に示します。

SecurityEvent
 | where dayofmonth(TimeGenerated) < 4

日付/時刻テスト: 選択した曜日の例 (QRadar)

選択した曜日を使用するサンプル QRadar 日付/時刻テスト ルールの構文を次に示します。

and when the event(s) occur on any of <these days of the week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}>

QRadar のサンプル ルールを次に示します。

選択された曜日を使用する日付/時刻テスト ルールを示す図。

日付/時刻テスト: 選択した曜日の例 (KQL)

KQL で選択した曜日を含む日付/時刻テスト ルールを次に示します。

SecurityEvent
 | where dayofweek(TimeGenerated) between (3d .. 5d)

日付/時刻テスト: after/before/at の例 (QRadar)

afterbefore、または at 演算子を使用するサンプルの QRadar 共通プロパティ テスト ルールの構文を次に示します。

and when the event(s) occur <after/before/at> <this time{12.00AM, 12.05AM, ...11.50PM, 11.55PM}>

QRadar のサンプル ルールを次に示します。

after/before/at 演算子を使用する日付/時刻テスト ルールを示す図。

日付/時刻テスト: after/before/at の例 (KQL)

KQL で、afterbefore、または at 演算子を使用する日付/時刻テスト ルールを次に示します。

SecurityEvent
| where format_datetime(TimeGenerated,'HH:mm')=="23:55"

TimeGenerated は UTC/GMT です。

共通プロパティ テスト構文

イベント プロパティ テスト ルールの QRadar 構文を次に示します。

イベント プロパティ テスト ルールの構文を示す図。

イベント プロパティ テスト: IP プロトコルの例 (QRadar)

IP プロトコルを使用するサンプル QRadar イベント プロパティ テスト ルールの構文を次に示します。

and when the IP protocol is one of the following <protocols>

QRadar のサンプル ルールを次に示します。

IP プロトコルを使用するイベント プロパティ テスト ルールを示す図。

イベント プロパティ テスト: IP プロトコルの例 (KQL)

CommonSecurityLog
| where Protocol in ("UDP","ICMP")

イベント プロパティ テスト: イベント ペイロード文字列の例 (QRadar)

Event Payload 文字列値を使用するサンプル QRadar イベント プロパティ テスト ルールの構文を次に示します。

and when the Event Payload contains <this string>

QRadar のサンプル ルールを次に示します。

イベント ペイロード文字列を使用するイベント プロパティ テスト ルールを示す図。

イベント プロパティ テスト: イベント ペイロード文字列の例 (KQL)

CommonSecurityLog
| where DeviceVendor has "Palo Alto"

search "Palo Alto"

パフォーマンスを最適化する際、テーブル名を既に把握している場合は、search コマンドを使用しないでください。

関数: カウンター構文

カウンターを使用する関数ルールの QRadar 構文を次に示します。

カウンターを使用する関数ルールの構文を示す図。

カウンター: イベント プロパティと時刻の例 (QRadar)

定義された数のイベント プロパティを定義された分数で使用するサンプル QRadar 関数ルールの構文を次に示します。

and when at least <this many> events are seen with the same <event properties> in <this many> <minutes>

QRadar のサンプル ルールを次に示します。

イベント プロパティを使用する関数ルールを示す図。

カウンター: イベント プロパティと時刻の例 (KQL)

CommonSecurityLog
| summarize Count = count() by SourceIP, DestinationIP
| where Count >= 5

関数: 負の条件の構文

負の条件を使用する関数ルールの QRadar 構文を次に示します。

負の条件を使用する関数ルールの構文を示す図。

負の条件の例 (QRadar)

負の条件を使用するサンプル QRadar 関数ルールの構文を次に示します。

and when none of <these rules> match in <this many> <minutes> after <these rules> match with the same <event properties>

QRadar で定義されている 2 つのルールを次に示します。 負の条件は、これらのルールに基づいています。

負の条件ルールに使用されるイベント プロパティ テスト ルールを示す図。

負の条件ルールに使用される共通プロパティ テスト ルールを示す図。

上記のルールに基づく負の条件ルールのサンプルを次に示します。

負の条件を使用する関数ルールを示す図。

負の条件の例 (KQL)

let spanoftime = 10m;
let Test2 = (
CommonSecurityLog
| where Protocol !in ("UDP","ICMP")
| where TimeGenerated > ago(spanoftime)
);
let Test6 = (
CommonSecurityLog
| where SourceIP == DestinationIP
);
Test2
| join kind=rightanti Test6 on $left. SourceIP == $right. SourceIP and $left. Protocol ==$right. Protocol

関数: 単純な条件の構文

単純な条件を使用する関数ルールの QRadar 構文を次に示します。

単純な条件を使用する関数ルールの構文を示す図。

単純条件の例 (QRadar)

単純な条件を使用するサンプル QRadar 関数ルールの構文を次に示します。

and when an event matches <any|all> of the following <rules>

QRadar のサンプル ルールを次に示します。

単純な条件を使用する関数ルールを示す図。

単純条件の例 (KQL)

CommonSecurityLog
| where Protocol !in ("UDP","ICMP") or SourceIP == DestinationIP

IP/ポート テストの構文

IP/ポート テスト ルールの QRadar 構文を次に示します。

IP/ポート テスト ルールの構文を示す図。

IP/ポート テスト: ソース ポートの例 (QRadar)

ソース ポートを指定するサンプル QRadar ルールの構文を次に示します。

and when the source port is one of the following <ports>

QRadar のサンプル ルールを次に示します。

ソース ポートを指定するルールを示す図。

IP/ポート テスト: ソース ポートの例 (KQL)

CommonSecurityLog
| where SourcePort == 20

IP/ポート テスト: ソース IP の例 (QRadar)

ソース IP を指定するサンプル QRadar ルールの構文を次に示します。

and when the source IP is one of the following <IP addresses>

QRadar のサンプル ルールを次に示します。

ソース IP アドレスを指定するルールを示す図。

IP/ポート テスト: ソース IP の例 (KQL)

CommonSecurityLog
| where SourceIP in (“10.1.1.1”,”10.2.2.2”)

ログ ソース テストの構文

ログ ソース テスト ルールの QRadar 構文を次に示します。

ログ ソース テスト ルールの構文を示す図。

ログ ソースの例 (QRadar)

ログ ソースを指定するサンプル QRadar ルールの構文を次に示します。

and when the event(s) were detected by one or more of these <log source types>

QRadar のサンプル ルールを次に示します。

ログ ソースを指定するルールを示す図。

ログ ソースの例 (KQL)

OfficeActivity
| where OfficeWorkload == "Exchange"

次のステップ

この記事では、QRadar から Microsoft Sentinel に移行ルールをマップする方法について説明しました。