Classificazione e funzionamento ANTIVIRUS Classificazione e funzionamento
Argomenti trattati Che cosa sono Caratteristiche fondamentali Classificazione e funzionamento Antivirus in rete
Antivirus: cosa sono? I programmi antivirus sono quei programmi che cercano di individuare i virus informatici presenti sul computer e di provvedere, poi, alla loro eliminazione. Tuttavia non ne esiste nessuno che garantisca una protezione del 100%. Alan Solomon, uno dei primi esperti di antivirus, riteneva l’isolamento dei computer dal resto del mondo l’unico modo per prevenire definitivamente i virus informatici.
Antivirus: cosa sono? L’impossibilità dell’esistenza di un antivirus assoluto è stata dimostrata matematicamente Infatti, per ogni algoritmo di antivirus, è sempre possibile trovare un’insieme di istruzioni che crea un virus capace di rendersi invisibile a quel particolare antivirus. Fortunatamente per ogni algoritmo di virus è sempre possibile trovare un antivirus che lo renda innoquo. Si stima che in media ogni giorno venga creata una decina di virus.
Un po’ di storia Il primo programma antivirus, chiamato “The Reeper”, fu creato negli anni settanta per combatter il virus “The Creeper”, che, creato per il sistema operativo Tenex, era in grado di diffondersi sulle reti locali. Tuttavia la ricerca sugli antivirus venne avviata solo nel 1988, anno in cui un worm chiamato “Xmas tree” infettò molte reti degli USA, compreso il laboratorio dell’IBM.
Caratteristiche fondamentali Quali sono allora le caratteristiche di cui deve essere in possesso un antivirus per poter essere considerato un prodotto veramente efficace ? Innanzitutto è necessario sottolineare che, a causa della continua evoluzione ed affinamento delle tecniche di programmazione impiegate per la costruzione di codice virale, un antivirus non può più limitarsi a rilevare ed eliminare soltanto i virus noti ma deve anche essere progettato per identificare, anche se in modo probabilistico, nuove tipologie di virus.
Caratteristiche fondamentali E’ utile suddividere in due gruppi distinti le funzionalità che possono essere rinvenute in un prodotto antivirus. Il primo gruppo comprende le funzionalità di base che incidono sull’affidabilità e sulla qualità del virus detection e che presentano le seguenti caratteristiche:
Caratteristiche fondamentali verifica della integrità del settore di boot, del Master Boot Record (MBR) e dei file di sistema durante la fase iniziale di avvio del sistema; scansione in tempo reale della memoria; scansione in tempo reale dei file; scansione degli allegati di posta elettronica;
Caratteristiche fondamentali capacità di individuazione delle altre tipologie di codice nocivo (cavalli di troia, backdoor, macro virus, ecc.); possibilità di creare dischetti di emergenza da utilizzare in caso di ripristino del sistema; rilascio da parte del produttore di frequenti aggiornamenti del file delle firme;
Caratteristiche fondamentali Nel secondo gruppo invece rientrano alcune funzionalità che possiamo considerare avanzate nel senso che esse facilitano l'utilizzo del prodotto od il suo aggiornamento ma non hanno alcuna influenza sulla sua efficacia ed affidabilità: possibilità di programmare scansioni del file system ad intervalli regolari; distribuzione centralizzata degli aggiornamenti (utile soprattutto in un ambiente di rete);
Caratteristiche fondamentali possibilità di effettuare gli aggiornamenti attraverso Internet; capacità di isolare i file infetti per i quali il prodotto non sia in grado di compiere operazioni di pulizia; presenza di una guida esauriente che descriva le tipologie note di virus, cavalli di troia e backdoor e le loro caratteristiche principali;
Classificazione degli antivirus I programmi antivirus possono essere classificati in base al loro comportamento. Alcuni sono progettati per individuare un virus a loro già noto. Altri invece, basandosi sul comportamento tipico dei virus, riescono a individuare anche virus non ancora conosciuti. I primi sono detti di tipo identifying, i secondi di tipo non-identifying.
Classificazione degli antivirus Un’ulteriore distinzione è basata sulla modalità di scansione: Scansione a richiesta: la scansione del sistema da parte dell’antivirus è avviata su richiesta dell’utente. In questo modo il programma antivirus rimane inattivo finché l’utente non richiede una scansione.
Classificazione degli antivirus Scansione in tempo reale: tutti gli oggetti del sistema che sono processati in qualche modo (aperti, chiusi, creati, letti o scritti) sono costantemente monitorati per verificare l’eventuale presenza di virus. In questo modo l’antivirus è sempre attivo, risiede in memoria e controlla gli oggetti senza richiesta dell’utente.
Classificazione degli antivirus Un antivirus può essere di tipo preventing: questo significa che riesce a rilevare un virus prima che abbia attaccato nuovi oggetti. Invece il tipo non-preventing individua un virus soltanto dopo che il sistema è stato infettato. Gli antivirus preventing effettuano la scansione in tempo reale.
Correttezza del virus detection Un programma antivirus può fallire nel virus detection sia per falsi negativi che per falsi positivi. Da un lato un antivirus può individuare correttamente un virus (corretto positivo) o percepire correttamente che non ci sono virus nell’oggetto ispezionato(corretto negativo).
Correttezza del virus detection Dall’altro lato un antivirus può non riuscire a individuare un virus (falso negativo) o notificare la presenza di un virus quando in realtà l’oggetto ispezionato ne è privo(falso positivo). Quindi l’utente può ricevere informazioni errate a causa del fallimento del virus detection.
Recovery Quando viene individuato un virus normalmente l'antivirus chiede cosa fare: eliminare il file infetto o cercare di rimuovere il codice virale. Quest'ultima opzione non sempre è possibile, perché dipende da come il virus ha infettato il file: a volte infatti il programma ospite, pur continuando a funzionare, viene compromesso dall'infezione e in questo caso l'antivirus non è più in grado di ricostruire le istruzioni originali necessarie al corretto funzionamento dell'applicazione.
Tipi di antivirus I programmi antivirus più efficaci sono di tipo scanner e integrity checkers. Spesso queste due tecniche vengono combinate per creare un antivirus più versatile e potente. Altri tipi di antivirus sono: behaviour blockers e immunizers.
Virus scanner I virus scanner si suddividono a loro volta in due gruppi: quelli del primo gruppo individuano i virus a loro conosciuti attraverso il riconoscimento di sequenze di istruzioni, quelli del secondo i virus sconosciuti cercando un insieme di comportamenti tipici. Quest’ultimo approccio è chiamato scanning euristico, mentre il precedente è detto virus scanning.
Scanner di virus noti Gli scanner di virus già noti sono in grado di identificare i virus che sono già presenti nel loro database, inoltre possono essere utilizzati per il virus disinfection. Essi sono di tipo identifying e non-preventing. Il principio del funzionamento degli antivirus scanner è basato sulla verifica di file, settori e memoria di sistema.
Scanner di virus noti Quando apparvero i primi antivirus di tipo scanner, essi usavano soltanto i metodi di signature scanning. Signature scanning (scansione con firma) significa che lo scanner cerca negli oggetti esaminati una sequenza o più sequenze di bytes, dette “mask”, “impronta” o “firma”, che sono presenti in un virus noto. In genere si tratta di pezzi di codice che i virus copiano da file a file ogni volta che iniziano la loro azione.
Scanner di virus noti In pratica il programma provvede ad analizzare la tabella di partizione, il record di avviamento ed ogni singolo file del disco e a confrontare il loro contenuto con delle sequenze (ad es. A0 45 9F 32 98 6B) di byte che rappresentano le istruzioni "caratteristiche" (come definite dai ricercatori che lo hanno analizzato) di ogni virus informatico. Il database che contiene le firme di tutti i virus conosciuti è incluso nell'antivirus.
Scanner di virus noti Questo sarebbe un approccio ideale se le sequenze potessero essere scelte in modo che debbano per forza essere contenute in ogni copia del virus stesso e inoltre tali sequenze non dovrebbero esistere in oggetti che non contengono virus. Scegliendo sequenze selezionate correttamente e abbastanza lunghe la possibilità di falsi positivi sarebbe marginale, ma sfortunatamente questo funziona soltanto per i virus che non variano, mentre per i virus polimorfi questa stringa non esiste.
Scanner di virus noti La difficoltà presentata dai virus polimorfi è data dal fatto che se le copie dello stesso virus possiedono una firma diversa, questa può non essere inclusa nella lista: infatti la firma è generata dinamicamente usando gli algoritmi di crittografia con valori di chiavi diversi. Un virus non referenziato passerà tranquillamente questa fase di ricerca della firma.
Scanner di virus noti La soluzione più avanzata individuata fino ad ora corrisponde ai programmi di decrittazione generica. Essi vengono utilizzati per rilevare virus criptati e polimorfici. Ogni file preso in esame viene caricato in una macchina virtuale, detta emulatore polimorfico, creata appositamente in RAM.
Scanner di virus noti In questo ambiente, isolato dal computer "reale“, l’emulatore polimorfico emula l’encryption engine di un virus polimorfico e decifra il contenuto del virus mettendolo in una forma leggibile. Successivamente il virus è esposto allo scanner che può così rilevare l’infezione. Il problema di questa tecnica è la lentezza.
Scanner di virus noti Questi scanner non cercano di individuare virus solo da files e area di boot, cercano anche i virus noti nella memoria centrale per prevenire gli stealth virus, i quali fanno in modo che lo scanner percepisca gli oggetti modificati come se in realtà non lo fossero.
Svantaggi Uno svantaggio di questi tipi di antivirus è il fatto che essi necessitano di frequenti aggiornamenti: infatti, ogni volta che é scoperto un nuovo virus, la firma deve essere identificata e inserita nella lista. Questo comporta una perdita di tempo sia per l’utente, sia per il produttore.
Svantaggi Un altro svantaggio è dovuto al fatto che questi tipi di scanner possono solo riconoscere virus noti oppure virus che assomigliano ad altri esistenti, mentre non possono fare assolutamente nulla per i virus creati completamente nuovi.
Scanner euristici Gli scanner euristici individuano i virus con la ricerca di specifici comportamenti nei possibili oggetti infetti. Sono di tipo non-identifying e non-preventing. La scansione euristica consiste nell’analisi di sequenze di istruzioni di codice: infatti, indipendentemente da tutte le istruzioni accessorie, un virus per replicarsi deve necessariamente compiere un certo tipo di operazioni.
Scanner euristici Generalmente, un programma di ricerca euristica esamina la funzione di ogni istruzione eseguita dal sistema in relazione alle altre. I moduli che vengono ricercati sono le routine di decrittazione, le chiamate al sistema non documentate, le sequenze di istruzioni insolite o inutili, l’allocazione sospetta della memoria, la scrittura diretta sul disco e la presenza di settori di avvio e di date/orari non validi.
Scanner euristici Oltre a questo se, in un programma conosciuto come non residente vengono rilevate stringhe che fanno pensare al suo caricamento in RAM, è probabile la presenza di un virus. Gli scanner euristici raccolgono anche informazioni statistiche riguardanti la frequenza d’uso da parte di ogni processo di istruzioni ritenute sospette.
Scanner euristici L'esito della ricerca, quindi, si basa sulla probabilità che un file contenga istruzioni virali e, se da una parte questa condizione può essere soggetta ad errore, dall'altra permette di individuare nuovi virus non ancora riconosciuti e registrati nelle liste antivirus Talvolta sarà possibile estrarre il virus, restituendo il file originale.
Svantaggi Lo svantaggio della ricerca euristica è che se fosse esaustiva, e quindi esaminasse completamente tutto il codice di tutti gli eseguibili, porterebbe a lunghe attese; per ovviare a questo inconveniente si rende necessario l'adozione di opportune approssimazioni basate sulle teorie di probabilità che però aumentano la possibilità di errore.
Scanner residenti in memoria Gli scanner di virus noti residenti in memoria sono attivi nella memoria del computer e cercano di rintracciare un virus prima che esso abbia la possibilità di infettare gli oggetti del sistema. Sono di tipo identifying e preventing. Infatti il vantaggio di questi scanner è che catturano un virus prima che si replichi. Lo svantaggio principale è l’uso di memoria, anche se sono implementati per usarne il meno possibile.
Scanner residenti in memoria Anche gli scanner euristici possono essere implementati come residenti in memoria. Correntemente questa tecnica è usata integrandola con altri tipi di programmi antivirus residenti in memoria, come scanner per virus noti e behaviour blockers.
Scanner residenti in memoria Questi antivirus sono di tipo non-identifying e preventing e possono così ridurre il rischio di infezioni, ad esempio controllando gli e-mail attachments e segnalandone l’eventuale codice eseguibile sospetto.
Conclusioni sugli scanner Gli scanner possono anche essere divisi in due categorie: “generali” e “specializzati”. Gli scanner generali sono progettati per individuare tutti i tipi di virus, indipendentemente dal sistema operativo per cui sono progettati. Gli scanner specializzati sono progettati per individuare un numero limitato di virus o una sola classe di essi. Gli scanner di tutti i tipi hanno vantaggi comuni, come la versatilità, e svantaggi comuni, come la presenza dell’enorme database di virus e la relativa lentezza di ricerca.
Integrity checkers Il controllo dell’integrità (integrity checker o checksummer), su cui si basa questo tipo di antivirus, è utile per la rilevazione di quei virus che modificano la struttura dei file. Gli integrity checkers sono di tipo non-identifying e non-preventing, poiché individuano anche virus non ancora noti ma soltanto la conseguente diffusione nel sistema.
Integrity checkers Usando l'informazione del numero di byte di cui e' composto un file, per esempio, i checksummers possono accorgersi se un file e' più grande di quanto non fosse in precedenza: il cambiamento di dimensioni nei file di sistema rappresenta infatti uno dei segnali d'allarme per la presenza dei virus.
Integrity checkers Inizialmente definiscono il checksum dei file, cioè un numero che identifica in modo univoco la struttura dei byte che ne compongono il codice. Un esempio è il CRC (Cyclic Redundancy Check). Queste cheksum vengono salvate nel database dell’antivirus con altre informazioni come dimensioni del file, data dell’ultima modifica ecc…
Integrity checkers I valori salvati nel database sono confrontati periodicamente con i valori correnti, causando una segnalazione da parte degli integrity checkers in caso di corrispondenza errata. Programmi specifici di checksum sono in grado di fare questo controllo anche sulle macro contenute nei file di documenti.
Integrity checkers Tra l'altro questo metodo è molto potente, in quanto permette di eliminare la parte di virus attaccata al file per riportare quest'ultimo nella sua configurazione originaria.
Vantaggi e svantaggi Tra i vantaggi c’è senza dubbio il fatto che si può verificare l’integrità di particolari aree e rilevarne anche virus non noti, senza necessità di frequenti aggiornamenti. Gli integrity checkers che usano algoritmi anti-Stealth riescono a rilevare virtualmente la totalità dei virus che si sono infiltrati nel computer.
Vantaggi e svantaggi Tuttavia questi antivirus hanno il grosso difetto di non potere rintracciare un virus immediatamente dopo la sua infiltrazione nel sistema, ma lo riescono a fare soltanto dopo la sua diffusione e la modifica di qualche oggetto. Di conseguenza non possono fare la detection di virus sui file che si trovano su floppy disk oppure su attachments di e-mail perché non esiste nessuna entry corrispondente nel database.
Vantaggi e svantaggi Inoltre i dati nel database devono essere aggiornati ogniqualvolta avviene una modifica nel sistema da parte dell’utente e il calcolo della checksum non può dire se le modifiche rilevate sono dovute a un virus oppure ad altre ragioni. Esistono anche virus che, proprio per eludere un controllo di questo tipo, infettano i file appena creati.
Vantaggi e svantaggi Per queste ragioni il controllo di integrità può essere applicato soltanto a quelle aree del sistema che solitamente non vengono modificate, ad esempio aree di boot e file del sistema operativo.
Integrity checkers residenti in memoria Esistono anche memory resident integrity checkers: essi sono attivi in background e hanno il vantaggio di rilevare i cambiamenti appena essi avvengono. Sono quindi di tipo non-identifying come tutti gli integrity checkers ma, poiché risiedono in memoria, sono preventing.
Behaviour blockers Gli antivirus di tipo behaviour blockers sono programmi residenti in memoria che intercettano il pericolo dovuto a potenziali virus e ne informano l’utente. Quindi sono non-identifying e preventing. Si tratta quindi di un metodo utile per impedire ai programmi di eseguire istruzioni illegali durante la loro esecuzione.
Behaviour blockers Di solito questi antivirus possono rilevare la presenza di virus durante operazioni come la scrittura di files, scritture sul settore di boot o sul MBR ecc…, cioè tutte operazioni tipiche per i virus nel loro tentativo di diffondersi. I behaviour blockers si installano in RAM e intercettano alcuni interrupt che consentono di scoprire accessi sospetti alla memoria, ai dischi, ai file.
Behaviour blockers Gli eventi segnalati possono essere considerati anomali, ma il behaviour blocker non può appurare se sono causati da virus o da programmi normali. Quando viene rilevato un tentativo di scrittura sui settori di avvio o delle partizioni, o modifiche sospette a file eseguibili, il behaviour blocker blocca il sistema e quindi chiede all’utente come proseguire.
Behaviour blockers Gli antivirus behaviour blockers sono spesso usati insieme agli scanner euristici residenti in memoria per ottenere un antivirus più potente. La differenza tra questi due tipi è molto sottile, anche perché usano algoritmi simili: essa sta nel fatto che i behaviour blockers, prima di bloccare le istruzioni considerate pericolose, chiedono conferma all’utente.
Vantaggi e svantaggi I behaviour blockers hanno il vantaggio di individuare e bloccare un virus al primo stadio di infezione; questo è molto utile quando capita che un virus sconosciuto tenti ripetutamente di infettare il sistema. Tra gli svantaggi il più importante riguarda il ruolo dell’utente: egli infatti deve interpretare correttamente le informazioni fornite dal behaviour blocker per individuare i virus e evitare i falsi positivi.
Vantaggi e svantaggi Alcuni virus possono evitare i behaviour blockers disabilitandoli, oppure aggirandoli utilizzando l’accesso diretto al sistema operativo (una tecnica chiamata tunnelling). La ragione di ciò è che tipicamente il monitoraggio di sistema entra in azione dopo che un virus ha avuto la possibilità di infettare il sistema, quindi questi virus usano delle tecniche per impedire al behaviour blocker di lavorare correttamente.
Hardware behaviour blocker Esistono anche antivirus behaviour blockers di tipo hardware, come ad esempio la protezione contro le scritture del MBR situata nel BIOS. Tuttavia, come nel caso dei software behaviour, una tale protezione può essere facilmente ignorata. Inoltre questi tipi di antivirus sono di difficile configurazione.
Immunizers Gli antivirus di questo tipo, come dice il termine stesso, offrono la possibilità di una “vaccinazione” contro i virus informatici. La vaccinazione dai virus informatici avviene tramite inoculazione da parte dell'antivirus delle firme dei virus noti nei file eseguibili Gli immunizers sono suddivisi in due tipologie: quelli della prima categoria avvertono della presenza di un’infezione, gli altri bloccano il tentativo di certi virus di infiltrarsi nel sistema.
Immunizers Gli immunizers del primo tipo si collocano alla fine di un file (come fanno i virus) e ogni volta che il file è aperto ne controllano gli eventuali cambiamenti. Sono non-identifying e non-preventing. Questi hanno un unico, ma fondamentale difetto: la completa incapacità di individuare un virus stealth. Quindi essi non vengono usati.
Immunizers Il secondo tipo di immunizers protegge il sistema da un’infezione da parte di un virus di un particolare tipo. I file sono modificati inserendo al loro interno la firma di un particolare virus: in questo modo, anche se questo virus dovesse penetrare nel sistema, troverebbe i file eseguibili già contenenti la sua firma e quindi li considererebbe già infetti.
Immunizers Quindi gli antivirus immunizers sono di tipo identifying e preventing. L'inserimento delle firme non costituisce nessun problema perché sono innocue stringhe di testo prive di istruzioni che non compromettono il normale funzionamento del file.
Vantaggi e svantaggi Gli antivirus di tipo immunizer non sono versatili poiché, data l'abbondanza di virus in circolazione e il consistente numero di file eseguibili normalmente presenti in un computer, è impossibile immunizzare tutti i file per tutti i virus conosciuti. Tuttavia possono essere utili per proteggere temporaneamente un sistema da un virus sconosciuto in attesa che esso diventi rintracciabile dagli antivirus di tipo scanner.
Antivirus in rete Per sfruttare al meglio i vantaggi di tutti questi tipi di antivirus per una rete locale si possono seguire queste indicazioni: Distribuire la protezione antivirus con un punto perimetrale, operante a livello firewall, e in grado di interagire con quest'ultimo per analizzare tutto il traffico inbound verso la rete locale.
Antivirus in rete A tal proposito, alcune soluzioni prevedono l'analisi anche del traffico di tipo outbound cioè in partenza dalla Lan diretto verso l'esterno. Questo perché molto spesso alcuni worm vengono introdotti nella rete dalle postazioni a mezzo floppy disk o altri media non direttamente collegati in rete. Pianificare una protezione a livello di stazione di lavoro: appare evidente l'esigenza di dover proteggere anche le singole workstation dalle possibili infezioni.
Antivirus in rete Le caratteristiche che la soluzione antivirus distribuita deve avere sono principalmente tre. La prima concerne la possibilità data all'amministratore di sistema di stabilire delle policy centralizzate di distribuzione degli aggiornamenti del prodotto. Questo è un fattore di grande importanza, in quanto la totalità del malicious code approfitta per diffondersi dell'obsolescenza dell'antivirus, che genera il mancato riconoscimento e l'inizio dell'infezione.
Antivirus in rete La seconda caratteristica che il prodotto deve avere consiste nel poter controllare eventuali tentativi di violazione commessi dall'utente nel campo della riconfigurazione del proprio workstation antivirus. La terza è la componente di "script checking“: si tratta di un modulo che deve essere in grado di controllare gli allegati alla posta elettronica e di inibirne l'esecuzione senza un esplicito warning.
Conclusioni Come valutare la qualità di un antivirus? Affidabilità: E’ il criterio più importante poiché anche un ipotetico “antivirus assoluto” diventerebbe inutile se non fosse in grado di terminare il processo di scansione, lasciando parti di dischi e file non controllati e quindi eventuali virus non individuati. L’antivirus può diventare inutile anche se richiede speciali conoscenze da parte dell’utente.
Conclusioni Qualità di detection dei principali tipi di virus: controllo di ogni tipo di file evitando la segnalazione dei falsi positivi, abilità nel trattamento degli oggetti infetti. Disponibilità di versioni dell’antivirus per le piattaforme più popolari: uso estensivo delle caratteristiche di un SO per la ricerca di virus, disponibilità non solo per la scansione a richiesta, ma anche capacità di scansione in tempo reale, disponibilità di versioni specifiche per i server con possibilità di amministrazione di rete.
Conclusioni Rapidità di lavoro: scelta degli algoritmi di scansione. Infatti un antivirus lento non implica il fatto che sappia individuare i virus meglio di uno più veloce. La rapidità dipende soltanto dagli algoritmi scelti.