יישום שיטות מומלצות לכללי YARA-L 2.0
במסמך הזה מפורטות השיטות המומלצות של Google Security Operations לכתיבת כללים ב-YARA-L 2.0.
סינון של ערכים אפסיים
יכול להיות שהשדות יושמטו באופן אוטומטי מהאירועים שבהם מופעלים הכללים. אם לא מציינים שדות, ערכי ברירת המחדל שלהם הם אפס.
לדוגמה, אם משמיטים ערך מחרוזת, ברירת המחדל היא "".
אם תשוו בין שני שדות ששניהם הושמטו, יכול להיות ששניהם יקבלו כברירת מחדל את ערכי האפס שלהם. יכול להיות שזה יוביל להתאמות לא מכוונות שבהן שני שדות מתאימים כי לשניהם יש ערך אפס. כדי להימנע מההתנהגות הזו, צריך לציין במפורש את הערך אפס.
לדוגמה, אם יש לכם כלל שמשווה בין שני אירועים על סמך שני שדות, יכול להיות ששני השדות האלה יהיו ריקים, וכך תיווצר התאמה:
$e1.field1 = $e2.field2
אם שני הערכים e1.field1 ו-e2.field2 לא מופיעים בנתונים, הערך של "" = "" הוא true, ולכן יש התאמה.
ביטויי ההשוואה הבאים מבטיחים שלא תהיה התאמה כי e1.field1 ו-e2.field2 לא כוללים נתונים:
$e1.field1 = $e2.field2
$e1.field != ""
ערכים אפסיים וכללים שתלויים בהעשרה
אם כלל מסוים תלוי בנתונים מועשרים שעוד לא עודכנו, יכול להיות שהערך יהיה null או אפס. לכן, מומלץ לסנן ערכים אפסיים (בדיקות null) בכללים שתלויים בהעשרה. איך Google SecOps מעשיר את הנתונים של אירועים וישויות ואיך משתמשים בנתונים מועשרים בהקשר בכללים
הוספת מסנן לפי סוג אירוע
בדוגמה הבאה, כתובות ה-IP של כל אירוע UDM נבדקות מול רשימת ההפניות, וזה צורך הרבה משאבים:
events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses
אם כלל YARA-L שלכם מזהה רק אירועים ב-UDM מסוג אירוע מסוים, הוספה של מסנן סוג אירוע יכולה לעזור לכם לבצע אופטימיזציה של הכלל על ידי צמצום מספר האירועים שהכלל צריך להעריך.
events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$e.metadata.event_type = "NETWORK_DNS"
$e.target.ip in %suspicious_ip_addresses
מוסיפים את המסננים האלה לתחילת הקטע events. כדאי גם להציב מסנני שוויון לפני ביטויים רגולריים או השוואות אחרות. המסננים מופעלים לפי הסדר שבו הם מופיעים בכלל.
בלוגים קהילתיים בנושא עבודה עם YARA-L:
- מושגי יסוד ב-YARA-L
- משתנים של כללי YARA-L
- אופרטורים וגורמי שינוי ב-YARA-L
- יצירת כלל לאירוע יחיד באמצעות ביטוי רגולרי
- צבירת אירועים בכללים
- הגדרת סף בתנאים
- ניווט בכלי לעריכת כללים
- אפשרויות של כללי YARA-L
- יצירת כלל של אירוע יחיד – התאמה למחרוזת
- יצירת כלל מרובה אירועים – צירוף אירועים
- יצירת כלל מרובה אירועים – סידור אירועים
- יצירת כלל מרובה אירועים – מספר הצטרפויות וספירות בתנאים
- יצירת כלל מרובה אירועים – חלונות נעים
- היכרות עם תוצאות בכלל של אירוע יחיד
- תוצאות בכלל של אירועים מרובים – ספירות
- תוצאות בכללים של כמה אירועים – מערכים
- תוצאות בכלל מרובה אירועים – מקסימום, מינימום, סכום
- תוצאות – דירוג סיכונים, לוגיקה מותנית ואופרטורים מתמטיים
- Functions - strings.concat
- Functions - strings.coalesce
- פונקציות – רשת
- רשימת מקורות מידע
- רשימות הפניה של CIDR
- רשימות של ביטויים רגולריים
- פונקציית מחרוזות – אותיות רישיות או קטנות
- פונקציית ביטוי רגולרי – re.regex
- פונקציית ביטוי רגולרי – re.capture
- פונקציית מחרוזת – strings.base64_decode
- פונקציית ביטוי רגולרי – re.replace
- איך מתחילים לעבוד עם חיפוש סטטיסטי
- חיפוש סטטיסטי – יותר מספירה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.