arrow_back回到田野筆記
BLUE TEAM 已發佈 10 Jul 2026

KQL 基礎知識:每位 SOC 分析師都應該了解

學習 SOC 分析師在 Microsoft Sentinel 和 Defender 中每日使用的核心 KQL 語法和查詢模式,加快威脅狩獵速度。

Kusto Query Language (KQL) 是 Microsoft Sentinel 和 Microsoft Defender 中威脅狩獵和警報分類的基礎。如果你在 SOC 工作,KQL 流暢性區分了能快速回答「這裡發生了什麼?」的分析師,和那些困在儀表板上點擊的人。這不是完整的語言參考——這是實際工作中不斷使用的實用子集。

為什麼 KQL 在 SOC 中很重要

KQL 是唯讀的,針對快速查詢海量日誌資料集進行最佳化。Sentinel、Defender for Endpoint、Azure Monitor 和 Log Analytics 都支援它。一旦你掌握它,就可以在產品間切換,使用相同的思維模型:選擇一個表、篩選它、塑造輸出。每項調查——網路釣魚分類、橫向移動狩獵、誤報調整——都從查詢開始。

管道是一切

KQL 查詢是作為管道構建的。你從一個表開始,將資料通過一系列運算子傳遞,每個運算子篩選、轉換或彙總前面的結果:

SecurityEvent
| where EventID == 4625
| where TimeGenerated > ago(24h)
| summarize FailedLogons = count() by Account, Computer
| sort by FailedLogons desc

從上到下逐行閱讀,就像讀句子一樣:從 SecurityEvent 日誌開始,只保留失敗的登入 (4625),限制在最後一天,按帳戶/電腦計算失敗次數,然後排序。相比 SQL 的特別狩獵,這種線性可讀性是 KQL 最大的優勢。

核心運算子需要記住

  • where — 你的主要篩選器。在昂貴操作之前盡早頻繁使用它來減少資料量。
  • project — 選擇和重新命名特定欄位,丟棄輸出中不需要的噪音。
  • extend — 新增計算欄位而不刪除現有欄位,適合用於解析字串或標記條件。
  • summarize — 使用 count()sum()dcount()make_set() 彙總資料,幾乎總是與 by 配對。
  • join — 在表間關聯,例如將登入日誌與裝置清單連結以檢測非受控裝置登入。
  • render — 直接在查詢編輯器中將結果視覺化為時間圖表或長條圖,便於發現高峰。

正確的時間篩選

始終在管道中盡早篩選 TimeGenerated(或表的等效時間戳欄位)。KQL 引擎圍繞時間範圍篩選進行了大量最佳化,在頂部而不是底部放置 | where TimeGenerated > ago(7d) 可能是查詢在幾秒內傳回與在繁忙租户上逾時之間的區別。```kql SigninLogs | where TimeGenerated > ago(1h) | where ResultType != "0" | where UserPrincipalName has "@yourdomain.com"


## 字串匹配:has vs contains vs ==

常見的錯誤是對所有情況都預設使用 `contains`。`has` 匹配完整詞彙並使用詞彙索引,在大型表上速度明顯更快。只有在需要詞彙內的子字串匹配時(例如部分網域片段)才使用 `contains`,對於結構化欄位(如 EventID 或 IPAddress)使用 `==` 進行精確匹配。這個習慣會顯著加快在大容量表(如 `DeviceNetworkEvents` 或 `CommonSecurityLog`)上的狩獵速度。```kql
DeviceProcessEvents
| where ProcessCommandLine has "powershell"
| where ProcessCommandLine has_any ("-enc", "-EncodedCommand")

構建可重用的檢測邏輯

查詢驗證有用後,用 let 將其包裝為函數,或將其儲存為 Sentinel 分析規則並進行排定執行。參數化閾值(如失敗登入計數),以便相同邏輯可跨租户擴展或在不從頭重寫的情況下進行調整。這就是一次性狩獵查詢如何演變成自動呼叫 SOC 的持續檢測。

常見陷阱

  • 忘記 TimeGenerated 篩選,導致緩慢、昂貴的全表掃描。
  • where 之前使用 summarize,迫使引擎彙總未篩選的資料。
  • 連結表時欄位名稱不匹配——始終先用 getschema 檢查結構。
  • 過度使用 contains,這會跳過索引優勢並減慢大規模狩獵。

KQL 獎勵那些用管道思考而不是嵌套子查詢的分析師。以狹窄的時間窗口和特定的表開始每項調查,然後根據需要擴大。

如果這給了你堅實的基礎,請探索 Korra Studio 上的「藍隊」和「數位鑑識」部分,了解更多實際操作的 SOC 查詢演練和檢測構建練習。

本文由 AI 協助生成,已發佈至 Korra Studio 知識庫。

準備好更進一步了嗎?

這是 Korra Studio 知識庫中的一篇筆記——該平台將每個主題與一對一的師資配對。

免費開始arrow_forward