Práticas recomendadas da YARA-L

Compatível com:

Este documento descreve as práticas recomendadas das Operações de segurança do Google para escrever regras em YARA-L.

Filtrar valores nulos

Os campos podem ser omitidos automaticamente nos eventos em que você executa as 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. Para evitar esse comportamento, especifique explicitamente o valor zero.

Por exemplo, se você tiver uma regra que iguala dois eventos com base em dois campos, é possível 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 vai encontrar uma correspondência porque e1.field1 e e2.field2 não incluem dados:

 $e1.field1 = $e2.field2
 $e1.field != ""

Valores nulos 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 nulos (verificações de valores nulos) em regras dependentes de enriquecimento. Saiba como o Google Security Operations enriquece dados de eventos e entidades e como usar dados enriquecidos com contexto nas regras.

Adicionar um filtro de tipo de evento

No exemplo abaixo, os endereços IP de cada evento do UDM são verificados na 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, adicionar um filtro de tipo de evento pode ajudar a otimizar a regra, reduzindo o número de eventos que ela precisa avaliar.

events: // Para cada evento da UDM do tipo NETWORK_DNS, verifique se o target.ip está // listado na lista de referência suspicious_ip_addresses. $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 é preciso 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:

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.