Vita e attività dei virus (come agisce un virus)

Premessa: Era da un po' che volevo prendere in esame quest'aspetto così scottante del mondo dei computer, avevo promesso agli amici e ad alcuni iscritti al mio sito che avrei presto esposto un trattato sulla vita e attività dei virus in generale, eccone il testo completo. 


Il cliente chiama, espone il problema, dopo brevi spiegazioni il tecnico inesorabile afferma: "È un virus! Dobbiamo eliminarlo". È esattamente a questo punto che TUTTI i clienti chiedono: "Ma c'è l'antivirus! Come fa a entrare?" Se esistesse l'antivirus perfetto, al mondo e in commercio ce ne sarebbe solo uno. Fermo restando che l'antivirus non è di per sé la garanzia assoluta che virus non entreranno MAI nel pc, va anche detto che spesso molti virus trovano comunque una strada che l'antivirus non può rilevare. Esattamente come ci sono detenuti (anche se molto pochi) che sono in grado di evadere anche da carcere di massima sicurezza. Ora cerchiamo di vedere da vicino come agisce un virus, come infetta e come si moltiplica. Dividiamo il processo in alcune fasi:

Per prima cosa va detto che i file infettabili (solitamente gli EXE) hanno delle intestazioni che racchiudono tutte le informazioni del file stesso compresa la lunghezza (checksum) e varie altre notizie. Il virus intanto crea uno spazio sufficiente perché si possa installare all'interno del file poi ne riscrive l'intestazione per poter includere anche il suo codice come parte integrante del codice del file EXE stesso. Di qui comincia l'infezione vera e propria:

  1. Lettura delle informazioni nell'intestazione come visto poc'anzi.
  2. Determinazione dello spazio necessario per potersi inserire nel file
  3. Il virus si inserisce come "append" nel file. Le nuove informazioni che il virus riscriverà nell'intestazione vengono definite "firma del file", firma grazie alla quale un antivirus può determinare di che virus si tratta
  4. Il virus scrive la nuova intestazione del file in modo tale che vengano incluse le informazioni necessarie al virus stesso per poter funzionare correttamente.
  5. Il virus salva il nuovo file con le nuove impostazioni complete anche di infezione. Ora il file è infetto e quando andrà in esecuzione eseguirà anche il codice del virus.


Questo genere di virus vengono definiti PARASSITI. La loro vita è in stretta relazione alla vita del file infettato. Quando il file infetto viene cancellato, viene cancellato anche il virus.

Ci sono poi altre categorie di virus come ad esempio quelli che infettano l'MBR. I parassiti oggi non sono più utilizzati anche se ne girano ancora centinaia. La loro disinfezione diventa ovviamente semplice dovendo solo eliminare tutti i file infetti. Nel caso invece dei virus appena citati che infettano l'MBR si hanno comportamenti nettamente differenti. L'MBR (Master Boot Record) è il primo settore dell'hard disk ed è il settore che viene letto direttamente dalla scheda madre per trovare il sistema operativo (ad es. Windows). Quindi ogni sistema operativo (Windows, Linux. MacOSX, ecc.) inseriranno nell'MBR il loro loader o caricatore, responsabile del caricamento del sistema. Quando l'MBR viene infettato dal virus, il sistema che partirà sarà automaticamente infetto e qualsiasi operazione si faccia poi all'interno del sistema, la si farà sotto l'influenza del virus stesso.

I virus comunque sono tutt'altro che pochi e le famiglie a cui appartengono li distinguono per determinati comportamenti. Ora elenchiamo alcune delle famiglie di virus più conosciute specificandone le caratteristiche generali.


-- Trojan Horse --

Questi cavalli di Troia, più comunemente definiti semplicemente "Trojan", non possono essere classificati come veri e propri virus, in quanto non hanno in genere un comportamento autoriproduttivo. Invece si nascondono all'interno di altri programmi o più comunemente di file compressi e una volta in esecuzione si occupano di aprire delle vulnerabilità sul computer in cui operano, rendendo quest'ultimo preda del mondo esterno. A volte potrebbe esserci il cracker (e non hacker) dietro questi prodotti che sfrutta queste vulnerabilità per operare indisturbato sul computer remoto. Altre volte più frequentemente le vulnerabilità vengono impiegate da virus veri e propri per entrare nel pc. Questo spiega perché molte volte ci sono utenti che dopo aver rimosso il virus si chiedono come mai questo continua a tornare, la spiegazione sta proprio in questi trojan che dall'interno continuano a lasciare questa vulnerabilità aperta per altri virus.


-- Virus Polimorfici --

Questa categoria di virus ha la proprietà di saper criptare la propria struttura o il proprio codice. Tale precauzione garantisce un cosiddetto "anonimato" all'antivirus, in quanto questo stesso non riesce ad individuarne la presenza dal momento che la struttura non è in chiaro come in precedenza. Il polimorfico decripta il suo codice attraverso una routine, al termine dell’operazione esso ha ripreso le sue sembianze originali e può quindi svolgere il suo lavoro. La routine necessaria a questo scopo deve prendere il controllo del computer per poter decriptare il codice di cui è composto il virus, dopodiché la routine stessa cede il controllo del PC al virus ora decriptato e in grado di funzionare egregiamente. L’operazione più immediata naturalmente è quella di cominciare a riprodursi liberamente. Originariamente questo tipo di virus era un  NON-polimorfico, vale a dire che usava la stessa medesima routine per autodecodificarsi anche fra un’infezione e l’altra. Ovviamente quando un procedimento è immutato, è relativamente facile riconoscerlo e inibirlo al suo scopo. Il virus polimorfico invece muta la routine di decodifica ad ogni singola infezione. In questa maniera la sua firma è diversa di volta in volta. Non ci vuole un genio per capire che un antivirus in queste condizioni non ha lavoro facile. Molti “profani” di informatica a questo punto chiedono come possa fare un virus ad auto modificarsi. La spiegazione si articola in poche delucidazioni: il polimorfico cambia la sua firma utilizzando un generatore di “codice macchina” chiamato “motore di mutazione”. Come esistono generatori casuali di password ad esempio così all’interno di un file si può nascondere un generatore di codice macchina, che altro non sarebbe che il codice o programma in esadecimale per ottenere lo scopo desiderato. Questo motore di mutazione usa un generatore di numeri naturali casuali e un algoritmo matematico. Anche se questo concetto è abbastanza semplice ottiene però il suo effetto. Un programmatore di virus quindi può utilizzare un motore di mutazione per cambiare o trasformare ogni virus con poche modifiche al codice facendo in maniera che il virus chiami il motore di mutazione ancora prima di copiare sé stesso. In anni recenti si è affinata una tecnica tale che il motore di mutazione crei l’algoritmo direttamente utilizzando i come chiave il nome dell’utente proprietario del pc, oppure il numero seriale. In epoche più recenti i virus usano criptare la loro “firma” con algoritmi che partono dal nome della macchina, lo stesso che lo identifica in rete sotto gestione del protocollo MicroSoft NetBIOS. Uno di questi era il W32.Magister.B. Tale virus criptava una parte del suo stesso codice con il nome della macchina attraverso un algoritmo specifico messo a punto dal creatore stesso del virus. Per poterlo individuare, un antivirus, operava scansioni di ricerca nelle stringhe oppure l'AV stesso doveva essere dotato di  un sistema di identificazione a crittografia. Le scansioni Euristiche hanno efficacia solo quando all'interno del codice si trovino stringhe di mutazione che fanno riferimento a comandi di base come formattazioni a basso livello, modifica, cancellazione o sovrascrittura di file di sistema o modifica di alcun genere ai file del registro.

  
--  Virsu Stealth (scaltri o invisibili) --

Un virus di tipo stealth opera modificando i settori del boot o i file di sistema ma nascondendo queste modifiche al sistema stesso, restituendo un risultato che il sistema ritiene “accettabile”. Questo genere di virus sono quasi impossibili da rilevare dal sistema operativo in quanto essi risiedono direttamente nella memoria, in maniera tale che hanno la priorità su qualsiasi operazione venga compiuta manipolando a loro uso e consumo, si trattasse anche di un tentativo di rilevamento di qualche AV. Il primo virus scritto ad hoc per MS-DOS fu il BRAIN. Si trattava in effetti di un virus stealth. Il Brain si inseriva nei settori del boot avendo quindi azione già al momento dell'avvio del sistema operativo. In questo regime il virus può monitorare qualsiasi operazione di Input o Output sull'Hard Disk e opera un redirect del sistema operativo ogni qual volta esso provi a leggere un settore di boot sul quale il virus detiene la priorità (infetto). Il sistema operativo DOS utilizzava per gestire i servizi, l'interrupt DOS21H, quindi il virus BRAIN aveva come priorità la cattura di questo interrupt. Quindi se l'utente dovesse digitare un comando che potrebbe permettere all'AV di rilevare l'infezione, il BRAIN ridirige il servizio in un'area di memoria che fornisca al sistema informazioni false.  


-- Virus Slow (lenti) --

Si tratta di un genere di virus che usano corrompere solamente dei file nel momento in cui questi vengono utilizzati dall'utente (solitamente si tratta di file COM). Finché il sistema o l'utente non utilizza quel determinato file questo rimane intatto. C'è altresì da aggiungere che il file originale non viene corrotto, solo il file copiato verrà alterato. Questa operazione rende il virus molto difficile da trovare, in quanto ad un check di presenza non si noteranno cambiamenti nei file originali e quindi non si leggerà nessuna firma all'interno di file che non sono stati modificati. Anche nel caso in cui si acceda ad una formattazione questo genere di virus infetta i settori del boot del nuovo dispositivo formattato in modo tale che qualsiasi operazione venga fuori da quel dispositivo verrà corrotta dal virus che continuerà ad operare esattamente come ha fatto sin ora. Le soluzioni migliori le avremo con dei verificatori di integrità, questi strumenti infatti controllano il checksum del file e una volta corrotto dal virus il file riporterà un'alterazione in rapporto al suo checksum. I verificatori di integrità, o integrity shell, sono preposti a controllare proprio la creazione di nuovi file. Quindi possono ben monitorare la possibile infezione del file da parte del virus. Un altro metodo di verifica consiste nel “decoy launching” che altro non è che un software di controllo che crea dei file  COM o EXE il cui contenuto (noto solo al software di controllo) viene utilizzato proprio per determinare se un file è stato alterato da un intervento del virus di tipo slow.  


-- Virus Retro --

Ecco un virus veramente subdolo, infatti il Retro virus sfugge ai più noti controlli antivirus (av) attaccando proprio l'av stesso. Questo è possibile in quanto chi progetta virus ha una notevole conoscenza dei vari av in circolazione sapendo molto bene come agiscono per proteggere il computer. Conoscendo un software antivirus ovviamente se ne conoscono anche le vulnerabilità. È proprio su queste vulnerabilità che fa leva il Retro e impedisce il corretto lavoro dell'av. I modi sono molteplici, a volte potrebbe cercare un file dell'av che contiene le firme di tutti i virus in circolazione come abbiamo visto all'inizio. Cancellando quel file l'av non ha più nessun riferimento per riconoscere non solo il Retro ma nemmeno tutti gli altri tipi di virus. Un altro sistema un po' più sofisticato consiste nel cercare direttamente il database che contiene le informazioni necessarie al verificatore di integrità del software e cancellare il suddetto database. Un altro sistema adottato dai Retro è quello di rilevare l'attivazione dell'av e nascondendosi all'interno di esso ne bloccano l'esecuzione o prima che entri in azione richiamano delle routine distruttive che mirano a cancellare delle cartelle o formattare il disco o addirittura distruggere i link che concatenano i cluster del disco in modo tale che qualsiasi cosa sia stata salvata su quel disco risulterà completamente inutilizzabile. È interessante il fatto che in questo caso è del tutto inefficace qualsiasi tool per il recupero dei file cancellati, questo significa che tutto ciò che era stato memorizzato sarà perso per sempre irrimediabilmente. Solitamente gli av con  scansione euristica sono più efficaci in questo caso, in quanto se dovesse entrare in azione qualche eventuale subroutine verrebbe comunque bloccata (per scansione euristica si intende quel tipo di scansione che non si basa su un database di definizione virus ma su quello che succede di sospetto sui file all'interno del sistema operativo, l'unico inconveniente è che potrebbe essere seccante vedersi avvertire ogni minima operazione che si faccia). 


-- Virus Multiparte (o ad attacco multiplo) --

Questo genere di virus non si limita a infettare dei file ma corrompe anche l'MBR (Master Boor Record) che è il primo settore del disco responsabile dell'avvio del sistema operativo. Non limitandosi a infettare solo i file, questi virus si garantiscono il loro dannoso operare facendo in modo che ad ogni avvio del sistema (per opera appunto dell'MBR), venga avviato anche il codice distruttivo. Una volta attivo, poi, il virus infetterà ogni programma che verrà eseguito (abbiamo detto infatti che gli eseguibili vengono infettati). Ci troviamo davanti veramente a un virus che agisce su vari fronti, ma c'è di più: esiste un terribilissimo Multiparte chiamato ONE-HALF che si comporta come uno Stealth e come un polimorfico.  


-- Virus Armored (o corazzati) --

Gli Armored si autoproteggono attraverso un loro codice che impedisce (o quasi) l'individuazione, nega il disassemblaggio (necessario all'av per poter bloccare l'operato nocivo) e la compressione (la compressione del codice dei virus è necessaria per poterlo archiviare nella cosiddetta quarantena, perché un virus compresso, o zippato, diventa del tutto inoffensivo. Vi sono casi in cui questo genere di virus usa nascondersi all'interno di un codice che simula un operato in un'altra area del disco, in tal modo l'av si concentrerà nella parte sbagliata del disco rispetto a dove sta avvenendo il danneggiamento. Il WHALE era uno dei più conosciuti Armored.  


-- Virus Companion --

Abbiamo già visto in precedenza dei primi tipi di virus che infettavano file eseguibili o comandi (.EXE o .COM). Ci troviamo invece qui di fronte a un tipo di virus che crea un file compagno di ogni file infettato con lo stesso nome ma con estensione diversa (es.: WIN.COM se infetto avrà un compagno chiamato qualcosa come WIN.PIF). Di solito a generare virus Companion sono i virus PHAGE che altro non sono che programmi che alterano altri programmi o altri database. La modifica che operano è solitamente una vera e propria sostituzione del codice originale con un codice personalissimo che opererà secondo le volontà del suo creatore, quindi la sostanziale differenza consiste in questo: invece che attaccarsi in coda al file eseguibile (come abbiamo visto all'inizio) questi SOSTITUISCONO in toto il codice originale con altro di chiara pericolosità. Va detto inoltre che in aggiunta a questa pericolosità i PHAGE (che generano i Companion) una volta infettati i file non si limitano alla sostituzione del codice ma cercano di distruggere tali file.  


-- Virus Worm --

Spetta a questo virus il primato di essere il primo ad aver raggiunto Internet, da dove poi riuscì ad infettare altri computer connessi. Il principale scopo del Worm è quello di automoltiplicarsi decine e decine di volte nella memoria stessa del pc, in questa maniera il pc diviene sempre meno utilizzabile quanto più si intasa di codici che non alcuno scopo se quello di bloccare le macchine che infettano. In genere sono questi virus che quando raggiungono livelli di intasamento particolari causano errori di violazione o di protezione generale (schermate blu e via dicendo). Il successo di questo virus è dovuto più che altro alla sua capacità di infettare altri pc attraverso la rete, sia essa Internet o una qualsiasi rete locale. Va da sé che questa capacità lo rende diffondibile in modo rapidissimo. La sua capacità di infezione va attribuita a varie vulnerabilità dei sistemi operativi (Microsoft detiene un buon primato per le sue vulnerabilità), vulnerabilità dei protocolli di rete (ricordiamo che Microsoft, che è il sistema più attaccabile, non usa protocolli TCP/IP standard ma usa un protocollo TCP/IP fatto in casa), vulnerabilità dei client di posta elettronica (ricordiamo che Outlook Express di Microsoft è stato classificato come il client meno sicuro che ci sia), vulnerabilità dei browser (ricordiamo che Internet Explorer di Microsoft è ancora considerato il browser meno sicuro che ci sia) – [Per vulnerabilità varie di tutti i sistemi operativi rimando al sito validissimo http://www.securityfocus.com]. Il Worm per sua natura non modifica nulla, quindi non si comporta come altri virus che per necessità devono cambiare file di sistema o settori strategici del disco. Il Worm dal canto suo utilizza quelle funzioni del sistema operativo che permettono il controllo remoto del pc. Questa peculiarità fece sì che nel 1998 i Worm fossero destinati ai soli sistemi Unix, in quanto in tali sistemi sono sempre attive delle funzioni che ne permettono il controllo da remoto. In anni più recenti, però, abbiamo visto crescere esponenzialmente attacchi riusciti su sistemi diversi da Unix. Questa responsabilità va attribuita a certi determinati software tuttofare come Microsoft Outlook che hanno favorito il contagio e la diffusione di questi virus ormai quasi esclusivamente costruiti ad hoc espressamente per Microsoft.


-- Virus Specifici per reti --

I computer connessi in una rete, siano essi server o client, possono essere attaccati da vari tipi di virus, come ad esempio virus per file o per macro, è però impossibile infettare un computer nel MBR da un virus preso in rete. Questo è dovuto al fatto che non ci sono scambi di operazioni fra settori del disco da pc a pc, o meglio: nessun computer può eseguire un'operazione su disco a livello di settore su un altro pc. L'alloggiamento dei file nel loro trasferimento in rete avviene su di una sorta di file system virtuale che emula un file system reale, in genere questo file system virtuale viene chiamato NFS (Network File System). L'NFS sarà poi responsabile dell'alloggiamento vero e proprio dei file sul pc locale. Come avviene dunque un'infezione via rete? Il procedimento è pressapoco questo: Un utente invia (volontariamente o involontariamente) un file infetto, questo file infetto viene ricevuta dal secondo pc che una volta archiviato sul proprio hard disk sarà preda del lavoro rovinoso del virus residente nel file infetto. Una volta iniziato il suo operato, il virus si muove tranquillamente nella rete autocopiandosi su tutti i computer, solitamente quando il file infetto arriva al server è ormai sicuro che il virus contagerà tutti i computer connessi a quella rete. Nella maggior parte dei casi gli utenti non si rendono nemmeno conto che sono connessi al server o ad altri pc attraverso il lavoro dannoso del virus.  


-- Virus a Macro --

Anche in questo caso si tratta comunque di un virus per reti e possiamo definirlo uno dei virus più pericolosi per reti. Il pericolo maggiore consiste nel fatto che questi virus prescindono dal sistema operativo in cui vengono a trovarsi proprio come si comporta Internet. Essi infatti non sono legati a file eseguibili (prerogativa di Microsoft), o a file di codice oggetto (come i maggiori linguaggi oggi in uso quali Java, C, C++, ecc.) ma si tratta invece di codici dannosi annidati dentro file di dati leggibili quindi da qualsiasi piattaforma. Per capire meglio questo concetto dobbiamo prendere in considerazione la natura di una Macro. Solitamente si tratta di un piccolo programma scritto in un linguaggio proprio dello strumento che lo crea ad esempio una Macro di MS-Word è una piccola porzione di codice, scritta in genere in visual basic, che contiene le informazioni più importanti del file che accompagna, quali il formato del file, l'autore, le impaginazioni, ecc... Ecco dunque che i creatori di questi virus scrivono questi codici dannosi in maniera tale che una volta entrati nella Macro del file di dati questo stesso virus possa duplicarsi liberamente. L'operazione più frequente di un virus a Macro è quella di cancellare il file infetto rendendolo praticamente illeggibile e irrecuperabile. La potenza di questi virus è data proprio dal fatto che utilizzano lo stesso linguaggio di programmazione del file che viene infettato e quindi non fanno differenza fra sistema operativo e sistema operativo. Fra le operazioni che questi evoluti linguaggi possono fare vi sono ad esempio rinomine di file, cancellazione di file, modificare i file stessi. Essendo i virus a Macro scritti nello stesso linguaggio è logico dedurre che tali virus possono fare la stessa cosa. Si consiglia comunque di dubitare di file di tipo .VBA (Visual Basic for Application) e .VBS (Visual Basic Script). Se consideriamo il fatto che la suite MS-Office è scritta tutta in Visual Basic possiamo anche capire che un virus scritto nel medesimo linguaggio sarà in grado di infettare uno qualsiasi dei file di suddetta suite (Word, Excel, PowerPoint, Access, Publisher e altri). Così adesso capirete perché quando stiamo per aprire un file che contiene delle macro il computer si ferma e ci chiede conferma.  


Abbiamo così concluso una rapida panoramica del lavoro e dell'attività dei principali virus in circolazione. Questo ci dovrebbe aiutare a capire meglio quali operazioni potrebbero essere più a rischio di altre e a come evitare di cadere in errori grossolani che faciliterebbero l'infezione da virus. Amo considerare questo un primo passo per tenere più a bada la diffusione dei virus. La conoscenza dell'argomento aiuta sempre a fare la cosa giusta, e contribuisce a limitare questa invasione ormai “impossibile” di questi noiosissimi fastidi. A volte viene da pensare cosa possiamo fare individualmente per contribuire a rendere la rete più pulita e spesso ci si ritrova a sconsolarsi essendo uno su miliardi, ma a me piace citare un'illustrazione per capirne il concetto: Quando un giorno la foresta prese fuoco tutti gli animali scapparono spaventati, solo il colibrì faceva avanti e dietro con un goccino d'acqua nel becco. L'elefante gli chiese: “Ehi tu! Che credi di fare?” e il colibrì rispose: “...la mia parte!”


Gabriele De Luca
A.K.A.: DoctorWho

Italiano