Práticas recomendadas da YARA-L
Este documento descreve as práticas recomendadas recomendadas das Operações de segurança do Google para escrever regras em YARA-L.
Filtrar valores zero
Os campos podem ser omitidos automaticamente nos eventos em que você executa as regras. Quando os campos são omitidos, eles usam os valores zero padrão.
Por exemplo, um valor de string omitido tem como padrão ""
.
Se você igualar dois campos omitidos, eles poderão ser padronizados com valores zero. Isso pode levar a correspondências não intencionais em que dois campos correspondem porque ambos têm valores zero. Para evitar esse comportamento, especifique explicitamente o valor zero.
Por exemplo, se você tiver uma regra que equipara dois eventos com base em dois campos, há uma chance de que ambos estejam vazios, causando uma correspondência:
$e1.field1 = $e2.field2
Se e1.field1
e e2.field2
forem omitidos nos dados, "" = ""
será verdadeiro, causando uma correspondência.
As expressões de comparação a seguir garantem que você não receba uma correspondência porque e1.field1
e e2.field2
não incluem dados:
$e1.field1 = $e2.field2
$e1.field != ""
Valores zero e regras dependentes de enriquecimento
Se uma regra depender de dados enriquecidos que ainda não foram atualizados, o valor poderá ser nulo ou zero. Portanto, é recomendável filtrar valores zero (verificações de nulo) em regras dependentes de enriquecimento. Saiba como o Google SecOps enriquece os dados de eventos e entidades e como usar dados enriquecidos com contexto em regras.
Adicionar um filtro de tipo de evento
No exemplo a seguir, os endereços IP de cada evento da UDM são verificados em relação à lista de referência, consumindo muitos recursos:
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
Se a regra da YARA-L detectar apenas eventos do UDM de um determinado tipo, adicione um filtro de tipo de evento para otimizar a regra, reduzindo o número de eventos que ela precisa avaliar.
events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$e.metadata.event_type = "NETWORK_DNS"
$e.target.ip in %suspicious_ip_addresses
Adicione esses filtros ao início da seção de eventos. Também é recomendável colocar filtros de igualdade antes de regex ou outras comparações. Os filtros são aplicados na ordem em que aparecem na regra.
Para ver blogs da comunidade sobre como trabalhar com YARA-L, consulte:
- Noções básicas de YARA-L
- Variáveis de regra YARA-L
- Operadores e modificadores da YARA-L
- Criar uma regra de evento único usando uma expressão regular
- Agregação de eventos em regras
- Como definir um limite nas condições
- Navegação no editor de regras
- Opções de regra YARA-L
- Como criar uma regra de evento único: correspondência de string
- Como criar uma regra de vários eventos: junção de eventos
- Como criar uma regra de vários eventos: ordenação de eventos
- Como criar uma regra de vários eventos: várias junções e contagens em condições
- Como criar uma regra de vários eventos: janelas deslizantes
- Apresentação dos resultados em uma regra de evento único
- Resultados em uma regra de vários eventos: contagens
- Resultados em regras de vários eventos - matrizes
- Resultados em uma regra de vários eventos: máximo, mínimo, soma
- Resultados: pontuação de risco, lógica condicional e operadores matemáticos
- Funções - strings.concat
- Funções - strings.coalesce
- Funções – rede
- Lista de referências
- Listas de referência de CIDR
- Listas de referência de regex
- Função de strings: maiúsculas ou minúsculas
- Função de expressão regular: re.regex
- Função de expressão regular: re.capture
- Função de string: strings.base64_decode
- Função de expressão regular: re.replace
- Introdução à pesquisa estatística
- Pesquisa estatística: mais do que uma contagem
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.