הטמעה של הצטרפות ללא קטע התאמה
במסמך הזה מוסבר המושג של פעולות צירוף ללא match או צירוף נתונים בחיפוש של Google Security Operations.
אתם יכולים להשתמש בפעולות של צירוף כדי ליצור קורלציה בין נתונים גולמיים מכמה מקורות ולשלב אותם על סמך ערכים משותפים של שדות. שילוב של אירועי אבטחה ושל ישויות קשורות בתצוגה מקיפה אחת מאפשר לכם לזהות איומים ולחקור אותם בצורה יעילה יותר.
בניגוד לצירופים סטטיסטיים שדורשים קטע match כדי לצבור תוצאות, צירוף נתונים מאחזר את נתוני האירועים או הישויות המלאים ומציג אותם ללא צבירה.
איך מתבצע צירוף נתונים
אפשר ליצור צירוף נתונים על ידי קורלציה בין שדות משותפים בבלוקים שונים של אירועים או ישויות. אפשר לעשות את זה באחת מהשיטות הבאות:
השוואה ישירה בין השדות (לדוגמה,
$e1.principal.hostname = $e2.principal.hostname)מקצים את שני השדות לאותו משתנה placeholder (לדוגמה,
$host = $e1.principal.hostnameו-$host = $e2.principal.hostname).
בשני המקרים, מערכת החיפוש מצמידה באופן מרומז את הבלוקים שבהם הערכים של השדות האלה זהים.
סוגי איחוד נתונים נתמכים
אפשר להשתמש בסוגי צירוף הנתונים הבאים בשאילתות החיפוש:
איחוד נתונים מאירוע לאירוע: מתאם בין נתונים של שני סוגים שונים של אירועים במודל נתונים מאוחד (UDM).
צירופים של אירועים ל-ECG: העשרת נתוני אירועים ב-UDM במידע מגרף הקשר של הישות (ECG).
צירופי Event-to-Event
הצטרפות של אירוע לאירוע מתאימה במיוחד ליצירת קורלציה בין שדות של שני סוגים שונים של אירועי UDM. האפשרות הזו שימושית לחיפוש רצפים של אירועים או פעולות שכוללים את אותם ישויות במקורות שונים של יומנים או בסוגים שונים של אירועים.
דוגמה לשאילתה הבאה מוצאת את כל חיבורי הרשת (NETWORK_CONNECTION) שמקורם במארח שבו התרחשה גם התחברות של משתמש (USER_LOGIN):
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the
$host placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
מגבלות
אפשר להצטרף לעד שני אירועים.
טווח הזמן של השאילתה מוגבל ל-14 ימים לכל היותר.
מגבלת השאילתות היא 120 שאילתות לשעה (QPH).
דוגמאות
בדוגמה הבאה של שאילתה מוצגות כל ההתחברויות לרשת (NETWORK_CONNECTION) שמקורן במארח שבו התרחשה גם התחברות של משתמש (USER_LOGIN):
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the $host
placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
הצטרפות לפי מזהה משתמש
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.user.userid = $user
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.user.userid = $user
הצטרפות באמצעות כתובת IP
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.ip = $ip
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.ip = $ip
צירופים של גרף הקשר בין אירועים לישויות
הצטרפות של אירועים ל-ECG מתאימה במיוחד להעשרת אירועים ב-UDM בנתונים הקשריים לגבי הישויות הרלוונטיות (כמו נכסים, משתמשים) מ-ECG. הצירוף הזה מאפשר לכם לקבל תמונה מלאה יותר של הנתונים, כי הוא משלב נתוני אירועים בזמן אמת עם מידע היסטורי ומידע על ישויות יחסיות.
מגבלות
טווח הזמן של השאילתה מוגבל ל-14 ימים לכל היותר.
מגבלת השאילתות היא 120 QPH.
אפשר לצרף לשאילתה עד שני אירועים של UDM.
אפשר לצרף לשאילתה רק אירוע אחד של בדיקת אק"ג.
אי אפשר לייצא לטבלת נתונים שאילתות של איחוד נתונים מאירוע ל-ECG.
אי אפשר לצרף נתוני אק"ג לאק"ג.
אין תמיכה בצירופים של נתוני אק"ג לטבלאות נתונים.
דוגמאות
השאילתה הזו מעשירה את אירועי החיבור לרשת בפרטי נכסים מ-ECG על ידי הצטרפות לשם המארח.
// Find network connections and assign the hostname to the $host placeholder
$e1.metadata.event_type = "NETWORK_CONNECTION"
$host = $e1.principal.asset.hostname
// Find asset entities in the graph and join where the hostname matches the
$host placeholder
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.asset.hostname
הצטרפות באמצעות כתובת IP עם סוג יומן ספציפי
$ip = $e1.principal.ip
$ip = $g1.graph.entity.ip
$e1.metadata.log_type = "WINDOWS_DEFENDER_ATP"
$g1.graph.entity.ip = "10.19.6.24"
הצטרפות באמצעות שם מארח עם מסנן IP ספציפי
$e1.metadata.event_type = "FILE_CREATION"
$host = $e1.principal.hostname
$e1.principal.ip = "10.0.0.76"
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.hostname
שיטות מומלצות
כדי למנוע ביצועים איטיים ופסק זמן של שאילתות, כדאי להשתמש במסננים ספציפיים ומצומצמים בכל בלוק ($e1, $e2, $g1) בשאילתות ה-JOIN.
לדוגמה, שאילתה רחבה כמו הבאה:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
אפשר לבצע אופטימיזציה על ידי הוספת קריטריונים ספציפיים, כמו שמתואר בהמשך:
$e1.metadata.event_type = "USER_LOGIN"
$e1.principal.ip = "192.168.1.101"
$e1.principal.user.userid = "alex"
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.src.hostname = "altostrat.com"
right join $e1.principal.hostname = $e2.principal.hostname
עבודה עם תוצאות
התוצאות של צירוף נתונים מוצגות בטבלה Joins, כולל השדות המשולבים משני האירועים המתואמים. הטבלה הזו שונה מתצוגת נתונים סטטיסטיים, כי היא מספקת את הנתונים המלאים של האירוע או הישות, ולא ספירה מצטברת.
אחרי שמריצים שאילתה, אפשר לעבוד עם התוצאות בדרכים הבאות:
הורדה כקובץ CSV: ייצוא של כל תוצאות החיפוש לקובץ CSV לצורך ניתוח אופליין.
ייצוא לטבלאות נתונים: שמירת התוצאות בטבלת נתונים במופע לצורך עיון או קורלציה נוספת (רק עבור צירופים של אירוע לאירוע).
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.