Práticas recomendadas da YARA-L
Este documento descreve as práticas recomendadas pelas 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 suas regras. Quando os campos são omitidos, eles recebem o valor padrão de zero.
Por exemplo, um valor de string omitido é padrão para ""
.
Se você igualar dois campos omitidos, eles vão receber valores padrão iguais a zero. Isso pode levar a correspondências não intencionais em que dois campos são iguais porque ambos têm valores nulos. Evite esse comportamento especificando 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 os campos 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 vai encontrar uma correspondência porque e1.field1
e e2.field2
não incluem dados:
$e1.field1 = $e2.field2
$e1.field != ""
Adicionar um filtro de tipo de evento
No exemplo a seguir, os endereços IP de cada evento de UDM são comparados com a lista de referências, 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 de UDM de um determinado tipo de evento, adicionar um filtro de tipo de evento poderá ajudar a otimizar sua 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 é necessário colocar filtros de igualdade antes de regex ou outras comparações. Os filtros são aplicados na ordem em que aparecem na regra.
Para conferir blogs da comunidade sobre como trabalhar com a YARA-L, consulte:
Para conferir blogs da comunidade sobre como trabalhar com a YARA-L, consulte:
- Noções básicas de YARA-L
- Variáveis de regra YARA-L
- Operadores e modificadores da YARA-L
- Como criar uma única regra de evento usando uma expressão regular
- Como agregar 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: unir eventos
- Como criar uma regra para vários eventos: ordenar eventos
- Como criar uma regra de vários eventos: várias mesclagens 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 e 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 expressões regulares
- 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
- Primeiros passos com a pesquisa estatística
- Pesquisa estatística: mais do que uma contagem