arrow_backफ़ील्ड नोट्स पर वापस जाएँ
BLUE TEAM प्रकाशित 10 Jul 2026

KQL बेसिक्स हर SOC विश्लेषक को जानना चाहिए

Microsoft Sentinel और Defender में SOC विश्लेषक दैनिक रूप से उपयोग करने वाले मुख्य KQL सिंटैक्स और क्वेरी पैटर्न सीखें और खतरों का शिकार तेजी से करें।

Kusto Query Language (KQL) Microsoft Sentinel और Microsoft Defender में खतरे के शिकार और अलर्ट ट्रिएज की रीढ़ है। अगर आप एक SOC में काम कर रहे हैं, तो KQL में सटीकता उन विश्लेषकों को अलग करती है जो तेजी से "यहाँ क्या हुआ?" का जवाब दे सकते हैं उनसे जो डैशबोर्ड के माध्यम से क्लिक करते रह जाते हैं। यह एक पूर्ण भाषा संदर्भ नहीं है — यह व्यावहारिक उपसमुच्चय है जो शिफ्ट के दौरान लगातार उपयोग होता है।

SOC में KQL क्यों मायने रखता है

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 — मौजूदा कॉलम को ड्रॉप किए बिना कंप्यूटेड कॉलम जोड़ें, स्ट्रिंग पार्सिंग या फ्लैग करने वाली स्थितियों के लिए उपयोगी।
  • summarizecount(), sum(), dcount(), या make_set() के साथ डेटा को एकत्रित करें, लगभग हमेशा by के साथ जोड़ा जाता है।
  • join — टेबल के पार संबंध बनाएं, उदाहरण के लिए साइन-इन लॉग को डिवाइस इन्वेंटरी से जोड़ें ताकि अप्रबंधित डिवाइस लॉगऑन को खोजा जा सके।
  • render — परिणामों को timechart या barchart के रूप में क्वेरी संपादक में सीधे देखें, स्पाइक खोजने के लिए काम आता है।

समय फ़िल्टरिंग सही तरीके से

पाइपलाइन में जल्दी TimeGenerated (या टेबल के समकक्ष टाइमस्टैम्प कॉलम) पर फ़िल्टर करें। KQL इंजन समय-रेंज फ़िल्टर के चारों ओर भारी अनुकूलन करते हैं, और | where TimeGenerated > ago(7d) को नीचे के बजाय शीर्ष के पास रखना एक क्वेरी के बीच का अंतर हो सकता है जो सेकंड में वापसी करता है बनाम एक जो व्यस्त किरायेदार पर समय समाप्त हो जाता है।```kql SigninLogs | where TimeGenerated > ago(1h) | where ResultType != "0" | where UserPrincipalName has "@yourdomain.com"


## स्ट्रिंग मिलान: has बनाम contains बनाम ==

एक आम गलती है सब कुछ के लिए `contains` पर डिफ़ॉल्ट करना। `has` पूरी शर्तों से मेल खाता है और एक शब्द सूचकांक का उपयोग करता है, जिससे यह बड़ी टेबल पर नाटकीय रूप से तेजी से हो जाता है। `contains` का उपयोग केवल तभी करें जब आपको एक शब्द (जैसे आंशिक डोमेन टुकड़ा) के अंदर सबस्ट्रिंग मैच की आवश्यकता हो, और `==` को EventID या IPAddress जैसे संरचित फ़ील्ड पर सटीक मिलान के लिए उपयोग करें। यह एक आदत `DeviceNetworkEvents` या `CommonSecurityLog` जैसी उच्च-वॉल्यूम टेबल के पार शिकार को ध्यान से गति देती है।```kql
DeviceProcessEvents
| where ProcessCommandLine has "powershell"
| where ProcessCommandLine has_any ("-enc", "-EncodedCommand")

पुनः उपयोग करने योग्य डिटेक्शन लॉजिक बनाना

एक बार क्वेरी उपयोगी साबित होने के बाद, इसे let के साथ एक फंक्शन के रूप में लपेटें, या इसे शेड्यूल किए गए निष्पादन के साथ एक Sentinel Analytics Rule के रूप में सहेजें। दहलीज को पैरामीटर करें (जैसे असफल लॉगऑन गिनती) ताकि समान लॉजिक किरायेदारों के पार स्केल हो या शुरुआत से फिर से लिखने के बिना ट्यून किया जा सके। यह है कि कैसे एक-बार के शिकार क्वेरी खड़े हो जाते हैं डिटेक्शन में जो स्वचालित रूप से SOC को पेज करते हैं।

सामान्य नुकसान

  • TimeGenerated फ़िल्टर भूल जाना, धीमी, महंगी पूर्ण-टेबल स्कैन का कारण बनता है।
  • where से पहले summarize का उपयोग करना, जो इंजन को अफ़िल्टर किए गए डेटा को एकत्रित करने के लिए मजबूर करता है।
  • टेबल जोड़ते समय गलत कॉलम नाम — हमेशा पहले getschema के साथ स्कीमा जांचें।
  • contains का अत्यधिक उपयोग, जो इंडेक्सिंग लाभ को छोड़ता है और बड़े पैमाने पर शिकार को धीमा करता है।

KQL उन विश्लेषकों को पुरस्कृत करता है जो नेस्टेड सबक्वेरी के बजाय पाइपलाइन में सोचते हैं। हर जांच को एक संकीर्ण समय विंडो और एक विशिष्ट टेबल के साथ शुरू करें, फिर केवल आवश्यकतानुसार चौड़ा करें।

अगर इसने आपको एक ठोस नींद दी है, तो Korra Studio पर Blue Team और Digital Forensics सेगमेंट खोजें ताकि अधिक हाथों पर SOC क्वेरी वॉकथ्रू और डिटेक्शन-बिल्डिंग अभ्यास के लिए।

AI सहायता से लिखा गया, माइकल पिल्च (CISSP), Korra Studio द्वारा समीक्षित और प्रकाशित।

आगे बढ़ने के लिए तैयार?

यह Korra Studio के ज्ञान आधार से एक नोट है — प्लेटफ़ॉर्म हर विषय को 1-टू-1 मेंटरिंग के साथ जोड़ता है।

मुफ़्त शुरू करेंarrow_forward