Práticas recomendadas do YARA-L
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:
- Noções básicas do YARA-L
- Variáveis de regras YARA-L
- Operadores e modificadores YARA-L
- Criar uma regra de evento único com uma expressão regular
- Agregar eventos em regras
- Definir um limite nas condições
- Navegação no editor de regras
- Opções de regras YARA-L
- Criar uma regra de evento único – Correspondência de string
- Criar uma regra de vários eventos: juntar eventos
- Criar uma regra de vários eventos: ordenar eventos
- Criar uma regra de vários eventos: várias junções e contagens nas condições
- Criar uma regra de vários eventos – Janelas deslizantes
- Apresentamos os resultados numa regra de evento único
- Resultados numa regra de vários eventos: contagens
- Resultados em regras de vários eventos: matrizes
- Resultados numa regra de vários eventos: Máx., Mín., Soma
- Resultados: pontuação de risco, lógica condicional e operadores matemáticos
- Functions - strings.concat
- Functions - strings.coalesce
- Funções – Rede
- Lista de referências
- Listas de referência CIDR
- Listas de referências de expressões regulares
- Função 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 da Google SecOps.