SIEM インサイトに Microsoft KQL を使用する方法

画像:ArtemisDiana/Adobe Stock

Microsoft のクラウドベースのセキュリティ情報およびイベント管理ソフトウェアである Sentinel は、Azure Monitor や組み込みの Log Analytics など、Azure のデータ管理ツールの上に構築されています。 このスイートの重要な部分の 1 つは Azure Data Explorer です。これは、データ レイクで構造化データと非構造化データを混合し、複数のストアにわたるクエリを使用してデータを探索および分析するために使用されるツールです。

参照: Microsoft Azure のオンライン学習 (TechRepublic Academy)

データ エクスプローラーの中心にあるのは、通常は KQL と呼ばれる Kusto と呼ばれるクエリ言語で、データ内のパターンを見つけるのに役立つように設計されています。 SQL とは異なり、KQL はデータの読み取りのみを目的としています。 これは、ログ データを純粋に情報源として扱い、ユーザーが非破壊的に作業する必要がある Sentinel のような SIEM ツールにとって重要な機能です。

これは、大規模なデータ ウェアハウスで使用されるアプローチとよく似ており、クエリを使用してデータをできるだけ迅速に検索し、重要なビジネス上の意思決定を支援します。

ジャンプ先:

Kusto クエリ言語は、インシデントの応答時間を短縮します

ログやその他のセキュリティ データは急速に大規模なリポジトリになるため、Sentinel での使用の鍵となるのは、大量のデータを操作するための Kusto のサポートです。 悪意のあるアクターまたはマルウェアのアクションは、ログの干し草の山にあるよく知られた針であるため、このタイプのクエリ用に最適化されたツールが不可欠です。

Sentinel の自動ツールに頼ると、プロアクティブではなくリアクティブな姿勢になり、不利な立場に置かれる可能性があります。 独自の調査を実施できることは、セキュリティ体制を維持し、将来の SIEM ルールセットのトレーニングに役立つ情報を提供するための鍵です。

企業のセキュリティはビッグ データの問題になっているため、特に特定のログ ファイルやログの組み合わせを定期的に調査している場合は、ビッグ データ ツールを使用して分析情報を生成することは理にかなっています。 KQL はこの種のタスク用に設計されており、Sentinel に組み込まれているいくつかの分析ツールで使用されるため、当然の選択です。 KQL は、アドホック クエリに使用されるだけでなく、Runbook に埋め込まれて、応答とカスタム分析を自動化するのに役立ちます。

KQL クエリの作成

KQL は、スクリプト ツールとクエリ ツールの興味深いハイブリッドであるため、データ サイエンスに Python を使用したり、データベースの操作に SQL を使用したりしたことがある人なら誰でも慣れ親しんでいます。 データのテーブルに対して機能するように設計されており、一連の KQL ステートメントのフローを制御するのに役立つ変数と定数を作成できます。

KQL クエリをパイプラインと考えるとよいでしょう。最初にデータを取得し、それをフィルタリングしてから、要約と並べ替えを行い、最後に必要な結果を選択します。 フィルターと集計の順序を変更すると出力に大きな影響を与える可能性があるため、PowerShell コマンドの構造と類似点がいくつかありますが、ステートメントの順序付けに関するより明確な要件があります。

効果的な KQL を構築するには、フィルターの順序を正しく設定することが重要です

KQL の実行に使用されるパイプラインはフィルターを連続して接続するため、クエリの開始時にデータをフィルター処理して、後続のステージに渡されるデータの量を最小限に抑える必要があります。 Microsoft には、KQL フィルターの使用に関する詳細なベスト プラクティスがあり、Sentinel データを操作する際に役立ちます。

  • 最初に時間フィルターを使用します。
  • 部分文字列の検索を回避します。
  • テキスト検索に特定の列のみを使用します。

これは、Kusto クエリを作成する前に、データ ソースと探している結果の両方を理解することが重要であることを意味します。

KQL のパイプライン モデルにより、クエリの構築と設計が比較的簡単になります

KQL は簡単に操作できますが、データの構造を理解していなければ、良い結果は得られません。 まず、Sentinel のワークスペースで使用されるすべてのテーブルの名前を知る必要があります。 これらは、データの取得元を指定するために必要であり、修飾子を使用して、設定された数の行のみを取得し、返されるデータの量を制限します。

次に、最新の結果のみを取得するオプションを使用して、このデータを並べ替える必要があります。 次に、データをフィルタリングすることができます。たとえば、特定の IP 範囲から、または設定された期間のデータのみを取得します。

データが選択されてフィルター処理されると、集計されます。 これにより、フィルター処理したデータと選択した列のみを含む新しいテーブルが作成されます。 列は必要に応じて名前を変更でき、KQL 関数の積にすることもできます。たとえば、データを合計したり、データの最大値と最小値を使用したりできます。

利用可能な機能には基本的な統計操作が含まれているため、クエリを使用して重要なデータを探すことができます。これは、ギガバイトのログから疑わしい侵入を探すときに役立つツールです. より複雑な操作は、プラグインを使用してデータ サイエンス タスクを処理する evaluate オペレーターを使用して実行できます。

参照: 採用キット: データサイエンティスト (TechRepublic Premium)

ほとんどの KQL 操作は 1 つのログ テーブルに対して実行されますが、ユニオンまたは結合ステートメントを使用して複数のテーブルを同時に操作できます。 これにより、攻撃のシグナルがより明白になる可能性があるログ全体でデータを関連付けることができます。

Sentinel で KQL を使用して KQL を学習する

その結果、ある程度の経験を積めば、ログ ファイルを繰り返し探索し、攻撃や攻撃者の兆候を探すことができる強力なツール セットができあがります。 クエリは Sentinel ワークブックに埋め込むことができるため、セキュリティ オペレーション センターの全員で共有できます。

便利なことに、Sentinel に組み込まれたトレーニング ワークブックがあり、言語の学習をスピードアップするために使用でき、さまざまなユース ケースで KQL を使用する方法の例を提供します。

開始する前に実験したい場合は、Sentinel をインストールする必要はありません。Microsoft は、KQL クエリの設計を実験するために使用できる Azure portal に Azure Log Analytics 環境のデモを用意しています。 使用も無料です。 必要なのは Azure ログインだけです。

Sentinel のような SIEM ツールは、ログ ファイルからのデータの取得と操作を簡素化します。 しかし、機械学習は、経験豊富なセキュリティ アナリストの目にはまだかなわないものです。特に、新しい攻撃や高度で持続的な脅威の微妙なシグナルに関してはなおさらです。

そのため、Sentinel の一部として KQL を含めることは非常に理にかなっています。高度な分析ツールとスクリプト言語のシンプルさが組み合わされているからです。 Power BI などのツールと組み合わせると、数ギガバイトのログ データをすばやく分析および視覚化し、ネットワークを安全に保つために必要な情報を見つけることができます。

Leave a Comment

Your email address will not be published. Required fields are marked *