שימוש בהצהרות if מוטמעות ללוגיקה מורכבת יותר

נתמך ב:

אפשר להשתמש בהצהרות if גם בקטע outcome וגם בקטע events. אפשר גם להשתמש בהצהרות if בתוך הסעיפים then else של הצהרת if אחרת. היכולת הזו מאפשרת לכם להוסיף לשאילתה לוגיקה מורכבת יותר.

התחביר הזה נתמך בכללים, בחיפוש ובמרכזי בקרה.

תחביר

if(BOOL_CLAUSE, THEN_CLAUSE, ELSE_CLAUSE)

דוגמאות ל-if מוטמעים

דוגמה לחיפוש: קטע התוצאות

בדוגמה הזו, ציון התוצאה מוקצה על סמך principal.hostname.

$nested_if.principal.hostname != ""
outcome:
    $score = max(
        if($nested_if.principal.hostname = /win-adfs/,
           5,
          if($nested_if.principal.hostname = /server/,
             3,
            if($nested_if.principal.hostname = /win-atomic/,
               1,
               0))))

דוגמה לחיפוש: הקטע 'אירועים'

בדוגמה הזו, כתובת ה-IP של הפלייסהולדר מוקצית ל-target.ip או ל-principal.ip כל עוד הן לא ריקות. אם ערכי ה-IP חסרים, המערכת מקצה את הערך no_valid_ip.

events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $ip = if($e.target.ip != "",
            $e.target.ip,
            if($e.principal.ip != "",
              $e.principal.ip,
              "no_valid_ip"))
match:
   $ip

דוגמה לכלל: if מוטמע בקטע outcome

rule nested_if_outcome_example {
meta:

events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $e.principal.ip = $ip
match:
   $ip over 5m
outcome:
    $score = max(
        if($e.principal.hostname = /win-adfs/,
           5,
          if($e.principal.hostname = /server/,
             3,
            if($e.principal.hostname = /win-atomic/,
               1,
               0))))
  condition:
    $e
}

דוגמה לכלל: if מוטמע בקטע events

rule nested_if_events_example {

meta:

events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $ip = if($e.target.ip != "",
            $e.target.ip,
            if($e.principal.ip != "",
              $e.principal.ip,
              "no_valid_ip"))
match:
   $ip over 5m

  condition:
    $e
}

מגבלות ידועות

ההצהרה if() היא פונקציה ב-YARA-L 2.0, והיא כפופה למגבלת העומק של הפונקציה, שהיא 20.

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