White Paper Title: INTRODUZIONE AL MALWARE E MALWARE DETECTORS Status: DRAFT Contact: Giovanni Squillero [email protected] http://www.cad.polito.it/ Version Version Date Author Change Description 1.0 Sep-10 Gianni Zizzi Document created WP20100925 - Zizzi.docx Saved on: 9/25/2010 1:07:00 PM Printed on: 9/25/2010 1:07:00 PM Introduzione al Malware e Malware Detectors TABLE OF CONTENTS 1. INTRODUZIONE AI MALWARE .............................. 4 1.1. Spam ............................................ 4 1.2. Bugs ............................................ 4 1.3. Denials of Service .............................. 5 1.4. Malicious Software .............................. 5 2. CLASSIFICAZIONE ...................................... 6 2.1. Tipi di malware ................................. 6 2.1.1. Virus ....................................... 6 2.1.2. Worm ........................................ 7 2.1.3. Trojan Horse ................................ 8 2.1.4. Logic Bomb .................................. 9 2.1.5. Rabbit ...................................... 9 2.1.6. Spyware .................................... 10 2.1.7. Adware ..................................... 10 2.1.8. Malware ibridi ............................. 11 2.2. Classificazione per tipo di infezione .......... 11 2.2.1. Malware del settore di boot ................ 11 2.2.2. File Infectors ............................. 12 2.2.3. Macro Virus ................................ 14 2.3. Classificazione per metodo di occultamento ..... 14 2.3.1. Criptaggio ................................. 15 2.3.2. Virus Stealth .............................. 15 2.3.3. Oligomorfici ............................... 16 2.3.4. Polimorfici ................................ 16 2.3.5. Metamorfici ................................ 16 3. DAGLI ALBORI ALLO STATO ATTUALE ..................... 17 4. LE MINACCE ODIERNE .................................. 28 White Paper Page 2 9/25/2010 Introduzione al Malware e Malware Detectors 4.1. Le tipologie di malware più diffuse ............ 28 4.2. I vettori di infezione ......................... 29 5. INTRODUZIONE AI MALWARE DETECTORS ................... 31 5.1. Metodi statici ................................. 32 5.1.1. Scanners ................................... 32 5.1.2. Euristiche statiche ........................ 34 5.1.3. Integrity Checkers ......................... 35 5.2. Metodi dinamici ................................ 36 5.2.1. Monitor del comportamento .................. 36 5.2.2. Emulazione ................................. 37 5.3. Rilevazione tramite database ................... 38 6. I PASSI PER L'ELIMINAZIONE DEL MALWARE .............. 40 6.1. Verifica ....................................... 40 6.2. Quarantena ..................................... 40 6.3. Disinfezione ................................... 40 White Paper Page 3 9/25/2010 Introduzione al Malware e Malware Detectors 1. Introduzione ai malware Sin dall'antichità le necessità primarie dell'uomo sono state molto semplici: acqua, cibo, un riparo e la possibilità di assicurare la sopravvivenza della specie. Con il passare del tempo i nostri bisogni di base sono sempre gli stessi ma sono cambiate le modalità con cui abbiamo accesso ad essi. Il cibo è diventato un prodotto commerciale e viene prodotto e smistato grazie a sistemi computerizzati; l'acqua è distribuita da sistemi informatici che gestiscono la fornitura; le parti che compongono le case e le altre infrastrutture provengo da diversi fornitori che usano i computer per organizzarsi ed inoltre le vecchie e le nuove case vengono vendute grazie a sistemi informatici per la vendita. La produzione e la trasmissione di energia per tenere in piedi questi sistemi è controllata dai computer, che allo stesso tempo controllano la gestione finanziaria attraverso pagamenti e transazioni elettroniche. E' facile quindi affermare che tutta l'infrastruttura della nostra società si basa sui computer ma sfortunatamente questo significa che un problema ai computer si traduce in un problema nella società. Attualmente le minacce informatiche che possono compromettere il regolare sistema informatico globale vengono classificate in quattro categorie principali: 1.1. Spam Questo termine sta ad indicare le indesiderate email che ogni giorno riempiono le caselle di posta elettronica degli utenti di Internet. Le statistiche sono molto preoccupanti: si conta infatti che il 70% del traffico email non sia altro che spam. 1.2. Bugs I Bugs sono errori nel software, causati dalla scorretta gestione di situazioni inaspettate o da errori di programmazione. Possono portare al blocco momentaneo del software stesso e nei casi peggiori al blocco di tutto un sistema. White Paper Page 4 9/25/2010 Introduzione al Malware e Malware Detectors 1.3. Denials of Service Gli attacchi Denials of Service, o attacchi DoS, mettono in difficoltà l'uso legittimo dei servizi e delle risorse di un sistema. Per esempio, un attacco DoS può far si che venga consumato tutto lo spazio del disco fisso di un sistema, in modo tale che quel sistema non riesca più ad erogare in maniera efficiente il suo servizio. Oppure ancora, in un attacco DoS può essere generato talmente tanto traffico di rete che il traffico legittimo dell'utente non sia più in grado di arrivare a destinazione. 1.4. Malicious Software La vera guerra è condotta verso i Malicious Software (“programmi malvagi”), o più brevemente malware. Sono una categoria di programmi creati con lo scopo di causare danni più o meno gravi al computer su cui viene eseguito. I malware assumono un ruolo di primaria importanza nell'analisi dei problemi di sicurezza dei sistemi poiché sono strettamente connessi con le altre minacce appena elencate. I malware infatti possono essere propagati grazie allo spam e possono anche essere usati per inviare spam. La loro diffusione avviene sfruttando alcuni bugs dei sistemi ed inoltre possono essere usati per mettere a punto attacchi DoS. E' quindi facile intuire che attorno ai malware ruotano la maggior parte dei problemi di sicurezza delle infrastrutture su cui si basa la nostra società. White Paper Page 5 9/25/2010 Introduzione al Malware e Malware Detectors 2. Classificazione Sarebbe interessante presentare una chiara classificazione dei malware, che cataloghi ogni tipo con il suo corrispettivo gruppo di appartenenza. Purtroppo però una classificazione assoluta potrebbe risultare poco corretta. In primo luogo perché non c'è nessuna base scientifica riguardo la classificazione dei malware e lo dimostra il fatto che non c'è una definizione universalmente accettata per termini come “virus”, “worm”, ecc... In secondo luogo perché i malware presentano caratteristiche che influiscono su vari aspetti della loro natura, come ad esempio la struttura, il comportamento o l'obbiettivo per il quale sono stati creati. E' opportuno quindi classificare i malware sotto diversi punti di vista, tenendo sempre ben presenti quali sono le caratteristiche di base che danno vita ad una determinata classificazione. 2.1. Tipi di malware I malware possono essere bruscamente catalogati in base alle modalità in cui operano. Ci sono tre caratteristiche principali che contraddistinguono i tipi elencati di seguito: la capacità di autoreplicarsi, la forza della loro propagazione e la necessità di appoggiarsi su un altro programma per esistere. 2.1.1. Virus Un virus è un malware che una volta eseguito tenta di copiare se stesso in altri codici eseguibili, che di conseguenza vengono dichiarati infettati. I programmi infettati a loro volta, quando vengono eseguiti possono infettare altri programmi e così via. L'autoreplicazione all'interno di un altro programma eseguibile, unita alla capacità di propagarsi tramite supporti hardware rimovibili come memorie USB, CD-ROM e DVD, sono le caratteristiche principali dei virus. Il termine virus a volte viene usato impropriamente per riferirsi a qualsiasi tipo di malware in grado di White Paper Page 6 9/25/2010 Introduzione al Malware e Malware Detectors autoreplicarsi ma è importante notare che non usano la rete per propagare l'infezione; in questo caso parliamo infatti di “worm” che appartengono ad un'altra tipologia di malware. I virus possono essere scoperti in varie fasi del loro ciclo di vita. Un germe è la forma originaria del virus, prima cioè che il suo codice venga inserito in un altro eseguibile. Un virus che non porta a termine il processo di autoreplicazione è chiamato intended. Questo può accadere in seguito ad un bug all'interno del virus oppure perchè il virus viene eseguito su un sistema operativo che non supporta. 2.1.2. Worm Un worm ha molte caratteristiche in comune con il virus ma il suo sistema di autoreplicazione è differente in due punti principali. In primo luogo i worm sono standalone: questo significa che sono indipendenti e non hanno bisogno di altri programmi eseguibili per propagarsi. In secondo luogo i worm si propagano da computer a computer grazie alla rete e non tramite supporti rimovibili; di conseguenza la propagazione dei worm mira ad una maggiore estensione geografica. L'infezione viene quindi portata a termine per mezzo di diverse risorse e servizi che la rete mette a disposizione. Tra i più comuni possiamo ricordare: • worm di servizi “bacati” - Analizzano sulle reti alcune porte di computer scelti a caso e, se un attacco è possibile, utilizzano i punti deboli dei protocolli (es. IIS) o la relativa implementazione per diffondersi. I worm conosciuti di questo tipo sono Lovesan/Blaser e CodeRed. Sasser utilizza un errore di overflow del buffer nel servizio Local Security Authority Subsystem Service (LSASS) e infetta i computer durante la connessione a Internet. • Worm di email - Nella diffusione per e-mail, il worm è in grado di utilizzare i programmi di posta esistenti, come Outlook o Outlook Express, o un proprio motore di posta SMTP. A prescindere dal traffico di rete presente e dalle risorse del sistema elevate, i worm possono contenere funzioni ancora più dannose. Esempi rappresentativi di questo tipo di worm sono Beagle e Sober. White Paper Page 7 9/25/2010 Introduzione al Malware e Malware Detectors • Worm di Peer-to-Peer - I worm di P2P copiano se stessi nelle condivisioni Peer-to-Peer di siti di scambio come Emule, Kazaa, ecc. Qui attraggono le proprie vittime con nomi allettanti di software recenti o di persone famose. • Worm di Instant Messaging - I worm di messaggistica istantanea si diffondono utilizzando i programmi per chat. Per il trasferimento dei file inviano alla vittima un messaggio contenente una copia del worm stesso oppure un link a una pagina web dannosa. 2.1.3. Trojan Horse Questo tipo di malware si ispira alla battaglia tra achei e troiani raccontata nella mitologia greca. Gli achei infatti, per conquistare la città di Troia, fecero finta di ritirarsi lasciando dietro di se, come dono degli dei, un grande cavallo di legno nel cui ventre vennero nascosti alcuni guerrieri achei. Credendo ormai di aver vinto i troiani abbandonarono ogni prudenza e portarono tra le mura il cavallo come trofeo. Ma la notte mentre tutti dormivano, gli achei uscirono dal cavallo e aprirono ai compagni le porte della città che venne prontamente conquistata. Nel contesto dei malware, un cavallo di troia è un programma che ha apparentemente uno scopo utile e innocuo, ma segretamente implementa una funzione dannosa che rende totalmente vulnerabile il computer infettato senza che l'utente neanche se ne accorga. I trojan non si diffondono autonomamente come i virus o i worm, quindi richiedono un intervento diretto dell'aggressore per far giungere l'eseguibile maligno alla vittima tramite email o instant messaging.. I metodi utilizzati dai trojan per nascondersi sono praticamente infiniti. Possono nascondersi nei comandi della riga di comando per gli amministratori di sistemi UNIX come passwd, ps, netstat (semplici rootkit) o come RAT (Remote Access Trojan) meglio noti come backdoor. I backdoor, una volta eseguiti, aprono una porta TCP/IP permettendo un accesso secondario al computer infettato. Generalmente sono composti da due file: White Paper Page 8 9/25/2010 Introduzione al Malware e Malware Detectors • il file server, che viene installato nella macchina vittima; • il file client, usato dall'aggressore per inviare istruzioni che il server esegue; In questo modo un aggressore è in grado di controllare il computer in modalità remota permettendogli di sniffare password, installare ulteriori malware o usare il computer come “zombie” per un attacco DoS. 2.1.4. Logic Bomb Le logic bomb sono formate da due parti principali: 1. il Payload che implementa una funzione “maligna” da eseguire; 2. il Trigger che rappresenta una condizione che deve essere soddisfatta affinché il Payload possa essere eseguito. Esempi di Trigger sono il raggiungimento di una data specifica, il tipo di sistema operativo o il login di un determinato utente. Le logic bomb possono essere inserite all'interno del codice di un programma eseguibile o possono essere standalone. Un esempio di logic bomb “parassita” è illustrato di seguito: legittimate code if date is Friday the 13th: crash_computer(); legittimate code Le logic bomb possono essere composte anche da pochissime righe di codice che facilmente si confondono nelle migliaia di righe legittime e per questo motivo sono molto difficili da individuare. 2.1.5. Rabbit Rabbit (spesso chiamati anche batteri) è il termine usato per descrivere i malware che crescono molto rapidamente. Attualmente vengono classificati in due tipi principali: La prima tipologia di rabbit tenta di consumare tutte le risorse di un sistema (memoria e cicli di CPU). Vengono anche chiamati “fork bomb” proprio perchè creano copie di se stessi che “ciclano” all'infinito. White Paper Page 9 9/25/2010 Introduzione al Malware e Malware Detectors La seconda tipologia di rabbit acquisisce qualche caratteristica dai worm poiché sono programmi standalone che si replicano tra le reti. Hanno però l'importante caratteristica di cancellare la vecchia copia di se stessi subito dopo la replicazione in maniera tale che ci sarà in circolazione solo una copia del programma. 2.1.6. Spyware Gli spyware sono programmi che collezionano una serie di informazioni dal computer vittima e le trasmettono all'aggressore. Le informazioni che controllano gli spyware sono molto varie ma fondamentalmente hanno tutte una certa importanza: • username e password: possono essere estrapolate dai file presenti nel computer vittima o catturati da particolari programmi chiamati keylogger che sono in grado di registrare passivamente tutti i tasti premuti sulla tastiera; • indirizzi email: possono essere usati per inviare spam; • numeri di conto correnti e carte di credito; • license key di software originali; Anche i virus e i worm possono maneggiare queste informazioni ma gli spyware differiscono da questi ultimi perchè non hanno nessun meccanismo di autoreplicazione. Possono arrivare ad infettare i computer vittima in diversi modi, nascondendosi all'interno di altri pacchetti software o sfruttando alcuni bugs dei server web. 2.1.7. Adware Gli adware sono molto simili agli spyware poiché anch'essi maneggiano le informazioni dell'utente e non sono in grado di autoreplicarsi. Hanno però uno scopo puramente commericiale e meno maligno. Sono in grado infatti di collezionare una serie di informazioni riguardanti i gusti dell'utente, per poi aprire automaticamente finestre pubblicitarie di pop-up personalizzate. White Paper Page 10 9/25/2010 Introduzione al Malware e Malware Detectors 2.1.8. Malware ibridi L'esatta tipologia di malware che si incontra nella realtà non è così facile da determinare e spesso non possono essere associati a nessuna delle definizioni appena descritte. E' molto più facile invece incontrare malware che uniscono le caratteristiche di diverse tipologie. Per esempio un worm può propagarsi depositando dei trojan in ogni computer che infetta al suo passaggio oppure un virus può aprire una backdoor ogni volta che viene eseguito. Questa tecniche ibride permettono ai malware di raggiungere un livello di pericolosità molto elevato, rendendo ancora più difficile la loro rilevazione con i Malware Detector. 2.2. Classificazione per tipo di infezione Un altra utile classificazione dei malware si può ottenere prendendo in considerazione cosa esattamente vanno ad infettare. Di seguito vengono descritte le infezioni a tre differenti tipi di entità del computer: il settore di boot, i file eseguibili e i dati utente (Macro Virus). 2.2.1. Malware del settore di boot Ogni volta che accendiamo il computer vengono eseguiti i seguenti passi: 1. Appena premuto il tasto di accensione, viene letta una memoria ROM, contenente le istruzioni di inizializzazione e riconoscimento dell'hardware. Tra l'hardware riconosciuto c'è anche un device di boot contenente un blocco di avviamento (Master Boot Record) che tipicamente si trova nella parte iniziale della memoria del device. Questa fase viene chiamata “primary boot”. 2. Il codice presente nel MBR esegue a sua volta un altro programma più complesso in grado di identificare la struttura del filesystem di boot. Questa fase viene chiamata “secondary boot”. 3. Durante il secondary boot il kernel del sistema operativo viene caricato in memoria e avviato. White Paper Page 11 9/25/2010 Introduzione al Malware e Malware Detectors Un virus del settore di boot (boot-sector infector) è in grado di infettare la macchina copiando se stesso nel MBR, mantenendo il blocco di boot originale all'interno del filesystem per poi eseguirlo e completare il processo di boot. Spesso però le dimensioni del virus sono più grandi del MBR (512 byte) e quindi è costretto ad usare blocchi aggiuntivi per effettuare correttamente la copia di se stesso. In generale l'infezione del settore di boot è vantaggiosa in quanto il codice del virus viene lanciato prima che vengano eseguiti il sistema operativo e gli antivirus. Al giorno d'oggi però questo tipo di virus è diventato abbastanza raro poiché c'è un minor uso di supporti rimovibili di boot come i floppy disk ed inoltre le tecniche di prevenzione da questo tipo di malware sono state perfezionate, come ad esempio la protezione della scrittura del MBR da parte del BIOS o del sistema operativo stesso. 2.2.2. File Infectors Un file infector è un tipo di malware che infetta i file visti dal sistema operativo o dalla shell come “eseguibili” cioè composti da una serie di istruzioni. Tra gli eseguibili possiamo incontrare anche file batch e script di shell ma gli eseguibili binari rappresentano comunque il bersaglio più comune. Nell'analisi di questo tipo di malware il punto principale da considerare è dove viene copiato il codice maligno all'interno del file vittima. Possiamo elencare i seguenti casi di infezione: • inizio del file – Dopo averlo lanciato, l'eseguibile viene copiato in memoria e viene eseguita la prima istruzione presente all'inizio del suo codice. E' proprio in questo punto del codice che il virus inserisce una copia di se stesso facendo in modo che la sua esecuzione preceda quella dell'eseguibile vittima. • fine del file – l'inserimento del virus alla fine del codice del file eseguibile è altrettanto semplice. Questo tipo di infezione può avvenire in due modi: ◦ all'inizio dell'eseguibile viene introdotta un'istruzione di jump che punta all'indirizzo del White Paper Page 12 9/25/2010 Introduzione al Malware e Malware Detectors codice del virus presente alla fine del file. Una volta che il codice del virus è stato eseguito viene usata una seconda jump che permette di riprendere l'esecuzione normale dell'eseguibile. ◦ molti tipi di eseguibili contengono nelle intestazioni un indirizzo relativo alla prima istruzione da eseguire. Questo indirizzo viene sostituito con l'indirizzo di partenza del virus che successivamente ritorna il controllo all'indirizzo di partenza originale. • sovrascritto nel file – invece di aggiungere il suo codice all'interno del file, il virus sovrascrive il codice legittimo. Questo evita che il file cambi in maniera spropositata le sue dimensioni ma allo stesso tempo compromette il corretto funzionamento del programma originale, rendendo la rilevazione del virus molto immediata. Una variante di questo meccanismo permette di allocare il virus in una porzione di memoria allocata per il file ma effettivamente non utilizzata dal file. In ogni modo sovrascrivere un virus su un file è una tecnica usata solo per codici virali di dimensioni ridotte. • fuori dal file – questo è il caso dei virus companion. Non infettano realmente il file eseguibile ma riescono ad essere eseguiti sfruttando delle vulnerabilità del sistema operativo. Consideriamo un esempio che sfrutta le vulnerabilità del sistema operativo MS-DOS: la shell infatti è stata programmata per eseguire prima i file con estensione .COM e in alternativa i file con estensione .EXE. Questo significa che un virus avente lo stesso nome di un programma legittimo ma con estensione .COM verrà eseguito al posto del programma legittimo. indirizzo indirizzo prima dell'infezione White Paper Page 13 codice del virus dopo l'infezione 9/25/2010 Introduzione al Malware e Malware Detectors Figura 1 – Meccanismo di infezione di un File Infector all'inizio del file vittima header header vecchio indirizzo indirizzo nuovo indirizzo codice del virus prima dell'infezione dopo l'infezione Figura 2 – Meccanismo di infezione di un File Infector alla fine del file vittima 2.2.3. Macro Virus Alcune applicazioni, come per esempio i word processor, permettono ai file dati di avere al loro interno delle “macro”. Con il termine macro si intende piccoli pezzi di codice scritte in un linguaggio che tipicamente è interpretato dall'applicazione, un linguaggio abbastanza potente per eseguire le stesse funzionalità di un virus. Una volta che il documento contenente la “macro malevola” viene aperto, la macro viene automaticamente eseguita, nonostante alcuni messaggi di warning che possono essere facilmente ignorati. L'evoluzione dei macro virus prevede che l'infezione di estenda ad un insieme di macro globali che vengono richiamate ogni volta che viene eseguita una normale macro. In questo modo una sola infezione è sufficiente per compromettere tutti i file dati contenenti delle macro legittime. 2.3. Classificazione per metodo di occultamento Un altro modo per classificare i malware è considerare la tecnica utilizzata per nascondersi dai software antivirus e dal sistema operativo. White Paper Page 14 9/25/2010 Introduzione al Malware e Malware Detectors 2.3.1. Criptaggio L'idea che sta alla base di questa tecnica prevede che il corpo del virus venga criptato in modo che il codice virale possa difficilmente essere rilevato. Il codice criptato non può quindi essere eseguito se prima non viene eseguita l'operazione di decriptaggio. Questa operazione viene effettuata all'inizio dell'esecuzione del malware grazie ad un pezzo di codice relativamente piccolo che costituisce quindi l'unico pezzo visibile dai software di rilevazione. Il corpo del virus può essere decriptato sovrascrivendo la stessa area di memoria oppure utilizzando dei blocchi nuovi. Di seguito vengono elencate le tecniche di criptaggio più comuni: • criptaggio singolo – non viene usata nessuna chiave di cifratura ma semplicemente un delle operazioni base sui parametri come l'incremento, il decremento, la rotazione e la negazione. • criptaggio con chiave statica – viene utilizzata una chiave costante che non cambia da un'infezione all'altra. Vengono utilizzati operatori aritmetici come la somma o operatori logici come XOR. E' importante notare che in questo tipo di criptaggio vengono usati solamente operatori reversibili. • criptaggio con chiave variabile – la chiave parte da un valore costante e cambia man mano che avanza il processo di decriptaggio. • criptaggio tramite libreria di cifratura – questo metodo offre un livello di criptaggio molto elevato dal momento che usa direttamente le librerie di cifratura presenti nei moderni sistemi operativi. • criptaggio a chiave random – in questo caso la chiave di criptaggio cambia ad ogni infezione e di conseguenza deve essere anche aggiornato il pezzo di codice relativo al decriptaggio in modo da incorporare la nuova chiave. Questo metodo fa si che da un'infezione all'altra cambia anche il codice criptato del corpo del virus. 2.3.2. Virus Stealth I virus stealth sono in grado di nascondersi completamente non solo dai software antivirus ma dal sistema operativo e dall'utente. Alcune tecniche utilizzate da questa tipologia di malware prevedono il White Paper Page 15 9/25/2010 Introduzione al Malware e Malware Detectors ripristino del campo timestamp di un file infetto per evitare i controlli sulla modifica. In alcuni casi, vengono ripristinate nel file infetto tutte le informazioni relative al momento prima dell'infezione ma solo quando il virus si rende conto della presenza di un controllo istantaneo da parte di un software di Malware Detector. 2.3.3. Oligomorfici Assumendo che un virus criptato cambi la sua chiave da un'infezione all'altra, l'unica parte che rimane invariata è il pezzo di codice che si occupa del decriptaggio. I virus oligomorfici sono una tipologia di virus criptati che hanno un insieme finito di routine di decriptaggio a loro disposizione. Viene quindi scelta una differente routine ad ogni infezione. 2.3.4. Polimorfici Un virus polimorfico ha le stesse caratteristiche di un virus oligomorfico ma ha un insieme infinito di routine di decriptaggio. Questa tecnica rende molto più difficile la rilevazione e allo stesso tempo rende anche complicato per il virus stesso il processo di infezione poiché diventa difficile capire se un file è già stato infettato oppure no. Per ovviare a questo inconveniente i virus polimorfici lasciano delle tracce nel timestamp e nei dati infettati, come ad esempio una particolare sequenza di caratteri o la ripetizione dello stesso valore numerico. 2.3.5. Metamorfici Questa tipologia di malware ha la caratteristica di essere polimorfici all'interno del corpo. Non sono cioè virus criptati ma hanno un corpo diverso per ogni infezione. Questo risultato può essere ottenuto inserendo ad ogni infezione del codice “spazzatura” tra le istruzioni originali del virus. Le istruzioni aggiunte non devono però alterare la corretta esecuzione del codice originale. White Paper Page 16 9/25/2010 Introduzione al Malware e Malware Detectors 3. Dagli albori allo stato attuale 1949 - Le elaborazioni teoriche sui virus per computer risalgono addirittura al 1949. John von Neumann (19031957) sviluppa la teoria degli elementi artificiali che si autoriproducono. Ai tempi non era però ancora pensabile un'attuazione tecnica. 1970 – Nasce il gioco di programmazione Core Wars in cui vari programmi combattono tra loro per contendersi l'area di memoria. Sono in grado di insinuarsi nella memoria, cancellare gli indirizzi in maniera casuale e riprodursi. In questo contesto hanno origine i virus per computer. 1982 – Il termine “virus” viene usato per la prima volta dal professor Leonard M. Adleman nel corso di una conversazione con Fred Cohen. Negli stessi anni nascono i primi virus per Apple II e DOS 3.3: si diffondono tramite dischetto e spesso si limitano solo a visualizzare del testo invertito o giochi di parole in rima. Nel Centro di ricerca Xerox a Palo Alto, Jon Hepps e John Shock programmano i primi worm. Venivano utilizzati per calcoli ripartiti e si diffondevano autonomamente in rete ma a causa di un errore di programmazione, si verificò una diffusione incontrollata, che dopo poco tempo paralizzò i computer. 1984 - Fred Cohen pubblica il primo articolo relativo a “Esperimenti con i virus per computer”, che citerà poi nella pubblicazione del suo lavoro di dottorato “Computer Viruses - Theory and Experiments” del 1986. La sua definizione, piuttosto matematica, di un virus per computer viene ancora oggi riconosciuta e non comprende la sfumatura negativa che il concetto di virus ha assunto oggi. 1985 – I virus cominciarono a diventare sempre più dannosi. Vale la pena citare Surprise creato in BASIC che provvedeva a cancellare tutti i file raggiungibili tramite il comando kill. Il fenomeno dei virus esplode nelle comunità hacker e nelle riviste specializzate vengono pubblicati i primi articoli completi di codice sorgente. Tuttavia, i virus sono considerati un grosso pericolo solo per i megacalcolatori. White Paper Page 17 9/25/2010 Introduzione al Malware e Malware Detectors 1986 - I fratelli Basit e Amjad Farooq Alvi sono i gestori di un piccolo negozio di informatica chiamato “Brain Computer Services” a Lahore, Pakistan. Per punire gli autori delle copie illegali del loro software, creano il primo virus del settore di avvio per il sistema operativo DOS. Tramite gli studenti pakistani questo virus si diffonde come un'epidemia anche nei licei americani. Il programma, tuttavia, era relativamente innocuo dato che l'unica azione eseguita era rinominare in Brain i dischetti colpiti. Nello stesso anno nascono il primo virus per file Virdem ed il primo cavallo di troia PC-Write. 1987 - Sempre più spesso compaiono virus che colpiscono i file (inizialmente solo i file .COM). Lehig è il primo virus che desta l'interesse del pubblico: attacca il file command.com e, dal punto di vista tecnico, rappresenta il primo virus residente in memoria. Ha un'azione molto distruttiva che lo porta di conseguenza ad estinguersi rapidamente. In contemporanea alla comparsa di Lehigh, viene fondata la mailing list e il newsgroup VIRUS-L/comp.virus, che presto assumono il ruolo di importante fonte di informazioni sui virus. Dopo la comparsa dei primi virus per Macintosh, nVir e Peace, Apple ha deciso di dotare ogni computer del programma antivirus Virus-Rx. A dicembre, un onesto studente americano blocca il traffico di posta elettronica e di rete a livello mondiale con un worm molto potente, Tannenbaum. Disegna un albero natalizio sullo schermo mentre in background provvede a spedire se stesso a tutti gli indirizzi di posta elettronica che riesce a trovare nel sistema. Nella rivista C'T compare un articolo sui virus per Atari ST, in cui viene pubblicato anche un elenco di codici sorgente permettendo anche ai neofiti di adattare il virus in modo semplice. L'ondata di nuovi virus che ne segue scatena la discussione sulla pubblicazione dei codici sorgente. 1988 - Venerdì 13 maggio a Gerusalemme scoppia Jerusalem, la prima bomba logica. Il meccanismo di diffusione è simile a quello di Lehigh, ma più efficace, dato che non attacca soltanto i file .COM, ma anche i file .EXE. White Paper Page 18 9/25/2010 Introduzione al Malware e Malware Detectors Robert T. Morris jr., figlio dell'esperto in sicurezza informatica della NSA, rilascia Internet-Worm che, grazie ad un piccolo elenco di password, ottiene l'accesso a moltissimi computer UNIX (2000-6000) e da qui, con la stessa modalità del virus Tannebaum, si propaga provocando il blocco del traffico di rete e della posta elettronica. Viene creato il primo kit per la produzione di virus per Atari ST, che permette anche ai principianti di costruire virus con determinate caratteristiche. In reazione al generale aumento delle attività da parte degli sviluppatori di virus, e in particolare in reazione a Internet-worm, negli Stati Uniti è stato fondato il CERT/CC (Computer Emergency Response Team / Coordination Center ), il quale offre tutt'oggi consigli e interventi per la protezione e la sicurezza dei dati. Attualmente esistono alcuni centri CERT anche in Germania. 1989 – Viene creato Vienna, il primo virus polimorfo. Questo virus si codifica autonomamente con chiavi variabili, modificando anche la forma delle routine di decodifica. Per questo motivo può essere individuato dai software antivirus solo tramite algoritmi complessi, facilmente inclini a falsi allarmi. Per molti produttori di antivirus ha significato la fine delle attività. In luglio viene pubblicata la prima edizione del Virus Bulletin. Da allora si è sviluppata diventando una delle più rinomate riviste specializzate per i ricercatori di virus. In Bulgaria l'hacker Dark Avenger scrive il codice di Fast Infector introducendo due importanti novità tecniche: 1. è in grado di colpire, oltre che i file eseguibili, anche i file aperti per la lettura o copiati. 2. Ad intervalli di tempo irregolari vengono sovrascritti singoli settori del disco fisso. I backup, che vengono creati spesso come protezione dagli attacchi dei virus, diventano così assolutamente inefficaci. Ad Haifa, in Israele, è stato scoperto Frodo, il primo virus invisibile che infetta i dati. Dopo il 22 settembre di un qualsiasi anno dovrebbe rovinare il disco rigido del PC. Un cavallo di Troia viene diffuso dalla società PC Cyborg, con sede a Panama, su dischetti camuffati come White Paper Page 19 9/25/2010 Introduzione al Malware e Malware Detectors fonti di informazioni sull'AIDS. AIDS sostituisce il file autoexec.bat e dopo un numero specificato di nuovi avvii (90) inizia a codificare il disco rigido. Successivamente, il malcapitato viene chiamato a pagare una fattura per ottenere il codice di decodifica. 1990 - 4096 byte è la dimensione dell'omonimo virus che fa la sua apparizione in gennaio. Si attaccava a file di dati eseguibili e aperti. Il meccanismo che cercava di nascondere questo comportamento portava spesso alla distruzione degli stessi file. Il tentativo di visualizzare il messaggio “Frode Lives” provocava il crollo del sistema. L'associazione tedesca degli amanti dei virus diffonde il primo kit per la produzione di virus per DOS. In questo modo, anche i principianti possono sviluppare virus su misura. A dicembre viene fondato l'EICAR (European Institute for Computer Antivirus Research) che ancora oggi riveste un ruolo importante nella lotta contro i virus e i loro sviluppatori. 1991 - Michelangelo è un virus del settore di avvio che il 6 marzo, giorno del compleanno di Michelangelo, sovrascrive i primi 256 settori del supporto dati, rendendo di conseguenza il computer inutilizzabile. I virus polimorfi diventano sempre più è il primo virus polimorfo ad ampia Maltese Amoeba sovrascrive in due dell'anno il primo settore del supporto frequenti: Tequila diffusione mentre specifici giorni dati. Il virus Saddam Hussein codifica sui computer Amiga alcune parti del supporto dati, in modo che questo possa essere leggibile solo quando il virus è in memoria. 1992 – L'hacker Dark Avenger, pubblica MtE (Self Mutating Engine), un toolkit per la creazione di virus polimorfi. Inoltre nello stesso hanno crea Commander Bomber, un virus che utilizza un innovativo metodo di mimetizzazione: non si attacca come blocco unico ad un file ma distribuisce invece il suo codice su più frammenti connessi tra loro attraverso dei collegamenti. Questa tecnica rende più problematico il riconoscimento. WinVir 1.4 è il primo virus per Windows ed Involuntary è il primo ad infettare i file SYS. White Paper Page 20 9/25/2010 Introduzione al Malware e Malware Detectors 1993 - Compaiono nuovi toolkit basati su MtE per la creazione di virus polimorfi: TPE (Trident Polymorphic Engien), NED (Nuke Encryption Device) e DAME (Dark Angel's Multiple Encryption). In MS-DOS 6 viene incluso per la prima (mediocre) programma di scansione antivirus. volta un Fa la sua comparsa il cavallo di Troia Fuck per Amiga che viene distribuito mimetizzato da programma di test del modem. Sostituisce per prima cosa il file di sistema loadWB ed al riavvio del sistema, viene eseguito il codice del virus. Dopo un certo lasso di tempo, determinato dalla frequenza di aggiornamento dello schermo, l'intero disco rigido viene completamente scritto con la parola F..., provocando la distruzione di tutti i dati. A luglio Joe Wells pubblica la prima Wildlist, contenente l'elenco dei virus ancora in circolazione. Da questo elenco è nata più tardi la Wildlist Organization. 1994 - Compaiono i primi virus multipartita. Questi virus utilizzano più meccanismi di infezione e possono contemporaneamente attaccare, oltre ai file, anche i settori di avvio o le tabelle delle partizioni. Il giovane hacker Black Baron diffonde in Inghilterra Smeg.Pathogen e Smeg.Queen, in grado di sovrascrive 256 settori del disco rigido. Questo virus ha provocato ingenti danni ad alcune aziende e per questo, l'anno successivo, il suo creatore viene condannato ad una pena detentiva. Kaos4 si è diffuso attraverso un newsgroup specializzato in foto erotiche. Da allora questa strategia è stata utilizzata sempre più frequentemente. 1995 - Con DMV, Nachtwächter e Concept 1995 compaiono i primi macrovirus. Hunter.c è il primo macrovirus polimorfo. Wm.Concept è stato il primo macrovirus per Word. Conteneva solo il messaggio “That's enough to prove a point.” e in poco tempo è diventato il virus più diffuso su scala mondiale. Wm.Concept ha fondato la categoria dei virus “Proof of Concept” che hanno l'unico scopo di dimostrare come sia possibile sfruttare un determinato punto debole, senza però provocare veramente dei danni. White Paper Page 21 9/25/2010 Introduzione al Malware e Malware Detectors La rilevazione dei macrovirus richiede notevoli sforzi ai programmi di scansione antivirus, se non altro per i formati in continua evoluzione dei linguaggi degli script e dei file di Office. 1996 - Compaiono i primi generatori di macro per macrovirus in inglese e in tedesco. I macrovirus non si limitano più a Word, bensì sono progettati anche per i file Excel e AmiPro. Inoltre superano i confini tra sistemi operativi e colpiscono indifferentemente PC e MAC. Boza è il primo virus che attacca il formato PE-EXE dei file Windows 95. 1997 – Fanno la loro comparsa i primi script mIRC che si diffondono sotto forma di worm tra gli utenti della Internet Relay Chat. Fa la sua apparizione operativo GNU/Linux. il primo virus per il sistema 1998 - Strange Brew è il primo virus per Java. Il worm Autostart.9805 partendo da Hong Kong infetta innumerevoli macchine MAC. Autostart.9805 sfrutta il meccanismo di avviamento automatico di Quicktime e copia se stesso sul disco rigido e su altri supporti dati. Determinati file vengono sovrascritti con dati spazzatura e quindi resi inutilizzabili. Con Netbus e Back Orifice compaiono i backdoor, che permettono di sorvegliare e controllare in remoto un PC senza che l'utente si accorga di nulla. La comparsa di Back Orifice scatena varie discussioni sul fatto che si tratti di un software di manutenzione o di controllo a distanza. Poiché le funzioni di comando in remoto possono essere eseguite all'insaputa dell'utente, Back Orifice può anche essere definito un cavallo di Troia. Tramite BO un hacker è stato in grado, alla metà del 2000, di penetrare nella rete aziendale di Microsoft. A giugno è comparso CIH, contenente uno dei payload a maggiore diffusione nella storia dei virus, in grado di attaccare per la prima volta anche l'hardware della macchina vittima. Infatti quando si attivano le sue funzioni nocive (il 26 aprile), sovrascrive il Flash-BIOS e la tabella di partizione del disco rigido; in questo modo il computer non può più essere avviato. Su alcune White Paper Page 22 9/25/2010 Introduzione al Malware e Malware Detectors schede madri è addirittura necessario sostituire i chipset del Flash-BIOS oppure procedere con una riprogrammazione. Ma in ogni caso, anche dopo il ripristino del sistema, i dati sono persi. L'autore, lo studente cinese Chen Ing-Hau, non è stato perseguito legalmente. VBS.Rabbit è stato il primo a utilizzare WSH (Windows Scripting Host). È scritto in Visual Basic e attacca altri file VBS. HTML.Prepend dimostra che è possibile infettare i file HTML con VBScript. 1999 - A marzo il worm Melissa infetta nel giorno della sua comparsa centinaia di migliaia di computer, diffondendosi in maniera vertiginosa in tutto il mondo. Melissa invia e-mail ai primi 50 indirizzi della rubrica di Outlook e i server di posta coinvolti crollano sotto il carico dei messaggi in entrata. A giugno ExploreZip si mimetizza come archivio autoinstallante che viene inviato come risposta ad una email ricevuta. Si diffonde sulle condivisioni di rete e può infettare un computer collegato in rete solo se un altro utente della rete agisce incautamente. La funzione dannosa ricerca sul disco rigido i file di programmi in C e C++, Excel, Word e Powerpoint e li elimina. Oltre che tramite e-mail, il virus Pretty Park si diffonde anche mediante le Internet Relay Chat. Questo worm è dotato di meccanismi di mimetizzazione e protezione molto efficaci che ne impediscono l'eliminazione. Durante la successiva scansione antivirus il worm viene riconosciuto come legittimo. A volte anche la scansione antivirus viene bloccata. Grazie a una manipolazione del registro, Pretty Park viene eseguito dai file EXE, provocando la segnalazione che tutti i file EXE sono infetti. Per gli utenti di Outlook, a novembre si verifica con Bubbleboy la visione di “Good-Times”, in cui un virus riesce a infettare un computer con la sola apertura di una e-mail (anche in modalità di anteprima). Bubbleboy sfrutta un errore nella libreria del programma. 2000 - Nonostante tutte le profezie, non esiste un worm del millennio degno di tale nome. Palm/Phage e White Paper Page 23 9/25/2010 Introduzione al Malware e Malware Detectors Palm/Liberty-A sono rari ma palmari dotati di Palm OS. in grado di infettare i Lo script VBS/KAKworm sfrutta i punti deboli in Scriplet e Typelib di Internet Explorer. In modo simile a BubbleBoy, si diffonde con l'apertura di una e-mail (anche in anteprima). A maggio un worm invia una valanga di e-mail dalla rubrica di Outlook con l'oggetto “I love you” e crea danni per miliardi soprattutto alle reti delle grandi aziende. Anche in questo caso, le reti sono state completamente sovraccaricate in poco tempo. Dalla versione sviluppata da uno studente filippino Onel de Guzman nascono moltissime varianti. Gli esperti USA parlano del virus più maligno della storia informatica. L'autore di W95/MTX si è preso la briga di eliminare gli ibridi di worm/virus dal computer, inviando tramite email un file PIF con doppia estensione del file. Ciò blocca l'accesso del browser ad alcuni siti web di produttori antivirus, infetta i file con il componente del virus ed alcuni file vengono sostituiti dai componenti del virus. Dopo Loveletter e le sue molteplici varianti, i gateway di posta filtrano semplicemente le e-mail aventi le righe dell'oggetto incriminate. Stages of Life varia la riga dell'oggetto ed in questo modo riesce a passare attraverso la rete. A settembre in Svezia viene creato Liberty, il primo cavallo di Troia per palmari. Si trasmette durante la sincronizzazione con il PC e cancella tutti gli aggiornamenti. 2001 - A febbraio gira un worm di posta elettronica che apparentemente contiene un allegato con una foto della tennista russa Anna Kournikova. Chi apre il messaggio installa il worm, il quale poi invia se stesso a tutti gli indirizzi della rubrica di Outlook. Anche Naked si è diffuso per posta elettronica. Dichiara di essere un'animazione Flash di una donna nuda. Dopo l'apertura del messaggio, il virus si installa e si propaga a tutti gli indirizzi di Outlook. Poiché elimina anche le directory di Windows e del sistema, rende il computer inutilizzabile. Per usare nuovamente il PC è necessario reinstallare il sistema operativo. White Paper Page 24 9/25/2010 Introduzione al Malware e Malware Detectors A luglio Code Red sfrutta un errore di overflow del buffer nella DLL Indexing Service di Internet Information Server (IIS) di Windows NT, 2000 e XP. Il virus effettua una scansione degli indirizzi IP originali sulla porta standard per la connessione Internet e trasmette un cavallo di Troia il quale tra il 20 e il 27 di un mese avvia un attacco Denial of Service (DoS) al sito web della Casa Bianca. La rimozione del virus è molto impegnativa e divora miliardi. A luglio tramite le reti e via Outlook Express si è diffuso SirCam, il quale ha introdotto alcune innovazioni. Ad ogni avvio, provoca l'attivazione di un file EXE. È il primo worm dotato di un proprio motore SMTP. Ma non invia solo se stesso, bensì anche file personali che trova sul computer. Con Nimda a settembre si è diffuso un worm Internet che non necessita di alcuna interazione dell'utente. Oltre alle e-mail, utilizza per diffondersi anche le falle nella protezione dei programmi. Numerosi server Web vengono sovraccaricati e i sistemi di file infetti possono essere letti dal mondo intero. A novembre il worm residente in memoria Badtrans sfrutta una falla nella protezione di Outlook e Outlook Express per propagarsi. Si installa come servizio, risponde alle e-mail, spia le password e registra le sequenze di tasti. 2002 - Il worm MyParty mostra all'inizio dell'anno che non tutto ciò che termina con “.com” è un sito web. Coloro che effettuano un doppio clic su “www.myparty.yahoo.com” al posto dell'immagine attesa ricevono un worm con un componente backdoor. In primavera e in estate Klez utilizza le falle nella sicurezza IFRAME in Internet Explorer per installarsi non appena viene visualizzata una e-mail. Il virus si propaga per e-mail e in rete e si attacca ai file eseguibili. Il 13 dei mesi pari (nelle versioni successive i giorni cambiano), tutti i file presenti sulle unità raggiungibili vengono sovrascritti con contenuti casuali. I contenuti possono essere ripristinati solo da backup. A maggio si diffonde Benjamin come primo worm sulla rete KaZaA. Il virus si auto-copia assumendo nomi diversi in una cartella della rete. Sui computer infetti viene visualizzata una pagina Web con una pubblicità. White Paper Page 25 9/25/2010 Introduzione al Malware e Malware Detectors Lentin è un worm che approfitta dell'ignoranza di molte persone che non sanno che i file SCR non sono solo dei salvaschermo, ma anche file eseguibili. Se confrontato con Kletz, il suo effetto visivo come funzione nociva è solo irritante. Anche la sua diffusione non riesce a raggiungere quella di Kletz. Alla fine di settembre scoppia l'epidemia Opasoft. Sulla porta 137 effettua la scansione di un computer in rete e verifica se su questo si trovano condivisioni di file e/o stampanti. Dopodiché prova ad autocopiarsi sul computer. In presenza di una protezione da password, il virus consulta un elenco di password sfruttando un punto debole nell'archiviazione delle password. BugBear è il primo worm che a primavera soffia il primo posto a Kletz. Il worm si propaga per e-mail e in rete, installa un componente spyware ed invia registrazioni delle sequenze di tasti. 2003 - A gennaio SQL-Slammer infetta in una sola ora almeno 75.000 server SQL e blocca Internet per ore. Sfrutta un punto debole, già noto da 6 mesi, di Microsoft SQL-Server per neutralizzare i server dei database. Poiché SQL-Slammer è composto solo da una richiesta errata e non viene caricato come file in memoria, resta sconosciuto alla maggior parte dei programmi antivirus. Le conseguenze: a Seattle si guastano i numeri di emergenza di polizia e vigili del fuoco, i bancomat della Banca d'America non funzionano, 14.000 uffici postali in Italia restano chiusi, la borsa online soffre in modo drammatico, la Corea e la Cina rimangono a tratti temporaneamente scollegate dalla rete, con un conseguente crollo degli indici di borsa a causa dei volumi di scambio estremamente ridotti. Ad agosto si è diffuso Lovesan (alias Blaster). Utilizza una falla del servizio RPC/DCOM ed infetta tramite gli indirizzi IP di PC scelti a caso. In pochissimo tempo centinaia di migliaia di computer erano infettati (la stima è di 570.000). Poco dopo Welchia (alias Nachi) ha cominciato a rimuovere Lovesan/Blaster dai computer e a chiudere la falla di protezione in RPC/DCOM. A fine agosto del 2003 è stato arrestato il diciottenne Jeffrey Lee Parsons, autore di Lovesan. Il worm di invio in massa di posta elettronica Sobig.F ha stabilito un nuovo record per la sua straordinaria White Paper Page 26 9/25/2010 Introduzione al Malware e Malware Detectors velocità di propagazione. Si è diffuso in maniera 10 volte più rapida rispetto ai worm esistenti fino a quel momento. 2004 - I virus diventano armi nelle mani della criminalità organizzata. Numerosi trojan intercettano password, carte di credito e altre informazioni personali. I backdoor permettono di controllare un computer in modalità remota e di integrarlo nelle cosiddette reti Bot. Durante i campionati europei di calcio, vengono organizzati attacchi Distributed Denialof-Service alle agenzie di scommesse online. I gestori, costretti dalle circostanze, pagano quanto richiesto dagli estorsori. Rugrat è il primo virus per Windows a 64 bit. Cabir, il primo virus per telefoni cellulari con sistema operativo Symbian ed interfaccia Bluetooth, è stato sviluppato dal Gruppo 29A, già noto per i suoi virus Proof of Concept. Poco dopo, dallo stesso gruppo viene creato WinCE.4Dust.A, il primo virus PoC per Windows CE. 2005 - Il primo worm per gli smartphone dotati di Symbian è stato CommWarrior.A per MMS. I messaggi MMS vengono integrati con testi di accompagnamento variabili di antivirus, giochi, driver, emulatori, software 3D o immagini interessanti e inviati a tutti i nominativi della rubrica. White Paper Page 27 9/25/2010 Introduzione al Malware e Malware Detectors 4. Le minacce odierne Dopo aver descritto le tappe fondamentali della storia dei malware, passiamo ora ad analizzare quali sono le minacce degli ultimi anni, rivolgendo particolare attenzione alla tipologia delle minacce e alla loro natura. 4.1. Le tipologie di malware più diffuse I dati riportati di seguito sono stati forniti dall'azienda spagnola Panda Security che ogni anno pubblica un report sull'entità delle minacce e la loro evoluzione. Secondo Panda Security verrebbero prodotti una media di 55.000 nuovi sample al giorno, 38.000 dei quali risulterebbero essere nuove infezioni. Il numero dei malware quindi sta aumentando in maniera esponenziale; basti pensare che attualmente il database delle signatures dell'azienda spagnola contiene la firma di più di 40 milioni di malware, cifra che ovviamente è destinata ad aumentare molto velocemente. La minaccia in assoluto più persistente sono i trojan che rappresentano il 64% dei nuovi malware scoperti negli ultimi anni. Le ultime generazioni di questa tipologia di malware sono molto versatili e implementano funzionalità sempre più svariate, permettendo di installare backdoors, rubare dati sensibili, partecipare ad attacchi DoS e scaricare altri malware dalla rete. Le altre categorie di malware includono gli adware (17%), i virus (7%), gli spyware (6%) e i worm (4%). Queste tipologie di malware, insieme ai trojan, rappresentano il 98% delle minacce totali e vengono utilizzati principalmente per incrementare il fenomeno dello spam, creare botnet per attacchi DoS, mettere appunto attacchi di phishing e truffe ai danni degli utenti. White Paper Page 28 9/25/2010 Introduzione al Malware e Malware Detectors 4% 2% 6% Trojan 7% Adware Virus Spyware 17% Worm 64% Altro Figura 3 – le tipologie di malware più diffuse 4.2. I vettori di infezione Per quanto riguarda la natura delle infezioni è utile prendere in considerazione i dati raccolti da Trend Micro, una società con sede a Tokyo, leader nel campo della sicurezza informatica. Trend Micro ha stilato la classifica dei vettori di attacco utilizzati dai 100 malware più diffusi negli ultimi 2 anni ed i risultati non lasciano adito a dubbi: tra tutti i possibili mezzi di infezione, Internet è in assoluto quello più usato da trojan, worm ed altre tipologie di malware per compromettere i sistemi degli utenti. Le infezioni contratte navigando su siti malevoli o sconosciuti e attraverso i link presenti nelle mail di spam rappresentano il 53% del totale del campione preso in oggetto. Al secondo posto, con il 43% dei casi, si piazza il download eseguito da malware già presente sul sistema vittima. Il terzo posto è occupato dalle mail contenenti allegati malevoli (12%), seguito dai supporti rimovibili come le memory stick, sopporti USB e quant'altro (10%). Un certo numero dei 100 malware presi in considerazione è stato contato più volte durante l'analisi, in virtù della caratteristica di versatilità dei malware: uno stesso trojan ad esempio può essere ospitato su un sito malevolo o può essere scaricato da altri malware o White Paper Page 29 9/25/2010 Introduzione al Malware e Malware Detectors dall'utente una mail. stesso durante l'apertura dell'allegato di Condivisioni P2P 2 Applicazioni di Instant Messaging Vulnerabilità software 2 5 Supporti rimovibili 10 E-mail 12 43 Download da altri malware 53 0 20 40 Download da Internet 60 80 100 Figura 4 – I vettori di infezione più comuni L'analisi di Trend Micro non rappresenta e non può rappresentare un quadro completo ed esauriente di tutti i sample di malware oggi in circolazione ma solo uno spaccato molto significativo della situazione negli ultimi anni. White Paper Page 30 9/25/2010 Introduzione al Malware e Malware Detectors 5. Introduzione ai Malware Detectors Un Malware Detector (o più comunemente antivirus) deve essere in grado di eseguire i seguenti compiti: Rivelazione – è lo scopo primario di questo tipo di software. Dato un file da analizzare in ingresso, il Malware Detector deve dare in uscita un risultato booleano: si, è un file infetto oppure no, non è un file infetto. Il compito della rivelazione, sopratutto negli ultimi anni, è diventato molto difficoltoso. Infatti i creatori di malware, oltre che sull'aspetto funzionale, lavorano molto sull'aspetto dell'occultamento: il loro prodotto deve essere in grado di sfuggire ai controlli da parte dei software antivirus. Al fine di comprendere al meglio il problema della rivelazione, è doveroso fare una breve introduzione sugli aspetti tecnici dei Malware Detector. L'attuale tecnologia antivirus prevede l'uso di due risorse principali: i metodi basati su database e gli algoritmi statici/dinamici per il riconoscimento zero-day. I metodi basati su database prevedono l'uso di un database (che dovrebbe essere aggiornato quotidianamente) contenente le firme di tutti virus al momento conosciuti. In questo modo diventa semplice, dato un malware in ingresso, estrapolarne la firma e confrontarla con quelle presenti nel database. Questo metodo introduce un problema fondamentale nella rivelazione dei malware, il problema zero-day: lo stesso giorno in cui malware viene messo in circolazione, esso non sarà ancora presente nel database dei software antivirus, di conseguenza non sarà riconosciuto e sarà in grado di danneggiare liberamente tutti i sistemi da lui raggiungibili. Questo problema viene risolto nei giorni seguenti alla pubblicazione del malware: le case produttrici dei software antivirus metteranno a disposizione dei propri utenti l'aggiornamento del database che sarà ora in grado di riconoscere correttamente il malware. Rimane quindi il problema ti proteggere il sistema dagli attacchi che vanno dal giorno del rilascio del virus fino all'aggiornamento del database in grado di riconoscerlo. White Paper Page 31 9/25/2010 Introduzione al Malware e Malware Detectors Per questo motivo è necessario implementare dei meccanismi alternativi all'uso del database e che siano in grado di rilevare un nuovo malware con un alto livello di affidabilità. Inoltre questi metodi devono poter rilevare il malware sia durante la sua fase non attiva (metodi statici) che durante la sua esecuzione (metodi dinamici). Identificazione – Una volta che il virus è stato rivelato è necessario identificarlo e catalogarlo in una macroarea di appartenenza. Questo processo permettere di individuare il tipo di minaccia ed eventualmente facilitare il processo di disinfestazione. Disinfestazione – La disinfestazione è il processo di rimozione del malware dal computer infettato. Spesso questa fase viene chiamata pulitura proprio perchè pulisce il sistema e i file dal codice virale. La procedura di identificazione è molto importante per il processo di disinfestazione in quanto ad ogni tipologia di malware corrisponde un metodo generale per la sua rimozione. I prossimi paragrafi faranno particolare riferimento alle tecniche di rivelazione, che possono essere considerate la chiave della protezione dei sistemi. In particolare vanno messe in rilievo le tecniche per risolvere il problema dello zero-day, un tema oggigiorno molto discusso ed oggetto di numerose ricerche. 5.1. Metodi statici Le tecniche statiche degli antivirus portano a termine la rilevazione senza eseguire il codice del malware. Di seguito vengono esaminate tre differenti tecniche statiche: gli scanner, le euristiche e gli integrity checkers. 5.1.1. Scanners Lo scanner è una parte fondamentale del antivirus e vengono classificati in base utilizzo: software al loro • on-demand – lo scanner viene lanciato manualmente dall'utente per verificare la presenza di malware su White Paper Page 32 9/25/2010 Introduzione al Malware e Malware Detectors tutto l'hard-disk o in una particolare cartella. Spesso viene lanciata una nuova scansione automaticamente dal software antivirus ogni volta che viene aggiornato il database oppure in seguito al riconoscimento di un nuovo supporto rimovibile. • on-access – lo scanner viene eseguito continuamente in modalità “silenziosa”, con lo scopo di controllare costantemente i file sul disco. Naturalmente questa scansione va a discapito delle performance del sistema operativo che potrebbe diventare più lento e meno reattivo. Lo scanner quindi si occupa di trovare una corrispondenza tra un file presente all'interno del disco ed un virus già noto al software antivirus. Il virus infatti viene rappresentato da una o più stringhe, detti signatures, che identificano univocamente un determinato virus. Le signatures non hanno bisogno di essere necessariamente delle costanti e possono contenere infatti anche dei simboli “don't care”, chiamati wildcards, in grado di fare il matching con byte arbitrari, con parti di byte, con zero o più byte. In questo modo l'uso delle signatures per controllare la presenza di virus può essere esteso non solo ai normali file ma anche al settore di boot, ai pacchetti di rete e agli streaming di byte. Il problema principale è l'enorme quantità di dati da elaborare. Sono infatti centinaia di migliaia le signatures presenti nei database dei software antivirus ed è quindi indispensabile usare un algoritmo efficiente che permetta di lavorare su patterns multipli, in modo da facilitare il processo di identificazione del malware. Di seguito vengono descritte le principali tecniche usate per migliorare le performance degli scanner: • riduzione dei dati del file – la scansione di un intero file è un processo molto lento, soprattutto se il file in questione ha dimensioni molto elevate. Detto ciò, è possibile sfruttare la conoscenza delle caratteristiche comportamentali di un virus per ridurre le dimensioni della ricerca in modo da controllare solo alcune caratteristiche del file vittima. Alcune di queste caratteristiche sono la posizione che il virus occuperà all'interno del file vittima (generalmente si tratta White Paper Page 33 9/25/2010 Introduzione al Malware e Malware Detectors della prima o dell'ultima porzione del file vittima), i puntatori che modificherà all'interno delle intestazioni della vittima e le dimensioni generiche di un virus. • riduzione dei dati del disco – anche in questo caso controllare ogni singolo file del sistema operativo può diventare un processo molto lento. Si può quindi restringere la scansione solo ai file che generalmente vengono attaccati da virus, come ad esempio i file eseguibili, oppure scansionare solo i file che sono stati modificati dall'ultima scansione completa. • uso ottimale delle signatures – scegliendo signatures troppo corte si può incorrere in falsi positivi (rilevazioni errate di virus) ma allo stesso tempo signatures troppo lunghe rallenterebbero la scansione e risulterebbero poco scalabili per la ricerca di varianti virali. E' necessario quindi trovare il giusto compromesso tra accuratezza della scansione e uso delle risorse computazionali. 5.1.2. Euristiche statiche Gli attuali prodotti antivirus implementano al loro interno anche un sistema che sfrutta le euristiche statiche. In questo modo è possibile identificare file eseguibili sospetti e virus sconosciuti con un alto livello di accuratezza e senza avvalersi delle signatures. Ricordiamo che si tratta comunque di una analisi statica perciò il codice analizzato non viene eseguito ma solo visionato staticamente. L'analisi viene fondamentali: portata a termine seguendo due passi 1. raccolta dati – in questa fase viene utilizzato un certo numero di euristiche statiche per esaminare in maniera dettagliata il file da scansionare. Ogni singola euristica fa riferimento ad una particolare caratteristica virale: • presenza di codice “spazzatura” • presenza di codice criptato • uso di librerie non usuali • manipolazioni del vettore delle interruzioni • uso di istruzioni che non vengono di solito generate dai compilatori White Paper Page 34 9/25/2010 Introduzione al Malware e Malware Detectors • stringhe contenenti banali etichette, come ad esempio le parole “virus” o “infect” • particolari dimensioni delle intestazioni o del payload 2. analisi dei dati – ad ogni euristica viene associato un hit o un miss ed in seguito viene stilato un report globale che raccoglie le statistiche riguardanti il file scansionato. Se queste statistiche raggiungono dei valori soglia prestabiliti dall'aggressività della scansione, allora il file viene classificato come pulito, infetto o, meglio ancora, “sospetto”. 5.1.3. Integrity Checkers Partendo dal presupposto che la maggior parte dei virus di propagano modificando altri file, gli integrity checkers nascono allo scopo di controllare periodicamente l'integrità dei file del disco. Un software antivirus che usa un integrity checkers deve essere installato su un sistema sicuro e pulito al 100%. Questa caratteristica diventa un requisito fondamentale poiché durante la fase di installazione l'integrity checkers calcola e memorizza una checksum per ogni file del sistema. Periodicamente le checksum vengono ricalcolate e se differenti dalle originali, diventano un campanello di allarme che sta ad indicare l'azione riproduttiva di un virus. Esistono tre tipi differenti di integrity checkers: offline – le checksum vengono ricolcolate solo periodicamente (ad esempio una volta alla settimana) self-checking – i file eseguibili vengono modificati per effettuare un checking di se stessi prima di essere eseguiti. Questa operazione può anche essere resa più leggera aggiungendo pezzi di codice che fanno riferimento a librerie condivise. integrity shells – la checksum di un eseguibile viene calcolata appena prima dell'esecuzione dell'eseguibile. Si può accelerare questa procedura integrandola nelle kernel del sistema operativo. White Paper Page 35 9/25/2010 Introduzione al Malware e Malware Detectors 5.2. Metodi dinamici I metodi dinamici si occupano di verificare la presenza di malware eseguendone il codice o controllando il suo comportamento. 5.2.1. Monitor del comportamento Il monitor del comportamento è una parte dell'antivirus che controlla in real-time un programma in esecuzione alla ricerca di comportamenti sospetti. In tal caso potrebbe bloccare l'operazione corrente, terminare il programma sospetto o chiedere all'utente l'appropriata azione da eseguire. Più in dettaglio, un monitor operazioni in tre categorie: 1 2 3 classifica le possibili le azioni permesse o anche chiamate positive detection le azioni non permesse o anche chiamate negative detection una qualche combinazione delle due, esattamente come avviene nel caso delle euristiche statiche. Questo per evitare falsi positivi, poiché una serie di azioni non permesse non indicano necessariamente la presenza di un virus. Le azioni esaminate dal monitor non devono essere necessariamente prese in considerazione singolarmente ma possono essere raggruppate come una sequenza di istruzioni, classificate successivamente come sospette o meno. Per esempio, supponiamo di avere un eseguibile contenente le seguenti istruzioni: open ... open ... read ... write ... read ... write ... read ... write ... close ... close ... supponendo una finestra pari a 3 otterremo il seguente insieme di sequenze: White Paper Page 36 9/25/2010 Introduzione al Malware e Malware Detectors open open read open read write read write read write read write read write close write close close Così come accade con le euristiche statiche, anche in questa caso si può sfruttare la conoscenza del comportamento di un virus per determinare quali potrebbero essere le sequenze sospette. Naturalmente la scelta della dimensione della finestra è un elemento chiave nel trovare il giusto compromesso tra accuratezza della rilevazione e velocità della stessa. 5.2.2. Emulazione Il monitor visto sin ora permette di effettuare la rilevazione di un codice sospetto all'interno di una macchina reale. Al contrario, altre tecniche antivirus usano l'emulazione per controllare il comportamento di un malware all'interno di un ambiente virtuale, così da evitare eventuali danneggiamenti del sistema reale, rilevando comunque la natura maligna dell'eseguibile. L'emulazione permette meccanismi principali: la raccolta dati usando due • euristiche dinamiche – sono pressoché simili alle euristiche statiche ma differiscono nel modo di raccogliere le informazioni chiave riguardo l'eseguibile. In questo caso infatti le informazioni vengono raccolte in seguito all'emulazione del codice e successivamente elaborate prima dell'effettiva esecuzione nella macchina reale. • decriptaggi generici – si occupano di rilevare i virus polimorfici. Il descriptor loop del virus polimorfo decripterà il corpo del malware all'interno del sistema virtuale in modo tale da metterlo in chiaro facilitando la sua rilevazione con i normali metodi di scanning. Durante l'emulazione l'antivirus può contemporaneamente controllare la memoria virtuale alla ricerca di signatures già note, in maniera da integrare più meccanismi di rilevazione allo stesso tempo. White Paper Page 37 9/25/2010 Introduzione al Malware e Malware Detectors Concettualmente principali: un emulatore è composto da 5 parti • emulatore della CPU, in grado di eseguire le istruzioni • emulatore della memoria, indispensabile per osservare il codice decriptato • emulatore dell'hardware e del sistema operativo - per motivi di velocità e dimensione viene avviata una versione molto ridotta del sistema operativo con l'hardware minimo e indispensabile 1. controller dell'emulatore – si occupa di controllare la corretta esecuzione del processo di emulazione, limitandone soprattutto la durata. Spesso infatti il codice eseguito durante l'emulazione richiede troppe risorse che vengono naturalmente sottratte alla macchina reale. In controller si avvale delle euristiche e delle altre tecniche viste in precedenza per portare a termine il suo compito. 2. analizzatori extra – si occupa di analizzare tutti i dati raccolti in seguito al processo di emulazione 5.3. Rilevazione tramite database Concettualmente un database di virus è un database contenente un record per ogni virus conosciuto. Ogni record rappresenta un identificatore univoco del malware e contiene le seguenti informazioni: • un nome identificativo del malware da mostrare all'utente • una stringa identificativa del malware • un insieme di istruzioni per la rimozione del malware La regola chiave per un buon database è quello di essere sempre aggiornato. Ogni volta che viene scoperto un nuovo malware la casa produttrice dell'antivirus dovrebbe inserire il record relativo al nuovo malware e mettere a disposizione dell'utente l'aggiornamento. Questo sistema sicurezza: però può portare a numerosi falle di • la macchina server responsabile della distribuzione dell'aggiornamento potrebbe essere attaccata; • il database aggiornato potrebbe essere compromesso prima che raggiunga gli utenti; White Paper Page 38 9/25/2010 Introduzione al Malware e Malware Detectors • la macchina dell'utente potrebbe essere compromessa in modo tale che scarichi l'aggiornamento dalla macchina di un attaccante piuttosto che dalla macchina server responsabile dell'aggiornamento. • può essere montato un attacco “man-in-the-middle”: l'attaccante intercetta la comunicazione tra utente e server di distribuzione, usando il canale di comunicazione per modificare il legittimo aggiornamento C'è anche il problema di cosa trasmettere nell'aggiornamento. Infatti la trasmissione dell'intero database aggiornato è poco fattibile per le sue grandi dimensioni e poiché le differenze tra la nuova e la vecchia versione non sono tante. Quindi i produttori di antivirus scelgono sempre di trasmetterne solo i cambiamenti (chiamati deltas) che vengono comunque compressi e talvolta anche criptati. Il meccanismo di aggiornamento può a volte includere anche l'aggiornamento dell'engine (il motore interno dell'antivirus) per evitare bugs ed aggiungere nuove funzionalità per la rilevazione di nuovi malware. White Paper Page 39 9/25/2010 Introduzione al Malware e Malware Detectors 6. I passi per l'eliminazione del malware Una volta che il malware è stato rilevato, l'immediato passo successivo è la sua rimozione che viene portata a termine attraverso i seguenti passi: verifica, quarantena e disinfezione. 6.1. Verifica Dopo il processo di rilevazione ogni antivirus effettua una verifica dell'effettiva infezione per evitare falsi positivi, errori di rilevazione o strane coincidenze relative alla sovrapposizione delle signatures. Inoltre la verifica viene anche utilizzata per identificare esattamente il virus, classificarlo accuratamente per poi inibire il suo comportamento maligno. 6.2. Quarantena Una volta verificata l'infezione, il software antivirus mette il file infetto in quarantena, isolandolo quindi dal resto del sistema. La quarantena è solo una misura temporanea fino al momento in cui l'utente non decida cosa fare del virus. La quarantena passi: viene implementata secondo i seguenti • il file infetto viene copiato in una cartella di “quarantena”; • viene cancellata la copia originale del file infetto • vengono cambiati i permessi della copia in modo tale che non possa mai essere eseguito • la cartella di quarantena e tutti i file in essa contenuti vengono criptati in modo tale che solo l'antivirus possa accedere a essi. 6.3. Disinfezione La disinfezione non significa necessariamente che un sistema infetto torni al suo stato originale, nonostante il processo abbia avuto esito positivo. In molti casi infatti, soprattuto quando si parla di virus overwriting, non è possibile ripristinare i contenuti originali. Ogni antivirus può implementare disinfezione in modi differenti: White Paper Page 40 il processo di 9/25/2010 Introduzione al Malware e Malware Detectors ripristinare i file infetti attraverso una copia di backup – il software antivirus può occuparsi di fare il backup dei dati periodicamente per poi ripristinarne i contenuti in seguito ad un'infezione. Questo metodo però è molto oneroso in termini di spazio sul disco e tempo necessario alla copia. usare le specifiche sui virus – all'interno del database dei virus sono contenute una serie di informazioni riguardanti la corretta rimozione di ogni singolo virus. Inoltre alcuni virus hanno metodi di rimozione identici perciò è possibile usare routine condivise cambiandone solo i parametri di ingresso. usare le specifiche sui comportamenti dei virus – piuttosto che utilizzare metodi personalizzati per ogni singolo virus, è possibile sfruttare la conoscenza dei comportamenti per usare dei metodi generici per la loro corretta rimozione. Un esempio di applicazione di tale tecnica è la rimozione dei virus prepending e appending. In questo caso infatti vengono subito ripristinate le intestazioni del programma originale e spostati i contenuti originali nelle apposite locazioni. White Paper Page 41 9/25/2010