חפש איומים במכשירים שונים, הודעות דואר אלקטרוני, אפליקציות וזהויות
חל על:
- Microsoft Defender XDR
ציד מתקדם Microsoft Defender XDR מאפשר לך לחפש באופן יזום אחר איומים על פני:
- מכשירים המנוהלות על-ידי Microsoft Defender עבור נקודת קצה
- הודעות דואר אלקטרוני שעובדו על-ידי Microsoft 365
- פעילויות אפליקציית ענן, אירועי אימות ופעילויות בקר תחום הנמצאות במעקב אחר יישומי ענן של Microsoft Defender ובקרות Microsoft Defender עבור זהות
עם רמת ניראות זו, באפשרותך לחפש במהירות איומים החצים בסעיפים ברשת שלך, כולל הפרעות מתוחכמות המגיעות בדואר אלקטרוני או באינטרנט, להעלות הרשאות מקומיות, להשיג אישורי תחום בעלי הרשאות ולעבור לרוחב המכשירים שלך.
להלן טכניקות כלליות ושאילתות לדוגמה המבוססות על תרחישי ציד שונים, שעשויים לעזור לך לגלות כיצד תוכל לבנות שאילתות בעת ציד אחר איומים מתוחכמים כאלה.
קבל מידע אודות ישות
השתמש בשאילתות אלה כדי ללמוד כיצד ניתן לקבל במהירות מידע אודות חשבונות משתמשים, מכשירים וקבצים.
השגת חשבונות משתמשים מכתובות דואר אלקטרוני
בעת בניית שאילתות בין טבלאות שמכסה מכשירים והודעות דואר אלקטרוני, ייתכן שתצטרך להשיג שמות של חשבונות משתמשים מכתובות הדואר האלקטרוני של השולח או הנמען. בדרך כלל ניתן לעשות זאת עבור נמען או כתובת השולח באמצעות המארח המקומי מכתובת הדואר האלקטרוני.
במקטע שלהלן, אנו משתמשים בפונקציה 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
באפשרותך לקבל שמות חשבונות ופרטי חשבון אחרים על-ידי מיזוג או הצטרפות לטבלה IdentityInfo. השאילתה שלהלן משיגה את רשימת הזיהויים של דיוג ותוכנות זדוניות מהטבלה EmailEventsIdentityInfo
ולאחר מכן מצרפת מידע זה לטבלה כדי לקבל מידע מפורט על כל נמען.
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
השתמש בשאילתת הדוגמה הבאה כדי לראות את כל המכשירים שבהם פועל 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 לאחר קבלת הודעות דואר אלקטרוני משולח זדוני ידוע
הודעות דואר אלקטרוני זדוניות מכילות לעתים קרובות מסמכים וקבצים מצורפים אחרים בעלי מבנה מיוחד, בהן מופעלות פקודות 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.