Custom Detection Rules in Microsoft Defender XDR Using Advanced Hunting KQL | Custom Detection Rules في Defender XDR: اصطاد التهديدات قبل ما تضربك
Custom Detection Rules في Defender XDR: اصطاد التهديدات قبل ما تضربك
دليل عملي لتحويل أي كويري KQL في Advanced Hunting لقاعدة detection شغالة لوحدها وبتعمل alert وresponse تلقائي.
المقدمة
حصلت معايا قبل كده إني لقيت في Advanced Hunting كويري بيكشف سلوك غريب، encoded PowerShell command جوه process عادي، بس المشكلة إني كنت بشغّل الكويري يدوي كل يوم عشان أتأكد مفيش تكرار للموضوع. ده تعب ومش قابل للتوسع، ولو نسيت يوم ممكن يفوتني حدث مهم. هنا بالظبط بييجي دور الـ Custom Detection Rules: بتاخد نفس الكويري اللي اتأكدت إنه دقيق، وتحوّله لقاعدة بتشتغل أوتوماتيك كل فترة زمنية محددة، وتولّد alert أو حتى تاخد action (زي عزل جهاز أو تعطيل مستخدم) من غير ما تلمس لوحة المفاتيح.
الفايدة الحقيقية هنا إنك بتعمل detection logic خاص بالبيئة بتاعتك، مش مقتصر على القواعد الجاهزة من Microsoft، وده بيسد فجوات حقيقية خصوصاً لو عندك سيناريوهات معينة في شغلك أو صناعتك مش مغطاة بالـ built-in detections.
💡 المتطلبات:
- اشتراك Microsoft Defender XDR فعّال (ضمن Microsoft 365 E5 أو Defender plan مناسب يدعم Advanced Hunting)
- صلاحية Security Administrator أو دور مخصص فيه إذن "Manage security settings" في Microsoft Defender portal
- الأجهزة أو الـ identities والـ mailboxes اللي عايز تراقبها لازم تكون onboarded فعلاً على Defender for Endpoint / Identity / Office 365
- فهم أساسي للـ KQL وهيكلة الجداول (DeviceProcessEvents, IdentityLogonEvents, EmailEvents إلخ)
ليه الكويري العادي مش كفاية؟
أي كويري بتكتبه في Advanced Hunting بيفضل "تفاعلي" يعني إنت اللي بتشغله، بيديك نتائج لحظية بس مفيش حفظ أو تكرار. أما الـ Custom Detection Rule فبتضيف طبقة فوق الكويري نفسه: جدولة تلقائية، alerts موحدة مع باقي التنبيهات في incident queue، وربط مباشر مع response actions زي isolate device أو disable user. يعني ببساطة إنت بتحوّل "فحص يدوي" لـ "نظام مراقبة دائم".
خطوات إنشاء القاعدة عملياً
1. اكتب الكويري وتأكد من الأعمدة المطلوبة
أي كويري عايز تحوّله لـ detection rule لازم يرجّع على الأقل عمود Timestamp وعمود identifier للـ entity (زي DeviceId, AccountObjectId, أو RecipientEmailAddress) علشان Defender XDR يقدر يربط النتيجة بجهاز أو حساب حقيقي.
DeviceProcessEvents
| where FileName =~ "powershell.exe"
| where ProcessCommandLine has "-enc" or ProcessCommandLine has "-EncodedCommand"
| where InitiatingProcessFileName !in~ ("mmc.exe", "svchost.exe")
| project Timestamp, DeviceId, DeviceName, AccountName, ProcessCommandLine, InitiatingProcessFileName, ReportId
2. اضغط Create detection rule
بعد ما تشغّل الكويري وتتأكد إنه بيرجّع نتائج منطقية (مش noisy)، هتلاقي زرار Create detection rule فوق نتائج الـ query مباشرة.
3. حدد تفاصيل القاعدة
اديها اسم واضح، severity مناسبة (Low/Medium/High/Informational)، category (زي Execution أو CredentialAccess)، وربطها بـ MITRE ATT&CK technique المناسبة زي T1059.001.
4. حدد impacted entities
Defender XDR هيسألك مين الـ entity المتأثر من كل عمود في النتيجة (device, user, mailbox)، ده اللي بيخلي الـ alert يظهر صح في الـ incident graph.
5. اختار الـ actions (اختياري)
ممكن تحدد automated actions زي isolate device أو collect investigation package، بس انصح تبدأ بـ Alert only لحد ما تتأكد إن الـ false positive rate واطي.
// مثال تاني: اكتشاف عدة محاولات دخول فاشلة من دول مختلفة ثم نجاح IdentityLogonEvents | where ActionType == "LogonFailed" | summarize FailedCount = count(), Countries = make_set(Location) by AccountUpn, bin(Timestamp, 1h) | where FailedCount >= 5 and array_length(Countries) > 1 | project Timestamp, AccountUpn, FailedCount, Countries
تكرار التشغيل (Frequency) والفرق بينهم
اختيار الـ frequency مش شكلي، بيأثر على نوع البيانات اللي القاعدة بتقدر تشوفها:
| تكرار التشغيل | نوع البيانات | الاستخدام الأمثل |
|---|---|---|
| كل 24 ساعة | بيانات تاريخية حتى 30 يوم | تحليلات وتريندات مش حرجة وقتياً |
| كل 12 ساعة | نفس المدى الزمني | متابعة دورية متوسطة الأهمية |
| كل 3 ساعات | بيانات أحدث | سيناريوهات محتاجة استجابة أسرع |
| كل ساعة | بيانات شبه حديثة | مراقبة مكثفة لأحداث حساسة |
| مستمر (NRT) | أحداث حية من جداول مدعومة فقط | سيناريوهات حرجة محتاجة استجابة فورية |
⚠️ خاصية NRT (Near Real Time) مش متاحة لكل الجداول، لازم تتأكد إن الجداول اللي بتستخدمها في الكويري (زي DeviceProcessEvents أو EmailEvents) مدعومة قبل ما تختار continuous frequency، وإلا القاعدة هتفشل في الـ activation.
✅ لما القاعدة تشتغل صح، هتلاقي incidents جديدة بتظهر في Defender portal تحت الاسم اللي انت اختارته، ومربوطة بالـ MITRE technique الصحيحة.
مشاكل شائعة وحلولها
| المشكلة | الحل |
|---|---|
| الكويري شغال لوحده في Advanced Hunting بس القاعدة مش بترجع alerts | تأكد إن الأعمدة المطلوبة (Timestamp + عمود entity واضح) موجودة، وإن عدد النتائج مش متجاوز الحد المسموح لكل تشغيلة |
| القاعدة بتولّد alerts كتير جداً (noise) | ضيف شروط فلترة إضافية أو استخدم summarize/count لتقليل التكرار، وراجع الـ severity |
| الـ automated actions مش بتتنفذ على الجهاز | تأكد من صلاحيات الحساب المستخدم، وإن الجهاز onboarded فعلاً على Defender for Endpoint |
| القاعدة اتعطلت تلقائياً (disabled) | غالباً بسبب فشل متكرر في تنفيذ الكويري، راجع تفاصيل الخطأ من صفحة Custom detection rules وصحّح الـ syntax |
نصائح الأمان 🔐
- ابدأ أي قاعدة جديدة بـ Alert only من غير automated actions لحد ما تتأكد إن الـ false positive rate مقبول
- اربط كل قاعدة بتصنيف MITRE ATT&CK صحيح عشان التقارير والـ incident correlation يبقوا مظبوطين
- استخدم Custom roles وRBAC عشان تحدد بدقة مين يقدر ينشئ أو يعدّل أو يمسح الـ detection rules
- راجع كل القواعد الموجودة شهرياً على الأقل، شوف معدل الـ false positives وعدّل الكويري لو محتاج
- وثّق سبب وجود كل قاعدة (ليه اتعملت، بترد على أنهي threat scenario) عشان أي حد جديد في الفريق يفهم السياق بسرعة
الخلاصة
الـ Custom Detection Rules مش بس أداة إضافية، ده أقرب لتحويل الخبرة اللي عندك عن بيئتك لمنطق detection شغال 24/7 من غير تدخل يدوي. البداية الصح دايماً إنك تثبت الكويري يدوياً الأول في Advanced Hunting، بعدين تحوّله لقاعدة، وتراقب أداءها بانتظام.
- اكتب وجرّب الكويري في Advanced Hunting لحد ما يرجّع نتائج دقيقة ومفهومة
- حوّله لـ Custom Detection Rule مع تحديد entities وseverity وMITRE mapping صح
- اختار frequency مناسبة للسيناريو، وابدأ بـ Alert only قبل أي automated action
- راجع وحسّن القاعدة بشكل دوري بناءً على نتائجها الفعلية
إنت استخدمت Custom Detection Rules في Defender XDR قبل كده؟ شاركنا تجربتك أو أي سيناريو كشفته بالطريقة دي في التعليقات.

Comments
Post a Comment