Assegnazione della funzione al segnaposto

Supportato in:

In YARA-L, il processo di utilizzo delle funzioni per elaborare i dati e archiviare il risultato è chiamato assegnazione da funzione a segnaposto. Le variabili segnaposto (indicate con $) vengono utilizzate per rappresentare punti dati specifici estratti dagli eventi UDM e da altre origini dati. Le funzioni possono quindi operare su questi campi evento o su combinazioni di campi e i risultati di queste operazioni vengono assegnati alle variabili segnaposto per l'utilizzo in altre parti della query, ad esempio le sezioni match, condition e outcome.

  • Funzioni: YARA-L fornisce funzioni di metrica che possono eseguire calcoli o trasformazioni dei dati sui campi evento.

  • Variabili segnaposto: si tratta di variabili, indicate da un segno di dollaro precedente (ad esempio $user, $ip), che possono contenere valori derivati da campi evento o output di funzioni. Sono definiti nella sezione events e possono essere utilizzati in tutta la regola.

  • Assegnazione: l'output della funzione viene assegnato a una variabile segnaposto.

Limitazioni

Esistono due limitazioni quando si utilizza l'assegnazione di funzioni ai segnaposto:

  1. Ogni segnaposto nell'assegnazione della funzione al segnaposto deve essere assegnato a un'espressione contenente un campo evento.

    Esempi validi

    $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)
    

    Esempio non valido

    $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. La chiamata di funzione deve dipendere da esattamente un evento. Tuttavia, è possibile utilizzare più di un campo dello stesso evento negli argomenti della chiamata di funzione.

    Esempio valido

    $ph = strings.concat($event.principal.hostname, "string2")

    $ph = strings.concat($event.principal.hostname, $event.src.hostname)

    Esempio non valido

    $ph = strings.concat("string1", "string2")

    $ph = strings.concat($event.principal.hostname, $anotherEvent.src.hostname)

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.