
» continua
» continua
» continua
Fra le nuove minacce che ogni giorno mettono a dura prova il lavoro dei responsabili di sicurezza fa capolino il Dynamic Code Obfuscation. Ma cosa si intende con questa definizione? Per stabilirlo, partiamo dapprima definendo il significato di code obfuscation e poi guardiamo cosa implica l'aggiunta del termine dinamica e quale pericolo può comportare.
Si parla di code obfuscation quando il codice sorgente di un programma o di uno script è reso intenzionalmente difficile da leggere. Questo risultato può essere ottenuto in vari modi, per esempio usando la crittografia oppure aggiungendo tab supplementari, commenti casuali o nomi di variabili. Il motivo principale per cui qualcuno potrebbe desiderare di operare in questo modo è di impedire il reverse engineering: rendendo il codice sorgente scomodo da leggere e capire, i fornitori possono dissuadere eventuali malintenzionati che tentano di ottenere un accesso non autorizzato al loro codice sorgente. Per esempio, Microsoft suggerisce agli sviluppatori di usare il suo Script Encoder per oscurare i loro script definitivi.
In un certo qual modo, possiamo dire che si tratta di una forma un po' grezza di controllo dell'accesso, usata per limitare i rischi che potrebbero derivare da una perdita della proprietà intellettuale e di potenziali ricavi. Oggi si svolgono anche delle gare di code obfuscation, come l'International Obfuscated C Code Contest, in cui lo scopo è scrivere il programma in C più oscuro e confuso.
La code obfuscation può essere usata in modo altrettanto efficace anche da chi scrive codice maligno e desidera nascondere o mascherare i reali obiettivi dei propri programmi. L'uso di questa tecnica da parte degli attacker non è niente di nuovo. Negli anni '90, i virus segreti e polimorfici hanno celato o modificato le loro firme con queste tecniche. Questi non erano script ma virus basati su codici binari, tuttavia i cracker hanno adottato tali tecniche per oscurare gli script. Gli spammer usano comunemente codice HTML o Javascript oscurati per impedire di individuare dove portano determinati URL o cosa fa il loro codice di script. Con l'avvento delle tecnologie Web 2.0 e il loro vasto uso di Javascript e dell'HTML, l'obfuscated code risulta un efficace tool per nascondere exploit del browser, funzioni di reindirizzamento e attacchi cross site scripting.
Fortunatamente, i fornitori di antivirus non si sono mostrati insensibili al problema della code obfuscation e già da tempo hanno cercato di complicare la vita agli "obfuscator". Tali aziende stanno usando sul codice oscurato un'intera gamma di emulatori e di analizzatori euristici, assieme ai database delle signature dei malware conosciuti. Le firme sono impronte digitali derivate dal codice maligno e vengono usate per identificarlo.
Veniamo quindi alla parte dinamica della dynamic code obfuscation. Gli attacker oggi codificano il loro codice maligno "on the fly", modificando i nomi delle funzioni e usando chiavi di crittografia discrete per cifrare il loro codice. Ciò per esempio significa che ogni visitatore che si reca in un sito Web maligno può essere infettato da un virus specifico per la sua macchina, in quanto il codice maligno è alterato dinamicamente. Questo cambia in modo radicale non solo la minaccia del codice maligno in sé, ma anche la velocità con cui gli attacker possono diffondere tale codice attraverso insospettabili vittime. Per esempio, il modulo VoMM (eVade-o-Matic Module) deve essere aggiunto al diffuso toolkit di hacking Metasploit. Inizialmente progettato per gli exploit basati su Javascript, questo modulo estenderà il suo raggio d'azione per arrivare a riguardare altri exploit non binari. Questo sta a significare che persino nel training gli hacker malintenzionati potranno automatizzare il processo del dynamic obfuscated code.
Anche se il software antivirus continuerà a giocare un proprio ruolo, il mondo online deve puntare sulle tecnologie alternative se vuole riuscire a identificare questa crescente minaccia. Le signature del virus sono virtualmente inutili contro il codice dinamicamente alterato, poiché l'elemento casualità assicura virtualmente che i programmi antivirus non riescano mai a trovare una corrispondenza.
Le tecnologie di protezione devono usare tecniche di analisi basate sul comportamento - senza l'uso delle signature - per analizzare cosa un programma si stia apprestando a fare: se un'azione appare potenzialmente sospetta, quale la cancellazione di un file, possono essere immediatamente emessi dei segnali di allarme. Queste analisi richiederanno ovviamente cicli di elaborazione ed avranno un certo impatto sul rendimento e sull'esperienza dell'utente. Ciò significa che l'analisi del gateway è probabilmente la via migliore se confrontata con le soluzioni desktop.
Per il momento, poiché il social engineering è ancora un elemento chiave in molti di questi attacchi, la consapevolezza della sicurezza dovrà continuerà a crescere di importanza per poter combattere quest'ultimo vettore di attacco.
