A seguire la notizia dell’acquisizione di Sana Security da parte di AVG vediamo di capire un po’ meglio quale è e cosa implica la nuova tecnologia che verrà implementata da AVG.

Prima dell’avvento dei worm a rapida diffusione attraverso il web, la tecnologia base di tutti i software antivirus – quella basata sulle impronte virali – offriva una dubbia efficacia preventiva e proattiva contro la media dei virus per computer. In altre parole, in passato, i vendor di prodotti antivirus erano in grado di rilasciare database di impronte virali aggiornati per la maggior parte dei virus prima che questi potessero diffondersi in modo esteso. Questo a causa del fatto che i virus tradizionali si diffondevano ad una velocità limitata – solo quando gli utenti si scambiavano effettivamente dei file infetti – nell’ordine di giorni o di settimane. Di conseguenza, nella maggioranza dei casi, i programmi antivirus bloccavano l’infezione iniziale, salvaguardando buona parte dei computer dall’infezione ed evitando costosi e fastidiosi tempi di ripristino dei pc.

Oggi, al contrario, data l’estrema velocità con i quali worm e rischi di altra natura si sviluppano nella rete, le infezioni riescono a bypassare i tradizionali antivirus e riescono ad insediarsi all’interno dei computer ben prima che i produttori degli antivirus riescano a distribuire i dovuti aggiornamenti delle impronte virali che sarebbero in grado di individuarle. In questi casi ci si aspetta che il funzionamento dell’antivirus cambi : da strumento di protezione preventiva a strumento di pulizia (cosa che avviene con successo molto raramente).

Chiaramente i tradizionali antivirus sono meno efficaci contro queste infezioni a rapida diffusione. La domanda allora è : esiste una tecnologia che possa trasformare le tradizionali soluzioni antivirus dal desiderato ruolo di strumento di pulizia di nuovo ad un sistema di protezione preventiva. Verosimilmente la risposta è “si” e questa tecnologia si chiama blocco comportamentale (behaviroal blocking).

Impronte virali e analisi Euristica – Sono ancora efficaci ?

Come detto i tradizionali software antivirus rilevano il codice malevolo, cercando all’interno dei file sottoposti a scansione, centinaia di migliaia di possibili impronte virali. Ogni impronta virale è una breve sequenza di byte estratta dal corpo di uno specifico virus. Se viene trovata una determinata impronta virale l’intero contenuto del file viene segnalato come infetto. Tuttavia, dal momento che le impronte virali sono basate su sequenze di codice noto, questa tecnica non è assolutamente efficace nel rilevamento di virus nuovi/nuovissimi.  

A differenza della ricerca di impronte virali, l’analisi euristica rileva le possibili infezioni tramite un’analisi generale della struttura del programma, delle istruzioni che contiene e di altri dati contenuti nel file. In questo modo la scansione euristica cerca di inquadrare le apparenti intenzioni del programma controllando la sua apparente logica di esecuzione. Questa tecnica è in grado di rilevare anche infezioni non ancora conosciute dal momento che effettua una ricerca di una logica sospetta piuttosto che di una sequenza di byte già conosciuta. Per cercare di individuare le infezioni più complesse, i moderni motori di scansione utilizzano spesso una tecnica di emulazione della CPU (anche nota come “sand-box”) in unione con la semplice ricerca di byte. Questi software, in pratica, eseguono una limitata emulazione del software sottoposto a scansione in un ridotto computer virtuale per cercare di portare alla luce una logica di esecuzione nascosta. Questa emulazione, tuttavia, è estremamente limitata (spesso meno di 1000 istruzioni vengono emulate) e il programma in esame in realtà non viene eseguito dalla vera CPU e non viene in contatto con file sensibili del sistema operativo. 

Il grande vantaggio di queste due tecniche combinate (ricerca impronte e analisi euristica) è dato dal fatto che anche un tentativo di esecuzione del possibile programma infetto non mette a rischio il sistema operativo. Lo svantaggio, d’altro canto, è dovuto al fatto che, non potendo eseguire completamente il codice malevolo all’interno di un vero ambiente operativo per poter esaminare tutti gli effetti, ancora una volta le infezioni più recenti non possono essere validamente rilevate. Inoltre gli sviluppatori di worm sanno bene come nascondere la logica dei loro programmi inserendo cicli di istruzioni che possano confondere l’analisi euristica. E’ qui che entra in gioco il blocco comportamentale.

Blocco Comportamentale

A differenza dei tradizionali scanner antivirus, il blocco comportamentale si integra all’interno del sistema operativo del computer e tiene sotto costante controllo il comportamento dei programmi. In questo modo è possibile impedire o bloccare comportamenti non desiderati da parte di codice potenzialmente dannoso prima che queste azioni vengano effettivamente applicate e quindi prima che il sistema sia stato effettivamente infettato. Tra i comportamenti tenuti sotto controllo, solo a titolo di esempio, vi possono essere :

  1. Tentativi di aprire, visualizzare, modificare i file;
  2. Tentativi di formattazione dei dischi o altre operazioni non reversibili;
  3. Modifiche alla logica dei file eseguibili, di script o di macro;
  4. Modifiche di cruciali impostazioni del sistema come per esempio, le voci di avvio automatico;
  5. Attività di script sulle e-mail, nei programmi di messaggi istantanei (Skype, Messenger, ICQ);
  6. Avvio di comunicazioni di rete.
  7.  

     

     

Se il software di blocco comportamentale rileva quello che potrebbe essere un comportamento dannoso per il computer non appena un programma viene eseguito, potrà bloccare immediatamente l’azione incriminata ed interrompere l’esecuzione del programma. Indubbiamente questo è un vantaggio rispetto alle tradizionali tecniche di ricerca delle impronte virali e di analisi euristica. Se da un lato esistono, infatti, miliardi di modi in cui è possibile riorganizzare o nascondere le istruzioni di un virus o di un worm, la gran parte delle quali può sfuggire  alla ricerca di una impronta o all’analisi euristica, con il blocco comportamentale il virus è obbligato ad uscire, per così dire, allo scoperto, facendo richieste ben precise al sistema operativo per potersi attivare. In questo modo, dato che il blocco comportamentale è progettato proprio per intercettare questi tipi di richieste, il virus può essere individuato indipendentemente da quanto accorto sia stato il virus-writer nell’offuscare il suo codice o da quanto intricata e incomprensibile possa apparirne la logica. 

Ci sono tuttavia degli inevitabili svantaggi nell’adozione di questa tecnica di protezione. L’efficienza del blocco comportamente implica che il software malevolo venga effettivamente eseguito sul computer e questo potrebbe comunque causare danni. Per esempio un virus potrebbe spargere un numero enorme di file apparentemente innocui nel computer prima di intraprendere un’azione che possa essere intercettata e considerata dannosa: in questo caso, anche se l’effettiva infezione è stata evitata, potrebbero verificarsi casi in cui l’utente non trovi più i suoi file causando perdita di produttività.  Ecco perchè è sempre preferibile tentare di rilevare le possibili infezioni attraverso tutti e tre i metodi (impronte, euristica, comportamento) se possibile ed anche perchè la distribuzione di aggiornamenti di impronte virali non sparirà mai.

Un altro, intuibile, svantaggio è dato dal degrado delle performance del computer. La protezione in tempo reale dello scanner dovrà ora impegnare la CPU per un numero maggiore di cicli dal momento che le attività da eseguire saranno maggiori.

Sistemi basati su Policy e su Esperti

Gli esistenti sistemi di blocco comportamentale possono essere divisi in due categorie. Quelli basati su policy e quelli basati su esperti.

I primi consentono agli amministratori del computer (o della rete) di specificare delle policy di blocco di fatto indicando quali comportamenti sono considerati leciti e quali no. Ogni volta che un programma lancia una richiesta al sistema operativo ospite, il software di blocco comportamentale intercetta la richiesta, consulta la policy, e decide se bloccare o meno la richiesta. Per esempio una policy per  le applet java potrebbe comportare le seguenti opzioni:

Descrizione Operazione  Bloccare ?
Consentire apertura file : Si
Consentire eliminazione file : Si
Consentire apertura connessioni di rete : Si
Consentire accesso a file nella directory system: No

Questi sistemi incontrano spesso il favore degli amministratori perchè la logica è trasparente e sono facili da gestire. Tuttavia questa impostazione presta il fianco a numerosi falsi positivi ed ha un impatto devastante sulla produttività dei client perchè blocca, in egual modo, sia le applet legittime che quelle malevole. Inoltre sono pochi gli amministratori che comprendono appieno l’implicazione di specifici blocchi, per esempio, d’accesso ai file di sistema: come può un amministratore conoscere quali e quanti programmi leciti possono accedere ai file di sistema e quali, invece, siano effettivi software malevoli ?

A differenza della tecnica basata su policy, la tecnica degli esperti utilizza modalità meno trasparenti. In questo ambito dei tecnici esperti hanno analizzato intere classi di codici malevoli ed analizzato il loro comportamento per poter definire quali siano i comportamenti da bloccare. In questo modo comportamenti potenzialmente dannosi possono essere consentiti in alcuni casi mentre in altri devono essere bloccati.  Per esempio un esperto potrebbe sapere che l’80% dei codici malevoli cerca, come prima cosa, di modificare le voci di avvio automatico del registro prima di accedere ai file di sistema: di conseguenza è possibile definire un comportamento da bloccare quello che si verifica quando un codice tenta di accedere ai file di sistema dopo aver effettuato una modifica al registro.  Una regola di questo tipo lascia meno spazio ai falsi positivi che potrebbero essere generati da programmi legittimi. D’altro canto l’amministratore di rete o del pc deve fare un atto di fede nell’accettare che le regole di blocco siano state effettivamente generate con criterio.

Obiettivi del blocco comportamentale

Durante la progettazione di un sistema di blocco comportamentale gli ingegneri devono considerare differenti tipi di regole per ogni tipo di codice malevolo che è possibile incontrare. 

Blocco dei virus parassiti

I virus parassiti sono programmi che si auto-replicano attaccandosi ad altri programmi. Quando un programma infetto viene eseguito il virus prende il controllo e tenta di inserire le proprie istruzioni in un altro file eseguibile. In questi casi è necessario osservare le modifiche all’interno di un file eseguibile creando, ad esempio, delle regole di blocco per comportamenti che impediscano la modifica delle intestazioni dei file.

Blocco worm

I Worm si diffondono generalmente tramite e-mail, condivisioni di rete o altre vulnerabilità. Per bloccare questi tipi di infezioni il software di blocco comportamentale deve inserirsi tra il programma malevolo ed i possibili vettori di distribuzione. Possibili approcci sono dati dal blocco nell’utilizzo di API e-mail per inviare codice, dal blocco delle comunicazioni di rete per programmi sconosciuti e dal blocco delle condivisioni di rete per la copia di codice eseguibile su altri computer.

Blocco dei cavalli di Troia (trojans)

I trojan sono probabilmente i più difficili da bloccare senza generare falsi positivi perchè questi tipi di infezione non sono caratterizzati da comportamenti facilmente identificabili come i virus e i worm.  Qui i possibili comportamenti da analizzare e da classificare come sospetti includono modifiche al registro di sistema, accessi anomali a documenti o altri dati (“perchè questo programma cerca di accedere a questo foglio elettronico ?”), blocco di programmi sconosciuti sulla rete ecc. Il problema è che queste operazioni sono anche caratteristiche di molti programmi leciti e quindi è estremamente difficile dividere i programmi malevoli da quelli che invece non hanno intenzioni dannose.

Quali miglioramenti ?

I sistemi di blocco comportamentale si propongono di offrire un ulteriore livello di controllo nella sicurezza dei computer. Ma perchè non hanno ancora un grande successo ?

  1. Falsi positivi. La reputazione nei confronti dei falsi positivi è ancora scarsa. Se molti amministratori di rete preferiscono gestire un falso positivo piuttosto che trovarsi con una macchina da ripulire altrettanto non si può dire per il mercato consumer che, al contrario, non sa come comportarsi davanti a situazioni che non conosce.
  2. Sovraccarico dei sistemi.  Il blocco procedurale si inserisce nel sistema operativo per intercettare le richieste che le applicazioni inviano al sistema operativo stesso. Questa integrazione ha un costo in termini di performance : un secondo driver installato su un pc dove è già presente una protezione antivirus in tempo reale comporta un notevole degrado delle performance.
  3. Difficoltà di gestione. Come visto sopra un sistema basato su policy potrebbe creare non pochi mal di testa agli amministratori di rete mentre un sistema basato su esperti (che vedrebbe il suo successo legato all’affidabilità del vendor che offre un sistema di regole preconfezionato) non gode ancora di grandi reputazioni.
  4. Costi : rinunciare ad una tradizionale protezione antivirus non ha senso ed anzi è sconsigliato. Il blocco comportamentale è, come detto, un layer aggiuntivo e come tale comporta licenze software aggiuntive.