Virus, worm, trojan, backdoor... questi termini sono tristemente entrati a far parte del linguaggio comune di molti utenti di sistemi informatici. Quando improvvisamente qualcosa irrompe a distruggere i nostri dati o ad impedirci il normale lavoro è difficile scordarsi il suo nome. Nonostante questi termini siano diventati oramai piuttosto usuali, il loro utilizzo risulta però non essere sempre appropriato e le differenze tra uno e l'altro non sempre sono comprese.
Nel linguaggio comune si tende ad indicare con il termine virus tutto ciò che può, nelle intenzioni del suo ideatore, creare un danno ad un sistema informatico. In realtà le tipologie di tali entità e il loro modo di agire sono varie e a rigore il termine virus andrebbe riservato solo ad una ben determinata categoria. Worm e
Trojan per esempio non dovrebbero essere considerati virus ma entità appartenenti ad una più generale classe chiamata
Malware (MALicious softWARE, programma dannoso) di cui anche i virus fanno parte.
In questo articolo, per non creare troppa confusione nella terminologia, capiterà di continuare ad usare il termine virus in senso generico (in luogo di malware) e, quando sia necessario specificarlo, si indicherà con il termine
virus classico la categoria dei virus in senso stretto.
Nell'arco degli anni l'evoluzione dei virus ha seguito il cambiamento dei sistemi operativi, delle tecnologie e non da ultimo delle mode informatiche. I pericoli da cui guardarsi sono cambiati molto rapidamente nel corso del tempo e se una decina di anni fa dovevamo soprattutto temere il floppy disk consegnatoci da un amico con sopra memorizzata l'ultima versione trojanizzata del nostro programma preferito per DOS, solo qualche anno più tardi a far tremare tutti i PC erano i documenti Microsoft Office infettati da qualche macro virus inviatoci per email da un collega. Oggi il dominio incontrastato è dei Worm che si diffondono utilizzando la rete internet per introdursi nei sistemi remoti sfruttando qualche vulnerabilità di sistema o autospedendosi come allegato di posta elettronica.
Non solo le vie d'infezione e le tipologie cambiano diventando presto obsolete ma la stessa classificazione diventa sempre più difficile a causa delle molteplici capacità di questi agenti patogeni elettronici.
Di seguito se ne illustreranno alcune caratteristiche importanti per imparare a conoscerne le differenze
strutturali e comportamentali. Conoscere il nemico che si ha di fronte è un mezzo prezioso che può aiutare a sconfiggerlo.
Virus Classici
Nel 1983 Fred Cohen dimostra la possibilità di creare un programma le cui caratteristiche sono del tutto simili ad un virus biologico. Nella definizione di Cohen un virus informatico è un software in grado di infettare altri programmi in modo tale da includevi una copia di se stesso. Ogni programma infettato si comporta a sua volta da vettore infettivo contribuendo a propagare l'infezione ad altri programmi.
L'analogia con il caso biologico è assolutamente azzeccata: in natura i virus modificano il DNA della cellula ospite in modo da crearvi una propria copia, allo stesso modo il virus informatico si lega al codice di un programma ospite; il virus biologico non sopravvive senza la cellula e il virus informatico senza un programma; entrambi i tipi di virus sono costretti a riprodursi per aumentare le possibilità di sopravvivenza ed entrambi possono aspettare un periodo relativamente lungo prima di manifestarsi (tempo di incubazione); un virus non infetta due volte lo stesso vettore sia nel caso biologico che in quello software; un virus biologico può subire mutazioni per rendersi immune a precedenti terapie, allo stesso modo un virus informatico può modificarsi per rendersi irriconoscibile rispetto alla generazione precedente.
Da tutto questo si evince una importante caratteristica dei virus classici che li differenzia da altre tipologie di malware: sono parassiti, senza un ospite non possono esistere.
Altra caratteristica dei virus informatici, che permette di stabilire anche una loro prima classificazione, è la suddivisione
del loro ciclo di vita in tre particolari fasi: replica, occultamento ed esecuzione
(payload).
Replica
Come detto in precedenza è indispensabile che il virus possieda almeno un metodo di replica (infezione), ma è possibile che possa sfruttarne più di uno per aumentare la sua carica infettiva.
Una volta che il virus ha avuto accesso al sistema e si presenta come processo in esecuzione in memoria deve provvedere a garantirsi la sopravvivenza per il futuro, in caso contrario allo spegnimento del sistema cesserebbe di esistere. Il metodo impiegato è quello di sfruttare supporti non volatili da usare come ospite: filesystem di dischi fissi, dischi removibili, risorse di rete etc. Si illustrano di seguito alcune tecniche di replica usate dai virus.
Replica dei File
Il modo più facile per ottenere nuovamente l'uso del processore in futuro è quello di scegliere come ospite un file che possa essere invocato direttamente dall'utente. I file virus si comportano proprio in questo modo. Tra questi si possono individuare alcune sottocategorie:
Virus a sovvrascrittura: si sostituiscono completamente al file ospite. Il file sostituito deve essere un file eseguibile (.exe, .com, .bat, .scr solo per citarne alcuni). Quando l'utente o il sistema invocherà il file pensando che sia quello legittimo in realtà attiverà il virus che verrà caricato in memoria.
Virus parassita: a differenza del caso precedente si lega al file ma non lo sostituisce completamente. Nello stesso eseguibile saranno presenti sia il codice intruso sia il programma ospite. Quando il file viene invocato il virus provvederà ad attivarsi ma anche ad eseguire il programma legittimo simulando un funzionamento corretto. In seguito all'infezione il file originale solitamente aumenta in dimensione.
Virus compagno: questa tipologia non modifica un programma ma sfrutta alcune caratteristiche del filesystem che permettono di assegnare una priorità nell'esecuzione del codice. Una prima possibilità consiste nell'individuare una cartella contenente un file ospite con estensione .exe. Il virus si copierà nella stessa cartella con lo stesso nome ma con estensione .com. I file di questo tipo hanno priorità di esecuzione rispetto agli .exe e se il programma viene invocato con il solo nome privo di estensione, quello con estensione .com avrà la precedenza. Una cosa analoga avviene con altri tipi di file. Una volta in esecuzione il codice dannoso può decidere o meno di eseguire il programma legittimo per sviare i sospetti.
Una tecnica alternativa sfrutta la possibilità di indicare, attraverso la variabile d'ambiente PATH, dei percorsi preferenziali nel filesystem per la ricerca degli eseguibili privi di percorso assoluto.
Se per esempio la variabile PATH contiene nell'ordine le cartelle c: e c:windows,
l'invocazione di un generico file eseguibile porterà alla sua ricerca prima in c:
e solo successivamente in c:windows. Se il virus crea una sua copia in c:
usando il nome di un file di sistema (di solito sono tutti contenuti nella
cartella windows) l'invocazione del file legittimo porterà in realtà
all'esecuzione del virus che si trova in una cartella a più alta priorità di
ricerca.
Replica della zona di Boot
Questi virus infettano il settore di boot o il master boot record (MBR) dei dischi. In questa zona sono memorizzate le istruzioni per il caricamento e l'avvio del sistema operativo. Un virus di questo tipo sposta il codice legittimo in un'altra zona del disco e lo sostituisce con il proprio. All'avvio della macchina verrà caricato in memoria il virus che indicherà poi al sistema la nuova posizione delle istruzioni
precedentemente spostate. Il codice dannoso è quindi in memoria già prima del caricamento del sistema operativo.
I Boot Virus erano piuttosto diffusi in passato. Oggi grazie alla tendenza ad un maggiore controllo di questa zona del disco questa tecnica non viene più considerata efficace dai programmatori di virus e stanno quindi scomparendo.
Replica delle Macro
Le Macro delle applicazioni MS Office sono script programmati in VBA (Visual Basic for Application) che possono essere inclusi in documenti Word, Excel, Access etc... La funzione di questi mini programmi dovrebbe essere quella di aumentare la flessibilità e le potenzialità di un documento, che normalmente è passivo, dotandolo di funzioni attive avanzate. Se usato in modo scorretto però questo strumento può rivelarsi decisamente pericoloso.
In questo caso il file infettato non è un eseguibile di sistema ma il codice del Macro Virus incluso nel documento viene interpretato ed eseguito dall'applicazione ospite. Se, come in questo caso, l'applicazione è multipiattaforma (esiste Office per Macintosh) l'infezione può potenzialmente diffondersi a sistemi profondamente diversi tra loro.
Una volta aperto un documento infetto il virus viene attivato da una macro AutoOpen che provoca l'esecuzione automatica del codice. A questo punto deve assicurarsi la sopravvivenza. Nei Documenti Word in genere viene infettato il modello standard Normal.dot cioè il modello di foglio bianco che ci viene presentato quando apriamo il programma. In questo modo ogni nuovo documento creato sarà automaticamente infetto. Altra possibilità è quella di modificare le macro standard associate ai menu di queste applicazioni. Ogni volta che sceglieremo una voce
Apri, Salva, Salva con nome o Chiudi dal menu File, il virus, che avrà modificato le azioni predefinite di questo comandi, potrà trasportare il suo carico virale verso nuovi documenti.
Occultamento
Per prolungare il più possibile la sua permanenza nel sistema un virus deve ingegnarsi per nascondere la propria presenza.
Più piccolo è un oggetto è maggiore è la probabilità che passi inosservato. La dimensione di questi agenti patogeni elettronici in genere non è superiore a qualche decina di KB e per facilitare la compattezza del codice i virus più evoluti vengono programmati direttamente in linguaggio
Assembly.
Alcuni virus cercano di non essere rilevati da software antivirus testando la loro presenza e cercando di porre fine alla loro esecuzione.
Altre tecniche molto sofisticate vengono usate per rendere difficile la propria individuazione. Due di queste sono le tecniche di Stealthing e il Polimorfismo.
Virus Stealth
Il virus in questo caso possiede una parte sempre residente in memoria che monitora alcune chiamate a funzioni del sistema operativo effettuate
dai programmi. In questo modo, per esempio, un Boot Virus può verificare se una applicazione chiede di leggere il settore di boot o l'MBR. In caso affermativo provvederà prima a ripulire tali zone dal suo codice e, a lettura avvenuta, a infettarlo nuovamente. In questo modo il virus risulterà invisibile (stealth).
Una cosa analoga può avvenire per i File Virus, in questo caso ad essere ripulito sarà il file infettato.
Una tecnica come quella descritta si prestava molto bene all'epoca del DOS e dei primi sistemi Windows in cui
non era ben definita una separazione tra programmi e sistema operativo. Oggi, grazie una maggiore protezione degli ambienti, queste tecniche risultano difficili da attuare.
Altro problema di questa modalità di occultamento è che la parte residente in memoria risulta facilmente rilevabile da un software antivirus.
Virus Polimorfici
Una delle prime operazioni che un virus esegue prima di infettare un oggetto è verificare il suo stato per evitare una duplice infezione. Una precedente infezione potrebbe infatti compromettere del tutto la sua funzionalità e quindi la sua esistenza futura.
Il virus per riconoscere se stesso ricerca nel potenziale file ospite una
particolare stringa di codice che lo caratterizza. Se la stringa è presente il
file è gia infetto, nel caso opposto procede con la replica. Paradossalmente
questa tecnica si rivela un'arma a doppio taglio per il virus perché in modo
analogo permette ad un software antivirus di riconoscerlo: la stringa di codice
rappresenta la famosa firma del virus.
Per aggirare questo problema i codici maligni più evoluti fanno uso della
crittografia. Un virus criptato non può essere facilmente analizzato se non si conosce l'algoritmo di crypting e la relativa chiave. D'altra parte il codice di un programma deve essere in chiaro per essere
eseguito e quindi la relativa parte di decifratura deve essere leggibile e
quindi riconoscibile dall'antivirus.
A questo punto entra in gioco il polimorfismo. Un virus polimorfico ha la
capacità di criptare ogni sua copia in modo sempre diverso attraverso algoritmi
variabili. Per fare questo al suo interno possiede una collezione di funzioni di
cifratura e ad ogni infezione ne utilizza una diversa. L'unico modo per un
antivirus di riconosce il virus è venire a conoscenza di tutte queste funzioni.
Alcuni motori polimorfici si spingono oltre permettendo una generazione casuale
dello stesso algoritmo. In questo caso si hanno virtualmente infinite funzioni
di codifica e la rilevazione dell'infezione risulta decisamente ardua.
Esecuzione (payload)
È la fase che l'utente teme maggiormente in quanto manifesta il vero intento
distruttivo del virus.
In un determinato istante chiamato trigger (grilletto) il virus entra
in azione. Questo può succedere immediatamente dopo la sua attivazione oppure
il nostro parassita elettronico può aspettare paziente nel sistema in attesa
del verificarsi di una particolare sequenza di eventi (Logic Bomb) o di
una particolare data (Time Bomb).
A questo punto il sistema è in sua balia. Alcuni payload, soprattutto in
passato, distruggevano interi filesystem o addirittura formattavano gli hard
disk. Oggi la tendenza sembra essersi spostata verso la compromissione delle
informazioni (violazione e furto di password, appropriazione di documenti etc...)
o all'installazione di componenti che permettano l'acceso diretto al sistema
dall'esterno (Backdoor).
WORM (Verme)
Sono la moda del momento e la loro diffusione ha raggiunto livelli tali da
far pensare che i virus classici siano scomparsi.
Un Worm non è considerato un virus in senso classico perché gli manca una
caratteristica essenziale: non è un parassita, non ha bisogno di un portatore
ospite ma si supporta autonomamente durante la replica che avviene
prevalentemente tramite le reti di computer.
Lo scopo dei Worm è penetrare un sistema, eseguire il payload e diffondersi
immediatamente su quanti più sistemi possibile presenti in rete.
Per fare questo può autospedirsi come allegato di posta elettronica nella
speranza che venga aperto dall'ignaro destinatario oppure può sfruttare qualche
particolare vulnerabilità per introdursi sui PC ad insaputa dell'utente.
Il primo Worm della storia fu probabilmente creato nel 1988 dal giovane
Robert Morris. Il programma, che nelle intenzioni dell'autore doveva avere
unicamente uno scopo sperimentale, sfruttava una vulnerabilità del server
di posta elettronica Sendmail per introdursi nei sistemi dove lanciava un
piccolo processo in background. Il problema fu che, a causa di un errore di
programmazione, il Worm non verificava se il sistema era già stato infettato al
momento della sua attivazione. Questo produsse una serie di infezioni multiple
con la conseguente esplosione nel numero dei processi che il programma lanciava.
In 6 ore più di 6000 sistemi connessi ad internet rimasero paralizzati.
TROJAN HORSE (Cavallo di Troia)
Il Trojan horse, o più semplicemenete Trojan, è forse il malware più subdolo e insidioso.
Come gli Achei riuscirono a conquistare Troia offrendo in dono alla città il famoso cavallo
che in realtà conteneva al suo interno uomini armati, allo stesso modo questo
genere di programma si introduce nel sistema sotto mentite spoglie.
L'utente pensa che un programma esegua una determinata funzione utile. Quella
funzione può essere veramente realizzata oppure no. La cosa più importante
però è che in aggiunta il programma esegue all'insaputa dell'utente una
funzione secondaria che egli sicuramente non approverebbe. Il programma è un
Cavallo di Troia.
È facile intuire che qualsiasi programma può potenzialmente essere un
cavallo di Troia. L'aspetto umano risulta essenziale e ne deriva una estrema
difficoltà nella rilevazione di questo genere di malware. Un programma può
essere utile in un determinato contesto ma può essere letale se chi ce l'ha
fornito ci ha fatto credere che serva a tutt'altro.
Da rilevare che spesso l'azione dannosa del Trojan consiste nell'installare
una Backdoor cioè un programma server che consente ad un utente remoto di
assumere il totale controllo della macchina (Back Orifice, Netbus, SubSeven sono
i più conosciuti). Questo fatto ha spesso portato ad identificare i Trojan con
tale genere di programmi server. Ovviamente si tratta di un errore e le
definizioni in questo articolo servono a fare un po' di chiarezza.
Recentemente il pericolo di infezioni da Trojan è aumentato notevolmente a causa della diffusione
dei programmi peer-to-peer. Il prelevamento diretto di file eseguibili,
soprattutto se molto ricercati, da fonti non sicure può permettere il
diffondersi rapidamente di codice dannoso a tutti gli utenti.
HOAX (Bufale)
Per finire è utile fare qualche considerazioni sui cosiddetti Hoax, i virus
bufala o socially engineered virus (virus che si basano sul comportamento
sociale). Arrivano per email da persone conosciute con un testo che ci mette in
guardia sul diffondersi di un pericolosissimo virus di cui nessun antivirus
riesce a rilevare la presenza oppure ci invitano a verificare l'esistenza nel
nostro sistema di un particolare file che risulterebbe infetto convincendoci ad
eliminarlo. In altri casi il contenuto di queste email è puramente sociale e
non ha nessun riferimento tecnologico. Ovviamente nessuna delle affermazioni è vera.
Normalmente non sono considerati virus, in realtà presentano tutte le
caratteristiche dei virus classici:
Replica: per replicarsi contano su buone intenzioni e ingenuità,
entrambe caratteristiche umane . L'utente che riceve un simile messaggio
tenderà infatti ad inoltrare il messaggio a tutti i contatti presenti nella sua
rubrica spinto ad essere d'aiuto al prossimo. In questo modo la bufala si
diffonde a macchia d'olio. L'ingenuità porta invece l'utente a non essere
critico nei suoi confronti e a non verificarene l'autenticità del contenuto.
Occultamento: per far sembrare il messaggio più credibile si usa un
linguaggio pseudotecnico comprensibile all'utente medio. In genere si informa
l'utente che società informatiche molto note del calibro di IBM o Microsoft ne
hanno verificato l'esistenza e confermato la pericolosità. In altri casi si fa
leva sulla pura compassione.
Payload: può sembrare strana la presenza di un payload. Questo non
viene percepito dalla maggior parte delle persone ma il suo effetto può
essere importante. Il payload è costituito dallo spreco di banda, molto
costosa, dovuta alla massiccia diffusione di questo genere di email. Da non
dimenticare inoltre l'inutile paura che tale genere di messaggi contribuisce a
diffondere.
La cosa interessante da notare è che nessun antivirus sarà mai in grado di
rilevare questo genere di virus.