Standarderkennungsregeln

YARA-L-Regelsprache

YARA-L ist eine von Google entwickelte Sprache für Erkennungsregeln. Der Zweck von YARA-L von Erkennungsmechanismen 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 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

Bei jeder Kategorie wird ein bestimmter Ansatz beim Anzeigen von Datenquellen und gibt an, welche Ereignisse und übereinstimmenden Anweisungen verwendet werden.

Beispielregeln und Abstimmung

Mit der folgenden Regel wird die Ereignisvariable $e1 erstellt, mit der das Ereignis Ereignistyp. 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 Im folgenden Beispiel hat 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 für Hold-Variablen innerhalb der Regelerkennung fest, dass und eine Bereicherung für den nachgelagerten Verbrauch bieten. Sie können beispielsweise einen Schweregrad Bewertungsinformationen, die auf Daten aus den analysierten Ereignissen beruhen. Die Im Anschluss an die Erkennung werden zwei Ereignisse untersucht, um den Wert $hostname zuzuordnen. Wenn wenn der Wert $hostnames über einen Zeitraum von 5 Minuten übereinstimmt, ist ein Schweregradwert angewendet. Bei Verwendung von Zeiträumen wird nur die Google Security Operations Detection Engine überprüft die von Ihnen angegebenen diskreten 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 die Sicherheit prüfen können. und nicht einfach nur eine Datenabfrage zurückgeben. Die Variable „event“ wird verwendet, Nachverfolgen, welche Feldwerte im Bedingungsabschnitt der Regel verwendet werden Ich ein einzelnes Ereignis, mehrere Ereignisse im Zeitverlauf, kann Quellen für ein (z. B. $hostname aus verschiedenen Datenquellen) abrufen und sogar Tools verwenden, wie reguläre Ausdrücke, um Übereinstimmungen zu liefern. Es ist wichtig, die Regeln an Ihre eigenen Anforderungen anzupassen. können Sie Ausschlüsse in der Logik festlegen. 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.