Função para atribuição de marcador de posição
Em YARA-L, o processo de usar funções para processar dados e armazenar o resultado é chamado de atribuição de função a marcador de posição. As variáveis de substituição (indicadas por $) são usadas para representar pontos de dados específicos extraídos de eventos da UDM e outras fontes de dados. As funções podem operar nesses campos de evento ou em combinações de campos, e os resultados dessas operações são atribuídos às variáveis de marcador de posição para uso em outras partes da consulta, como as seções match, condition e outcome.
Funções: a YARA-L oferece funções de métrica que podem realizar cálculos ou transformações de dados em campos de eventos.
Variáveis de marcador de posição: são variáveis, indicadas por um cifrão precedente (como
$user,$ip), que podem conter valores derivados de campos de eventos ou saídas de funções. Eles são definidos na seçãoeventse podem ser usados em toda a regra.Atribuição: a saída da função é atribuída a uma variável de marcador de posição.
Limitações
Há duas limitações ao usar a função para atribuição de marcador de posição:
Cada marcador de posição na atribuição de função a marcador de posição precisa ser atribuído a uma expressão que contenha um campo de evento.
Exemplos válidos
$ph1 = $e.principal.hostname $ph2 = $e.src.hostname // Both $ph1 and $ph2 have been assigned to an expression containing an event field. $ph1 = strings.concat($ph2, ".com")$ph1 = $e.network.email.from $ph2 = strings.concat($e.principal.hostname, "@gmail.com") // Both $ph1 and $ph2 have been assigned to an expression containing an event field. $ph1 = strings.to_lower($ph2)Exemplo inválido
$ph1 = strings.concat($e.principal.hostname, "foo") $ph2 = strings.concat($ph1, "bar") // $ph2 has NOT been assigned to an expression containing an event field.A chamada de função precisa depender de exatamente um evento. No entanto, mais de um campo do mesmo evento pode ser usado em argumentos de chamada de função.
Exemplo válido
$ph = strings.concat($event.principal.hostname, "string2")$ph = strings.concat($event.principal.hostname, $event.src.hostname)Exemplo inválido
$ph = strings.concat("string1", "string2")$ph = strings.concat($event.principal.hostname, $anotherEvent.src.hostname)
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.