שימוש ברשימות הפניה ובטבלאות נתונים ב-YARA-L 2.0

נתמך ב:

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

אפשר להשתמש ברשימות הפניה או בטבלאות נתונים בקטע events או outcome של כלל. מידע נוסף על ההתנהגות והתחביר של רשימות עזר וטבלאות נתונים זמין במאמרים רשימות עזר ושימוש בטבלאות נתונים.

החלת תחביר של רשימת הפניות וטבלת הנתונים

רשימות הפניה וטבלאות הנתונים פועלות לפי תחביר דומה, שמוגדר על ידי מזהה האובייקט וסוג ההתאמה (string,‏ regex או CIDR) שנדרש לפעולה. בקטע הזה מוצגות דוגמאות לתחביר של שימוש בסוגים שונים של רשימות עזר.

ב-Google Security Operations, רשימות עזר וטבלאות נתונים משמשות בקטעים events או outcome של כלל YARA-L כדי להשוות בין נתוני אירועים לבין מערכי נתונים שהועלו. הפונקציות האלה מופעלות במהלך תהליך ההערכה של הכלל כדי לסנן אירועים או להעשיר את תוצאות הזיהוי.

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

  • STRING: $e.principal.hostname in %string_list_name
  • ‫REGEX: $e.principal.hostname in regex %regex_list_name

  • ‫CIDR: ‏ $e.principal.ip in cidr %cidr_list_name

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

  • STRING: $e.target.hostname in %table_name.column_name

  • ‫REGEX: $e.target.hostname in regex %table_name.column_name

  • CIDR: ‏ $e.principal.ip in cidr %table_name.column_name

דוגמאות: תחביר והתנהגות של רשימת הפניות

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

דוגמה: תחביר של רשימת הפניות בשאילתה

// STRING reference list
$e.principal.hostname in %string_reference_list

// Regular expression reference list
$e.principal.hostname in regex %regex_reference_list

// CIDR reference list
$e.principal.ip in cidr %cidr_reference_list

דוגמה: תחביר של טבלת נתונים

// STRING data table
$e.target.hostname in %data_table_name.column_name

// Regular expression data table
$e.target.hostname in regex %regex_table_name.column_name

// CIDR data table
$e.principal.ip in cidr %cidr_table_name.column_name

דוגמה: האופרטורים not ו-nocase

האופרטור nocase תואם לרשימות STRING ולרשימות REGEX.

// Exclude events whose hostnames match substrings in my_regex_list.
not $e.principal.hostname in regex %my_regex_list

// Event hostnames must match at least one string in my_string_list (case insensitive).
$e.principal.hostname in %my_string_list nocase
    

האופרטור nocase תואם לרשימות STRING ולרשימות REGEX.

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

  • מספר ההצהרות המקסימלי של in בכלל, עם או בלי אופרטורים מיוחדים: 10
  • מספר מקסימלי של הצהרות in עם האופרטור regex: 5
  • מספר מקסימלי של הצהרות in עם האופרטור cidr: 5

מידע נוסף על אופן הפעולה של רשימות הפניות ועל התחביר של רשימות הפניות זמין במאמר רשימות הפניות.

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

  • מספר ההצהרות המקסימלי של in בשאילתה, עם או בלי אופרטורים מיוחדים: 7
  • מספר ההצהרות המקסימלי של in עם האופרטור regex: 4
  • מספר מקסימלי של הצהרות in עם האופרטור cidr: 2

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