Vi siete mai chiesti perché i virus informatici vengono chiamati, per l’appunto, “virus”? A dire il vero, al giorno d’oggi la parola virus è utilizzata in maniera impropria per riferirsi a “praticamente qualsiasi tipo di programma dannoso o per descrivere qualsiasi azione dannosa di un programma su un computer”. Ho preso questa definizione dalla nostra enciclopedia.
In realtà (sempre prendendo spunto dalla nostra enciclopedia), “in senso stretto… un virus si definisce tale quando il codice del programma è in grado di autoreplicarsi” e di diffondersi, così come fa un virus biologico, tipo quello dell’influenza.
La particolarità è che i virus in quanto tali sono scomparsi dalla circolazione parecchi anni. Oggigiorno abbiamo a che fare con programmi dannosi che non si autoreplicano ma dispongono di funzionalità piuttosto insidiose che consentono loro di rubare i dati dal vostro computer o di cancellarli completamente (come fa, ad esempio, un Trojan). Eppure, ancora oggi, se chiedete a qualcuno di pensare a un’immagine da relazionare alle “tecnologie di sicurezza informatica”, spesso queste immagini mostrano scienziati in camice da laboratorio tuta isolante che recintano una zona in quarantena e con delle provette in mano, insomma tutto ciò che ci viene in mente quando si parla di maneggiare dei virus biologici.
Insomma, avete capito: i virus sono ormai molti e sepolti ma i metodi di analisi che si utilizzavano per la loro identificazione e disinfezione (altro termine preso in prestito dal mondo della microbiologia!), continuano a esistere, si evolvono e ancora oggi sono indispensabili per la lotta ai virus malware del mondo di oggi. L’emulatore fa parte di queste tecnologie “old school”.
In breve, l’emulazione è un metodo per scoprire minacce fino ad allora sconosciute: in un ambiente virtuale (“emulato”) che imita quello di un computer reale viene immesso un file dal comportamento sospetto (insolito e non abituale). Qui l’antivirus* osserva il comportamento del file (on the fly, ma lo vedremo dopo) e se identifica un’attività pericolosa, lo isola per effettuare ulteriori indagini.
Vedete l’analogia che esiste con la virologia microbiologica? Perché iniettare un potente antidoto con un sacco di effetti collaterali in un paziente che potrebbe avere una certa malattia, non è detto che ce l’abbia? Meglio l’emulazione in vitro e vedere prima cosa succede per poi somministrare la medicina più idonea.
Tuttavia, la sfida da accettare è la stessa della microbiologia: bisogna assolutamente far sì che l’ambiente emulato somigli il più possibile a quello reale, altrimenti i file dannosi potrebbero rendersi conto che si tratta di una simulazione e agiscono di conseguenza, ovvero nel modo più innocente possibile. Ci occupiamo di emulazione da diversi anni decenni ormai e, senza cedere alla falsa modestia, siamo in testa a questa gara. Siamo dei grandi!
Il primo emulatore al mondo l’ho sviluppato questo signore che vi scrive nell’epoca DOS, nel 1992. Presto gli esperti di tutto il mondo hanno iniziato a parlare del tasso di identificazione del nostro antivirus (sì, ai tempi erano ancora “antivirus” nel vero senso della parola) che ha scatenato la concorrenza nei test indipendenti, e questo in parte grazie all’emulatore.
Con il passare del tempo e il panorama delle minacce ha iniziato a farsi più complicato: i virus sono stati sostituiti dai worm di rete, dai Trojan e da altre minacce complesse. Nel frattempo, la gamma di computer/dispositivi mobili/Internet delle Cose e di tutte le altre tecnologie digitali si è ampliata di parecchio e allo stesso modo è aumentata la concorrenza nel settore degli emulatori. Lo abbiamo adattato alla nostra sicurezza su cloud KSN, gli abbiamo insegnato nuovi linguaggi di programmazione, lo abbiamo reso famigliare ai nuovi browser e agli altri oggetti del sistema operativo… tutto per identificare automaticamente tipi di malware mai visti prima. Niente intelligenza artificiale di paccottiglia, tanto duro lavoro svolto con criterio che ha portato alle innovazioni della vera HuMachine. 😊
Al giorno d’oggi, in pochi tra la concorrenza possono vantare di una tecnologia del genere e non c’è da meravigliarsi: l’emulazione è un compito molto difficile che richiede anni di esperienza, l’integrazione nei prodotti di punta richiede tempo e uno sviluppo costante. E poi molte aziende entrate da poco nel settore della cybersecurity preferiscono investire nel marketing basato solo sulle parole: a breve termine, questo approccio offre un impulso notevole al business, ma non si possono ingannare gli utenti per molto tempo: alla fine si verifica un errore e scoppia il caso. Mettiamola in un altro modo, se una compagnia di cybersecurity è dotata del suo emulatore, il livello di esperienze e maturità di chi lo ha sviluppato sarà sicuramente notevole. Viceversa: niente emulatore = poca esperienza, poche conoscenze e poca vita nel settore.
Ma sto divagando…
Sebbene miglioriamo costantemente il nostro emulatore, dall’altra parte della barricata i cybercriminali non stanno certamente a girarsi i pollici. Proteggono attivamente i loro affari e le loro operazioni di cyberspionaggio, il che implica anche provare a difendersi dal nostro emulatore.
I creatori delle minacce più avanzate utilizzano una serie di trucchi anti-emulatore per riconoscere l’ambiente da “provetta di laboratorio” (ad esempio lanciano una funzione non documentata, verificano l’autenticità delle richieste di modifica dei registri del processore, analizzano i codici degli errori, vanno alla ricerca di un codice specifico in memoria, utilizzano “bombe logiche” per fare entrare l’emulatore in un loop infinito etc.). Se il malware percepisce che c’è qualcosa di sospetto, blocca subito le funzionalità dannose per non farsi scoprire.
Siamo consapevoli che esistono queste tattiche e vi prestiamo attenzione costantemente, adattando l’emulatore a questi trucchi e migliorandolo sotto altri punti di vista (cercando di ridurre innanzitutto il consumo di risorse). Ad esempio, per renderlo più veloce utilizziamo differenti limiter, ottimizzatori e profili di configurazione, che possono anche essere disattivati completamente in situazioni in cui il rallentamento è negativo alla stregua della famosa schermata blu della morte.
Nel frattempo, l’altro giorno i nostri guerreri dei brevetti ci hanno dato buone notizie provenienti dal fronte dell’emulazione: abbiamo ottenuto un brevetto (US10275597) per un emulatore di codice programma in grado di interpretare gli oggetti sconosciuti! Da quel che so, nei prodotti della concorrenza non esiste una funzionalità del genere: per difendersi dai trucchi anti-emulatore dei malware, la concorrenza deve lavorare più e più volte sull’intero emulatore e, naturalmente, non si tratta di un processo veloce. Invece noi abbiamo insegnato al nostro emulatore ad aggiornarsi da solo on the fly a partire da un database locale! Una funzionalità estremamente utile e non abbiamo motivi per non parlarvene, perché la nostra forza è proprio rendervi partecipi dei metodi che utilizziamo per proteggervi! 😊
Alcuni file non vengono distribuiti nel codice della macchina ma direttamente nel codice sorgente. Per eseguire questi file sul computer è necessario un interprete (JavaScript o VBA, ad esempio) che traduca questo codice in tempo reale in un linguaggio comprensibile per la macchina e, indovinate un po’, spesso i malware si trovano in questi file.
Per identificare questo tipo di minacce sconosciute, anni fa abbiamo creato un emulatore di codice programma che esamina “in provetta” i file prima di eseguirli. Tuttavia, l’emulazione dell’interprete richiede un dispendio eccessivo di risorse e il ritardo nel caricamento delle pagine web con script potrebbe provocare frustrazione nell’utente di Internet. Per questo motivo, gli emulatori di solito ricreano una versione intermedia dello spazio virtuale, accettabile in termini di prestazioni e di qualità della protezione. Cosa succede se l’emulatore si imbatte in un oggetto sconosciuto, un metodo o una funzione all’interno del codice, la cui interpretazione è assolutamente fondamentale per effettuare l’analisi completa del file?
Abbiamo risolto il problema in un altro modo, con l’aiuto di un interprete “intelligente” in grado di apprendere velocemente a emulare oggetti di questo tipo. Durante l’aggiornamento mediante il cloud di KSN, il prodotto riceve il codice ausiliario nel linguaggio dell’oggetto che si sta analizzando (JavaScript, VBA, VB Script, AutoIt etc.) e, con queste nuove conoscenze a disposizione, analizza nuovamente il file. Nei casi più difficili, quando non è stato ancora possibile ricavare il codice ausiliario, il compito passa ai nostri analisti che sviluppano il codice e lo aggiungono prontamente al database.
In questo modo, gli utenti hanno a disposizione una tecnologia robusta ed estremamente veloce capace di rispondere rapidamente alle cyberminacce, senza dover attendere la release successiva dell’intero emulatore. Fantastico!
* La parola “antivirus” è ormai un altro arcaismo appartenente all’epoca dei virus informatici. Gli antivirus moderni non proteggono solamente dai virus ma da tutti i tipi di malware; inoltre, dispongono di tante altre funzionalità di sicurezza davvero utili come password manager, VPN, parental control, backup dei dati etc. Per essere più precisi, quindi, un buon “antivirus” si dovrebbe chiamare “anti-questo, anti-quello e anti-tutto”, che protegge me, la mia famiglia, tutti i nostri dispositivi e i nostri dati, completo di campane e fischietti. Una definizione un po’ difficile da usare, vero?