Microsoft Sentinel での脅威のハンティング
セキュリティ アナリストや調査担当者は、セキュリティ上の脅威を事前に探したいと考えていますが、さまざまなシステムやセキュリティ アプライアンスによって、意味のあるイベントに解析してフィルター処理することが困難なデータが生成されています。 Microsoft Sentinel には、組織のデータ ソースにわたってセキュリティ上の脅威を検出するための、検出機能を強化した検索とクエリのツールが備わっています。 セキュリティ アプリやスケジュールされた分析ルールで検出されなかった新しい異常をセキュリティ アナリストが事前に探すときに役立つように、ハンティング クエリが用意されており、ネットワーク上で既に保有しているデータ内の問題を見つけるために適切な質問を行うことができます。
たとえば、すぐに利用できるあるクエリは、インフラストラクチャ上で実行される最もまれなプロセスに関するデータを提供します。 実行するたびにアラートが表示される必要はありません。 それらはまったく無害である可能性があります。 しかし、クエリを見て、異常なものがあるかどうかを確認したい場合があります。
重要
Microsoft Sentinel は Microsoft Defender ポータルの Microsoft の統合セキュリティ オペレーション プラットフォーム内で一般提供されています。 プレビューの場合、Microsoft Sentinel は、Microsoft Defender XDR または E5 のライセンスなしで Defender ポータルで使用できます。 詳細については、「Microsoft Defender ポータルの Microsoft Sentinel」を参照してください。
Microsoft Sentinel でのハント (プレビュー)
Microsoft Sentinel でのハントを使用して、仮説を作成し、データを検索し、その仮説を検証し、必要に応じて行動することで、検出されない脅威と悪意のある行動を探します。 結果に基づいて、新しい分析ルール、脅威インテリジェンス、インシデントを作成します。
Capabilities | 説明 |
---|---|
仮説を定義する | 仮説を定義するには、MITRE マップ、最近のハンティング クエリ結果、コンテンツ ハブ ソリューションからインスピレーションを得るか、独自のカスタム ハントを生成します。 |
クエリとブックマークの結果を調査する | 仮説を定義したら、[ハンティング] ページの [クエリ] タブに移動します。仮説に関連するクエリを選択し、[新しいハント] を選択して開始します。 ハント関連のクエリを実行し、ログ エクスペリエンスを使用して結果を調査します。 結果をハントに直接ブックマークして、結果に注釈を付け、エンティティ識別子を抽出し、関連するクエリを保持します。 |
調査してアクションを実行する | UEBA エンティティ ページを使用して、さらに詳しく調査します。 ブックマークされたエンティティに対してエンティティ固有のプレイブックを実行します。 組み込みアクションを使用して、新しい分析ルール、脅威インジケーター、結果に基づくインシデントを作成します。 |
結果を追跡する | ハントの結果を記録します。 仮説が検証されているかどうかを追跡します。 コメントに詳細なメモを残します。 ハントにより、新しい分析ルールとインシデントが自動的にリンクされます。 メトリック バーを使用して、ハンティング プログラムの全体的な影響を追跡します。 |
開始するには、「Microsoft Sentinel でエンドツーエンドのプロアクティブな脅威ハンティングを実施する」を参照してください。
ハンティング クエリ
Microsoft Sentinel で、[ハンティング]>[クエリ] タブを選択して、すべてのクエリまたは選択したサブセットを実行します。 [クエリ] タブには、[コンテンツ ハブ] のセキュリティ ソリューションと共にインストールされたすべてのハンティング クエリと、作成または変更した追加のクエリが一覧表示されます。 各クエリには、検出の対象と、クエリを実行するデータの種類に関する説明が示されます。 これらのクエリは、MITRE ATT&CK の戦略でグループ化されています。 右側のアイコンは、初期アクセス、永続化、侵入など、脅威の種類を分類しています。 MITRE ATT&CK 手法が [手法] 列に示され、ハンティング クエリによって識別される特定の動作が説明されます。
[クエリ] タブを使用して、結果の件数、急増、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 回実行することで、プロアクティブな対策を取ります。
プロアクティブなハンティングによって、セキュリティ侵害が発生していることを確認できるイベントに関する分析情報を早い段階で入手できます。また、少なくとも、環境内のリスクがあり、注意が必要な脆弱な領域を把握することができます。
セキュリティ侵害中: ライブストリームを使って特定のクエリを常に実行し、結果を随時表示します。 ライブストリームは、ユーザーのイベントを積極的に監視する必要がある場合に使用します。たとえば、特定のセキュリティ侵害がまだ発生しているかを確認する必要がある場合や、脅威アクターの次のアクションを判断するのを支援する場合、調査の最後に侵害が本当に終わったかどうかを確認する場合などに使用します。
セキュリティ侵害後: 侵害またはインシデントが発生した後で、今後同様のインシデントが発生するのを防ぐために、対象範囲と分析情報を必ず向上させるようにします。
既存のクエリを変更するか新しいクエリを作成し、セキュリティ侵害やインシデントから得た分析情報に基づいて早期検出を支援します。
可能性のある攻撃についての価値のある分析情報を提供するハンティング クエリを発見または作成した場合は、そのクエリに基づいてカスタム検出ルールを作成し、セキュリティ インシデント レスポンダーへのアラートとしてこれらの分析情報を示します。
クエリの結果を表示し、[新しいアラート ルール]>[Microsoft Sentinel アラートを生成する] を選びます。 [分析ルール ウィザード] を使用して、ご自身のクエリに基づいて新しいルールを作成します。 詳細については、「脅威を検出するためのカスタム分析ルールを作成する」を参照してください。
Azure Data Explorer 内の格納データに対して、ハンティングとライブストリームのクエリを作成することもできます。 詳細については、Azure Monitor のドキュメントで、クロスリソース クエリ作成に関する詳細情報をご覧ください。
その他のクエリとデータ ソースを見つけるには、Microsoft Sentinel の [コンテンツ ハブ] に移動するか、Microsoft Sentinel GitHub リポジトリなどのコミュニティ リソースを参照します。
すぐに利用できるハンティング クエリ
多くのセキュリティ ソリューションには、すぐに利用できるハンティング クエリが含まれています。 [コンテンツ ハブ] からハンティング クエリを含むソリューションをインストールすると、そのソリューションのすぐに利用できるクエリがハンティングの [クエリ] タブに表示されます。クエリは、プロセスの作成、DNS イベント、その他のイベントの種類など、ログ テーブル内の格納データに対して実行されます。
利用可能なハンティング クエリの多くは、Microsoft のセキュリティ研究者によって継続的に開発されています。 これらの研究者は、セキュリティ ソリューションに新しいクエリを追加し、既存のクエリを微調整して、新しい検出と攻撃を探すためのエントリ ポイントを提供します。
カスタム ハンティング クエリ
クエリを作成または編集し、独自のクエリとして保存するか、同じテナントに属しているユーザーと共有します。 Microsoft Sentinel で、[ハンティング]>[クエリ] タブでカスタム ハンティング クエリを作成します。
詳細については、「Microsoft Sentinel でカスタム ハンティング クエリを作成する」を参照してください。
ライブストリーム セッション
イベントの発生時に新たに作成したクエリをテストする、一致が見つかった場合にセッションから通知を取得する、または必要に応じて調査を開始できるようにする対話型セッションを作成します。 どのような Log Analytics クエリを使用したライブストリーム セッションでも、すばやく作成できます。
イベントの発生時に新たに作成したクエリをテストする
イベントにアクティブに適用されている現在のルールとの競合を発生させずに、クエリをテストし、調整することができます。 これらの新しいクエリが期待どおりに動作することを確認したら、セッションをアラートに昇格させるオプションを選択することで、クエリをカスタムのアラート ルールに簡単に昇格させることができます。
脅威が発生した際に通知を受け取る
脅威データ フィードを集計済みのログ データと比較し、一致が見つかった場合に通知を受け取ることができます。 脅威データ フィードは、潜在的脅威または現在の脅威に関連する継続的なデータ ストリームであるため、この通知から組織に対する潜在的脅威が判明する可能性があります。 カスタムのアラート ルールを維持するためのオーバーヘッドを発生させることなく潜在的な問題の通知を受け取るには、カスタムのアラート ルールではなくライブストリーム セッションを作成します。
調査を開始する
ホストやユーザーなどの資産に関連する調査が積極的に行われている場合は、特定の (または任意の) アクティビティがその資産で発生すると、ログ データ内に表示されます。 そのアクティビティが発生したら通知されるようにします。
詳細については、「Microsoft Sentinel でハンティング ライブストリームを使用して脅威を検出する」を参照してください。
データを追跡するためのブックマーク
脅威検出では、通常、山のようなログ データを調べて、悪意のある動作の証拠を探す必要があります。 このプロセス中に調査担当者は、可能性のある仮説の実証と、侵害の詳細の把握の一環として、記憶し、再考し、分析する必要のあるイベントを探します。
ハンティングおよび調査プロセスでは、異常または不審に見えるクエリの結果が見つかることがあります。 これらの項目をブックマークすると、将来、調査用のインシデントを作成または強化するときに参照できます。 潜在的な根本原因、セキュリティ侵害のインジケーター、その他の注目すべきイベントなどは、ブックマークとして上げてください。 ブックマークしたキー イベントが調査を行うのに十分な重大度の場合は、インシデントにエスカレートします。
ご自身の結果内で、保持する行のチェックボックスをオンにし、 [ブックマークの追加] を選択します。 これにより、行の結果と結果を作成したクエリを含む、マークされた行ごとのレコード (ブックマーク) が作成されます。 各ブックマークには、独自のタグとメモを追加することができます。
- スケジュールされた分析ルールと同様に、複数のエンティティ型と識別子を抽出するエンティティ マッピング、およびを特定の戦術と手法を関連付ける MITRE ATT&CK マッピングを使用して、ブックマークをエンリッチできます。
- ブックマークでは、既定で、ブックマークされた結果を生成したハンティング クエリと同じエンティティと MITRE ATT&CK 手法マッピングが使用されます。
メインの [ハンティング] ページの [ブックマーク] タブをクリックして、ブックマークされたすべての結果を確認します。 ブックマークにタグを追加して、フィルター処理用に分類します。 たとえば、攻撃活動を調査している場合は、キャンペーンのタグを作成し、そのタグを関連するブックマークに適用して、キャンペーンに基づくすべてのブックマークをフィルター処理できます。
ブックマークを選択し、詳細ウィンドウで [調査] をクリックして調査エクスペリエンスを開くことで、ブックマークした 1 つの検出結果を調査します。 対話型のエンティティ グラフ ダイアグラムおよびタイムラインを使用して、結果を表示、調査、視覚的に伝達します。 一覧表示されているエンティティを直接選択して、そのエンティティの対応するエンティティ ページを表示することもできます。
また、1 つ以上のブックマークからインシデントを作成することも、既存のインシデントに 1 つ以上のブックマークを追加することもできます。 使用するブックマークの左側のチェック ボックスをオンにして、[インシデント アクション]>[新しいインシデントの作成] または [既存のインシデントに追加] を選択します。 他のものと同様に、インシデントをトリアージして調査します。
ブックマークが設定されたデータを、Log Analytics ワークスペースの [HuntingBookmark] テーブルで直接確認できます。 次に例を示します。
テーブルでブックマークを表示すると、ブックマークが設定されたデータをフィルター処理、要約、および他のデータ ソースと結合でき、裏付けとなる証拠を簡単に見つけられます。
ブックマークの使用を開始するには、「Microsoft Sentinel によるハンティング中にデータを追跡する」を参照してください。
調査を支援するノートブック
ハンティングと調査がより複雑になったら、Microsoft Sentinel ノートブックを使って、機械学習、視覚化、データ分析を使ってアクティビティを強化します。
ノートブックは、独自のカーネルを備えた一種の仮想サンドボックスを提供し、完全な調査を実行できます。 ノートブックには、生データ、そのデータに対して実行するコード、結果、それらの視覚化を含めることができます。 ノートブックを他のユーザーと共有して組織内で再利用できるように、ノートブックを保存します。
ノートブックは、ハンティングや調査が大規模になり、簡単に記憶し、詳細を表示できなくなったときや、クエリや結果を保存する必要がある場合に役立ちます。 ノートブックの作成と共有を支援するために、Microsoft Sentinel では、オープン ソースの対話型開発およびデータ操作環境である Jupyter Notebook が提供されており、Microsoft Sentinel Notebook ページに直接統合されています。
詳細については、以下を参照してください:
- Jupyter Notebook を使用してセキュリティの脅威を検出する
- Jupyter プロジェクトのドキュメント
- Jupyter 入門ドキュメント。
- Infosec Jupyter Book
- Real Python チュートリアル
次の表では、Jupyter Notebook を使って Microsoft Sentinel のプロセスを支援するいくつかの方法について説明します。
メソッド | 説明 |
---|---|
データの永続性、再現性、バックトラッキング | 多くのクエリと結果セットを処理している場合は、調査で物事に行き詰まることがあります。 どのクエリと結果を保持するかと、有用な結果を 1 つのレポートに蓄積する方法を決定する必要があります。 Jupyter Notebook を使用すると、調査を進める都度クエリとデータを保存し、変数を使用して異なる値または日付でクエリを再実行し、クエリを保存して今後の調査で再実行できます。 |
スクリプトとプログラミング | Jupyter Notebook を使用して、次のようなプログラミングをクエリに追加します。 - Kusto クエリ言語 (KQL) や SQL などの- 言語では、1 つの複雑になる可能性があるステートメントでロジックをエンコードします。 - - 型プログラミング言語では、一連の手順でロジックを実行します。 ロジックを複数のステップに分割すると、中間結果を表示およびデバッグし、クエリ言語では使用できない機能を追加し、後の処理手順で部分的な結果を再利用するのに役立ちます。 |
外部データへのリンク | Microsoft Sentinel テーブルにはほとんどのテレメトリとイベント データがありますが、Jupyter Notebook は、ネットワークまたはファイルからアクセスできる任意のデータにリンクできます。 Jupyter Notebook を使用すると、次のようなデータを含めることができます。 - 位置情報データや脅威インテリジェンス ソースなど、所有していない外部サービスのデータ - 人事部のデータベースや価値の高い資産の一覧など、組織内にのみ保存されている機密データ - まだクラウドに移行していないデータ。 |
特化されたデータ処理、機械学習、視覚化ツール | Jupyter Notebook には、追加の視覚化、機械学習ライブラリ、データ処理と変換の機能が用意されています。 たとえば、Jupyter Notebook は次の Python 機能と共に使用します。 - データ処理、クリーンアップ、エンジニアリングのための - - 視覚化のための - 、HoloViews、Plotly - 高度な数値と科学的な処理のための - と SciPy - 機械学習のための - - ディープ ラーニングのための - 、PyTorch、Keras ヒント: Jupyter Notebook では、複数の言語カーネルがサポートされています。 マジックを使用して、別の言語を使用して個々のセルを実行できるようにすることで、同じノートブック内に言語を混在させます。 たとえば、PowerShell スクリプトセルを使用してデータを取得し、Python でデータを処理し、JavaScript を使用して視覚化をレンダリングできます。 |
MSTIC、Jupyter、Python のセキュリティ ツール
Microsoft 脅威インテリジェンスセンター (MSTIC) は、複数の Microsoft プラットフォームのセキュリティ検出を作成し、脅威の識別と調査を行う Microsoft のセキュリティ アナリストとエンジニアのチームです。
MSTIC は、Jupyter Notebook で情報セキュリティの調査とハンティングを行うためのライブラリである MSTICPy を構築します。 MSTICPy には、ノートブックの作成を高速化し、ユーザーが Microsoft Sentinel でノートブックを簡単に読めるようにすることを目的とした再利用可能な機能が用意されています。
たとえば、MSTICPy では次のことが実現できます。
- 複数のソースからログ データをクエリします。
- 脅威インテリジェンス、位置情報、Azure リソース データを使用してデータを強化します。
- ログからアクティビティのインジケーター (IoA) を抽出し、エンコードされたデータを取り出します。
- 異常なセッション検出や時系列分解などの高度な分析を実行します。
- 対話型のタイムライン、プロセス ツリー、多次元形態素グラフを使用してデータを視覚化します。
MSTICPy には、クエリ時間の境界の設定、リストからの項目の選択と表示、ノートブック環境の構成など、時間を節約するためのノートブック ツールも含まれています。
詳細については、次を参照してください。
- MSTICPy のドキュメント
- Jupyter ノートブックと Microsoft Sentinel ハンティング機能
- Microsoft Sentinel での Jupyter Notebook と 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 のクロスリソース クエリ」をご覧ください。