Virus
Nell’ambito dell’informatica un virus è un frammento di software, appartenente alla categoria dei malware, che è in grado, una volta eseguito, di infettare dei file in modo da riprodursi facendo copie di sé stesso, generalmente senza farsi rilevare dall’utente. I virus possono essere o non essere direttamente dannosi per il sistema operativo che li ospita, ma anche nel caso migliore comportano un certo spreco di risorse in termini di RAM, CPU e spazio sul disco fisso. Come regola generale si assume che un virus possa danneggiare direttamente solo il software della macchina che lo ospita, anche se esso può indirettamente provocare danni anche all’ hardware, ad esempio causando il surriscaldamento della CPU mediante overclocking, oppure fermando la ventola di raffreddamento.
Nell’uso comune il termine virus viene frequentemente usato come sinonimo di malware, indicando quindi di volta in volta anche categorie di “infestanti” diverse, come ad esempio worm, trojan o dialer.
Cosa è un virus, dove si trova e come funziona
Un virus è composto da un insieme di istruzioni, come qualsiasi altro programma per computer. È solitamente composto da un numero molto ridotto di istruzioni, (da pochi byte ad alcuni kilobyte), ed è specializzato per eseguire soltanto poche e semplici operazioni e ottimizzato per impiegare il minor numero di risorse, in modo da rendersi il più possibile invisibile. Caratteristica principale di un virus è quella di riprodursi e quindi diffondersi nel computer ogni volta che viene aperto il file infetto.
Tuttavia, un virus di per sé non è un programma eseguibile, così come un virus biologico non è di per sé una forma di vita. Un virus, per essere attivato, deve infettare un programma ospite, o una sequenza di codice che viene lanciata automaticamente, come ad esempio nel caso dei boot sector virus. La tecnica solitamente usata dai virus è quella di infettare i file eseguibili: il virus inserisce una copia di sé stesso nel file eseguibile che deve infettare, pone tra le prime istruzioni di tale eseguibile un’istruzione di salto alla prima linea della sua copia ed alla fine di essa mette un altro salto all’inizio dell’esecuzione del programma. In questo modo quando un utente lancia un programma infettato viene dapprima impercettibilmente eseguito il virus, e poi il programma. L’utente vede l’esecuzione del programma e non si accorge che il virus è ora in esecuzione in memoria e sta compiendo le varie operazioni contenute nel suo codice.
Si possono distinguere due fasi di un virus:
- quando è solo presente su un supporto di massa (disco fisso, floppy, CD, …) il virus è inerte, anche se copiato sul proprio PC non è in grado di fare nulla fino a quando non viene eseguito il programma che lo ospita;
- quando è stato caricato in memoria RAM il virus diventa attivo ed inizia ad agire.
Principalmente un virus esegue copie di sé stesso spargendo l’epidemia, ma può avere anche altri compiti molto più dannosi (cancellare o rovinare dei file, formattare l’hard disk, aprire delle back door, far apparire messaggi, disegni o modificare l’aspetto del video, …)
Componenti di un virus
I virus informatici più semplici sono composti da due parti essenziali, sufficienti ad assicurarne la replicazione:
- una routine di ricerca, che si occupa di ricercare dei file adatti ad essere infettati dal virus e controlla che gli stessi non ne contengano già una copia, in modo da evitare l’infezione ripetuta di uno stesso file;
- una routine di infezione, con il compito di copiare il codice del virus all’interno di ogni file selezionato dalla routine di ricerca in modo che venga eseguito ogni volta che il file infetto viene aperto, in maniera trasparente rispetto all’utente.
Molti virus sono progettati per eseguire del codice estraneo alle finalità di replicazione del virus stesso e contengono dunque altri due elementi:
- la routine di attivazione, che contiene i criteri in base ai quali il virus decide se effettuare o meno l’attacco (es. una data, o il raggiungimento di un certo numero di file infetti);
- il payload, una sequenza di istruzioni in genere dannosa per il sistema ospite, come ad esempio la cancellazione di alcuni file o la visualizzazione di messaggi sullo schermo.
I virus possono essere criptati e magari cambiare algoritmo e/o chiave ogni volta che vengono eseguiti, quindi possono contenere altri tre elementi:
- una routine di decifratura, contenente le istruzioni per decifrare il codice del virus;
- una routine di cifratura, di solito criptata essa stessa, che contiene il procedimento per criptare ogni copia del virus;
- una routine di mutazione, che si occupa di modificare le routine di cifratura e decifratura per ogni nuova copia del virus.
Tipologie di virus
Alcuni virus vengono denominati in maniera particolare a seconda che possiedano a meno determinate caratteristiche:
- virus polimorfico
- un virus, di solito, viene criptato lasciando in chiaro solo la routine di decriptazione. Un virus polimorfico modifica il codice della routine di decriptazione ad ogni nuova infezione (lasciando ovviamente invariato l’algoritmo) mediante tecniche di inserimento di codice spazzatura, permutazione del codice, etc…
- virus metamorfico
- simile al virus polimorfico, è però in grado di mutare completamente il proprio codice, è più potente del virus polimorfico in quanto alcuni software antivirus possono riconoscere un virus dal codice anche durante l’esecuzione. Inoltre a volte impiega tecniche di mascheramento avanzate basate sulla divisione del proprio codice e successivo inserimento delle parti all’interno di diversi punti del file infetto (i virus convenzionali inseriscono il codice integralmente in fondo al file cambiando l’entry point per far eseguire per primo il codice maligno), lasciando inoltre invariato l’entry point per rendere ancora più difficile la vita agli antivirus. C’è da dire anche che la criptazione dei virus metamorfici non è necessaria.
- exe virus
- virus che infettano i file eseguibili .EXE.
- com virus
- virus che infettano i file di comando .COM (ormai rari).
- companion virus
- virus che sfruttano la caratteristica dei sistemi ms-dos che consiste nell’eseguire prima un file di comando .COM e poi un eseguibile .EXE in caso abbiano lo stesso nome di file (es. tra PROGRAM.EXE e PROGRAM.COM se si avvia PROGRAM senza specificarne l’estensione verrà prima lanciato PROGRAM.COM), in questo modo i virus creano dei “gemelli” (companion) che sono copie del virus stesso che, dopo essere stati eseguiti, lanciano il relativo .EXE mascherandosi (ormai rari).
- virus di boot
- un tipo di virus ormai poco diffuso, che infetta il boot sector dei dischi (floppy disk o hard disk) invece che i singoli file.
- macrovirus
- può essere contenuto generalmente in un documento di Microsoft Word, Microsoft Excel o Microsoft PowerPoint e consiste in una macro; può diffondersi a tutti i documenti che vengono aperti con quella particolare applicazione. Questo tipo di virus può infettare i sistemi operativi su cui gira ms-office (windows e mac), anche se non è detto che possano funzionare correttamente su altri sistemi operativi coinvolti.
- retrovirus
- virus che si annida nei programmi antivirus e li mette fuori uso. Il nome deriva dai retrovirus biologici, in grado di attaccare il sistema immunitario (come, ad esempio, l’HIV).
- virus multipiattaforma
- ci sono stati vari tentativi per creare virus che infettassero più sistemi operativi funzionanti sotto la stessa architettura hardware e lo stesso processore, ma si sono rilevati degli insuccessi o hanno avuto un successo molto limitato. Un esempio è il virus winux [1] che in teoria può infettare sia i sistemi operativi della Microsoft che quelli unix-like (es: GNU/Linux) giranti sotto CPU x86. In generale questi tipi di virus multipiattaforma si possono difficilmente inserire su un sistema unix-like: di solito la diffusione avviene solo se l’utente esegue un allegato di una mail, cosa già di per se abbastanza remota, e perché un allegato, appena salvato, non può essere eseguito se non gli vengono assegnati i permessi di esecuzione, quindi si può scartare il caso che l’esecuzione sia accidentale; in altri casi addirittura deve essere l’utente root ad eseguire l’allegato, cosa ancora più improponibile per chi sa gestire un sistema di tale tipo. Il successo di questo tipo di virus è circoscritto al fronte dei sistemi operativi della Microsoft, dove invece è possibile quasi sempre eseguire un allegato, anche solo per errore.
Scambio di virus
Moltri programmatori di virus ai nostri giorni, ma soprattutto nel passato, si sono scambiati sorgenti di virus per capire nuove tecniche di programmazione (come sistemi di infezione o di proliferazione). Molti scambi di virus sono avvenuti tramite siti web chiamati VX. VX significa Virus eXchange. Al giorno d’oggi i siti (almeno quelli pubblici) dedicati al VX sono rimasti pochi. Si pensa che esistano dei siti underground che contengano dei database di virus recenti accessibili solo a crew di virus writer.