Standarderkennungsregeln

Unterstützt in:

YARA-L-Regelsprache

YARA-L ist eine von Google entwickelte Sprache für Erkennungsregeln. Mit YARA-L soll weg von reinen Datenabfragen hin zu tatsächlichen ereignisbasierten Untersuchungen gewechselt werden. YARA-L wurde aus der YARA-Sprache abgeleitet, die häufig bei der Malware-Analyse verwendet wird. Das L steht für Logs. Mit YARA-L können Sie alle Informationen aus mehreren Quellen innerhalb von Erkennungen nutzen und diese Ereignisse in umsetzbare Benachrichtigungen umwandeln. Weitere Informationen finden Sie in der Übersicht über die Sprache YARA-L 2.0.

Beispielerkennungsregeln für Google Security Operations

Um die Einführung der Google Security Operations Detection Engine zu beschleunigen, gibt es ein GitHub-Repository mit Beispielregeln. Dieses Repository enthält mehrere verschiedene Kategorien von Erkennungsregeln, darunter:

  • Google Cloud CloudAudit
  • Google Workspace
  • Informationswarnungen
  • Malware
  • MITRE ATT&CK
  • SOC-Prime-Regeln
  • Verdächtige Ereignisse

Für jede Kategorie wird ein bestimmter Ansatz für die Datenquellen verwendet und festgelegt, welche Ereignisse und Abgleichsausdrücke verwendet werden sollen.

Beispielregeln und -optimierung

Mit der folgenden Regel wird eine Ereignisvariable $e1 erstellt, mit der der Ereignistyp erfasst wird. Die Ereignisvariable kann ein beliebiger Wert sein, der für die zu bewertenden Daten eine Bedeutung hat. Das UDM-Feld, das in diesem Ereignis ausgewertet wird, ist metadata.eventype. Daher ist es sinnvoll, es einfach e1 zu nennen. In den nächsten Zeilen wird nach bestimmten Vorkommen von Übereinstimmungen mit regulären Ausdrücken in e1 gesucht. Die Bedingung, die eine Erkennung in Google Security Operations auslöst, ist jedes Mal, wenn das Ereignis $e1 eintritt. Zur Optimierung wird eine not-Bedingung bereitgestellt, um bestimmte nicht schädliche Pfade für das Befehlszeilenargument auszuschließen. Dieser Regel können weitere not-Bedingungen hinzugefügt werden, wenn Sie häufige Falschalarme von anderen bekannten Dateipfaden feststellen.

rule suspicious_unusual_location_svchost_execution

{
 meta:
   author = "Google Cloud Security"
   description = "Windows 'svchost' executed from an unusual location"
   yara_version = "YL2.0"
   rule_version = "1.0"

 events:
   $e1.metadata.event_type = "PROCESS_LAUNCH"
   re.regex($e1.principal.process.command_line, `\bsvchost(\.exe)?\b`) nocase
   not re.regex($e1.principal.process.command_line, `\\Windows\\System32\\`) nocase

condition:
   $e1
}

Mehrere Ereignisvariablen angeben

Mit YARA-L können Sie in einer Regel mehrere Ereignisvariablen verwenden. Im folgenden Beispiel enthält die Regel die Ereignisse $e1 und $e2. Die Bedingung gibt die logische Bedingung an, die die Erkennung auslöst.

rule ExcludeZeroValues {
  meta:
    author = "noone@google.com"

  events:
    $e1.metadata.event_type = "NETWORK_DNS"
    $e1.principal.hostname = $hostname

    // $e1.principal.user.userid may be empty string.
    $e1.principal.user.userid != "Guest"

    $e2.metadata.event_type = "NETWORK_HTTP"
    $e2.principal.hostname = $hostname

    // $e2.target.asset_id cannot be empty string as explicitly specified.
    $e2.target.asset_id != ""

  match:
    // $hostname cannot be empty string.
    $hostname over 1h

  condition:
    $e1 and $e2
}

Abschnitt „Regelergebnis“

Verwenden Sie den Bereich „Ergebnis“, um Haltevariablen innerhalb der Regelerkennung festzulegen, um die Daten für die nachfolgende Nutzung anzureichern. Sie können beispielsweise Informationen zur Schwere hinzufügen, die auf Daten aus den analysierten Ereignissen basieren. Bei der folgenden Erkennung werden zwei Ereignisse geprüft, um den Wert $hostname zuzuweisen. Wenn der Wert $hostnames über einen Zeitraum von 5 Minuten übereinstimmt, wird ein Schweregrad angewendet. Wenn Sie Zeiträume verwenden, prüft die Google Security Operations Detection Engine nur die von Ihnen angegebenen Zeitblöcke.

rule OutcomeRuleMultiEvent {
    meta:
      author = "noone@google.com"
    events:
      $u.udm.principal.hostname = $hostname
      $asset_context.graph.entity.hostname = $hostname

      $severity = $asset_context.graph.entity.asset.vulnerabilities.severity

    match:
      $hostname over 5m

    outcome:
      $risk_score =
        max(
            100
          +   if($hostname = "my-hostname", 100, 50)
          +   if($severity = "HIGH", 10)
          +   if($severity = "MEDIUM", 5)
          +   if($severity = "LOW", 1)
        )

      $asset_id_list =
        array(
          if($u.principal.asset_id = "",
             "Empty asset id",
             $u.principal.asset_id
          )
        )

      $asset_id_distinct_list = array_distinct($u.principal.asset_id)

      $asset_id_count = count($u.principal.asset_id)

      $asset_id_distinct_count = count_distinct($u.principal.asset_id)

    condition:
      $u and $asset_context and $risk_score > 50 and not arrays.contains($asset_id_list, "id_1234")
}

Fazit

YARA-L ist eine flexible Erkennungssprache, mit der Sie Sicherheitsereignisse prüfen und nicht nur eine Datenabfrage zurückgeben können. Mit der Ereignisvariablen wird erfasst, welche Feldwerte im Bedingungsabschnitt der Regel verwendet werden. Sie können ein einzelnes Ereignis oder mehrere Ereignisse im Zeitverlauf verwenden, Quellen für einen einzelnen Wert (z. B. $hostname aus verschiedenen Datenquellen) korrelieren und sogar Tools wie reguläre Ausdrücke verwenden, um Übereinstimmungen zu finden. Es ist wichtig, die Regeln an Ihre eigene Umgebung anzupassen. Dazu können Sie Ausschlüsse in der Logik angeben. Sie können auch Referenzlisten verwenden, um Elemente zu gruppieren und dann in der Regel auf diese Liste zu verweisen. Denken Sie daran, dass das Google Security Operations-Team nicht über jede Erkennung benachrichtigt werden muss. Sie können Erkennungen zu verschiedenen Zwecken im Blick behalten und nur Benachrichtigungen zu denjenigen erhalten, die in Ihrer Umgebung am wichtigsten sind.

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