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 vengono eseguite le regole. Se i campi vengono omessi, vengono usati per impostazione predefinita i valori zero.
Ad esempio, il valore predefinito di una stringa omessa è ""
.
Se metti in equazione due campi entrambi omessi, entrambi potrebbero avere per impostazione predefinita valori pari a zero. Ciò potrebbe causare corrispondenze indesiderate in cui due campi corrispondono perché entrambi hanno zero valori. Puoi evitare questo comportamento specificando esplicitamente il valore zero.
Ad esempio, se hai una regola che identifica due eventi in base a due campi, è possibile che entrambi i campi siano vuoti e provochi una corrispondenza:
$e1.field1 = $e2.field2
Se sia e1.field1
sia e2.field2
sono omessi nei dati, "" = ""
è true, causando 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 gli eventi UDM di un determinato tipo di evento, l'aggiunta di un filtro per tipo di evento può aiutarti a ottimizzare la regola riducendo il numero di eventi da 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. Dovresti anche inserire i filtri di uguaglianza prima di regex 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
- Creazione di una singola regola evento utilizzando un'espressione regolare
- Aggregare gli eventi nelle regole
- Impostare una soglia nelle condizioni
- Navigazione nell'editor delle regole
- Opzioni regola YARA-L
- Creazione di una regola evento singolo - Corrispondenza stringa
- Creazione di una regola per più eventi: partecipazione agli eventi
- Creare una regola con più eventi: ordinamento degli eventi
- Creare una regola con più eventi: più unioni e conteggi nelle condizioni
- Creare una regola con più eventi: finestre scorrevoli
- Introduzione ai risultati in una regola Evento singolo
- Risultati in una regola multievento - Conteggi
- Risultati nelle regole con più eventi: array
- Esiti in una regola con più eventi: Max, Min, Sum
- Risultati: punteggio di rischio, logica condizionale e operatori matematici
- Funzioni - strings.concat
- Funzioni - string.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 espressione regolare - re.replace
- Guida introduttiva alla ricerca statistica
- Ricerca statistica - Più di un conteggio