Práticas recomendadas do YARA-L

Compatível com:

Este documento descreve as práticas recomendadas da Google Security Operations para escrever regras em YARA-L.

Filtre valores zero

Os campos podem ser omitidos automaticamente nos eventos em que executa as regras. Quando os campos são omitidos, são predefinidos para os respetivos valores zero.

Por exemplo, um valor de string omitido é predefinido como "".

Se equiparar dois campos que são ambos omitidos, ambos podem ser predefinidos para os respetivos valores zero. Isto pode levar a correspondências não intencionais em que dois campos correspondem porque ambos têm valores zero. Pode evitar este comportamento especificando explicitamente o valor zero.

Por exemplo, se tiver uma regra que equipara dois eventos com base em dois campos, existe a possibilidade de ambos os campos estarem vazios, o que provoca uma correspondência:

$e1.field1 = $e2.field2

Se e1.field1 e e2.field2 forem omitidos nos dados, "" = "" é verdadeiro, o que provoca uma correspondência.

As seguintes expressões de comparação garantem que não obtém uma correspondência porque e1.field1 e e2.field2 não incluem dados:

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

Valores zero e regras dependentes do enriquecimento

Se uma regra depender de dados enriquecidos que ainda não foram atualizados, o valor pode ser nulo ou zero. Por isso, é uma boa prática filtrar os valores zero (verificações nulas) em regras dependentes do enriquecimento. Saiba como o Google SecOps enriquece os dados de eventos e entidades e como usar dados enriquecidos com contexto nas regras.

Adicione um filtro de tipo de evento

No exemplo seguinte, os endereços IP de cada evento 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 sua regra YARA-L detetar apenas eventos UDM de um determinado tipo de evento, a adição de um filtro de tipo de evento pode ajudar a otimizar a sua regra, reduzindo o número de eventos que a regra tem de 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 estes filtros ao início da secção de eventos. Também deve colocar filtros de igualdade antes de regex ou outras comparações. Os filtros são aplicados pela ordem em que aparecem na regra.

Para ver blogues da comunidade sobre como trabalhar com o YARA-L, consulte:

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