Panoramica di YARA-L 2.0

Supportato in:

YARA-L 2.0 è un linguaggio specializzato in Google Security Operations che opera sui dati dei log aziendali per consentire ai professionisti della sicurezza di esplorarli, analizzare le minacce e creare regole di rilevamento.

Questo documento spiega YARA-L e la relativa sintassi, mostrando come puoi utilizzarlo per esprimere qualsiasi cosa, da una query di filtro di base a una regola che cerca pattern complessi. Utilizza le sezioni di una query YARA-L per supportare le funzioni aggregate, la logica delle condizioni e aggiungere contesto tramite join, corrispondenza di pattern e altro ancora.

Panoramica della sintassi di YARA-L 2.0

Per creare una regola o una query YARA-L, ti consigliamo di acquisire familiarità con la struttura e la sintassi per specificare dichiarazioni, definizioni e utilizzo delle variabili.

Struttura della regola

Le regole YARA-L contengono le seguenti sezioni e devono essere specificate nel seguente ordine:

Ordine Sezione Regole Ricerca/Dashboard Descrizione
1 meta Obbligatorio N/D Descrive la regola e può includere valori come autore, gravità, descrizione e priorità. Consulta la sintassi della sezione Meta.
2 eventi Obbligatorio Obbligatorio Definisce come filtrare e unire gli eventi. Consulta la sezione Sintassi della sezione Eventi.
3 corrispondenza Facoltativo Facoltativo Specifica i campi da raggruppare durante l'aggregazione dei risultati. Consulta la sezione Sintassi della sezione di corrispondenza.

Nota: se escludi una sezione match, la regola può corrispondere a un singolo evento.
4 risultato Facoltativo Facoltativo Definisce i dati da restituire quando viene eseguita o attivata una regola. Consulta la sezione Sintassi della sezione Risultato.
5 condizione Obbligatorio Facoltativo Contiene la logica che determina se una regola viene attivata. Consulta la sezione Sintassi della sezione delle condizioni.
6 opzioni del modello. Facoltativo Facoltativo Consente di attivare o disattivare il comportamento di regole specifiche. Consulta la sintassi della sezione Opzioni.

Il seguente esempio illustra la struttura generica di una regola:

rule <rule name>
{
    meta:
    // Stores arbitrary key-value pairs of the rule details, such as who wrote
    // it, what it detects on, version control, etc.

  events:
    // Defines which events to filter and the relationship between events.

  match:
    // Values to return when matches are found.

  outcome:
    // Define the output of each rule and security alert.

  condition:
    // Condition to check events and the variables used to find matches.

  options:
    // Options to turn on or off while executing this rule. The `options` syntax is only valid for rules.
}

Man mano che crei regole, Google SecOps esegue il controllo dei tipi in base alla sintassi YARA-L e mostra gli errori per aiutarti a rivedere la regola in modo che funzioni correttamente. Gli esempi seguenti mostrano gli errori visualizzati quando viene utilizzata una sintassi non valida:

// $e.target.port is of type integer which cannot be compared to a string.
$e.target.port = "80"

// "LOGIN" is not a valid event_type enum value.
$e.metadata.event_type = "LOGIN"

Questa regola di esempio rileva 5 tentativi di accesso non riusciti consecutivi per utente in finestre di 10 minuti.

rule failed_logins
{
  meta:
   author = "Security Team"
   description = "Detects multiple failed user logins within 10-minute windows."
   severity = "HIGH"

  events:
   $e.metadata.event_type = "USER_LOGIN"
   $e.security_result.action = "FAIL"
   $user = $e.target.user.userid

  match:
   $user over 10m

  outcome:
   $failed_login_count = count($e.metadata.id)
   $first_fail_time = min($e.metadata.event_timestamp.seconds)

  condition:
    #e >= 5
}

La regola è definita come segue:

  • La sezione meta definisce l'autore della regola (il team di sicurezza), la descrizione (Rileva più tentativi di accesso utente non riusciti in intervalli di 10 minuti) e la gravità (Alta).

Rileva più tentativi di accesso utente non riusciti nell'arco di 10 minuti

  • La sezione events definisce gli eventi da monitorare: accessi utente, accessi utente non riusciti (variabili evento) e link alla variabile di corrispondenza user (variabili segnaposto).

  • La sezione outcome definisce i calcoli da eseguire sull'evento e sulle variabili segnaposto: conta gli accessi non riusciti e l'ora in cui si è verificato il primo errore.

  • La sezione match definisce la variabile in base alla quale raggruppare gli eventi ($user) e il periodo di tempo (10m) in cui devono verificarsi gli eventi per essere considerati una corrispondenza.

  • La sezione condition specifica di restituire solo gli utenti che hanno più di cinque o più tentativi di accesso non riusciti.

Passaggi successivi

Informazioni aggiuntive

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