Verschachtelte IF-Anweisungen für komplexere Logik verwenden

Unterstützt in:

Sie können if-Anweisungen sowohl im Abschnitt outcome als auch im Abschnitt events verwenden. Sie können if-Anweisungen auch in den then-else-Klauseln einer anderen if-Anweisung verwenden. So können Sie Ihrer Abfrage komplexere Logik hinzufügen.

Diese Syntax wird in Regeln, Suchvorgängen und Dashboards unterstützt.

Syntax

if(BOOL_CLAUSE, THEN_CLAUSE, ELSE_CLAUSE)

Verschachtelte if-Beispiele

Suchbeispiel: Ergebnisabschnitt

In diesem Beispiel wird ein Ergebniswert basierend auf principal.hostname zugewiesen.

$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))))

Beispiel für die Suche: Bereich „Veranstaltungen“

In diesem Beispiel wird die Platzhalter-IP target.ip oder principal.ip zugewiesen, sofern sie nicht leer sind. Wenn die IP-Werte fehlen, wird no_valid_ip zugewiesen.

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

Beispiel für eine Regel: Verschachtelte if im Abschnitt 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
}

Beispiel für eine Regel: Verschachtelte if im Abschnitt 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
}

Bekannte Einschränkung

Die if()-Anweisung ist eine Funktion in YARA-L 2.0 und unterliegt der Funktionsverschachtelungstiefe von 20.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten