Cosa sono le regole YARA?
Le regole Yara (acronimo che sta per Yet Another Recursive Acronym) sono uno strumento sviluppato da Victor Alvarez, distribuito all’interno di Kali Linux e viene attualmente utilizzato dagli analisti di sicurezza (e da team di cyber security come Security Architect srl) per la ricerca di pattern malevoli all’interno di file eseguibili o testuali.
Volendo fare un’analogia, si potrebbe pensare ad esso come il comando grep
di Linux, che sfrutta le espressioni regolari per ricercare porzioni di testo. Nel caso di YARA, il matching viene effettuato sulla base di regole precompilate contenenti ciascuna diversi pattern e diverse regole logiche per determinare se un file sia malevolo o meno.
La popolarità di questo strumento è talmente vasta che moltissimi produttori di antivirus lo utilizzano quale motore di analisi dei file.
Per approfondimenti lasciamo qui la documentazione ufficiale.
Come funzionano le regole YARA?
Le regole YARA sono come un pezzo di linguaggio di programmazione, funzionano definendo un numero di variabili, patterns, che contengono schemi trovati in un campione di malware.
Quando si analizza un pezzo di malware, i security analyst identificheranno modelli e stringhe univoci all’interno del malware che consentiranno loro di decidere a quale gruppo di minacce e a quale famiglia di malware è attribuibile il campione. Creando una regola YARA da diversi campioni, samples, della stessa famiglia di malware, è possibile identificare più campioni tutti associati forse alla stessa campagna o allo stesso autore della minaccia.
Nel nostro caso le regole YARA possono essere utilizzate come strumento di prevenzione dal cyber crime e risposta agli incidenti per rilevare file binari dannosi all’interno di un’organizzazione.
Quando si utilizzano?
YARA è estremamente popolare all’interno della comunità infosec, il motivo è che ci sono una serie di casi d’uso per l’implementazione di YARA rules:
- Identificare e classificare i malware
- Trovare nuovi samples basati su modelli specifici
- Gli Incident Responder implementano regole YARA per identificare i dispositivi compromessi
- L’implementazione proattiva di regole YARA personalizzate può aumentare le difese di un’organizzazione e migliorarne la security posture generale.
YARA rules: qualche elemento da sapere
Per costruire una regola YARA utile, dovrai conoscere i vari elementi che possono essere utilizzati per costruire la tua regola personalizzata.
Metadati
I metadati non influiscono su ciò che cercherà la regola YARA, ma forniscono informazioni utili sulla regola stessa.
- Autore: nome, indirizzo e-mail, handle di Twitter.
- Data: data di creazione della regola.
- Versione: il numero di versione della regola per il monitoraggio delle modifiche.
- Riferimento: collegamento a un articolo o download del campione, utilizzato per fornire informazioni pertinenti sul malware che la regola è progettata per rilevare.
- Descrizione: una breve panoramica dello scopo della regola e del malware che mira a rilevare.
- Hash: un elenco di hash di esempio utilizzati per creare la regola YARA.
Stringhe
È comune trovare stringhe uniche e interessanti all’interno di un campione di malware, queste sono l’ideale per costruire una regola YARA. Per definire una stringa all’interno di una regola, la stringa stessa deve essere dichiarata come variabile.
- $a=”string from malware sample” – (stringa dal campione di malware)
Oltre a dichiarare una stringa, possiamo anche aggiungere modificatori dopo la stringa dichiarata per perfezionare la ricerca. Per es:
- $a=”malwarestring” fullword – Questo modificatore corrisponderà a una parola esatta. Ad esempio, “www.malwarestring.com” restituirà una corrispondenza, ma “www.abcmalwarestring.com” non la restituirà.
- $a=”malwarestring” wide – Corrisponde alle stringhe unicode separate da byte nulli, ad esempio “w.w.w… m.a.l.w.a.r.e.s.t.r.i.n.g… c.o.m.”
- $a=”malwarestring” wide ascii – Ciò consentirà la corrispondenza della regola su caratteri unicode e ascii.
- $a=”MalwareString” nocase – la regola corrisponderà alla stringa indipendentemente dalle maiuscole e minuscole.
Condizioni
La sezione delle stringhe definisce i criteri di ricerca che verranno utilizzati per una regola YARA, la sezione delle condizioni definisce i criteri per attivare una corrispondenza (trigger a successful match). Ci sono più condizioni che possono essere utilizzate:
- uint16(0) == 0x5A4D – Il controllo dell’intestazione di un file è un’ottima condizione da includere nelle regole YARA. Questa condizione stabilisce che il file deve essere un eseguibile di Windows, questo perché i valori esadecimali 4D 5A si trovano sempre all’inizio dell’intestazione di un file eseguibile. Questo è invertito in YARA a causa dell’endianness.
- uint32(0)==0x464c457f) o (uint32(0) == 0xfeedfacf) o (uint32(0) == 0xcffaedfe) o (uint32(0) == 0xfeedface) o (uint32(0) == 0xcefaedfe) – Usato per identificare i file binari di Linux controllando l’intestazione del file.
- (#a == 6) – Il conteggio delle stringhe è uguale a 6.
- (#a > 6) – Il numero di stringhe è maggiore di 6
- Ecc…
Esistono, inoltre, diversi modi per specificare la condizione della dimensione del file.
- (filesize>512)
- (filesize<5000000)
- (filesize<5MB)
Una volta che le stringhe sono state dichiarate all’interno di una regola, puoi personalizzare il numero di corrispondenze che devono essere trovate perché la regola identifichi un certo file come dannoso.
Es: 2 of ($a,$b,$c)
3 of them
4 of ($a*)
all of them
any of them
$a and not $b
Ove possibile, sarebbe meglio utilizzare 2-3 gruppi di condizioni per evitare di generare falsi positivi e per creare anche una regola affidabile.
Importazioni
Le importazioni sono un ottimo modo per implementare condizioni aggiuntive nelle regole YARA. Per esempio si può utilizzare l’importazione PE. L’aggiunta della sintassi “import pe” all’inizio di una regola YARA ti consentirà di utilizzare la funzionalità PE di YARA, utile se non riesci a identificare stringhe univoche.
Conclusioni
Abbiamo illustrato molto brevemente le regole YARA per iniziare a cercare nuovi campioni per l’analisi o, in alternativa, iniziare a implementare alcuni rilevamenti proattivi all’interno della tua organizzazione. Vi sono però tantissime variabili da implementare per far sì che una regola possa effettivamente rilevare con efficacia le minacce presenti sui dispositivi e sulle reti di un’azienda.
Se stai cercando di maturare la Security Posture della tua organizzazione, dai un’occhiata ai servizi di Security Architect srl e al nostro centro SOC.
scopri i nostri servizi:
Cybersecurity aziendale: il tuo investimento è davvero efficace?
Le 5 tecniche malware più comuni nel 2024
SIEM, EDR, SOC: sicurezza IT proattiva e conformità NIS2
Cloudflare sventa il più grande attacco DDoS della storia
Continuità operativa: soluzioni avanzate per la protezione dei sistemi
Cloud Security: rischi e soluzioni integrate
Cybersecurity e IT service management: soluzioni avanzate per aziende
Post vacanze: adeguamento alla Direttiva NIS 2 entro Ottobre 2024!
Pinnacle Award a Cisco EVE: sicurezza e visibilità nel traffico criptato
- Blog (74)
- Case Studies (19)
- Eventi (2)
- News (70)