Una trappola irresistibile per i malware

2 Set 2019

Non ho visto il sesto film di Mission Impossible, e non credo che lo vedrò. Ho visto il quinto (in uno stato zombie durante un lungo viaggio a casa dopo una dura settimana di lavoro), solo perché una scena era stata girata nel nostro nuovo e moderno ufficio di Londra. Si trattava di un capitolo di troppo di Mission Impossible, film che non sono per niente il mio stile. Botte, spari, schianti, esplosioni, stupore, rabbia. Nah, io preferisco qualcosa di più impegnativo, intellettualmente stimolante e semplicemente più interessante. Dopotutto, il mio tempo è limitato e prezioso.

Sto davvero insultando Tom Cruise e compagnia, vero? Aspettate. In realtà, devo riconoscere il merito di almeno una scena fatta molto bene (voglio dire, che risulta essere intellettualmente stimolante e semplicemente interessante). Si tratta della scena nella quale i buoni devono far sì che uno dei cattivi tradisca i suoi compagni, o una cosa del genere. Per far ciò, mettono in scena un ambiente falso in un “ospedale” con la “CNN” che annuncia in “TV” un Armageddon nucleare. Contento del fatto che il suo manifesto apocalittico fosse stato diffuso al mondo intero, il cattivo consegna i suoi compagni (o era un codice di accesso?) come d’accordo con gli interrogatori. Ups, ecco lo spezzone.

Perché mi piace tanto questa scena? Perché, in realtà, dimostra adeguatamente uno dei metodi per rilevare minacce informatiche sconosciute! Effettivamente, esistono molti metodi, che cambiano a seconda dell’area di applicazione, efficacia, uso di risorse e altri parametri (scrivo spesso qui a proposito di ciò). Ce n’è uno che spicca sempre: l’emulazione (di cui ho parlato molto qui).

Come nel film MI, un emulatore introduce l’oggetto investigato in un ambiente artificiale isolato, spingendolo a rivelare il suo carattere dannoso.

Tuttavia, questa strategia presenta un grande svantaggio: il fatto che l’ambiente sia artificiale. L’emulatore si sforza per rendere l’ambiente artificiale un ambiente vero del sistema operativo, ma i malware sempre più intelligenti riescono ancora a distinguerlo dalla realtà. L’emulatore poi vede che il malware lo ha riconosciuto, mette insieme e migliora la sua emulazione, e così via in un ciclo infinito che apre le porte della vulnerabilità a un computer protetto. Il problema fondamentale è che ancora nessun emulatore rappresenta l’immagine speculare di un vero sistema operativo.

D’altra parte, c’è un altro metodo per far fronte all’analisi comportamentale degli oggetti sospetti: analizzarli (in un sistema operativo reale) dentro una macchina virtuale. Beh, perché no? Se l’emulatore non lo ferma completamente, lasciate che lo faccia una macchina (reale) virtuale! Sarebbe l’interrogatorio ideale: si svolge in un ambiente reale, non artificiale, ma senza le conseguenze negative reali.

Ascoltando questo concetto, è possibile che alcuni si chiedano perché nessuno ci aveva mai pensato prima. Dopotutto, la virtualizzazione è una delle tendenze della tecnologia dal 1992. Beh, a quanto pare non è così semplice.

Prima di tutto, l’analisi degli oggetti sospetti in una macchina virtuale è un processo che utilizza molte risorse, cosa che risulta idonea solo per le soluzioni di sicurezza di grandi aziende dove l’analisi deve essere super intensa, in modo che assolutamente nessun oggetto dannoso riesca a superare le difese. Ahimè, questa tecnologia non è adatta ai computer di casa e agli smartphone, almeno per ora.

In secondo luogo, questa tecnologia esiste  per davvero. Infatti, la usiamo già internamente qui nella Kompagnia, per effettuare indagini. Però se parliamo di prodotti per essere venduti, non ce ne sono ancora molti disponibili. La concorrenza ha rilasciato prodotti simili, ma la loro efficacia lascia ancora molto a desiderare. In generale, questi prodotti si limitano a raccogliere registri e analisi di base.

In terzo luogo, avviare un file in una macchina virtuale è solo l’inizio di un lungo e difficoltoso processo. Dopotutto, l’obiettivo dell’esercizio è quello di far sì che si riveli la natura dannosa di un oggetto; e per far ciò c’è bisogno (tra le altre cose) di un hypervisor intelligente, l’analisi e il registro comportamentale, la messa a punto costante dei modelli di azioni pericolose, la protezione contro i trucchi anti-emulazione e l’ottimizzazione dell’esecuzione.

Posso affermare senza falsa modestia che siamo molto avanti rispetto al resto del mondo!

Recentemente, abbiamo ottenuto un brevetto statunitense (US10339301) che riguarda la creazione di un ambiente adeguato a far sì che la macchina virtuale effettui analisi veloci e profonde di oggetti sospetti. Funziona così:

  • Le macchine virtuali sono state create (per diversi tipi di oggetti) con impostazioni che assicurano la loro esecuzione ottimale e un tasso di rilevamento altissimo;
  • L’hypervisor di una macchina virtuale funziona insieme al registro del comportamento di un oggetto e dell’analisi del suo sistema, con l’aiuto dei database aggiornabili dei modelli comportamentali sospetti, dell’euristica e della logica di azione-reazione e molto altro;
  • Se vengono rilevate azioni sospette, il sistema di analisi incorpora al volo i cambiamenti nel processo di esecuzione dell’oggetto in una macchina virtuale con il fine di fargli rivelare le sue intenzioni dannose. Per esempio, il sistema può creare file, modificare il registro, accelerare i tempi e così via.

Il terzo e ultimo punto è la caratteristica più unica e interessante della nostra tecnologia. Lasciate che vi faccia un esempio per farvi capire come funziona.

Il sistema rileva che un file “si è addormentato” e non da più segni di attività. Ciò è dovuto al fatto che può essere stato programmato per rimanere inattivo per vari minuti, decine di minuti o anche ore prima di mostrare la sua attività dannosa. Quando inizia la sua falsa inattività, acceleriamo il tempo del funzionamento della macchina virtuale in modo da far passare uno, tre, cinque, e fino a un miliardo di minuti al secondo. La funzionalità dell’oggetto in analisi non cambia, mentre il tempo di attesa si riduce di cento (fino a mille) volte; e se dopo il suo “pisolino,” il malware decide di verificare l’orologio di sistema (ha seguito il proprio corso?), gli si farà credere che è così, pertanto continuerà con la sua missione dannosa e, di conseguenza, si esporrà nel processo.

Un altro esempio.

L’oggetto sfrutta una vulnerabilità in una libreria specifica o cerca di cambiare il contenuto di un file o di un registro. All’inizio, con l’aiuto della funzione comune fopen() cercherà di aprire la libreria (file o registro) e, se fallisce (non esiste nessuna libreria, né i diritti d’accesso), si arrenderà semplicemente. In questa situazione, cambiamo (al volo) il valore di ritorno della funzione fopen() da “file inesistente” a “file esistente” (o se necessario, creiamo il file e inseriamo il contenuto corrispondente); poi, osserviamo semplicemente come si comporta l’oggetto.

Questa strategia funziona molto bene anche nella condizione di alberi logici del comportamento di un oggetto. Ad esempio, se esistono un file A e un file B, allora si modifica il file C ed è fatta. Tuttavia, non si sa ciò che farà il programma soggetto all’indagine e se esiste solo il file A o il file B; dopodiché analizziamo l’attività dell’albero logico.

Una cosa degna di nota è che le regole di reazione per l’esecuzione dei file son configurate attraverso database esterni e facilmente aggiornabili. Non c’è bisogno di sviluppare di nuovo l’intero motore per aggiungere una nuova logica, basta solo descrivere la moltitudine di scenari possibili del comportamento dannoso e aggiornarla con un click.

Ed è così che funziona in sostanza la nostra tecnologia. Sarà presto aggiunta a KATA e verrà commercializzata come una soluzione indipendente per le aziende: Kaspersky Sandbox.