高度な捜索のクエリ言語について学習するLearn the advanced hunting query language

重要

改善された Microsoft 365 セキュリティ センターが利用できるようになりました。The improved Microsoft 365 security center is now available. この新しいエクスペリエンスにより、Defender for Endpoint、Defender for Office 365、Microsoft 365 Defender などが Microsoft 365 セキュリティ センターに導入されます。This new experience brings Defender for Endpoint, Defender for Office 365, Microsoft 365 Defender, and more into the Microsoft 365 security center. 新機能について説明しますLearn what's new.

適用対象:Applies to:

  • Microsoft 365 DefenderMicrosoft 365 Defender
  • Microsoft Defender for EndpointMicrosoft Defender for Endpoint

高度な捜索は、Kusto クエリ言語に基づいています。Advanced hunting is based on the Kusto query language. Kusto 演算子とステートメントを使用して、特殊なスキーマ内の情報を検索するクエリを作成 できますYou can use Kusto operators and statements to construct queries that locate information in a specialized schema. これらの概念をよりよく理解するために、最初のクエリを実行します。To understand these concepts better, run your first query.

最初のクエリを試してみるTry your first query

Microsoft 365 セキュリティ センターで、[ハンティング] に 移動して最初 のクエリを実行します。In Microsoft 365 security center, go to Hunting to run your first query. 次の例を使用してください。Use the following example:

// Finds PowerShell execution events that could involve a download
union DeviceProcessEvents, DeviceNetworkEvents
| where Timestamp > ago(7d)
// Pivoting on PowerShell processes
| where FileName in~ ("powershell.exe", "powershell_ise.exe")
// Suspicious commands
| where ProcessCommandLine has_any("WebClient",
 "DownloadFile",
 "DownloadData",
 "DownloadString",
"WebRequest",
"Shellcode",
"http",
"https")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, 
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp

高度な検索でこのクエリを実行するRun this query in advanced hunting

クエリの先頭に短いコメントが追加され、それが何を行うのかを説明しています。A short comment has been added to the beginning of the query to describe what it is for. このコメントは、後でクエリを保存し、組織内の他のユーザーと共有する場合に役立ちます。This comment helps if you later decide to save the query and share it with others in your organization.

// Finds PowerShell execution events that could involve a download

クエリ自体は、通常、テーブル名の後にパイプ ( ) で始まる複数の要素で始まる |The query itself will typically start with a table name followed by several elements that start with a pipe (|). この例では、まず 2 つのテーブルの共用体を作成し、必要に応じてパイプ要素 DeviceProcessEvents DeviceNetworkEvents を追加します。In this example, we start by creating a union of two tables, DeviceProcessEvents and DeviceNetworkEvents, and add piped elements as needed.

union DeviceProcessEvents, DeviceNetworkEvents

時間範囲を設定するSet the time range

最初のパイプ処理された要素は、前の 7 日間にスコープ設定された時間フィルターです。The first piped element is a time filter scoped to the previous seven days. 時間範囲を制限すると、クエリのパフォーマンスが向上し、管理可能な結果が返され、時間が取れなかることができます。Limiting the time range helps ensure that queries perform well, return manageable results, and don't time out.

| where Timestamp > ago(7d)

特定のプロセスを確認するCheck specific processes

時間範囲の直後に、PowerShell アプリケーションを表すプロセス ファイル名を検索します。The time range is immediately followed by a search for process file names representing the PowerShell application.

// Pivoting on PowerShell processes
| where FileName in~ ("powershell.exe", "powershell_ise.exe")

特定のコマンド文字列を検索するSearch for specific command strings

その後、クエリは、PowerShell を使用してファイルをダウンロードするために通常使用されるコマンド ライン内の文字列を検索します。Afterwards, the query looks for strings in command lines that are typically used to download files using PowerShell.

// Suspicious commands
| where ProcessCommandLine has_any("WebClient",
    "DownloadFile",
    "DownloadData",
    "DownloadString",
    "WebRequest",
    "Shellcode",
    "http",
    "https")

結果の列と長さをカスタマイズするCustomize result columns and length

クエリで検索するデータが明確に識別されたので、結果の外観を定義できます。Now that your query clearly identifies the data you want to locate, you can define what the results look like. project 特定の列を返し、 top 結果の数を制限します。project returns specific columns, and top limits the number of results. これらの演算子は、結果の形式が適切で、合理的に大きく、処理が容易であることを確認するのに役立ちます。These operators help ensure the results are well-formatted and reasonably large and easy to process.

| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, 
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp

[クエリ の実行] を 選択して結果を表示します。Select Run query to see the results. クエリ エディターの右上にある展開アイコンを使用して、検索クエリと結果に注目します。Use the expand icon at the top right of the query editor to focus on your hunting query and the results.

高度な検索クエリ エディターの Expand コントロールのイメージ

ヒント

クエリ結果をグラフとして表示し、フィルターをすばやく調整できます。You can view query results as charts and quickly adjust filters. ガイダンスについては、「 クエリ結果の操作」を参照してください。For guidance, read about working with query results

一般的なクエリ演算子の詳細Learn common query operators

最初のクエリを実行し、そのコンポーネントに関する一般的なアイデアを得たばかりです。You've just run your first query and have a general idea of its components. 少しバックトラックし、いくつかの基本を学ぶ時間です。It's time to backtrack slightly and learn some basics. 高度な捜索で使用される Kusto クエリ言語は、次のような一般的な演算子をサポートします。The Kusto query language used by advanced hunting supports a range of operators, including the following common ones.

演算子Operator 説明および使用法Description and usage
where 述語に適合する行のサブセットにテーブルをフィルター処理します。Filter a table to the subset of rows that satisfy a predicate.
summarize 入力テーブルの内容を集約したテーブルを作成します。Produce a table that aggregates the content of the input table.
join 各テーブルから指定された列の値を照合して、2 つのテーブルの行を結合し、新しいテーブルを作成します。Merge the rows of two tables to form a new table by matching values of the specified column(s) from each table.
count 入力レコード セットのレコード数を返します。Return the number of records in the input record set.
top 指定された列によって並べ替えられた最初の N レコードを返します。Return the first N records sorted by the specified columns.
limit 指定された行数まで返します。Return up to the specified number of rows.
project 新しい計算列を含める、名前を変更する、またはドロップする列を選択し、挿入します。Select the columns to include, rename or drop, and insert new computed columns.
extend 計算列を作成し、結果セットに追加します。Create calculated columns and append them to the result set.
makeset Expr がグループ内でとる個別の値のセットの動的 (JSON) 配列を返します。Return a dynamic (JSON) array of the set of distinct values that Expr takes in the group.
find テーブルのセットで述語と一致する行を検索します。Find rows that match a predicate across a set of tables.

これらの演算子の実際の例を見るには、高度な捜索の [はじめに] セクションから実行します。To see a live example of these operators, run them from the Get started section in advanced hunting.

データ型についてUnderstand data types

高度な検索では、次の一般的な種類を含む Kusto データ型がサポートされています。Advanced hunting supports Kusto data types, including the following common types:

データ型Data type 説明とクエリの意味Description and query implications
datetime 通常、イベントのタイムスタンプを表すデータと時刻の情報。Data and time information typically representing event timestamps. サポートされている日時形式を参照してください。See supported datetime formats
string 文字列は、UTF-8 ( ) または二重引用符 ( ' ) で囲まれます "Character string in UTF-8 enclosed in single quotes (') or double quotes ("). 文字列の詳細Read more about strings
bool このデータ型は、サポート true または false 状態です。This data type supports true or false states. サポートされているリテラルと演算子を参照してください。See supported literals and operators
int 32 ビット整数32-bit integer
long 64 ビット整数64-bit integer

これらのデータ型の詳細については 、「Kusto スカラー データ型」を参照してくださいTo learn more about these data types, read about Kusto scalar data types.

クエリを記述するときにヘルプを参照するGet help as you write queries

次の機能を利用して、クエリをより速く記述します。Take advantage of the following functionality to write queries faster:

  • Autosuggest-you write queries, advanced hunting providess suggestions from IntelliSense.Autosuggest—as you write queries, advanced hunting provides suggestions from IntelliSense.
  • スキーマ ツリー: テーブルの一覧とその列を含むスキーマ表現が、作業領域の横に表示されます。Schema tree—a schema representation that includes the list of tables and their columns is provided next to your working area. 詳細については、アイテムにカーソルを合わせてください。For more information, hover over an item. アイテムをダブルクリックして、クエリ エディターに挿入します。Double-click an item to insert it to the query editor.
  • スキーマ参照-テーブルと列の説明、サポートされているイベントの種類 (値) とサンプル クエリを含むポータル ActionType 内参照Schema reference—in-portal reference with table and column descriptions as well as supported event types (ActionType values) and sample queries

エディターで複数のクエリを処理するWork with multiple queries in the editor

クエリ エディターを使用して、複数のクエリを実験できます。You can use the query editor to experiment with multiple queries. 複数のクエリを使用するには、次のコマンドを実行します。To use multiple queries:

  • 各クエリを空の行で分離します。Separate each query with an empty line.
  • クエリを実行する前に、クエリの任意の部分にカーソルを置き、そのクエリを選択します。Place the cursor on any part of a query to select that query before running it. これにより、選択したクエリだけが実行されます。This will run only the selected query. 別のクエリを実行するには、カーソルを適切に移動し、[クエリの実行] を選択しますTo run another query, move the cursor accordingly and select Run query.

複数のクエリを含むクエリ エディターのイメージ

サンプル クエリを使用するUse sample queries

[はじめに] セクションでは、一般的に使用されている演算子を使用した簡単なクエリーをいくつか提供します。The Get started section provides a few simple queries using commonly used operators. これらのクエリを実行して、少し変更してみてください。Try running these queries and making small modifications to them.

高度な捜索ウィンドウの画像

注意

基本的なクエリ サンプルとは別に、特定の脅威の捜索シナリオの共有クエリにアクセスすることもできます。Apart from the basic query samples, you can also access shared queries for specific threat hunting scenarios. ページの左側または GitHub クエリ リポジトリで共有 クエリを確認しますExplore the shared queries on the left side of the page or the GitHub query repository.

クエリ言語のドキュメントにアクセスするAccess query language documentation

Kusto クエリ言語およびサポートされる演算子の詳細については、「Kusto クエリ言語のドキュメント」を参照してください。For more information on Kusto query language and supported operators, see Kusto query language documentation.

注意

この記事の一部のテーブルは、Microsoft Defender for Endpoint では使用できない場合があります。Some tables in this article might not be available in Microsoft Defender for Endpoint. Microsoft 365 Defender をオンに し、より多くのデータ ソースを使用して脅威を検出します。Turn on Microsoft 365 Defender to hunt for threats using more data sources. 「Advanced Hunting queriesfrom Microsoft Defender for Endpoint 」 の手順に従って、高度なハンティング ワークフローを Microsoft Defender for Endpoint から Microsoft 365 Defender に移動できます。You can move your advanced hunting workflows from Microsoft Defender for Endpoint to Microsoft 365 Defender by following the steps in Migrate advanced hunting queries from Microsoft Defender for Endpoint.