أساسيات KQL التي يجب على كل محلل SOC أن يعرفها
تعلم بناء جملة KQL الأساسي وأنماط الاستعلام التي يستخدمها محللو SOC يومياً في Microsoft Sentinel و Defender للبحث عن التهديدات بشكل أسرع.
لغة 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)، قيّد إلى آخر يوم، عد الفشل لكل حساب/كمبيوتر، ثم رتّب. هذه القراءة الخطية هي أكبر نقاط قوة KQL مقارنة بـ SQL للبحث المخصص.
العوامل الأساسية للحفظ
- 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 مقابل contains مقابل ==
الخطأ الشائع هو الافتراض الافتراضي لـ `contains` لكل شيء. `has` يطابق الشروط الكاملة ويستخدم فهرس المصطلح، مما يجعله أسرع بكثير على الجداول الكبيرة. استخدم `contains` فقط عندما تحتاج إلى مطابقات الأحرف الفرعية داخل كلمة (مثل جزء نطاق جزئي)، واستخدم `==` للمطابقة الدقيقة على الحقول المنظمة مثل EventID أو IPAddress. هذه العادة الوحيدة تسرع الصيد بشكل ملحوظ عبر الجداول عالية الحجم مثل `DeviceNetworkEvents` أو `CommonSecurityLog`.```kql
DeviceProcessEvents
| where ProcessCommandLine has "powershell"
| where ProcessCommandLine has_any ("-enc", "-EncodedCommand")
بناء منطق الكشف القابل لإعادة الاستخدام
بمجرد إثبات استعلام مفيد، لفه كدالة باستخدام let، أو احفظه كقاعدة تحليلية في Sentinel مع تنفيذ مجدول. قم بمعاملة العتبات (مثل عدد تسجيلات الدخول الفاشلة) حتى تتسع نفس المنطق عبر المستأجرين أو يتم ضبطها دون إعادة كتابة من الصفر. هذا هو كيفية تطور الاستعلامات الفردية للصيد إلى كشفيات قائمة تقسم SOC تلقائياً.
الأخطاء الشائعة
- نسيان عوامل تصفية
TimeGenerated، مما يسبب عمليات مسح الجدول الكامل البطيئة والمكلفة. - استخدام
summarizeقبلwhere، مما يجبر المحرك على تجميع البيانات غير المصفاة. - عدم تطابق أسماء الأعمدة عند ربط الجداول — تحقق دائماً من المخطط باستخدام
getschemaأولاً. - الإفراط في استخدام
contains، مما يتخطى فوائد الفهرس ويبطئ الصيد على نطاق واسع.
KQL يكافئ المحللين الذين يفكرون في خطوط الأنابيب بدلاً من الاستعلامات الفرعية المتداخلة. ابدأ كل تحقيق بنافذة زمنية ضيقة وجدول محدد، ثم توسّع فقط عند الحاجة.
إذا أعطاك هذا أساساً قوياً، فاستكشف مقاطع Blue Team و Digital Forensics على Korra Studio للمزيد من الإرشادات العملية لاستعلامات SOC وتمارين بناء الكشف.
تمت كتابة هذا المقال بمساعدة الذكاء الاصطناعي ونشره في قاعدة معارف Korra Studio.
هذه ملاحظة واحدة من قاعدة معارف Korra Studio — المنصة تجمع كل موضوع مع التوجيه الفردي.
ابدأ بالمجانarrow_forward