Règles de détection par défaut

Langage de règles YARA-L

YARA-L est un langage de règles de détection développé par Google. L'objectif de YARA-L est de ne plus considérer les détections comme de simples requêtes de données, mais de véritables requêtes basées sur des événements les enquêtes. YARA-L est dérivé du langage YARA couramment utilisé dans les logiciels malveillants. Le L correspond aux journaux. YARA-L vous permet de profiter de toutes les informations provenant de plusieurs sources dans les détections, et corréler ces événements en alertes exploitables. Pour en savoir plus, consultez la page Présentation le langage YARA-L 2.0.

Exemples de règles de détection Google Security Operations

Pour accélérer votre adoption du moteur de détection des opérations de sécurité Google, vous trouverez un dépôt GitHub contenant des exemples règles. Ce dépôt contient différentes catégories de règles de détection, parmi lesquelles:

  • Google Cloud Audit
  • Google Workspace
  • Avertissements informatifs
  • Logiciel malveillant
  • MITRE ATT&CK
  • Règles de base du SOC
  • Événements suspects

Chaque catégorie adopte une approche spécifique dans la façon dont elle voit les sources de données et spécifie les événements et les instructions correspondantes à utiliser.

Exemples de règles et de réglages

La règle suivante crée une variable d'événement $e1 qui permet de suivre l'événement type d'événement. Il peut s'agir de n'importe quelle valeur ayant un sens dans les données en cours d'évaluation. Le champ UDM évalué dans cet événement est metadata.eventype, il est donc logique de l'appeler simplement e1. Lignes suivantes recherche des occurrences spécifiques de correspondances d'expressions régulières dans e1. La condition que crée une détection dans Google Security Operations à chaque fois que l'événement $e1 à un emplacement. À des fins de réglage, une condition not est fournie pour exclure certains chemins non malveillants de l'argument de ligne de commande. Autres conditions not pourrait être ajoutée à cette règle si vous identifiez fréquemment des faux positifs vers d'autres chemins d'accès connus.

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
}

Spécifier plusieurs variables d'événement

YARA-L vous permet d'avoir plusieurs variables d'événement dans une règle. Dans Dans l'exemple suivant, la règle comporte les événements $e1 et $e2. La condition indique condition logique qui déclenche la détection.

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
}

Section "Résultat des règles"

Utilisez la section de résultat pour définir les variables d'obligation de conservation dans la détection de règles sur enrichissent la consommation en aval. Par exemple, vous pouvez ajouter des valeurs des informations de notation qui reposent sur les données des événements analysés. La La détection suivante examine deux événements pour attribuer la valeur $hostname. Si la valeur $hostnames doit correspondre sur une période de cinq minutes, un score de gravité est appliquée. Lorsque vous utilisez des périodes, le moteur de détection des opérations de sécurité Google examine les blocs de temps distincts que vous spécifiez.

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")
}

Conclusion

YARA-L est un langage de détection flexible qui vous permet d'examiner la sécurité et pas simplement renvoyer une requête de données. La variable d'événement sert à suivre les valeurs de champ utilisées dans la section condition de la règle. Toi vous pouvez utiliser un seul événement, plusieurs événements au fil du temps, corréler les sources pour à valeur unique (comme $hostname provenant de différentes sources de données), et utilisez même des outils telles que les expressions régulières pour obtenir des correspondances. Il est essentiel d'adapter les règles en spécifiant des exclusions dans la logique. Toi Vous pouvez également utiliser des listes de référence pour regrouper des articles, puis y faire référence dans la règle. N'oubliez pas que Google Security Operations n'a pas besoin pour la détection. Vous pouvez suivre les détections pour plusieurs et n'émettent des alertes que pour ceux qui, selon vous, environnement.