進階搜捕是以 Kusto 查詢語言為基礎。 你可以使用 Kusto 運算子和語句來構建查詢,將資訊定位為專門的 進階搜尋架構。
觀看這支短片,學習一些實用的 Kusto 查詢語言基礎。
若要了解進階搜捕中的 Kusto 查詢語言基礎,請先執行第一個查詢。
試試你的第一個查詢
在 Microsoft Defender 入口網站中,前往 Hunting 以執行第一個查詢。 請使用下列範例:
// 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
查詢本身通常會以資料表名稱開始,接著是以管道 (|) 開頭的幾個元素。 在此範例中,我們先建立兩個表格 DeviceProcessEvents 和 DeviceNetworkEvents的聯集,並根據需要加入管道元素。
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 |
在一組資料表中尋找符合述詞的資料列。 |
要查看這些運算元的即時範例,請從 Microsoft Defender 入口網站進階搜尋頁面的「開始使用」窗格執行它們。
了解資料類型
進階狩獵支援 Kusto 資料型態,包括以下常見類型:
| 資料類型 | 描述與查詢含意 |
|---|---|
datetime |
通常代表事件時間戳記的日期和時間資訊。 支援的日期時間格式 |
string |
以單引號 (') 或雙引號 (") 括住的 UTF-8 字元字串。
String 資料類型 |
bool |
這種資料類型支援 true 或 false 狀態。
支援的布林字面值與運算元 |
int |
32 位元整數 |
long |
64 位元整數 |
欲了解更多關於 Kusto 標量資料型態的資訊,請參閱 Kusto 純量資料型別。
編寫查詢時取得協助
運用下列功能更快速地編寫查詢:
- 自動建議 ——當你寫查詢時,進階搜尋會從 IntelliSense 提供建議。
- 結構樹 ——包含資料表及其欄位的結構表示,會附在工作區旁邊。 如需更多資訊,請將滑鼠游標移至項目上方。 按兩下某個項目,將它插入查詢編輯器。
-
架構參考 - 入口網站內參考,包含表格與欄位描述,以及支援的事件類型 (值)
ActionType與範例查詢
在編輯器中處理多個查詢
你可以用查詢編輯器來嘗試多個查詢。 若要使用多個查詢:
每個查詢用空行分隔。
在執行查詢前,將游標放在查詢的任何部分以選取該查詢。 此程序只會執行所選查詢。 要執行另一個查詢,請相應移動游標並選擇 執行查詢。
為了提升工作效率,你也可以在同一搜尋頁面中使用多個分頁。 選擇 新查詢 以開啟新查詢的分頁。
這樣你就能在不開啟新瀏覽器分頁的情況下執行不同的查詢。
注意事項
使用多個瀏覽器分頁搭配進階搜尋功能可能會導致你遺失未儲存的查詢。 為了避免這種情況,建議使用進階狩獵中的分頁功能,而非分開的瀏覽器分頁。
使用範例查詢
開始使用章節提供幾個使用常用運算子的簡單查詢範例。 試著執行「 開始」 區塊的範例查詢,並做些小修改。
注意事項
除了基本查詢範例以外,您也可以取得適用於特定威脅搜捕案例的共用查詢。 探索頁面左側的共享查詢或 GitHub 查詢庫。
存取查詢語言文件
如需有關 Kusto 查詢語言和支援運算子的詳細資訊,請參閱 Kusto 查詢語言說明文件。
注意事項
本文中的某些表格可能無法在 適用於端點的 Microsoft Defender 中使用。 開啟 Microsoft Defender,利用更多資料來源搜尋威脅。 你可以按照 Migrate advanced hunting queries from 適用於端點的 Microsoft Defender 中的步驟,將進階搜捕工作流程從 適用於端點的 Microsoft Defender 移轉到 Microsoft Defender。
相關內容
提示
想要深入了解? 請到我們的技術社群中與 Microsoft 安全性社群互動: Microsoft Defender 全面偵測回應技術社群。