Come rilevare virus non ancora conosciuti
Come rilevare virus non ancora conosciuti: l’evoluzione delle tecniche di rilevamento dei codici maligni
Kaspersky Lab ha pubblicato uno studio condotto da Alisa Shevchenko, Senior Analyst Kaspersky Lab, in cui vengono spiegate le tecniche e le tecnologie utilizzate per rilevare un virus “sconosciuto”, ovvero non ancora inserito all’interno del database delle definizioni di virus.
All’inizio dell’articolo, Alisa Shevchenko sottolinea che qualsiasi tecnologia utilizzata, è composta da due componenti: una componente tecnica ed una analitica. La componente tecnica non è altro che la summa di tutti gli algoritmi che servono a fornire alla componente analitica tutti i dati necessari per l’analisi vera e propria. Quest’ultima, infatti, fornisce il verdetto finale su un file o su un programma sulla base dei dati ricevuti e analizzati.
La componente tecnica di un sistema serve a raccogliere i dati necessari alla fase analitica.
Ci sono molti metodi per raccogliere tali dati, poiché ogni virus, oltre ad essere un normale file, è anche la somma degli effetti che quel file ha sul sistema operativo. Tutti questi metodi, possono essere elencati in ordine di astrazione, dove con astrazione si intende il punto di vista utilizzato per osservare il programma sospetto: come un normale file (ovvero come un insieme di bytes), come un comportamento (concetto più astratto rispetto ad un file inteso come semplice insieme di bytes) o come somma degli effetti che il programma o il file ha sul sistema operativo. Le tecnologie antivirus hanno, più o meno, seguito un percorso di astrazione simile: inizialmente si lavorava sui file, successivamente sulle azioni compiute dai file ed infine sull’intero ambiente in cui il file è inserito. Per questa ragione, la lista segue in un certo senso anche un ordine cronologico.
1. I primi programmi antivirus analizzavano un file considerando il suo codice come una semplice sequenza di bytes. Questi programmi in pratica analizzavano il codice, ma non il comportamento del file. Oggi questo metodo è ancora utilizzato, ma viene completato con altre tecniche e tecnologie.
2. Emulazione delle attività di un programma.
Emulare l’attività di un programma significa principalmente simulare l’attività di un software utilizzando un programma che ha il compito di ricreare le stesse condizioni di utilizzo in cui il software normalmente lavora. Per un antivirus, ciò significa scomporre il software e analizzare il comportamento di ogni singolo comando all’interno di un ambiente che simula il sistema operativo originale. In altre parole, nello stesso momento in cui l’emulatore lavora con il file e lo scompone, ne analizza anche le attività. In questo modo è possibile osservare le attività di un software senza mettere a rischio l’intero sistema.
3. Virtualizzazione: lanciare un programma in una sandbox.
Una sandbox è un ambiente virtuale che simula le caratteristiche di un sistema operativo per poter far girare al suo interno un programma del quale si deve verificare l’attendibilità. In questo modo si può controllare in dettaglio l’attività dell’applicazione senza correre nessun rischio di compromettere il sistema. Qualsiasi interazione tra il programma e il suo ambiente operativo (come il registro o il file system) può essere virtualizzata. Mentre l’emulazione fornisce un ambiente all’interno del quale il programma può funzionare, la virtualizzazione utilizza il sistema operativo stesso come ambiente per la simulazione, con la sandbox che controlla le interazioni tra l’ambiente e il programma.
4. Monitorare gli eventi di sistema.
Mentre un emulatore o la sandbox osservano ogni programma separatamente, il monitoraggio degli eventi controlla tutti in programmi simultaneamente, registrando tutte le azioni del sistema operativo. Questa tecnologia è quella che si sta evolvendo più rapidamente. Non si tratta comunque della tecnologia più sicura, dato che quando si lancia un programma all’interno di un ambiente reale e non virtualizzato, si abbassa notevolmente il livello di protezione della macchina. Inoltre tale tecnologia può essere disattivata da alcuni programmi maligni.
5. Ricerca di anomalie nel sistema.
Per poter trovare anomalie all’interno di un sistema utilizzando questo metodo, è necessaria una componente analitica molto complessa (come ad esempio un sistema esperto o una rete neurale). A causa della sua complessità, questa tecnologia è stata finora poco sviluppata. Ad oggi, implementazioni di questa tecnologia confrontano solo le condizioni del sistema con alcune condizioni “standard”, ma questo metodo è poco efficace.
Come la componente tecnica, anche quella analitica si può dividere in diverse categorie:
1. Comparazione semplice
In questa categoria, la decisione sull’attendibilità di un oggetto si basa sul confronto con un esempio di programma standard.
2. Comparazione complessa
In questo caso, la decisione sull’attendibilità di un oggetto si basa sul confronto con diversi programmi standard. I modelli utilizzati per il confronto possono essere modificati e adattati e il verdetto risultante si basa su una probabilità statistica.
3. Sistemi esperti
In questa categoria, la decisione viene presa dopo una sofisticata analisi dei dati provenienti dalla componente tecnica. Un sistema esperto può includere alcuni elementi dotati di intelligenza artificiale.
L’articolo di Alisa Shevchenko prosegue esaminando in dettaglio quali algoritmi vengono utilizzati nelle diverse tecnologie di rilevamento di programmi maligni. La componente tecnica di una tecnologia ha il compito di raccogliere informazioni sulle risorse di sistema utilizzate da un programma, sicurezza e protezione. In generale, meno astratta è la tipologia di protezione usata, maggiore è la sicurezza del sistema.
La componente analitica di una tecnologia è responsabile di funzioni come la proattività (e il suo impatto sulla necessità di aggiornare frequentemente l’aggiornamento del database delle definizioni di virus), dei cosiddetti “falsi positivi” e della percentuale di coinvolgimento dell’utente. Quest’ultima voce si riferisce a quante volte l’utente può definire in prima persona alcuni aspetti della protezione: creare regole, eccezioni e black/white list. Inoltre, tale voce include anche l’entità del coinvolgimento dell’utente nel processo che porta al “verdetto di attendibilità”, accettando o rifiutando la decisione presa dal sistema analitico. Maggiore è la complessità del sistema analitico, maggiore è la protezione. Aumentare la complessità, significa però aumentare il numero dei falsi positivi; tale situazione può essere compensata tramite un maggiore coinvolgimento dell’utente.
L’articolo si conclude con alcuni suggerimenti su come scegliere al meglio una protezione non basata sulle definizioni dei virus. Si sottolinea che non c’è una “migliore protezione” in generale, ogni tecnologia ha i suoi vantaggi e i suoi svantaggi. Quando sceglie un prodotto, l’utente dovrebbe tener conto dei test fatti da istituzioni indipendenti dalle aziende produttrici e dai pareri degli utenti che hanno già provato l’efficacia o meno di una soluzione.
Per ulteriori informazioni su Kaspersky Lab, visitate il sito http://www.kaspersky.com
- [08/09/09] Servizi torrent: pericolo virus
- [21/11/08] Gartner: Open Source in ogni azienda entro il 2009
- [26/06/08] Vi chiedono un riscatto per i vostri dati? Non spegnete il computer
- [31/05/08] Flash, falla utilizzata per diffondere malware
- [17/05/08] Il virus è in agguato