البحث عن التهديدات عبر الأجهزة ورسائل البريد الإلكتروني والتطبيقات والهويات
ينطبق على:
- Microsoft Defender XDR
يتيح لك التتبع المتقدم في Microsoft Defender XDR البحث بشكل استباقي عن التهديدات عبر:
- الأجهزة التي تديرها Microsoft Defender لنقطة النهاية
- رسائل البريد الإلكتروني التي تمت معالجتها بواسطة Microsoft 365
- أنشطة تطبيق السحابة وأحداث المصادقة وأنشطة وحدة التحكم بالمجال التي يتم تعقبها بواسطة Microsoft Defender for Cloud Apps Microsoft Defender for Identity
باستخدام هذا المستوى من الرؤية، يمكنك بسرعة البحث عن التهديدات التي تعبر أقساما من شبكتك، بما في ذلك الاختراقات المتطورة التي تصل على البريد الإلكتروني أو الويب، ورفع الامتيازات المحلية، والحصول على بيانات اعتماد المجال المتميزة، والانتقال أفقيا إلى جميع أجهزتك.
فيما يلي تقنيات عامة واستعلامات نموذجية استنادا إلى سيناريوهات التتبع المختلفة التي يمكن أن تساعدك على استكشاف كيفية إنشاء الاستعلامات عند البحث عن مثل هذه التهديدات المعقدة.
استخدم هذه الاستعلامات لمعرفة كيفية الحصول بسرعة على معلومات حول حسابات المستخدمين والأجهزة والملفات.
عند إنشاء استعلامات عبر الجداول التي تغطي الأجهزة ورسائل البريد الإلكتروني، ستحتاج على الأرجح إلى الحصول على أسماء حسابات المستخدمين من عناوين البريد الإلكتروني للمرسل أو المستلم. يمكنك بشكل عام القيام بذلك لعنوان المستلم أو المرسل باستخدام المضيف المحلي من عنوان البريد الإلكتروني.
في القصاصة البرمجية أدناه، نستخدم الدالة tostring() Kusto لاستخراج المضيف المحلي مباشرة قبل @
من عناوين البريد الإلكتروني للمستلم في العمود RecipientEmailAddress
.
//Query snippet showing how to extract the account name from an email address
AccountName = tostring(split(RecipientEmailAddress, "@")[0])
يوضح الاستعلام أدناه كيفية استخدام هذه القصاصة البرمجية:
EmailEvents
| where Timestamp > ago(7d)
| project RecipientEmailAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]);
يمكنك الحصول على أسماء الحسابات ومعلومات الحساب الأخرى عن طريق دمج جدول IdentityInfo أو الانضمام إليه. يحصل الاستعلام أدناه على قائمة بالتصيد الاحتيالي واكتشاف البرامج الضارة من جدول EmailEvents ثم ينضم إلى تلك المعلومات مع IdentityInfo
الجدول للحصول على معلومات مفصلة حول كل مستلم.
EmailEvents
| where Timestamp > ago(7d)
//Get email processing events where the messages were identified as either phishing or malware
| where ThreatTypes has "Malware" or ThreatTypes has "Phish"
//Merge email events with identity info to get recipient details
| join (IdentityInfo | distinct AccountUpn, AccountDisplayName, JobTitle,
Department, City, Country) on $left.RecipientEmailAddress == $right.AccountUpn
//Show important message and recipient details
| project Timestamp, NetworkMessageId, Subject, ThreatTypes,
SenderFromAddress, RecipientEmailAddress, AccountDisplayName, JobTitle,
Department, City, Country
شاهد هذا الفيديو القصير لمعرفة كيفية استخدام لغة استعلام Kusto للانضمام إلى الجداول.
يوفر مخطط التتبع المتقدم معلومات شاملة عن الجهاز في جداول مختلفة. على سبيل المثال، يوفر جدول DeviceInfo معلومات شاملة عن الجهاز استنادا إلى بيانات الحدث المجمعة بانتظام. يستخدم DeviceInfo
هذا الاستعلام الجدول للتحقق مما إذا كان المستخدم الذي يحتمل اختراقه (<account-name>
) قام بتسجيل الدخول إلى أي أجهزة ثم يسرد التنبيهات التي تم تشغيلها على تلك الأجهزة.
تلميح
يستخدم kind=inner
هذا الاستعلام لتحديد صلة داخلية، مما يمنع إلغاء تكرار القيم الجانبية اليسرى ل DeviceId
.
DeviceInfo
//Query for devices that the potentially compromised account has logged onto
| where LoggedOnUsers contains '<account-name>'
| distinct DeviceId
//Crosscheck devices against alert records in AlertEvidence and AlertInfo tables
| join kind=inner AlertEvidence on DeviceId
| project AlertId
//List all alerts on devices that user has logged on to
| join AlertInfo on AlertId
| project AlertId, Timestamp, Title, Severity, Category
استخدم الاستعلام التالي للحصول على معلومات حول الأحداث المتعلقة بالملف.
DeviceInfo
| where Timestamp > ago(1d)
| where ClientVersion startswith "20.1"
| summarize by DeviceId
| join kind=inner (
DeviceFileEvents
| where Timestamp > ago(1d)
) on DeviceId
| take 10
استخدم الاستعلام التالي للحصول على معلومات حول الأحداث المتعلقة بالشبكة.
DeviceInfo
| where Timestamp > ago(1d)
| where ClientVersion startswith "20.1"
| summarize by DeviceId
| join kind=inner (
DeviceNetworkEvents
| where Timestamp > ago(1d)
) on DeviceId
| take 10
استخدم الاستعلام التالي للحصول على إصدار العامل الذي يعمل على جهاز.
DeviceInfo
| where Timestamp > ago(1d)
| where ClientVersion startswith "20.1"
| summarize by DeviceId
| join kind=inner (
DeviceNetworkEvents
| where Timestamp > ago(1d)
) on DeviceId
| take 10
استخدم استعلام المثال التالي لمشاهدة جميع الأجهزة التي تعمل بنظام التشغيل macOS بإصدار أقدم من Catalina.
DeviceInfo
| where Timestamp > ago(1d)
| where OSPlatform == "macOS" and OSVersion !contains "10.15" and OSVersion !contains "11."
| summarize by DeviceId
| join kind=inner (
DeviceInfo
| where Timestamp > ago(1d)
) on DeviceId
| take 10
استخدم الاستعلام التالي للحصول على حالة الجهاز. في المثال التالي، يتحقق الاستعلام لمعرفة ما إذا كان الجهاز قد تم إلحاقه.
DeviceInfo
| where Timestamp > ago(1d)
| where OnboardingStatus != "Onboarded"
| summarize by DeviceId
| join kind=inner (
DeviceInfo
| where Timestamp > ago(1d)
) on DeviceId
| take 10
يعالج الإزالة التلقائية للساعة الصفرية (ZAP) رسائل البريد الإلكتروني الضارة بعد استلامها. إذا فشل ZAP، فقد يتم تشغيل التعليمات البرمجية الضارة في النهاية على الجهاز وترك الحسابات معرضة للخطر. يتحقق هذا الاستعلام من نشاط تسجيل الدخول الذي قام به مستلمو رسائل البريد الإلكتروني التي لم تتم معالجتها بنجاح بواسطة ZAP.
EmailPostDeliveryEvents
| where Timestamp > ago(7d)
//List malicious emails that were not zapped successfully
| where ActionType has "ZAP" and ActionResult == "Error"
| project ZapTime = Timestamp, ActionType, NetworkMessageId , RecipientEmailAddress
//Get logon activity of recipients using RecipientEmailAddress and AccountUpn
| join kind=inner IdentityLogonEvents on $left.RecipientEmailAddress == $right.AccountUpn
| where Timestamp between ((ZapTime-24h) .. (ZapTime+24h))
//Show only pertinent info, such as account name, the app or service, protocol, the target device, and type of logon
| project ZapTime, ActionType, NetworkMessageId , RecipientEmailAddress, AccountUpn,
LogonTime = Timestamp, AccountDisplayName, Application, Protocol, DeviceName, LogonType
يحدد هذا الاستعلام أولا جميع تنبيهات الوصول إلى بيانات الاعتماد في AlertInfo
الجدول. ثم يدمج الجدول أو ينضم AlertEvidence
إليه، والذي يوزعه لأسماء الحسابات المستهدفة وعوامل التصفية للحسابات المرتبطة بالمجال فقط. وأخيرا، يتحقق من IdentityLogonEvents
الجدول للحصول على جميع أنشطة تسجيل الدخول بواسطة الحسابات المستهدفة المرتبطة بالمجال.
AlertInfo
| where Timestamp > ago(30d)
//Get all credential access alerts
| where Category == "CredentialAccess"
//Get more info from AlertEvidence table to get the SID of the target accounts
| join AlertEvidence on AlertId
| extend IsJoined=(parse_json(AdditionalFields).Account.IsDomainJoined)
| extend TargetAccountSid=tostring(parse_json(AdditionalFields).Account.Sid)
//Filter for domain-joined accounts only
| where IsJoined has "true"
//Merge with IdentityLogonEvents to get all logon attempts by the potentially compromised target accounts
| join kind=inner IdentityLogonEvents on $left.TargetAccountSid == $right.AccountSid
//Show only pertinent info, such as account name, the app or service, protocol, the accessed device, and type of logon
| project AccountDisplayName, TargetAccountSid, Application, Protocol, DeviceName, LogonType
بافتراض أنك تعرف عنوان بريد إلكتروني يرسل ملفات ضارة (MaliciousSender@example.com
)، يمكنك تشغيل هذا الاستعلام لتحديد ما إذا كانت الملفات من هذا المرسل موجودة على أجهزتك. يمكنك استخدام هذا الاستعلام، على سبيل المثال، لتحديد الأجهزة المتأثرة بحملة توزيع البرامج الضارة.
EmailAttachmentInfo
| where SenderFromAddress =~ "MaliciousSender@example.com"
//Get emails with attachments identified by a SHA-256
| where isnotempty(SHA256)
| join (
//Check devices for any activity involving the attachments
DeviceFileEvents
| project FileName, SHA256, DeviceName, DeviceId
) on SHA256
| project Timestamp, FileName , SHA256, DeviceName, DeviceId, NetworkMessageId, SenderFromAddress, RecipientEmailAddress
يعثر هذا الاستعلام على أحدث 10 عمليات تسجيل دخول قام بها مستلمو البريد الإلكتروني في غضون 30 دقيقة بعد تلقيهم رسائل بريد إلكتروني ضارة معروفة. يمكنك استخدام هذا الاستعلام للتحقق مما إذا كانت حسابات مستلمي البريد الإلكتروني قد تم اختراقها.
//Define new table for malicious emails
let MaliciousEmails=EmailEvents
//List emails detected as malware, getting only pertinent columns
| where ThreatTypes has "Malware"
| project TimeEmail = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]);
MaliciousEmails
| join (
//Merge malicious emails with logon events to find logons by recipients
IdentityLogonEvents
| project LogonTime = Timestamp, AccountName, DeviceName
) on AccountName
//Check only logons within 30 minutes of receipt of an email
| where (LogonTime - TimeEmail) between (0min.. 30min)
| take 10
غالبا ما تحتوي رسائل البريد الإلكتروني الضارة على مستندات ومرفقات أخرى معدة خصيصا تقوم بتشغيل أوامر PowerShell لتقديم حمولات إضافية. إذا كنت على علم برسائل البريد الإلكتروني الواردة من مرسل ضار معروف (MaliciousSender@example.com
)، يمكنك استخدام هذا الاستعلام لسرد أنشطة PowerShell ومراجعتها التي حدثت في غضون 30 دقيقة بعد تلقي رسالة بريد إلكتروني من المرسل.
//Define new table for emails from specific sender
let EmailsFromBadSender=EmailEvents
| where SenderFromAddress =~ "MaliciousSender@example.com"
| project TimeEmail = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]);
//Merge emails from sender with process-related events on devices
EmailsFromBadSender
| join (
DeviceProcessEvents
//Look for PowerShell activity
| where FileName =~ "powershell.exe"
//Add line below to check only events initiated by Outlook
//| where InitiatingProcessParentFileName =~ "outlook.exe"
| project TimeProc = Timestamp, AccountName, DeviceName, InitiatingProcessParentFileName, InitiatingProcessFileName, FileName, ProcessCommandLine
) on AccountName
//Check only PowerShell activities within 30 minutes of receipt of an email
| where (TimeProc - TimeEmail) between (0min.. 30min)
- نظرة عامة متقدمة حول الصيد
- التعرّف على لغة الاستعلام
- استخدام نتائج الاستعلام
- استخدام الاستعلامات المشتركة
- فهم المخطط
- تطبيق أفضل ممارسات الاستعلام
تلميح
هل تريد معرفة المزيد؟ تفاعل مع مجتمع أمان Microsoft في مجتمعنا التقني: Microsoft Defender XDR Tech Community.