Présentation de YARA-L 2.0

Compatible avec :

YARA-L 2.0 est un langage spécialisé de Google Security Operations qui fonctionne sur les données de journaux d'entreprise pour permettre aux professionnels de la sécurité d'explorer ces données, d'enquêter sur les menaces et de créer des règles de détection.

Ce document explique YARA-L et sa syntaxe. Il vous montre comment l'utiliser pour exprimer tout, d'une requête de filtre de base à une règle qui recherche des modèles complexes. Utilisez les sections d'une requête YARA-L pour prendre en charge les fonctions d'agrégation et la logique conditionnelle, et pour ajouter du contexte grâce aux jointures, à la correspondance de modèles et plus encore.

Présentation de la syntaxe YARA-L 2.0

Pour créer une règle ou une requête YARA-L, nous vous recommandons de vous familiariser avec la structure et la syntaxe permettant de spécifier les déclarations, les définitions et l'utilisation des variables.

Structure des règles

Les règles YARA-L contiennent les sections suivantes et doivent être spécifiées dans l'ordre suivant :

Commande Section Règles Recherche/Tableaux de bord Description
1 méta Obligatoire N/A Décrit la règle et peut inclure des valeurs telles que l'auteur, la gravité, la description et la priorité. Consultez la syntaxe de la section "meta".
2 en direct Obligatoire Obligatoire Définit comment filtrer et joindre les événements. Consultez la syntaxe de la section "Événements".
3 correspondance Facultatif Facultatif Spécifie les champs à regrouper lors de l'agrégation des résultats. Consultez la syntaxe de la section "Match".

 Remarque : Si vous excluez une section match, la règle peut correspondre à un seul événement.
4 résultat Facultatif Facultatif Définit les données à générer lorsqu'une règle est exécutée ou déclenchée. Consultez la section Syntaxe de la section "Résultat".
5 condition Obligatoire Facultatif Contient la logique qui détermine si une règle est déclenchée. Consultez la section Syntaxe de la section "Condition".
6 options Facultatif Facultatif Permet d'activer ou de désactiver le comportement de règles spécifiques. Consultez la section Syntaxe de la section "Options".

L'exemple suivant illustre la structure générique d'une règle :

rule <rule name>
{
    meta:
    // Stores arbitrary key-value pairs of the rule details, such as who wrote
    // it, what it detects on, version control, etc.

  events:
    // Defines which events to filter and the relationship between events.

  match:
    // Values to return when matches are found.

  outcome:
    // Define the output of each rule and security alert.

  condition:
    // Condition to check events and the variables used to find matches.

  options:
    // Options to turn on or off while executing this rule. The `options` syntax is only valid for rules.
}

Lorsque vous créez des règles, Google SecOps effectue une vérification des types par rapport à votre syntaxe YARA-L et affiche les erreurs pour vous aider à corriger la règle afin qu'elle fonctionne correctement. Les exemples suivants montrent les erreurs qui s'affichent lorsqu'une syntaxe non valide est utilisée :

// $e.target.port is of type integer which cannot be compared to a string.
$e.target.port = "80"

// "LOGIN" is not a valid event_type enum value.
$e.metadata.event_type = "LOGIN"

Cette règle exemple recherche cinq échecs de connexion consécutifs par utilisateur dans des fenêtres de 10 minutes.

rule failed_logins
{
  meta:
   author = "Security Team"
   description = "Detects multiple failed user logins within 10-minute windows."
   severity = "HIGH"

  events:
   $e.metadata.event_type = "USER_LOGIN"
   $e.security_result.action = "FAIL"
   $user = $e.target.user.userid

  match:
   $user over 10m

  outcome:
   $failed_login_count = count($e.metadata.id)
   $first_fail_time = min($e.metadata.event_timestamp.seconds)

  condition:
    #e >= 5
}

La règle est définie comme suit :

  • La section meta définit l'auteur de la règle (équipe de sécurité), la description ("Détecte plusieurs échecs de connexion utilisateur dans des périodes de 10 minutes") et la gravité ("Élevée").

Détecte plusieurs tentatives de connexion utilisateur ayant échoué au cours d'une période de 10 minutes

  • La section events définit les événements à suivre : les connexions des utilisateurs, les échecs de connexion des utilisateurs (variables d'événement) et les liens vers la variable de correspondance user (variables d'espace réservé).

  • La section outcome définit les calculs à effectuer sur les variables d'événement et d'espace réservé : comptabilisez les échecs de connexion et l'heure du premier échec.

  • La section match définit la variable permettant de regrouper les événements ($user) et la période (10m) au cours de laquelle ces événements doivent se produire pour être considérés comme une correspondance.

  • La section condition indique de ne renvoyer que les utilisateurs ayant échoué à se connecter au moins cinq fois.

Étapes suivantes

Informations supplémentaires

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.