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

Compatível com:

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

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