Função para atribuição de marcadores de posição
Em YARA-L, o processo de utilização de funções para processar dados e armazenar o resultado é denominado atribuição de função a marcador de posição. As variáveis de marcadores de posição (indicadas por $) são usadas para representar pontos de dados específicos extraídos de eventos da UDM e outras origens de dados. As funções podem, então, operar nestes campos de eventos ou combinações de campos, e os resultados destas operações são atribuídos às variáveis de marcadores de posição para utilização noutras partes da consulta, como as secções match, condition e outcome.
Funções: o YARA-L fornece funções métricas que podem realizar cálculos ou transformações de dados em campos de eventos.
Variáveis de marcadores de posição: estas são variáveis, indicadas por um sinal de dólar (como
$user,$ip), que podem conter valores derivados de campos de eventos ou resultados de funções. São definidas na secçãoeventse podem ser usadas em toda a regra.Atribuição: o resultado da função é atribuído a uma variável de marcador de posição.
Limitações
Existem duas limitações quando usa a função para a atribuição de marcadores de posição:
Todos os marcadores de posição na função para a atribuição de marcadores de posição têm de ser atribuídos 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 deve depender de exatamente um evento. No entanto, é possível usar mais de um campo do mesmo evento nos argumentos de chamadas de funções.
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 da Google SecOps.