Standarderkennungsregeln

Unterstützt in:

YARA-L-Regelsprache

YARA-L ist eine von Google entwickelte Sprache für Erkennungsregeln. Der Zweck von YARA-L von Erkennungen als reine Datenabfragen zu tatsächlichen ereignisgesteuerten Recherchen. YARA-L ist eine abgeleitete Sprache der YARA-Sprache, die häufig in Malware-Analyse. L steht für Logs. Mit YARA-L können Sie aller Informationen aus mehreren Quellen innerhalb von Erkennungsmechanismen und korrelieren umsetzbare Benachrichtigungen zu verwandeln. 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, Es gibt ein GitHub-Repository mit Beispiel- Regeln. Dieses Repository enthält verschiedene Kategorien von Erkennungsregeln, darunter:

  • Google Cloud-Audit
  • Google Workspace
  • Warnungen zu Informationszwecken
  • 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 Daten eine Bedeutung hat. evaluiert werden. Das UDM-Feld, das bei diesem Ereignis ausgewertet wird, ist metadata.eventype. Es ist also sinnvoll, sie e1 zu nennen. Die nächsten Zeilen sucht nach bestimmten Vorkommen von Übereinstimmungen mit regulären Ausdrücken in e1. Die Bedingung, erstellt in Google Security Operations jedes Mal eine Erkennung, wenn das Ereignis $e1 Zur Abstimmung wird die Bedingung not angegeben, um bestimmte nicht schädliche Pfade für das Befehlszeilenargument. Weitere not-Bedingungen kann dieser Regel hinzugefügt werden, wenn Sie feststellen, dass häufig falsch positive Ergebnisse weitere bekannte Dateipfade.

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 mehrere Ereignisvariablen in einer Regel verwenden. Im folgenden Beispiel enthält die Regel die Ereignisse $e1 und $e2. Die Bedingung gibt an, logische Bedingung, 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
}

Bereich für Regelergebnisse

Legen Sie im Ergebnisbereich die Hold-Variablen für die Regelerkennung auf und eine Bereicherung für den nachgelagerten Verbrauch bieten. Sie können beispielsweise einen Schweregrad Bewertungsinformationen, die auf Daten aus den analysierten Ereignissen beruhen. Bei der folgenden Erkennung werden zwei Ereignisse untersucht, um den Wert $hostname zuzuweisen. Wenn wenn der Wert $hostnames über einen Zeitraum von 5 Minuten übereinstimmt, ist ein Schweregradwert 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. Die Variable „event“ wird verwendet, Nachverfolgen, 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. Ich können auch Referenzlisten verwenden, um Elemente zu gruppieren und dann darauf zu verweisen. in der Regel ein. Denken Sie daran, dass Google Security Operations nicht alle für die Benachrichtigung gesendet werden soll. Sie können die Erkennung für mehrere und nur diejenigen ansprechen, die für Ihr Unternehmen am wichtigsten sind, zu verbessern.