Syntaxe de la section "match"
Dans YARA-L 2.0, la section match fournit le mécanisme de corrélation multi-événements. Elle définit la logique de regroupement des événements en une seule détection en associant des attributs communs, tels que des utilisateurs, des adresses IP ou des hachages de fichiers, dans une limite temporelle spécifique.
Vous utilisez la section match dans les cas d'utilisation suivants :
- Associer deux événements distincts ou plus dans une règle.
- Agréguer des données dans Recherche et tableaux de bord, par exemple en comptant les tentatives de connexion infructueuses sur une période spécifique.
Définir les critères de corrélation
Utilisez-la pour définir les critères de cette corrélation en spécifiant les éléments suivants :
Champs de regroupement (clés) : variables (telles que
$userou$ip) qui doivent avoir des valeurs identiques dans tous les événements (définis dans la sectionevents) pour déclencher une correspondance.Contrainte de temps : période pendant laquelle les événements regroupés doivent se produire pour satisfaire la règle ou l'agrégation. Dans Règles, cela définit la fenêtre de détection. Dans Recherche et tableaux de bord, cela définit la fenêtre d'agrégation ou de corrélation.
Comparer les exigences des fonctionnalités
Le tableau suivant détaille les comparaisons entre Règles et Recherche et tableaux de bord.
| Fonctionnalité | Exigence de Règles | Compatibilité avec Recherche et tableaux de bord |
|---|---|---|
| Types de variables | Doit utiliser des espaces réservés définis dans la section events. |
Compatible avec les espaces réservés et les champs UDM directs. |
| Période | Définit la limite de détection. | Définit le bucket d'agrégation ou de corrélation. |
| Syntaxe | over <number><m/h/d> (par exemple, 10m, 2h, 1d) |
over <number><m/h/d> |
| Limites | Min. : 1m / Max. : 48h |
Min. : 1m / Max. : 48h |
Types de fenêtres compatibles
YARA-L 2.0 utilise différents comportements de fenêtrage pour déterminer comment le temps est découpé et comment les événements sont regroupés. Vous pouvez regrouper les champs d'événement et les espaces réservés dans la section match par une granularité temporelle spécifiée à l'aide de l'une des fenêtres compatibles suivantes.
Pour en savoir plus sur les types de fenêtres compatibles avec YARA-L 2.0, consultez la section Logique de fenêtrage de YARA-L 2.0.
Comprendre la limite temporelle
La section match partitionne les événements en groupes en fonction de vos clés de regroupement. La durée spécifiée définit la limite temporelle de chaque groupe :
- Inclusion : seuls les événements qui se trouvent dans la fenêtre sont transmis à l'évaluation
conditionpour cette correspondance spécifique. - Exclusion : les événements qui se trouvent en dehors de la fenêtre sont ignorés pour ce groupe de correspondance spécifique, ce qui empêche les événements non liés de déclencher un faux positif.
Valeurs nulles dans la section match
Google SecOps filtre implicitement les valeurs nulles pour tous les espaces réservés utilisés dans la section match ("" pour les chaînes, 0 pour les nombres, false pour les valeurs booléennes, la valeur en position 0 pour les types énumérés).
Exemple : Filtrer les valeurs nulles
L'exemple suivant illustre les requêtes qui filtrent les valeurs nulles.
rule ZeroValuePlaceholderExample {
events:
// Because $host is used in the match section, the query behaves
// as if the following predicate was added to the events section:
// $host != ""
$host = $e.principal.hostname
// Because $otherPlaceholder was not used in the match,
// there is no implicit filtering of zero values for $otherPlaceholder.
$otherPlaceholder = $e.principal.ip
match:
$host over 5m
condition:
$e
}Toutefois, si un espace réservé est attribué à une fonction, les requêtes ne filtrent pas implicitement les valeurs nulles des espaces réservés utilisés dans la section match.
Pour désactiver le filtrage implicite des valeurs nulles,
vous pouvez utiliser l'option allow_zero_values dans la section options. L'option allow_zero_values n'est disponible que dans Règles.
Exemple : Autoriser les valeurs nulles
L'exemple suivant illustre les requêtes qui ne filtrent pas implicitement les valeurs nulles des espaces réservés utilisés dans la section match :
rule AllowZeroValuesExample {
events:
// Because allow_zero_values is set to true, there is no implicit filtering
// of zero values for $host.
$host = $e.principal.hostname
// Because $otherPlaceholder was not used in the match,
// there is no implicit filtering of zero values for $otherPlaceholder.
$otherPlaceholder = $e.principal.ip
match:
$host over 5m
condition:
$e
options:
allow_zero_values = true
}Étape suivante
Explorez les ressources suivantes pour poursuivre votre logique YARA-L ou approfondir les fonctions de requête avancées :
Syntaxe et logique
Références et exemples
- 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 auprès des membres de la communauté et des professionnels Google SecOps.