Règles de détection par défaut
Langage de règles YARA-L
YARA-L est un langage de règles de détection développé par Google. L'objectif de YARA-L est de ne plus considérer les détections comme de simples requêtes de données, mais de véritables requêtes basées sur des événements les enquêtes. YARA-L est dérivé du langage YARA couramment utilisé dans les logiciels malveillants. Le L correspond aux journaux. YARA-L vous permet de profiter de toutes les informations provenant de plusieurs sources dans les détections, et corréler ces événements en alertes exploitables. Pour en savoir plus, consultez la page Présentation le langage YARA-L 2.0.
Exemples de règles de détection Google Security Operations
Pour accélérer votre adoption du moteur de détection des opérations de sécurité Google, vous trouverez un dépôt GitHub contenant des exemples règles. Ce dépôt contient différentes catégories de règles de détection, parmi lesquelles:
- Google Cloud Audit
- Google Workspace
- Avertissements informatifs
- Logiciel malveillant
- MITRE ATT&CK
- Règles de base du SOC
- Événements suspects
Chaque catégorie adopte une approche spécifique dans la façon dont elle voit les sources de données et spécifie les événements et les instructions correspondantes à utiliser.
Exemples de règles et de réglages
La règle suivante crée une variable d'événement $e1
qui permet de suivre l'événement
type d'événement. Il peut s'agir de n'importe quelle valeur ayant un sens dans les données
en cours d'évaluation. Le champ UDM évalué dans cet événement est
metadata.eventype
, il est donc logique de l'appeler simplement e1
. Lignes suivantes
recherche des occurrences spécifiques de correspondances d'expressions régulières dans e1
. La condition que
crée une détection dans Google Security Operations à chaque fois que l'événement $e1
à un emplacement. À des fins de réglage, une condition not
est fournie pour exclure certains
chemins non malveillants de l'argument de ligne de commande. Autres conditions not
pourrait être ajoutée à cette règle si vous identifiez fréquemment des faux positifs
vers d'autres chemins d'accès connus.
rule suspicious_unusual_location_svchost_execution
{
meta:
author = "Google Cloud Security"
description = "Windows 'svchost' executed from an unusual location"
yara_version = "YL2.0"
rule_version = "1.0"
events:
$e1.metadata.event_type = "PROCESS_LAUNCH"
re.regex($e1.principal.process.command_line, `\bsvchost(\.exe)?\b`) nocase
not re.regex($e1.principal.process.command_line, `\\Windows\\System32\\`) nocase
condition:
$e1
}
Spécifier plusieurs variables d'événement
YARA-L vous permet d'avoir plusieurs variables d'événement dans une règle. Dans
Dans l'exemple suivant, la règle comporte les événements $e1
et $e2
. La condition indique
condition logique qui déclenche la détection.
rule ExcludeZeroValues {
meta:
author = "noone@google.com"
events:
$e1.metadata.event_type = "NETWORK_DNS"
$e1.principal.hostname = $hostname
// $e1.principal.user.userid may be empty string.
$e1.principal.user.userid != "Guest"
$e2.metadata.event_type = "NETWORK_HTTP"
$e2.principal.hostname = $hostname
// $e2.target.asset_id cannot be empty string as explicitly specified.
$e2.target.asset_id != ""
match:
// $hostname cannot be empty string.
$hostname over 1h
condition:
$e1 and $e2
}
Section "Résultat des règles"
Utilisez la section de résultat pour définir les variables d'obligation de conservation dans la détection de règles sur
enrichissent la consommation en aval. Par exemple, vous pouvez ajouter des valeurs
des informations de notation qui reposent sur les données des événements analysés. La
La détection suivante examine deux événements pour attribuer la valeur $hostname
. Si
la valeur $hostnames
doit correspondre sur une période de cinq minutes, un score de gravité est
appliquée. Lorsque vous utilisez des périodes, le moteur de détection des opérations de sécurité Google
examine les blocs de temps distincts que vous spécifiez.
rule OutcomeRuleMultiEvent {
meta:
author = "noone@google.com"
events:
$u.udm.principal.hostname = $hostname
$asset_context.graph.entity.hostname = $hostname
$severity = $asset_context.graph.entity.asset.vulnerabilities.severity
match:
$hostname over 5m
outcome:
$risk_score =
max(
100
+ if($hostname = "my-hostname", 100, 50)
+ if($severity = "HIGH", 10)
+ if($severity = "MEDIUM", 5)
+ if($severity = "LOW", 1)
)
$asset_id_list =
array(
if($u.principal.asset_id = "",
"Empty asset id",
$u.principal.asset_id
)
)
$asset_id_distinct_list = array_distinct($u.principal.asset_id)
$asset_id_count = count($u.principal.asset_id)
$asset_id_distinct_count = count_distinct($u.principal.asset_id)
condition:
$u and $asset_context and $risk_score > 50 and not arrays.contains($asset_id_list, "id_1234")
}
Conclusion
YARA-L est un langage de détection flexible qui vous permet d'examiner la sécurité et pas simplement renvoyer une requête de données. La variable d'événement sert à suivre les valeurs de champ utilisées dans la section condition de la règle. Toi vous pouvez utiliser un seul événement, plusieurs événements au fil du temps, corréler les sources pour à valeur unique (comme $hostname provenant de différentes sources de données), et utilisez même des outils telles que les expressions régulières pour obtenir des correspondances. Il est essentiel d'adapter les règles en spécifiant des exclusions dans la logique. Toi Vous pouvez également utiliser des listes de référence pour regrouper des articles, puis y faire référence dans la règle. N'oubliez pas que Google Security Operations n'a pas besoin pour la détection. Vous pouvez suivre les détections pour plusieurs et n'émettent des alertes que pour ceux qui, selon vous, environnement.