Présentation de YARA-L 2.0
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
metadé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
eventsdé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 correspondanceuser(variables d'espace réservé).La section
outcomedé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
matchdé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
conditionindique de ne renvoyer que les utilisateurs ayant échoué à se connecter au moins cinq fois.
Étapes suivantes
- Syntaxe de la section "meta"
- Syntaxe de la section "Événements"
- Syntaxe de la section "Correspondances"
- Syntaxe de la section "Résultat"
- Syntaxe de la section "Condition"
- Syntaxe de la section "Options"
Informations supplémentaires
- Expressions, opérateurs et constructions utilisés dans YARA-L 2.0
- Fonctions dans YARA-L 2.0
- Créer des règles de détection composites
- Exemples : requêtes YARA-L 2.0
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.