Bonnes pratiques concernant YARA-L
Ce document décrit les bonnes pratiques recommandées par Google Security Operations pour écrire des règles en YARA-L.
Excluez les valeurs nulles.
Des champs peuvent être automatiquement omis dans les événements sur lesquels vous exécutez vos règles. Lorsque des champs sont omis, leur valeur par défaut est zéro.
Par exemple, la valeur par défaut d'une valeur de chaîne omise est ""
.
Si vous mettez en équivalence deux champs qui sont tous deux omis, leur valeur par défaut peut être zéro. Cela peut entraîner des correspondances involontaires lorsque deux champs correspondent, car ils ont tous deux une valeur nulle. Vous pouvez éviter ce comportement en spécifiant explicitement la valeur zéro.
Par exemple, si vous avez une règle qui établit une équivalence entre deux événements sur la base de deux champs, il est possible que ces deux champs soient vides, ce qui entraîne une correspondance:
$e1.field1 = $e2.field2
Si e1.field1
et e2.field2
sont tous deux omis dans les données, "" = ""
est défini sur "true", ce qui entraîne une mise en correspondance.
Les expressions de comparaison suivantes garantissent qu'aucune correspondance ne sera renvoyée, car e1.field1
et e2.field2
n'incluent aucune donnée:
$e1.field1 = $e2.field2
$e1.field != ""
Valeurs nulles et règles dépendantes de l'enrichissement
Si une règle dépend de données enrichies qui n'ont pas encore été mises à jour, la valeur peut être nulle ou zéro. Il est donc recommandé d'exclure les valeurs nulles (vérifications de valeurs nulles) des règles dépendant de l'enrichissement. Découvrez comment Google Security Operations enrichit les données sur les événements et les entités et comment utiliser les données enrichies de contexte dans les règles.
Ajouter un filtre de type d'événement
Dans l'exemple suivant, les adresses IP de chaque événement UDM sont comparées à la liste de référence, ce qui consomme beaucoup de ressources:
events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses
Si votre règle YARA-L ne détecte que des événements UDM d'un certain type, ajouter un filtre de type d'événement peut vous aider à optimiser votre règle en réduisant le nombre d'événements qu'elle doit évaluer.
events: // Pour chaque événement UDM de type NETWORK_DNS, vérifiez si l'adresse cible est listée dans la liste de référence des adresses IP suspectes. $e.metadata.event_type = "NETWORK_DNS" $e.target.ip in %suspicious_ip_addresses
Ajoutez ces filtres au début de la section "Événements". Vous devez également placer les filtres d'égalité avant les expressions régulières ou d'autres comparaisons. Les filtres sont appliqués dans l'ordre dans lequel ils apparaissent dans la règle.
Pour en savoir plus sur l'utilisation de YARA-L, consultez les blogs de la communauté:
- Principes de base de YARA-L
- Variables de règle YARA-L
- Opérateurs et modificateurs YARA-L
- Créer une règle d'événement unique à l'aide d'une expression régulière
- Agrégation d'événements dans les règles
- Définir un seuil dans les conditions
- Navigation dans l'éditeur de règles
- Options de règle YARA-L
- Créer une règle d'événement unique : mise en correspondance de chaînes
- Créer une règle pour plusieurs événements : joindre des événements
- Créer une règle pour plusieurs événements : organiser les événements
- Créer une règle pour plusieurs événements : plusieurs jointures et comptages dans les conditions
- Créer une règle pour plusieurs événements : fenêtres glissantes
- Présentation des résultats dans une règle d'événement unique
- Résultats dans une règle pour plusieurs événements : nombres
- Résultats dans les règles pour plusieurs événements : tableaux
- Résultats dans une règle pour plusieurs événements : maximum, minimum, somme
- Résultats : score de risque, logique conditionnelle et opérateurs mathématiques
- Fonctions - strings.concat
- Fonctions - strings.coalesce
- Fonctions - Réseau
- Liste de références
- Listes de référence CIDR
- Listes de référence d'expressions régulières
- Fonction de chaîne : majuscules ou minuscules
- Fonction d'expression régulière : re.regex
- Fonction d'expression régulière : re.capture
- Fonction de chaîne : strings.base64_decode
- Fonction d'expression régulière : re.replace
- Premiers pas avec la recherche statistique
- Recherche statistique : plus qu'un simple comptage
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.