Best practice per YARA-L
Questo documento descrive le best practice consigliate da Google Security Operations per la scrittura di regole in YARA-L.
Filtrare i valori zero
I campi potrebbero essere omessi automaticamente negli eventi in base ai quali esegui le regole. Quando i campi vengono omessi, per impostazione predefinita vengono utilizzati i valori zero.
Ad esempio, il valore predefinito di un valore di stringa omesso è ""
.
Se metti in equazione due campi entrambi omessi, entrambi potrebbero avere come valore predefinito 0. Ciò potrebbe portare a corrispondenze indesiderate in cui due campi corrispondono perché hanno entrambi valori pari a zero. Puoi evitare questo comportamento specificando esplicitamente il valore zero.
Ad esempio, se hai una regola che equipara due eventi in base a due campi, è possibile che entrambi i campi siano vuoti, causando una corrispondenza:
$e1.field1 = $e2.field2
Se sia e1.field1
sia e2.field2
sono omessi nei dati, "" = ""
è true e si verifica una corrispondenza.
Le seguenti espressioni di confronto assicurano che non venga trovata una corrispondenza perché e1.field1
e e2.field2
non includono dati:
$e1.field1 = $e2.field2
$e1.field != ""
Aggiungere un filtro per tipo di evento
Nell'esempio seguente, gli indirizzi IP di ogni evento UDM vengono controllati in base all'elenco di riferimento, il che consuma molte risorse:
events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses
Se la regola YARA-L rileva solo eventi UDM di un determinato tipo, l'aggiunta di un filtro per tipo di evento può contribuire a ottimizzare la regola riducendo il numero di eventi che deve valutare.
events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$e.metadata.event_type = "NETWORK_DNS"
$e.target.ip in %suspicious_ip_addresses
Aggiungi questi filtri all'inizio della sezione degli eventi. Inoltre, devi inserire i filtri di uguaglianza prima di espressioni regolari o altri confronti. I filtri vengono applicati nell'ordine in cui appaiono nella regola.
Per i blog della community sull'utilizzo di YARA-L, consulta:
- Nozioni di base su YARA-L
- Variabili delle regole YARA-L
- Operatori e modificatori YARA-L
- Creare una singola regola evento utilizzando un'espressione regolare
- Aggregazione di eventi nelle regole
- Impostare una soglia nelle condizioni
- Navigazione nell'editor delle regole
- Opzioni regola YARA-L
- Creare una regola per un singolo evento: corrispondenza di stringa
- Creare una regola per più eventi: unione di eventi
- Creare una regola per più eventi: ordinamento degli eventi
- Creare una regola per più eventi: più unioni e conteggi nelle condizioni
- Creare una regola per più eventi: finestre scorrevoli
- Introduzione ai risultati in una regola di singolo evento
- Esiti in una regola per più eventi: conteggi
- Esiti nelle regole per più eventi: array
- Esiti in una regola per più eventi: Max, Min, Sum
- Risultati: punteggio di rischio, logica condizionale e operatori matematici
- Funzioni - strings.concat
- Funzioni - strings.coalesce
- Funzioni - Rete
- Elenco di riferimento
- Elenchi di riferimento CIDR
- Elenchi di riferimento per le espressioni regolari
- Funzione Stringhe - Maiuscolo o minuscolo
- Funzione di espressione regolare - re.regex
- Funzione di espressione regolare: re.capture
- Funzione stringa: strings.base64_decode
- Funzione di espressioni regolari - re.replace
- Guida introduttiva alla ricerca statistica
- Ricerca statistica: più di un conteggio