תחביר של קטע התאמה
ב-YARA-L 2.0, הקטע match מספק את המנגנון לקורלציה של כמה אירועים. הוא מגדיר את הלוגיקה לקיבוץ אירועים לזיהוי יחיד על ידי קישור מאפיינים משותפים, כמו משתמשים, כתובות IP או גיבובים של קבצים, בתוך גבול זמני ספציפי.
משתמשים בקטע match בתרחישים הבאים:
- לקשר בין שני אירועים נפרדים או יותר בתוך כלל.
- נתונים נצברים בחיפוש ובלוחות הבקרה, כמו ספירת ניסיונות כניסה שנכשלו במסגרת זמן מסוימת.
הגדרת קריטריונים לקורלציה
משתמשים בו כדי להגדיר את הקריטריונים לקורלציה הזו, על ידי ציון הפרטים הבאים:
שדות קיבוץ (מפתחות): משתנים (כמו
$userאו$ip) שחייבים להיות להם ערכים זהים באירועים (שמוגדרים בקטעevents) כדי להפעיל התאמה.מגבלת זמן: חלון הזמן שבו האירועים המקובצים צריכים להתרחש כדי לעמוד בתנאי הכלל או הצבירה. ב"כללים", השדה הזה מגדיר את חלון הזיהוי. ב"חיפוש" וב"מרכזי בקרה", השדה הזה מגדיר את חלון הצבירה או המתאם.
השוואה בין דרישות התכונות
בטבלה הבאה מפורטות ההשוואות בין כללים לחיפוש ולמרכזי בקרה.
| תכונה | דרישות הכללים | תמיכה בחיפוש ובמרכזי בקרה |
|---|---|---|
| סוגי משתנים | צריך להשתמש בפלייסהולדרים שמוגדרים בקטע events. |
תמיכה גם בפלייסהולדרים וגם בשדות UDM ישירים. |
| חלון זמן | מגדיר את גבולות הזיהוי. | מגדיר את קטגוריית הצבירה או הקורלציה. |
| תחביר |
|
|
| מגבלות | מינימום: 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 או להתעמק בפונקציות מתקדמות של שאילתות, אתם יכולים לעיין במקורות המידע הבאים:
תחביר ולוגיקה
הפניות ודוגמאות
- ביטויים, אופרטורים ומבנים שמשמשים ב-YARA-L 2.0
- פונקציות ב-YARA-L 2.0
- יצירת כללי זיהוי משולבים
- דוגמאות: שאילתות YARA-L 2.0
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.