Função para atribuição de marcadores de posição

Suportado em:

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ção events e 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:

  1. 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.
    
  2. 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.