Emulare per distruggere

Prima di tutto, ricapitoliamo…

Il 100% di protezione non esiste. Ormai lo saprete a memoria. Anche le misure di sicurezza dell’antivirus più avanzato possono essere scavalcate durante attacchi professionali. Ma questa non è la peggiore delle notizie. Ciò che è peggio è che gli antivirus di bassa qualità vengono bypassati con maggiore frequenza.

Se volessero, i criminali professionisti potrebbero hackerare qualsiasi cosa; per fortuna, sono in pochi a poterlo fare. Nella maggior parte dei casi, gli attacchi sono realizzati da semplici programmatori spinti da avidità o dal desiderio di scappare con un bel malloppo (molti sono già dietro le sbarre). Questi criminali molto spesso non hanno  sufficienti abilità per hackerare i sistemi di difesa più avanzati, ma sono più che in grado di penetrare nei computer senza  protezione o con una protezione che fa acqua da tutte le parti. E nel mondo, purtroppo, di computer in queste condizioni ce ne sono un’infinità.

L’idea di base è piuttosto semplice:

Maggiore protezione, maggiore difesa. Sembra un concetto abbastanza ovvio, ma implica che se l’attacco è condotto a livelli professionali, vuol dire che può superare barriere di difesa estremamente elevate.

Con oltre due miliardi e mezzo d’internauti, ovvero di potenziali vittime, la logica porta a una conclusione.

Ai cybercriminali non interessa entrare in possesso d’informazioni protette da sistemi di sicurezza estremamente difficili da valicare (soprattutto perché spesso si tratta d’informazioni “scomode“, che è meglio non sapere). È molto più semplice, e redditizio, puntare su obiettivi concreti, come la rete del vicino, dove le difese non sono così alte e il bottino è a portata di mano.

In sostanza, la situazione si prospetta così: per un hacker di medio livello non ha senso impelagarsi in un piano difficile da realizzare rivolto a obiettivi troppo importanti. E non ha neanche senso passare indistintamente da Windows a Mac. È molto più produttivo “bombardare a tappeto”, colpendo il maggior numero possibile di vittime mediante attacchi non mirati e soprattutto che non danno grandi grattacapi.

Più efficace è la protezione, minore è l’interesse da parte di chi sferra l’attacco. Non vale la pena impegnarsi nel trovare una breccia in un sistema ben protetto, di sicuro c’è un vittima più vulnerabile da qualche altra parte.

Alla luce di quanto detto fino ad ora, voglio parlarvi di una funzione che farà allontanare i cybercriminali dal vostro computer, puntando altre vittime. È arrivato il momento di sapere qualcosa in più su quella lettera K della barra degli strumenti, che vi protegge da future minacce attraverso una procedura chiamata emulazione.

KIS 2013

Ho usato l’espressione qualcosa in più perché ho già parlato di emulazione in questo blog. A chi non avesse letto il precedente post in merito, suggerisco di darci un’occhiata. Ma per venire incontro a quelli di voi che non hanno nemmeno un minuto da perdere, faccio un riassunto.

In breve, l’emulazione è un metodo che serve a individuare automaticamente nuovi malware, analizzando il comportamento di programmi sospetti senza avviarli, in modo da non danneggiare il computer. Ma come è possibile analizzare un programma senza prima lanciarne l’avvio? Proprio attraverso l’emulazione. Si emula l’avvio di un programma senza che ciò venga fatto realmente. L’emulatore crea una specie di ambiente virtuale dove si lancia il programma. Provate a pensare all’analisi di un virus umano in una provetta (ad esempio quello di un ceppo d’influenza), e confrontate questa procedura con l’analisi dello stesso virus nel corpo di un paziente. È molto meno pericoloso il primo approccio, sia per un computer che per l’essere umano ovviamente.

Grazie all’emulazione, sono felice di annunciare che il malware non ha più segreti per noi! Beh, più o meno… c’è un piccolo “ma” che rovina tutto.

I programmi malware più raffinati (e quindi più pericolosi) hanno imparato a riconoscere l’ambiente “in provetta” in cui si trovano e riescono a cambiare automaticamente il proprio obiettivo d’attacco fino a trovare un punto debole nella linea di difesa.

Siamo di fronte, quindi, a trucchi anti-emulatore.

Facciamo qualche esempio: lanciare funzioni non documentate, controllare l’autenticità dell’ambiente rintracciando le modifiche nel registro del processore, analizzare i codici d’errore, ricercare nella memoria un codice ben preciso, utilizzare “bombe intelligenti” che fanno girare a vuoto l’emulatore… e ce ne sono tanti altri.

Se il trucco funziona, il malware capisce di trovarsi in un ambiente di emulazione e si trasforma in un programma apparentemente inoffensivo, per poi tentare nell’ombra di eludere l’emulatore utilizzando diversi metodi.

Da anni è intrapresa una battaglia corpo a corpo su questo fronte, una sorta di tiro alla fune tra le due parti, che continuano senza sosta a spremersi le meningi per prendere l’avversario alla sprovvista. Data la difficoltà nel raggiungere una svolta in questo conflitto e in seguito a un enorme dispendio di energie e risorse, molti esperti sono giunti alla conclusione che l’impiego dell’emulazione nella tecnologia antimalware ormai ha i giorni contati. Tuttavia, abbiamo trovato un modo per avere l’ultima parola sulla questione!

Per far sì che l’emulazione sia davvero efficace, bisognerebbe creare un ambiente di prova perfettamente identico a quello originale. Ciò in teoria sarebbe possibile, ma è  un processo estremamente costoso e difficile da mettere in pratica. Per quale motivo? Essenzialmente perché dovrebbe essere sviluppato un sistema operativo esattamente uguale all’originale, da lanciare ogniqualvolta ci si trovi di fronte a un file sospetto. Immaginate quante risorse del sistema sarebbero necessarie per un’operazione di tale portata!

Per questo abbiamo deciso di aggirare il problema.

La grande maggioranza dei programmi malware agiscono a livello utente del SO. Tuttavia, per le chiamate di sistema (ad esempio per leggere/scrivere un file), essi interagiscono con il kernel a livello di sistema operativo. C’è una grande differenza tra questi due livelli: i programmi a livello utente possono vedere i cambiamenti che ci sono nell’ambiente (e possono quindi mettere in pratica i trucchi anti-emulazione di cui abbiamo parlato prima), cosa che non è possibile a livello di sistema.

Di conseguenza, abbiamo rivolto tutte le nostre strategie di emulazione antimalware a livello di sistema; per quanto riguarda il livello utente, cerchiamo di raggiungere il maggior grado di somiglianza con l’ambiente originale. Il risultato è una soluzione praticamente perfetta che rende la nostra “provetta” invisibile!

Entrando in dettaglio, emuliamo correttamente l’esecuzione di tutte le chiamate alle funzoni API e ci muoviamo a livello di sistema per un’analisi antimalware più profonda. In questo modo, il malware a livello di sistema crede, a torto, di poter agire impunemente e sferra quindi i suoi attacchi. Bingo!

Purtroppo, come accade per altre tecnologie, il nostro super efficace (e super stabile) emulatore rallenta il sistema; per questo abbiamo aggiunto un acceleratore di hardware che bypassa l’emulazione su software. Non posso dare ulteriori dettagli perché stiamo ancora lavorando sul brevetto. Posso solamente dirvi che abbiamo progettato un insieme di tecnologie che lavora più velocemente rispetto a un emulatore tradizionale. Due volte bingo!

 

LEGGI I COMMENTI 0
Scrivi un commento