תחביר של קטע התאמה

נתמך ב:

ב-YARA-L 2.0, הקטע match מספק את המנגנון לקורלציה של כמה אירועים. הוא מגדיר את הלוגיקה לקיבוץ אירועים לזיהוי יחיד על ידי קישור מאפיינים משותפים, כמו משתמשים, כתובות IP או גיבובים של קבצים, בתוך גבול זמני ספציפי.

משתמשים בקטע match בתרחישים הבאים:

  • לקשר בין שני אירועים נפרדים או יותר בתוך כלל.
  • נתונים נצברים בחיפוש ובלוחות הבקרה, כמו ספירת ניסיונות כניסה שנכשלו במסגרת זמן מסוימת.

הגדרת קריטריונים לקורלציה

משתמשים בו כדי להגדיר את הקריטריונים לקורלציה הזו, על ידי ציון הפרטים הבאים:

  • שדות קיבוץ (מפתחות): משתנים (כמו $user או $ip) שחייבים להיות להם ערכים זהים באירועים (שמוגדרים בקטע events) כדי להפעיל התאמה.

  • מגבלת זמן: חלון הזמן שבו האירועים המקובצים צריכים להתרחש כדי לעמוד בתנאי הכלל או הצבירה. ב"כללים", השדה הזה מגדיר את חלון הזיהוי. ב"חיפוש" וב"מרכזי בקרה", השדה הזה מגדיר את חלון הצבירה או המתאם.

השוואה בין דרישות התכונות

בטבלה הבאה מפורטות ההשוואות בין כללים לחיפוש ולמרכזי בקרה.

תכונה דרישות הכללים תמיכה בחיפוש ובמרכזי בקרה
סוגי משתנים צריך להשתמש בפלייסהולדרים שמוגדרים בקטע events. תמיכה גם בפלייסהולדרים וגם בשדות UDM ישירים.
חלון זמן מגדיר את גבולות הזיהוי. מגדיר את קטגוריית הצבירה או הקורלציה.
תחביר
  • over <number><m/h/d> (לדוגמה, 10m, 2h, 1d)
  • by <number><m/h/d>
  • over <number><m/h/d> [before|after] $pivot
  • over <number><m/h/d>
  • by <number><m/h/d>
מגבלות מינימום: 1m / מקסימום: 48h מינימום: 1m / מקסימום: 48h

סוגי החלונות הנתמכים

ב-YARA-L 2.0 יש התנהגויות שונות של חלונות שקובעות איך הזמן מחולק ואיך האירועים מקובצים. אפשר לקבץ שדות ופלייסהולדרים של אירועים בקטע match לפי יחידת זמן מסוימת, באמצעות אחד מהחלונות הנתמכים הבאים.

לפרטים על סוגי החלונות שנתמכים ב-YARA-L 2.0, ראו לוגיקת החלונות של YARA-L 2.0.

הסבר על הגבול הזמני

הקטע match מחלק את האירועים לקבוצות על סמך מפתחות הקיבוץ. משך הזמן שצוין מגדיר את הגבול הזמני של כל קבוצה:

  • הכללה: רק אירועים שמתרחשים בתוך החלון מועברים להערכה של condition לגבי ההתאמה הספציפית הזו.
  • החרגה: המערכת מתעלמת מאירועים מחוץ לחלון הזמן בקבוצת ההתאמה הספציפית הזו, כדי למנוע מאירועים לא קשורים להפעיל התאמה חיובית שגויה.

ערכי אפס בקטע match

מערכת Google SecOps מסננת באופן משתמע ערכי אפס לכל ה-placeholders שמשמשים בקטע match ("" למחרוזת, 0 למספרים, false לערכים בוליאניים, הערך במיקום 0 לסוגים ממוספרים).

דוגמה: סינון של ערכי אפס

בדוגמה הבאה מוצגות שאילתות שמסננות את ערכי האפס.

rule ZeroValuePlaceholderExample {

events:
  // Because $host is used in the match section, the query behaves
  // as if the following predicate was added to the events section:
  // $host != ""
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e
}

עם זאת, אם מקצים פלייסהולדר לפונקציה, השאילתות לא מסננות באופן משתמע את ערכי האפס של פלייסהולדרים שמשמשים בקטע match.

כדי להשבית את הסינון המשתמע של ערכי אפס, אפשר להשתמש באפשרות allow_zero_values בקטע האפשרויות. האפשרות allow_zero_values זמינה רק ב"כללים".

דוגמה: לאפשר ערכי אפס

הדוגמה הבאה ממחישה שאילתות שלא מסננות באופן משתמע את ערכי האפס של פלייסהולדרים שמשמשים בקטע match:

rule AllowZeroValuesExample {

events:
  // Because allow_zero_values is set to true, there is no implicit filtering
  // of zero values for $host.
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e

options:
  allow_zero_values = true
}

המאמרים הבאים

כדי להמשיך ללמוד על הלוגיקה של YARA-L או להתעמק בפונקציות מתקדמות של שאילתות, אתם יכולים לעיין במקורות המידע הבאים:

תחביר ולוגיקה

הפניות ודוגמאות

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.