Syntaxe de la section "Correspondance"

Compatible avec :

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 les utilisateurs, les adresses IP ou les hachages de fichiers, dans une limite temporelle spécifique.

Vous utilisez la section match pour les cas d'utilisation suivants :

  • Associez deux événements distincts ou plus dans une règle.
  • agréger des données dans la recherche et les tableaux de bord, par exemple en comptant les tentatives de connexion ayant échoué au cours d'une période spécifique ;

Définir les critères de corrélation

Utilisez-le pour définir les critères de cette corrélation en spécifiant les éléments suivants :

  • Champs de regroupement (clés) : variables (comme $user ou $ip) qui doivent avoir des valeurs identiques dans les événements (définies dans la section events) pour déclencher une correspondance.

  • Contrainte temporelle : période pendant laquelle les événements groupés doivent se produire pour respecter la règle ou l'agrégation. Dans les règles, cela définit la fenêtre de détection. Dans la recherche et les 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 les règles et les recherches et tableaux de bord.

Fonctionnalité Exigences concernant les règles Compatibilité avec la recherche et les tableaux de bord
Types de variables Doit utiliser les 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 et les espaces réservés d'événement dans la section match selon une précision temporelle spécifique à l'aide de l'une des périodes acceptées suivantes.

Pour en savoir plus sur les types de fenêtres compatibles avec YARA-L 2.0, consultez Logique de fenêtrage YARA-L 2.0.

Comprendre la limite temporelle

La section match divise les événements en groupes en fonction de vos clés de regroupement. La durée spécifiée définit la limite temporelle pour chaque groupe :

  • Inclusion : seuls les événements de la fenêtre sont transmis à l'évaluation condition pour cette correspondance spécifique.
  • Exclusion : les événements en dehors de la période 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 et la valeur à la position 0 pour les types énumérés).

Exemple : Filtrer les valeurs nulles

L'exemple suivant illustre des 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 des options. L'option allow_zero_values n'est disponible que dans les 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
}

Étapes suivantes

Consultez les ressources suivantes pour continuer à développer votre logique YARA-L ou approfondir les fonctions de requête avancées :

Syntaxe et logique

Références et exemples

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