Microsoft Sentinel での脅威のハンティング

セキュリティ アナリストや調査担当者は、セキュリティ上の脅威を事前に探したいと考えていますが、さまざまなシステムやセキュリティ アプライアンスによって、意味のあるイベントに解析してフィルター処理することが困難なデータが生成されています。 Microsoft Sentinel には、組織のデータ ソースにわたってセキュリティ上の脅威を検出するための、検出機能を強化した検索とクエリのツールが備わっています。 セキュリティ アプリやスケジュールされた分析ルールで検出されなかった新しい異常をセキュリティ アナリストが事前に探すときに役立つように、Microsoft Sentinel には検出クエリが組み込まれており、これを通じて、ネットワーク上で既に保有しているデータ内の問題を見つけるために適切な質問を行うことができます。

たとえば、ある組み込みクエリは、インフラストラクチャ上で実行される最もまれなプロセスに関するデータを提供します。 実行するたびにアラートが表示される必要はありません。 それらはまったく無害である可能性があります。 しかし、クエリを見て、異常なものがあるかどうかを確認したい場合があります。

Note

米国政府機関クラウドにおける機能使用可否の詳細については、「米国政府機関のお客様向けのクラウド機能の利用可能性」に記載されている Microsoft Sentinel テーブルを参照してください。

重要

Microsoft Sentinel は、Microsoft Defender ポータルの統合セキュリティ オペレーション プラットフォームのパブリック プレビューの一部として利用できます。 詳しくは、「Microsoft Defender ポータルの Microsoft Sentinel」を参照してください。

組み込みクエリを使用する

ハンティング ページには、テーブルやクエリ言語に慣れていただくための、すぐに使えるクエリ例が用意されています。 クエリは、プロセスの作成、DNS イベント、その他のイベントの種類など、ログ テーブル内の格納データに対して実行されます。

組み込みのハンティング クエリは、どちらも Microsoft セキュリティ研究員が新しいクエリを追加し、既存のクエリを修正しながら継続的に開発しているもので、新しく発見された驚異を探し、新しい攻撃のきざしの検出を開始する場所を把握するためのエントリ ポイントになっています。

セキュリティ侵害の前後、あるいは侵害されているときにクエリを使用して、次のアクションを実行します。

  • インシデントが発生する前: 検出されるのを待っているだけでは不十分です。 ワークスペースに取り込んでいるデータに関連する脅威ハンティング クエリを、少なくとも週 1 回実行することで、プロアクティブな対策を取ります。

    プロアクティブなハンティングによって、セキュリティ侵害が発生していることを確認できるイベントに関する分析情報を早い段階で入手できます。また、少なくとも、環境内のリスクがあり、注意が必要な脆弱な領域を把握することができます。

  • セキュリティ侵害中: ライブストリームを使って特定のクエリを常に実行し、結果を随時表示します。 ライブストリームは、ユーザーのイベントを積極的に監視する必要がある場合に使用します。たとえば、特定のセキュリティ侵害がまだ発生しているかを確認する必要がある場合や、脅威アクターの次のアクションを判断するのを支援する場合、調査の最後に侵害が本当に終わったかどうかを確認する場合などに使用します。

  • セキュリティ侵害後: 侵害またはインシデントが発生した後で、今後同様のインシデントが発生するのを防ぐために、対象範囲と分析情報を必ず向上させるようにします。

    • 既存のクエリを変更するか新しいクエリを作成し、セキュリティ侵害やインシデントから得た分析情報に基づいて早期検出を支援します。

    • 可能性のある攻撃についての価値のある分析情報を提供するハンティング クエリを発見または作成した場合は、そのクエリに基づいてカスタム検出ルールを作成し、セキュリティ インシデント レスポンダーへのアラートとしてこれらの分析情報を示します。

      クエリの結果を表示し、[新しいアラート ルール]>[Microsoft Sentinel アラートを生成する] を選びます。 [分析ルール ウィザード] を使用して、ご自身のクエリに基づいて新しいルールを作成します。 詳細については、「脅威を検出するためのカスタム分析ルールを作成する」を参照してください。

Azure Data Explorer 内の格納データに対して、ハンティングとライブストリームのクエリを作成することもできます。 詳細については、Azure Monitor のドキュメントで、クロスリソース クエリ作成に関する詳細情報をご覧ください。

Microsoft Sentinel GitHub リポジトリなどのコミュニティ リソースを使って、クエリとデータ ソースをさらに検索します。

ハンティング ダッシュボードを使用する

ハンティング ダッシュボードを使用すると、1 回選択するだけで、ご自身のクエリをすべて実行したり、特定のサブセットだけを実行したりできます。 Microsoft Sentinel ポータルで、 [ハンティング] を選びます。

テーブルには、Microsoft のセキュリティ アナリスト チームが作成したすべてのクエリと、ご自身が作成または変更した追加クエリが一覧表示されます。 各クエリには、検出の対象と、クエリを実行するデータの種類に関する説明が示されます。 これらのクエリは、MITRE ATT&CK の戦略でグループ化されています。 右側のアイコンは、初期アクセス、永続化、侵入など、脅威の種類を分類しています。 MITRE ATT&CK 手法[手法] 列に示され、ハンティング クエリによって識別される特定の動作が説明されます。

Microsoft Sentinel が検出を開始する

ハンティング ダッシュボードを使用して、結果の件数、急増、24 時間にわたる結果件数の変化を確認し、どこでハンティングを開始するかを特定します。 お気に入り、データ ソース、MITRE ATT&CK の戦術や手法、結果、結果の差分、または結果の差分の割合で、並べ替えたりフィルター処理したりすることができます。 引き続きデータ ソース接続が必要なクエリを確認し、それらのクエリを有効にする方法についての推奨事項を入手できます。

次の表は、ハンティング ダッシュボードから使用できる詳細なアクションについて説明しています。

アクション 説明
ご自身の環境にクエリがどのように適用されるかを確認する [すべてのクエリを実行する] ボタンを選択するか、各行の左側にあるチェック ボックスを使ってクエリのサブセットを選択して、[Run selected queries] (選択したクエリを実行) ボタンを選択します。

ご自身のクエリの実行には数秒から数分かかることがあります。これは、選択したクエリの数、時間範囲、およびクエリ対象のデータ量によって異なります。
結果が返されたクエリを表示する クエリの実行が完了した後、[結果] フィルターを使用して結果を返したクエリを表示します。
- どのクエリの結果が最も多かったか、あるいは少なかったかに基づいて並べ替えます。
- [結果] フィルター内で "該当なし" を選択して、ご自身の環境内でまったくアクティブでないクエリを確認します。
- [N/A] の横の情報アイコン (i) にカーソルを合わせると、そのクエリをアクティブにするために必要なデータ ソースが表示されます。
データ内の急増を特定する [結果の差分] または [結果の差分の割合] でソートまたはフィルタリングすることで、データのスパイクを特定できます。

過去 24 時間の結果がその前の 24 から 48 時間の結果と比較され、量の大きな違いまたは相対的な差が強調表示されます。
MITRE ATT&CK 戦術にマップされたクエリを表示する テーブルの上部にある MITRE ATT&CK 戦術バーには、各 MITRE ATT&CK 戦術にマップされるクエリの数が表示されます。 戦術バーは、現在適用されている一連のフィルターに基づいて動的に更新されます。

所定の結果カウント、大きい結果の差分、"N/A" の結果、または他のあらゆるフィルターのセットに従ってフィルター処理したときに、どの MITRE ATT&CK 戦術が表示されるかを確認できます。
MITRE ATT&CK 手法にマップされたクエリを表示する クエリは、MITRE ATT&CK 手法にマップすることもできます。 [戦術] フィルタを使用して、MITRE ATT&CK 戦術でフィルタリングまたはソートすることができます。 クエリを開いて手法を選択すると、その手法の MITRE ATT&CK の説明を確認できます。
クエリをご自身のお気に入りに保存する お気に入りに保存したクエリは、 [ハンティング] ページにアクセスするごとに自動的に実行されます。 独自の検出クエリまたは複製を作成し、既存の検出クエリ テンプレートをカスタマイズできます。
クエリを実行する ハンティング クエリの詳細ページ内で [クエリの実行] を選択して、ハンティング ページから直接クエリを実行します。 一致件数がテーブル内の [結果] 列に表示されます。 検出クエリとその一致結果の一覧を確認します。
基になるクエリを確認する 基になるクエリのクイック レビューは、クエリの詳細ウィンドウで実行します。 結果を表示するには、クエリ ウィンドウの下にある [クエリ結果の表示] リンク、またはウィンドウの下部にある [結果の表示] ボタンをクリックします。 クエリが [ログ] (Log Analytics) ページで開き、クエリの下でクエリの一致を確認できます。

カスタム ハンティング クエリを作成する

クエリを作成または変更し、独自のクエリとして保存するか、同じテナントに属しているユーザーと共有します。

クエリを保存する

新しいクエリを作成するには:

  1. [新しいクエリ] を選択します。

  2. すべての空フィールドに入力し、 [作成] を選択します。

    1. エンティティ型、識別子、列を選択して、エンティティ マッピングを作成します。

      ハンティング クエリでのエンティティ型のマッピングのスクリーンショット。

    2. MITRE ATT&CK の手法をハンティング クエリにマップするために、戦術、手法、サブ手法 (該当する場合) を選択します。

      新しいクエリ

既存のクエリを複製および変更するには:

  1. テーブルで、変更する検出クエリを選択します。

  2. 変更するクエリの行で省略記号 (...) を選択し、 [クエリの複製] を選択します。

    クエリの複製

  3. クエリを変更し、 [作成] を選択します。

既存のカスタム ロールを変更するには、次を行います。

  1. テーブルで、変更したい検出クエリを選択します。 編集できるのは、カスタム コンテンツ ソースからのクエリのみです。 他のコンテンツ ソースは、そのソースで編集する必要があります。

  2. 変更するクエリの行で省略記号 (...) を選択し、[クエリの編集] を選択します。

  3. 更新されたクエリを使用して [カスタム クエリ] フィールドを変更します。 このドキュメントの「新しいクエリを作成するには」セクションで説明されているように、エンティティのマッピングと手法を変更することもできます。

サンプル クエリ

一般的なクエリではテーブル名またはパーサー名を最初に記述し、その後に一連の演算子をパイプ文字 ("|") で区切って続けます。

上記の例では、テーブル名 SecurityEvent を最初に記述し、必要に応じてパイプでつないで要素を追加します。

  1. 時間のフィルターを定義して、直近の 7 日間のレコードだけを確認するようにします。

  2. イベント ID 4688 のみを表示するようにクエリにフィルターを追加します。

  3. cscript.exe のインスタンスのみを含めるように、コマンド ラインでクエリにフィルターを追加します。

  4. 探索に関心がある列だけを見積もり、結果を 1,000 に制限して、 [クエリの実行] を選択します。

  5. 緑の三角形を選択して、クエリを実行します。 クエリをテストし、クエリを実行して異常な動作を調べられます。

クエリでは、組み込みのテーブルではなく、Advanced Security Information Model (ASIM) パーサーを使用することをお勧めします。 これにより、単一のデータ ソースではなく、現在または未来に関連するデータ ソースがクエリでサポートされます。

ブックマークを作成する

ハンティングおよび調査プロセスでは、異常または不審に見えるクエリの結果が見つかることがあります。 これらの項目をブックマークすると、将来、調査用のインシデントを作成または強化するときに参照できます。 潜在的な根本原因、セキュリティ侵害のインジケーター、その他の注目すべきイベントなどは、ブックマークとして上げてください。 ブックマークしたキー イベントが調査を行うのに十分な重大度の場合は、インシデントにエスカレートします。

  • ご自身の結果内で、保持する行のチェックボックスをオンにし、 [ブックマークの追加] を選択します。 これにより、行の結果と結果を作成したクエリを含む、マークされた行ごとのレコード (ブックマーク) が作成されます。 各ブックマークには、独自のタグとメモを追加することができます。

    • スケジュールされた分析ルールと同様に、複数のエンティティ型と識別子を抽出するエンティティ マッピング、およびを特定の戦術と手法を関連付ける MITRE ATT&CK マッピングを使用して、ブックマークをエンリッチできます。
    • ブックマークでは、既定で、ブックマークされた結果を生成したハンティング クエリと同じエンティティと MITRE ATT&CK 手法マッピングが使用されます。
  • メインの [ハンティング] ページの [ブックマーク] タブをクリックして、ブックマークされたすべての結果を確認します。 ブックマークにタグを追加して、フィルター処理用に分類します。 たとえば、攻撃活動を調査している場合は、キャンペーンのタグを作成し、そのタグを関連するブックマークに適用して、キャンペーンに基づくすべてのブックマークをフィルター処理できます。

  • ブックマークを選択し、詳細ウィンドウで [調査] をクリックして調査エクスペリエンスを開くことで、ブックマークした 1 つの検出結果を調査します。 一覧表示されているエンティティを直接選択して、そのエンティティの対応するエンティティ ページを表示することもできます。

    また、1 つ以上のブックマークからインシデントを作成することも、既存のインシデントに 1 つ以上のブックマークを追加することもできます。 使用するブックマークの左側のチェック ボックスをオンにして、[インシデント アクション]>[新しいインシデントの作成] または [既存のインシデントに追加] を選択します。 他のものと同様に、インシデントをトリアージして調査します。

詳細については、ハンティングでのブックマークの使用に関するページをご覧ください。

ノートブックを使用して調査を支援する

ハンティングと調査がより複雑になったら、Microsoft Sentinel ノートブックを使って、機械学習、視覚化、データ分析を使ってアクティビティを強化します。

ノートブックは、独自のカーネルを備えた一種の仮想サンドボックスを提供し、完全な調査を実行できます。 ノートブックには、生データ、そのデータに対して実行するコード、結果、それらの視覚化を含めることができます。 ノートブックを他のユーザーと共有して組織内で再利用できるように、ノートブックを保存します。

ノートブックは、ハンティングや調査が大規模になり、簡単に記憶し、詳細を表示できなくなったときや、クエリや結果を保存する必要がある場合に役立ちます。 ノートブックの作成と共有を支援するために、Microsoft Sentinel では、オープン ソースの対話型開発およびデータ操作環境である Jupyter Notebook が提供されており、Microsoft Sentinel Notebook ページに直接統合されています。

詳細については、以下を参照してください:

次の表では、Jupyter Notebook を使って Microsoft Sentinel のプロセスを支援するいくつかの方法について説明します。

メソッド 説明
データの永続性、再現性、バックトラッキング 多くのクエリと結果セットを処理している場合は、調査で物事に行き詰まることがあります。 どのクエリと結果を保持するかと、有用な結果を 1 つのレポートに蓄積する方法を決定する必要があります。

Jupyter Notebook を使用すると、調査を進める都度クエリとデータを保存し、変数を使用して異なる値または日付でクエリを再実行し、クエリを保存して今後の調査で再実行できます。
スクリプトとプログラミング Jupyter Notebook を使用して、次のようなプログラミングをクエリに追加します。

- Kusto クエリ言語 (KQL) や SQL などの- 言語では、1 つの複雑になる可能性があるステートメントでロジックをエンコードします。
- - 型プログラミング言語では、一連の手順でロジックを実行します。

ロジックを複数のステップに分割すると、中間結果を表示およびデバッグし、クエリ言語では使用できない機能を追加し、後の処理手順で部分的な結果を再利用するのに役立ちます。
外部データへのリンク Microsoft Sentinel テーブルにはほとんどのテレメトリとイベント データがありますが、Jupyter Notebook は、ネットワークまたはファイルからアクセスできる任意のデータにリンクできます。 Jupyter Notebook を使用すると、次のようなデータを含めることができます。

- 位置情報データや脅威インテリジェンス ソースなど、所有していない外部サービスのデータ
- 人事部のデータベースや価値の高い資産の一覧など、組織内にのみ保存されている機密データ
- まだクラウドに移行していないデータ。
特化されたデータ処理、機械学習、視覚化ツール Jupyter Notebook には、追加の視覚化、機械学習ライブラリ、データ処理と変換の機能が用意されています。

たとえば、Jupyter Notebook は次の Python 機能と共に使用します。
- データ処理、クリーンアップ、エンジニアリングのための -
- 視覚化のための - 、HoloViewsPlotly
- 高度な数値と科学的な処理のための - と SciPy
- 機械学習のための -
- ディープ ラーニングのための - 、PyTorchKeras

ヒント: Jupyter Notebook では、複数の言語カーネルがサポートされています。 マジックを使用して、別の言語を使用して個々のセルを実行できるようにすることで、同じノートブック内に言語を混在させます。 たとえば、PowerShell スクリプトセルを使用してデータを取得し、Python でデータを処理し、JavaScript を使用して視覚化をレンダリングできます。

MSTIC、Jupyter、Python のセキュリティ ツール

Microsoft 脅威インテリジェンスセンター (MSTIC) は、複数の Microsoft プラットフォームのセキュリティ検出を作成し、脅威の識別と調査を行う Microsoft のセキュリティ アナリストとエンジニアのチームです。

MSTIC は、Jupyter Notebook で情報セキュリティの調査とハンティングを行うためのライブラリである MSTICPy を構築します。 MSTICPy には、ノートブックの作成を高速化し、ユーザーが Microsoft Sentinel でノートブックを簡単に読めるようにすることを目的とした再利用可能な機能が用意されています。

たとえば、MSTICPy では次のことが実現できます。

  • 複数のソースからログ データをクエリします。
  • 脅威インテリジェンス、位置情報、Azure リソース データを使用してデータを強化します。
  • ログからアクティビティのインジケーター (IoA) を抽出し、エンコードされたデータを取り出します。
  • 異常なセッション検出や時系列分解などの高度な分析を実行します。
  • 対話型のタイムライン、プロセス ツリー、多次元形態素グラフを使用してデータを視覚化します。

MSTICPy には、クエリ時間の境界の設定、リストからの項目の選択と表示、ノートブック環境の構成など、時間を節約するためのノートブック ツールも含まれています。

詳細については、次を参照してください。

便利な演算子と関数

ハンティング クエリは、Kusto クエリ言語 (KQL) で構築されています。これは、ハンティングを次のレベルに引き上げるために必要なパワーと柔軟性を備えた、IntelliSense 言語を使用した強力なクエリ言語です。

これは、分析ルールや Microsoft Sentinel の他の場所のクエリで使われている言語と同じものです。 詳細については、クエリ言語リファレンスをご覧ください。

次の演算子は、Microsoft Sentinel ハンティング クエリ内で特に役立ちます。

  • where - テーブルにフィルターが適用され、述語を満たす行のサブセットに絞り込まれます。

  • summarize - 入力テーブルの内容を集計したテーブルを生成します。

  • join - 各テーブルの指定した列の値を照合することにより、2 つのテーブルの行をマージして新しいテーブルを作成します。

  • count - 入力レコード セットに含まれるレコード数を返します。

  • top - 指定の列で並べ替えられたレコードが先頭から N 個まで返されます。

  • limit - 最大で指定の行数まで返されます。

  • project - 含める列、名前を変更する列、または削除する列を選択し、新しい計算列を挿入します。

  • extend - 計算列を作成し、それらを結果セットに追加します。

  • makeset - グループ内である式により受け取られる個別値セットを dynamic (JSON) 配列で返します

  • find - テーブルのセットで述語が一致する行を検索します。

  • adx() - この関数は、Microsoft Sentinel ハンティング エクスペリエンスと Log Analytics から、Azure Data Explorer データ ソースのクロスリソース クエリを実行します。 詳細については、「Azure Monitor を使用した Azure Data Explorer のクロスリソース クエリ」をご覧ください。

次のステップ

この記事では、Microsoft Sentinel で検出調査を実行する方法を学習しました。

詳細については、次を参照してください。

カスタム コネクタZoom を監視するときのカスタム分析ルールの使用例をご覧ください。