L’antivirus è uno strumento fondamentale nella nostra “vita informatica” quotidiana, analizzando i file del nostro computer grazie soprattutto a tecniche euristiche ci permette di individuare potenziali malware prima che possano fare danni ingenti. Tuttavia, ci capita spesso di approcciarci a questo programma vedendone soltanto il cruscotto grafico, senza pensare a quello che in realtà c’è sotto. Anzi, il più delle volte ci sembra soltanto una perdita di tempo far fare la scansione del sistema alla ricerca di potenziali software che potrebbero compromettere la nostra sicurezza. Ma come fa nella pratica un antivirus a dirci se un programma è malevolo? Esistono alcune tecniche consolidate che possono essere combinate per aumentare la capacità di analisi, fra queste:
Queste tre tecniche base possono più o meno essere combinate da ciascun produttore per ottenere risultati diversi (e sperabilmente più performanti) nella ricerca di software malevolo.
L’analisi statica (conosciuta anche come metodo basato sulla firma) utilizza la firma dell’eseguibile, sua caratteristica intrinseca, e la compara con un database di firme provenienti da malware già noti. Come è facile intuire il vantaggio principale è che, nel caso di una corrispondenza, saremo certi che quel file è malevolo per via dell’impronta tipica già rilevata per quel tipo di virus. D’altro canto, la più grande difficoltà è avere un database sempre aggiornato che sarà, naturalmente, a carico del produttore mantenere. Questo si traduce in una notevole deficienza in termini di identificazione di minacce non ancora note proprio perché non analizzate e poco diffuse.
L’altro approccio molto ben consolidato è l’utilizzo di sandbox che, come dicevamo, sono macchine virtuali isolate. Il loro isolamento garantisce che potenziale software pericoloso possa essere eseguito senza particolari impatti e anzi se ne possa valutare il comportamento così da capire come classificarlo. Questa modalità è estremamente efficace per analizzare quali danni è in grado di provocare il software oggetto di analisi ma, di fatto, non aumenta la nostra capacità di previsione verso potenziali malware. Inoltre, l’utilizzo di macchine virtuali è poco pratico nell’uso quotidiano quando abbiamo spesso fretta di aprire documenti, installare applicazioni o decomprimere archivi ma forse più adatto ad un uso di laboratorio dove si possono fare ricerche e analisi più avanzate.
La terza tecnica è quella basata sui metodi euristici che cercano di predire la bontà o meno del file analizzato. Che cos’è un’euristica? Generalmente, in ricerca operativa un metodo euristico è un algoritmo in grado di arrivare a una soluzione buona (non necessariamente ottima, ovvero la migliore che potremmo produrre) in tempi più brevi rispetto a un metodo classico. Questo approccio è particolarmente efficace per i cosiddetti problemi NP-Completi, cioè problemi particolarmente complessi che richiederebbero tempi di risoluzione e capacità computazionale troppo elevati ma che possono trovare una risposta con questi algoritmi.
Nella realtà degli antivirus con tecniche euristiche si intendono soprattutto metodi di Machine Learning che hanno l’obiettivo di classificare un dato file nella categoria dei virus oppure dei file attendibili. L’analisi si basa specialmente su alcune caratteristiche tipiche come: le chiamate di sistema o ad API, l’analisi del grafo del flusso di controllo, così come, a più basso livello l’analisi degli operational code, cioè i codici a livello macchina che identificano l’operazione che dovrà essere eseguita.
In base alla tecnica di classificazione usata (tipo Naïve Bayes) e al raffinamento degli algoritmi di classificazione usati otterremo una predizione tanto più rispondente alla realtà. Inoltre, l’approccio euristico è particolarmente valido nei casi di virus polimorfici, che cioè sono in grado di cambiare il loro codice. L’algoritmo è in grado di valutare una corrispondenza anche parziale nel codice applicativo che consente di attivare i necessari allarmi e mettere in guardia l’utente dal potenziale pericolo. Il più grande svantaggio, invece, sta proprio nella difficoltà di predire con certezza un virus e potenzialmente generare falsi positivi che inficiano sulla normale operatività di noi utenti.
Fin dall’inizio di questa analisi abbiamo detto come questi programmi siano di fatto ancora piuttosto ignoti agli utilizzatori finali. Tuttavia, recenti studi come quello guidato dal gruppo del Politecnico di Milano mirano a far luce nelle diverse implementazioni tramite inferenze basate sui risultati ottenuti analizzando uno stesso malware con diversi applicativi. Il framework che hanno realizzato permette di capire il comportamento degli antivirus in presenza di diversi applicativi valutandone la capacità di risposta ma soprattutto l’applicazione di una tecnica piuttosto che un’altra.
In conclusione, quindi, questi strumenti estremamente affascinanti per gli amanti della sicurezza informatica rimangono ancora piuttosto oscuri ma abbiamo sempre più conoscenze per valutarne le capacità e le tecnologie. Magari in un futuro non troppo lontano avremo anche uno standard aperto che consenta di allineare le tecnologie e fornire strumenti sempre più efficaci. D’altronde il motto “Security through obscurity” è fortemente sconsigliato per garantire alti livelli di sicurezza nei nostri sistemi!