Quelli che, con termine generico e non più completamente appropriato, vengono definiti virus per computer sono oggi una moltitudine varia ed articolata. Alcuni vendor di prodotti software per la sicurezza hanno coniato, e utilizzano, il termine malware per classificare in un unico gruppo qualsiasi tipo di codice malevolo che abbia come proposito quello di installarsi a bordo del nostro computer senza autorizzazione e di compiere azioni che noi non vogliamo e non vorremmo autorizzare. Tentare di creare classificazioni più precise è piuttosto difficile anche perchè gli aspetti qualificanti spesso si mischiano o si combinano creando nuove categorie.  A questo si aggiunga il fatto che il mondo dei malware è in rapida evoluzione e alcune delle categorie che tenterò di proporre sono ormai pezzi da museo.

Classificazione in base ai sintomi rilevabili dall’utente.

  1. Senza sintomi visibili. La maggior parte dei codici malevoli cerca di mostrarsi il minimo possibile: quanto più l’azione del malware resta nascosta, occultando all’utente del computer ogni anomalia, tanto più tardiva sarà l’eventuale azione intrapresa dall’utente per cercare di rimuovere l’infezione. Per questo motivo il programmatore che ha progettato e scritto il virus, avrà anche studiato un modo per ridurre al minimo indispensabile gli effetti immediatamente visibili sulle funzionalità o sui dati del computer;
  2. Sintomi visibili sullo schermo. Se l’autore del codice malevolo decide di dare una manifestazione visibile del proprio software, generalmente sceglie la strada di un’immediata visualizzazione sullo schermo: potrebbe trattarsi di frasi ad effetto che appaiono sullo schermo e che non riusciamo ad eliminare (es. Stop alla vivisezione, Salviamo le Balene ecc.). A volte tuttavia questa tecnica è più subdola e non fine a se stessa: potrebbe infatti nascondere la vera attività del virus o far credere all’utente che sia necessario intraprendere determinate azioni mostrando per esempio immagini grafiche montate ad arte che simulano finestre di sistema che invitano a scaricare fantomatici aggiornamenti o indispensabili antivirus per rimuovere infezioni rilevate e che in realtà non avete. Questa tecnica occulta l’installazione del vero virus ( o meglio di un altro virus ) che farà ulteriori danni;
  3. Sintomi curiosi. Se il programmatore del codice malevolo (il cosiddetto virus-writer) è un mattacchione potrebbe anche divertirsi ad inventare, come è successo in passato, un codice che faccia andare all’indietro l’orologio di sistema. Divertente ? Non tanto se si pensa che poi diventa un problema capire quale è la versione più recente di un backup.

Classificazione in base alla modalità di diffusione.

  1. Virus veri e propri. Si tratta di piccole porzioni di codice che sono in grado di replicarsi autonomamente all’interno del computer ospite per il tramite di un file veicolo (generalmente un’applicazione). In altre parole il Virus è un programma che si diffonde all’insaputa e, spesso, contro la volontà dell’utente: non ha altre caratteristiche e non necessariamente causa danni: eventuali malfunzionamenti o danni sono effetti secondari del virus che il programmatore ha inserito per vari motivi;
  2. I cavalli di troia (trojans). In questa categoria rientrano i programmi malevoli che, come suggerisce il nome, contengono la sorpresina: da un lato eseguono esattamente quello che l’utente si aspetta, ma dall’altro eseguono anche tutta una serie di operazioni relativamente alle quali l’utente non potrebbe essere d’accordo in alcun modo. Un esempio può essere utile a chiarire il concetto: veniamo invitati a scaricare un codec video che dice di permettere la visualizzazione di un filmato con una bellissima danzatrice; scarichiamo e installiamo ed effettivamente vediamo il filmatino ma nel frattempo, segretamente e a nostra insaputa, il programma appena installato scrive nel registro dati che modificano l’avvio delle applicazioni oppure cambiano il modo in cui funziona la risoluzione DNS per cui al successivo riavvio veniamo continuamente mandati su siti che non vogliamo vedere;
  3. Backdoor. La traduzione letterale li vorrebbe definiti come “porta sul retro”: in realtà il concetto di “porta di servizio” è più adatto. Questi tipi di programmi, di fatto, aprono una porta nel nostro computer disponibile alla ricezione di comandi o dati dall’esterno. In realtà questa è più una caratteristica : le backdoors sono generalmente l’effetto di un virus o di un trojan;
  4. Worm. Esagerando un poco nella semplificazione possiamo dire che i Worm sono virus che utilizzano canali di rete (network-worms) o email (email worms) per la loro diffusione. Tuttavia esiste una differenza sostanziale: mentre i virus necessitano di una applicazione che li ospiti i Worm si inseriscono direttamente nella memoria del computer (sfruttando varie vulnerabilità) e solo in un secondo momento scrivono su file le istruzioni necessarie a ricaricarli in memoria al riavvio del computer.

Classificazione in base al tempo di manifestazione

  1. Ad attivazione immediata. Rientra in questa categoria la stragrande maggioranza dei codici malevoli in circolazione al giorno d’oggi: non appena entrano nel computer vengono attivati immediatamente cominciano da subito a produrre gli effetti indesiderati. Ciò è dovuto principalmente al fatto che anche le contromisure hanno tempi di pubblicazione e diffusione molto rapidi (grazie allo strumento Internet) e quindi i programmatori di questi “virus” cercano di sfruttare al massimo il tempo in cui un computer può rimanere infetto;
  2. Ad attivazione differita. “Attenzione … non avviare il computer il tal giorno, un virus sta per colpire. Possibile perdita di dati.” I tempi in cui questi messaggi e avvisi circolavano sono ormai lontani. Potevamo notarli agli inizi degli anni 90 quando accadeva che la protezione fosse agli albori e potevano volerci mesi prima di reagire ad un’infezione. Inoltre il virus non poteva affidarsi per la propria propagazione al canale internet (quasi inesistente) e quindi doveva fare affidamento sul classico scambio di file tramite supporti magnetici. Il virus-writer che voleva creare un’epidemia doveva pianificare una data per manifestare gli effetti del proprio lavoro: non troppo vicina per consentire una adeguata distribuzione dei file infetti, non troppo lontana per prevenire che anche le contromisure venissero distribuite;
  3. Ad attivazione condizionale. Anche questi sono (quasi) storia del passato. Alcuni virus erano programmati per attivarsi in determinate condizioni (come ad esempio ogni 3 riavvii del pc oppure dopo una specifica sequenza di tasti).

Classificazione in base alla gravità

  1. Non Distruttivi. La maggior parte dei codici malevoli dei giorni nostri appartengono a questa categoria. Per due ragioni principali. La prima è il fatto che i virus classici (quelli che si inseriscono in un file eseguibile e ne modificano il funzionamento) sono praticamente scomparsi. La seconda è ancora legata al tentativo di occultamento del virus da parte dei loro creatori: cancellare file o applicazioni a destra e a sinistra non è certo un buon modo per restare nascosti e l’utente si accorgerebbe subito di qualcosa che non funziona;
  2. Distruttivi. In questa categoria dovremmo inserire due sottocategorie: virus a distruzione volontaria e virus a distruzione accidentale. I primi sono stati espressamente progettati per distruggere i dati dell’utente mentre i secondi cancellano accidentalmente i file dell’utente principalmente a causa di errori di programmazione. Dal punto di vista dell’utente attaccato comunque non cambia molto: i dati vengono persi;

Classificazione in base all’area di infezione

  1. Boot virus. Questi tipi di virus infettano particolari aree di codice eseguibile memorizzato nell’area di sistema dei supporti magnetici cosiddetti di avvio. Nei settori di boot sono infatti memorizzate le istruzioni iniziali che il computer legge per caricare il sistema operativo e per passargli poi il controllo. Un virus che riesce ad inserirsi nei settori di boot verrà caricato in memoria ancora prima che venga avviato il sistema operativo;
  2. File virus. Bisognerebbe dividere questa categoria in tante sottocategorie quanti sono i tipi di file infettabili. Generalmente si tratta di file eseguibili ( i più comuni sono .com e .exe) perchè obiettivo del virus è quello di attivarsi non appena viene eseguita l’applicazione che lo ospita. In tutti i casi comunque il virus si comporta in modo simile: sovrascrive l’intestazione del file ospite (dove sono contenute le istruzioni per l’avvio del programma) inserendovi il codice che passa il controllo al blocco di codice del virus vero e proprio. Si tratta quasi sempre di virus della categoria distruttivi perchè l’operazione di innesto del codice malevolo all’interno dell’applicazione ospite danneggia l’eseguibile e il programma che vorremmo avviare smette di funzionare. In questa categoria si riconoscono poi due gruppi: i virus sovrascriventi e i virus estendenti.  I primi, come visto, si innestano nelle istruzioni di avvio dell’applicazione rendendola inservibile. I secondi invece sovrascrivono solo i primissimi byte dell’applicazione (che potrebbe continuare a funzionare) e aggiungono il loro codice alla fine del file eseguibile: ne consegue che l’effetto visibile dell’infezione è un aumento della dimensione del file infetto. I primi sono quasi impossibili da correggere da parte di un antivirus mentre per i secondi ci sono più probabilità di successo (ovvero l’applicazione può ricominciare ad essere usata, dopo averla disinfettata, senza dover reinstallare l’intero programma;
  3. Virus Companion. Non trovo purtroppo un termine italiano per tradurre esattamente questa categoria. Si tratta comunque di una estensione dei “file virus” che però adotta una caratteristica (debole) dei sistemi operativi DOS e Windows. In pratica il virus infettante crea un file “gemello” di quello buono e vi si inserisce cambiando anche l’estensione del file eseguibile (per esempio cambiandola da .exe a .com). In questo modo, dal momento che il sistema operativo “preferisce” gli eseguibili .com a quelli .exe, verrà preferenzialmente eseguito il file .com infetto;
  4. Cluster virus. Costituiscono una categoria molto interessante: modificano i puntamenti dell’albero delle directory in modo che un determinato percorso faccia puntare direttamente al codice eseguibile del virus anzichè all’area dati corrispondente.
  5. Macro Virus. L’aspetto più fastidioso di questa categoria è che è indipendente dal sistema operativo utilizzato anche se spesso i loro effetti dipendono dal sistema operativo. Le macro sono sequenze di codice scritto (o registrato da un utente) ed interpretato dall’applicazione ospite. Per esempio una Macro di Excel. I macro-virus sono sequenze di codice non desiderato dall’utente che infetta prevalentemente i file di dati, non le applicazioni.

Classificazione in base alla posizione in memoria

  1. Residenti. Come suggerisce il nome, i codici malevoli appartenenti a questa categoria, si installano in modo residente nella memoria del computer. Generalmente l’installazione in memoria viene attivata alla prima esecuzione del file infetto (file virus) oppure durante il caricamento iniziale del sistema operativo (boot virus). Il codice del virus rimane in esecuzione in memoria fino a quando il computer viene spento.
  2. Residenti TSR. Alcuni virus possono caricarsi in memoria utilizzando servizi DOS del tipo TSR (Terminate and Stay Resident). Si tratta di una sottocategoria dei virus Residenti con una differenza però importante. Questi tipi di virus utilizzano in genere tecniche di installazione in memoria analoghe a quelle di molti programmi legittimi motivo per cui la loro individuazione risulta più difficile.
  3. Non Residenti. Non sempre il virus ha bisogno di installarsi in memoria e rimanere attivo per compiere le sue malefatte. E’ sufficiente che vengano attivati alla prima esecuzione del file infetto, quindi prendono il controllo per eseguire il codice malevolo e terminano, ripassando, se possibile, il controllo all’applicazione ospite. Generalmente si tratta di file virus anche se la loro diffusione è molto diminuita: non potendosi installare in memoria non possono nemmeno eseguire tecniche avanzate di occultamento e non possono analizzare l’attività del sistema per lungo tempo.

Classificazione in base al comportamento

  1. Stealth e substealth. Il nome Stealth evoca il famoso bombardiere americano invisibile ai radar. Allo stesso modo i virus Stealth (quasi sempre del tipo Residente) riescono a nascondere la loro attività. In pratica monitorano costantemente l’attività del sistema quando richiede la lettura delle dimensioni dei file fornendo al sistema stesso risposte sbagliate: in questo modo, ad esempio, riescono a far credere al sistema, e all’utente, che le dimensioni di un file non siano cambiate allontanando il sospetto che sia presente un’infezione;
  2. Polimorfici. Un virus polimorfico cifra/codifica il corpo del suo codice per nascondere la sua impronta caratteristica al programma antivirus. In pratica continua a cambiare forma. Al momento dell’esecuzione del file infetto, il virus polimorfico attiva una routine di decodifica che riporta il codice del virus in formato eseguibile e quindi vi passa il controllo per l’esecuzione vera e propria. I primissimi virus codificati non erano polimorfici: in pratica la routine di codifica (o criptatura) che veniva utilizzata non modificava mai il risultato e l’impronta caratteristica del virus era individuabile sia nella sua forma in chiaro che in quella codificata. Oggi, invece, le tecniche utilizzate dai moderni virus polimorfici ne rendono molto più difficile l’individuazione perchè la routine di codifica utilizzata permette loro di modificare la loro impronta ad ogni esecuzione tramite un generatore di codice macchina detto Mutator (un generatore di codice che modifica l’impronta utilizzando una sequenza di numeri casuali ed un agloritmo matematico). Questo è il motivo perchè i vendor di antivirus pubblicano sempre nuovi aggiornamenti dei loro database delle impronte virali inserendo nuove varianti sempre dello stesso virus. Gli antivirus più sofisticati, tuttavia, anche se non riescono ad individuare l’impronta caratteristica del virus polimorfico, implementano algoritmi di decifratura/decodifica simili a quelli usati dal virus stesso in modo che l’antivirus possa “portare alla luce” il virus nella sua forma originale e quindi indivduarlo. Tutto ciò mette a dura prova sia il programma antivirus che le risorse del computer in quanto il lavoro da eseguire per individuare una possibile infezione fa aumentare di molto il tempo di occupazione della CPU da parte dell’antivirus;
  3. Retrovirus. La miglior difesa è l’attacco. I retrovirus sono programmi malevoli che cercano di sfuggire alla cattura attaccando direttamente il loro peggior nemico: l’antivirus. Alcuni esperti li definiscono a volte come gli anti-antivirus (attenzione a non confonderli). Creare un retrovirus può anche non essere particolarmente difficile. Qualsiasi virus writer può facilmente scaricare dal web una copia del software antivirus che intende attaccare tra tutti quelli disponibili sul mercato, e studiare un modo per renderlo inoffensivo. Tecniche di reverse-engineering consentono di trovare punti deboli o errori di programma. Semplificando di molto, per esempio, un retrovirus potrebbe trovare il modo di nascondere all’antivirus il suo database delle impronte virali: in questo modo l’antivirus non saprebbe più quali impronte ricercare e quindi considererebbe tutti i file che in realtà sono infetti come puliti;
  4. Armored Virus. I virus corazzati (armored) si proteggono con una speciale corazza che rende il tracing, il reverse-engineering e la lettura del codice malevolo particolarmente difficile per i programmi antivirus. Le tecniche di corazzatura possono essere diverse: dalla scrittura di istruzioni apparentemente in conflitto tra loro fino all’inserimento di istruzioni fuorvianti per l’antivirus che potrebbe andare a cercare il virus vero e proprio in una posizione dove in realtà il virus non risiede.
  5. Virus Multipartite. Questi virus utilizzano tecniche di infezione diverse a seconda delle necessità. Possono infettare i file o i settori di boot scegliendo di volta in volta l’operazione che riesce meglio.

Classificazione in base alla velocità di diffusione

  1. Infettanti rapidi. Rientrano in questa categoria i virus che non infettano solo i file eseguiti ma anche quelli aperti (per esempio per operazioni di lettura o copia).
  2. Infettanti lenti. Più difficili da individuare in quanto infettano i file solo durante le operazioni di manipolazione da parte del sistema operativo. Per esempio possono venire infettati i settori di boot di un floppy solo se l’utente esegue un comando FORMAT oppure SYS. Questi tipi di virus infettano sempre le copie dei file, mai l’originale.
  3. Infettanti occasionali (sparse virus). Rientrano in questa categoria generalmente i virus ad attivazione condizionale. Le probabilità di essere infettati da questi tipi di virus è piuttosto bassa.
  4. Zoo Virus. Così come lo zoo nella vita reale è un ambiente circoscritto anche nel modo cibernetico esistono gli zoo. Uno zoo-virus è un virus che non ha alcuna possibilità di diffondersi nel cyber-world e, anche se gli antivirus sono in grado di rilevarli, è praticamente impossibile incontrarli. Vengono creati per scopi di didattici o di studio oppure il numero di errori che contengono è tale da renderli inefficaci. Alcuni addirittura possono venire creati per scopi di gloria (“yuppieee … ho creato il primo virus per xyz”) anche al costo di non vederli mai funzionare come atteso (troppi errori). A volte gli zoo-virus vengono associati ai cosiddetti wild-virus: codice malevolo in cui ci si può imbattere solo con una buona dose di sfortuna.