Panoramica di YARA-L 2.0
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
metadefinisce 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
eventsdefinisce gli eventi da monitorare: accessi utente, accessi utente non riusciti (variabili evento) e link alla variabile di corrispondenzauser(variabili segnaposto).La sezione
outcomedefinisce 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
matchdefinisce 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
conditionspecifica di restituire solo gli utenti che hanno più di cinque o più tentativi di accesso non riusciti.
Passaggi successivi
- Sintassi della sezione Meta
- Sintassi della sezione Eventi
- Sintassi della sezione Corrispondenza
- Sintassi della sezione Risultato
- Sintassi della sezione delle condizioni
- Sintassi della sezione Opzioni
Informazioni aggiuntive
- Espressioni, operatori e costrutti utilizzati in YARA-L 2.0
- Funzioni in YARA-L 2.0
- Creare regole di rilevamento composite
- Esempi: query YARA-L 2.0
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.