了解進階搜捕查詢語言

適用於:

  • Microsoft Defender XDR

進階搜捕是以 Kusto 查詢語言為基礎。 您可以使用 Kusto 運算符和 語句來建構查詢,以找出特製化架 中的資訊。

觀看這段短片以瞭解一些方便的 Kusto 查詢語言基本概念。

若要深入了解這些概念,請執行您的第一個查詢。

嘗試您的第一個查詢

在 Microsoft Defender 入口網站中,移至搜捕以執行您的第一個查詢。 請使用下列範例:

// 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

在進階搜捕中執行此查詢

查詢開頭已新增簡短批注,以描述其用途。 如果您後來決定要儲存查詢,並與組織中的其他人共用,此註解會有所幫助。

// Finds PowerShell execution events that could involve a download

查詢本身通常會以數據表名稱開頭,後面接著幾個以管道 () | 開頭的專案。 在此範例中,我們會從建立和 兩個數據表的聯集開始, DeviceProcessEventsDeviceNetworkEvents並視需要新增管道元素。

union DeviceProcessEvents, DeviceNetworkEvents

設定時間範圍

第一個管線專案是範圍為前七天的時間篩選。 限制時間範圍可確保查詢順利執行、傳回可管理的結果,且不會逾時。

| where Timestamp > ago(7d)

注意事項

不論您在 設定中指定的時區為何,Kusto 時間篩選都是 UTC。

檢查特定進程

時間範圍緊接著搜尋代表PowerShell應用程式的進程檔名。

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

搜尋特定的命令字串

之後,查詢會在命令行中尋找通常用來使用PowerShell下載檔的字串。

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

自訂結果數據行和長度

您的查詢已清楚識別出您要尋找的資料,現在您可以定義想要的結果。 project 會傳回特定數據行,並 top 限制結果數目。 這些運算元有助於確保結果的格式正確且相當大且容易處理。

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

取 [執行查詢 ] 以查看結果。

提示

您可以將查詢結果檢視為圖表,並快速調整篩選。 如需指引, 請參閱使用查詢結果

瞭解常見的查詢運算符

您剛執行第一個查詢,並對其元件有一般概念。 現在可以稍微回溯並瞭解一些基本概念。 進階搜捕所使用的 Kusto 查詢語言支援一系列運算子,包括下列常見運算子。

運算子 描述及用法
where 將資料表篩選為符合述詞的資料列子集。
summarize 產生匯總輸入資料表內容的資料表。
join 合併兩個資料表的資料列,並比對每個資料表中的指定資料行的值來建立新的資料表。 觀看 KQL 中的聯 結數據表以瞭解做法。
count 傳回輸入記錄集中的記錄數目。
top 傳回按指定資料行排序的前 N 筆記錄。
limit 傳回指定的資料列數。
project 選取要包含的資料行、重新命名或捨棄,然後插入新的計算資料行。
extend 建立計算資料行並將它們附加到結果集中。
makeset 傳回 Expr 在群組中取得的獨特值集合的動態 (JSON) 陣列。
find 在一組資料表中尋找符合述詞的資料列。

若要查看這些運算子的實際範例,請從進階搜捕的 [開始使用] 區段中執行這些運算子。

了解資料類型

進階搜捕支援 Kusto 數據類型,包括下列常見類型:

資料類型 描述與查詢含意
datetime 通常代表事件時間戳記的日期和時間資訊。 請參閱支援的日期時間格式
string 以單引號 (') 或雙引號 (") 括住的 UTF-8 字元字串。 深入瞭解字串
bool 這種資料類型支援 truefalse 狀態。 請參閱支援的常值和運算元
int 32 位元整數
long 64 位元整數

若要深入瞭解這些數據類型, 請參閱 Kusto 純量數據類型

編寫查詢時取得協助

運用下列功能更快速地編寫查詢:

  • 自動建議: 當您撰寫查詢時,進階搜捕會提供 IntelliSense 的建議。
  • 架構樹狀結構-包含數據表清單及其數據行的架構表示法會在您的工作區域旁邊提供。 如需詳細資訊,請將游標暫留在某項目上。 按兩下某個項目,將它插入查詢編輯器。
  • 架構參考— 具有數據表和數據行描述的入口網站內參考,以及支援的事件類型 (ActionType 值) 和範例查詢

在編輯器中使用多個查詢

您可以使用查詢編輯器來試驗多個查詢。 若要使用多個查詢:

  • 使用空白行分隔每個查詢。
  • 將游標放在查詢的任何部分,以在執行查詢之前選取該查詢。 這隻會執行選取的查詢。 若要執行另一個查詢,請據以移動數據指標,然後選取 [ 執行查詢]

Microsoft Defender 入口網站中 [新增查詢] 頁面中多個查詢執行的範例

針對更有效率的工作區,您也可以在相同的搜捕頁面中使用多個索引標籤。 選 取 [新增查詢 ] 以開啟新查詢的索引標籤。

在 Microsoft Defender 入口網站中選取 [Create 新進階搜捕] 來開啟新的索引標籤

然後,您可以執行不同的查詢,而不需要開啟新的瀏覽器索引標籤。

執行不同的查詢,而不需要離開 Microsoft Defender 入口網站中的進階搜捕頁面

注意事項

搭配進階搜捕使用多個瀏覽器索引標籤可能會導致您遺失未儲存的查詢。 若要避免發生這種情況,請使用進階搜捕內的索引標籤功能,而不是個別的瀏覽器索引標籤。

使用範例查詢

[開始使用] 區段提供一些使用常用運算子的簡單查詢。 嘗試執行這些查詢,並對它們進行些微修改。

Microsoft Defender 入口網站中 [進階搜捕] 頁面中的 [開始使用] 區段

注意事項

除了基本查詢範例以外,您也可以取得適用於特定威脅搜捕案例的共用查詢。 探索頁面左側或 GitHub 查詢存放庫上的共享查詢。

Access 查詢語言說明文件

如需有關 Kusto 查詢語言和支援運算子的詳細資訊,請參閱 Kusto 查詢語言說明文件

注意事項

本文中的某些數據表可能無法在 適用於端點的 Microsoft Defender 中使用。 開啟 Microsoft Defender 全面偵測回應,以使用更多數據源來搜捕威脅。 您可以遵循從 適用於端點的 Microsoft Defender 移轉進階搜捕查詢中的步驟,將進階搜捕工作流程從 適用於端點的 Microsoft Defender 移至 Microsoft Defender 全面偵測回應

提示

想要深入了解? Engage 技術社群中的 Microsoft 安全性社群:Microsoft Defender 全面偵測回應 技術社群。