Usar listas de referência e tabelas de dados na YARA-L 2.0

Compatível com:

Com as listas de referência e as tabelas de dados, você pode estruturar sua lógica comparando campos de eventos com conjuntos de dados personalizados. Use esses objetos para gerenciar indicadores de alto volume, como IPs maliciosos conhecidos ou nomes de host aprovados, em pesquisas, painéis e detecções sem modificar a sintaxe subjacente.

Você pode usar listas de referência ou tabelas de dados nas seções events ou outcome de uma regra. Consulte Listas de referência e Usar tabelas de dados para mais informações sobre o comportamento e a sintaxe das listas de referência e das tabelas de dados.

Aplicar a sintaxe da lista de referência e da tabela de dados

As listas de referência e as tabelas de dados seguem uma sintaxe semelhante, definida pelo ID do objeto e pelo tipo de correspondência (string, regex ou CIDR) exigido para a operação. Esta seção mostra exemplos de sintaxe para usar vários tipos de listas de referência.

No Google Security Operations, as listas de referência e as tabelas de dados são usadas nas seções events ou outcome de uma regra YARA-L para comparar dados de eventos com conjuntos de dados enviados. Eles são executados durante o processo de avaliação da regra para filtrar eventos ou enriquecer os resultados da detecção.

Use listas de referência quando precisar verificar se um único campo corresponde a algum valor em uma lista predefinida (por exemplo, uma lista de IPs maliciosos conhecidos).

  • STRING: $e.principal.hostname in %string_list_name
  • REGEX: $e.principal.hostname in regex %regex_list_name

  • CIDR: $e.principal.ip in cidr %cidr_list_name

Use tabelas de dados quando os dados de referência tiverem uma estrutura de linha ou coluna, permitindo mapear campos específicos para colunas específicas.

  • STRING: $e.target.hostname in %table_name.column_name

  • REGEX: $e.target.hostname in regex %table_name.column_name

  • CIDR: $e.principal.ip in cidr %table_name.column_name

Exemplos: sintaxe e comportamento da lista de referência

Os exemplos a seguir ilustram como estruturar consultas para diferentes tipos de conjuntos de dados e aplicar lógica condicional às suas correspondências:

Exemplo: sintaxe de lista de referência em uma consulta

// STRING reference list
$e.principal.hostname in %string_reference_list

// Regular expression reference list
$e.principal.hostname in regex %regex_reference_list

// CIDR reference list
$e.principal.ip in cidr %cidr_reference_list

Exemplo: sintaxe da tabela de dados

// STRING data table
$e.target.hostname in %data_table_name.column_name

// Regular expression data table
$e.target.hostname in regex %regex_table_name.column_name

// CIDR data table
$e.principal.ip in cidr %cidr_table_name.column_name

Exemplo: operadores not e nocase

O operador nocase é compatível com listas STRING e REGEX.

// Exclude events whose hostnames match substrings in my_regex_list.
not $e.principal.hostname in regex %my_regex_list

// Event hostnames must match at least one string in my_string_list (case insensitive).
$e.principal.hostname in %my_string_list nocase
    

O operador nocase é compatível com listas STRING e REGEX.

Por motivos de desempenho, o Detection Engine restringe o uso de listas de referência.

  • Número máximo de instruções in em uma regra, com ou sem operadores especiais: 10
  • Número máximo de instruções in com o operador regex: 5
  • Número máximo de instruções in com o operador cidr: 5

Para mais informações sobre o comportamento e a sintaxe das listas de referência, consulte Listas de referência.

Para manter o desempenho ideal na Pesquisa, nos painéis e nas detecções, o mecanismo YARA-L impõe os seguintes limites:

  • Número máximo de instruções in em uma consulta, com ou sem operadores especiais: 7
  • Número máximo de instruções in com o operador regex: 4
  • Número máximo de instruções in com o operador cidr: 2

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