La diffusione dei sistemi operativi a 64 bit è andata sempre più crescendo negli ultimi anni. Tale fenomeno è giustificato, in primis, in forza della maggiore richiesta di potenza nelle fasi di elaborazione dei dati. Con Windows Vista prima, e Windows 7 poi, Microsoft ha deciso di puntare sempre più sui sistemi a 64 bit, pur mantenendo una retrocompatibilità con la vecchia architettura, lasciando in vendita le versioni di Windows sia a 32 che 64 bit. Le statistiche attuali suggeriscono che quasi una installazione di Windows 7 ogni due è a 64 bit.
Le difese messe in campo da Windows nelle versioni a 64 bit
Per ciò che concerne l’aspetto sicurezza, i sistemi operativi Windows a 64 bit forniscono una serie di tecnologie in più che sono state implementate per limitare drasticamente la superficie di attacco sfruttabile da parte dei malware. Grazie alle tecnologie Data Execution Prevention (DEP) e Address Space Layout Randomization (ASLR), abilitate in modo predefinito, il sistema implementa una efficace barriera di protezione nei confronti degli exploit, modificando in maniera casuale la configurazione della memoria virtuale all’interno dei processi, bloccando l’esecuzione di codice proveniente da zone di memoria non specificatamente marcate come eseguibili, e rendendo perciò molto difficile il lavoro ad eventuali codici dannosi.
Nei sistemi Windows a 64 bit, inoltre, vengono implementate due tecnologie non presenti nelle corrispondenti versioni a 32 bit che sono finalizzate ad offrire un maggior controllo, in termini di sicurezza, sul kernel di Windows, prevenendo eventuali alterazioni causate dai rootkit funzionanti in “kernel mode“.
La prima tecnologia consiste nella possibilità di eseguire, all’interno dello spazio di memoria adibito al kernel, esclusivamente driver firmati con firma digitale autenticata da Microsoft. Questa scelta del colosso di Redmond, ampiamente dibattuta nel mondo degli sviluppatori di software, impedisce di fatto lo sviluppo e la diffusione di qualsiasi tipologia di driver che non sia stata prima firmata tramite un certificato digitale acquistabile previa verifica dell’identità del richiedente e sborsando una cifra pari ad alcune centinaia di dollari. Se, chiaramente, da un lato questa scelta è risultata impopolare, vista la presenza di molte software house di piccole dimensioni o singoli sviluppatori che non possono affrontare tale spesa, d’altro canto così facendo si è drasticamente limitato il numero di malware capaci di attaccare il kernel di Windows.
La seconda tecnologia a difesa del kernel è denominata Kernel Patch Protection (KPP), meglio conosciuta nel web con il nome di PatchGuard. Anche questa tecnologia è stata ampiamente oggetto di critiche e confronti, con molti commenti sia positivi che negativi. PatchGuard monitora in tempo reale alcune zone critiche del kernel, cercando di garantirne l’integrità del codice. Se dovesse essere intercettata una qualsiasi modifica ad una di queste zone critiche, PatchGuard s’incarica di “bloccare” immediatamente il sistema, visualizzando un Blue Screen Of Death (BSOD, la classica “schermata blu” di Windows). Tra le zone di memoria monitorate da PatchGuard è possibile identificare la System Service Descriptor Table (SSDT), una tabella nella quale vengono abbinate le funzioni del kernel con i rispettivi indirizzi in memoria. Si tratta di una tabella che è stata oggetto di attenzione da parte di molti rootkit, i quali alteravano tali indirizzi, intercettando quindi le funzioni essenziali del kernel e modificandone il funzionamento originale. Stesso comportamento che, tuttavia, veniva utilizzato anche da molti software di sicurezza, che si sono quindi ritrovati a dover modificare totalmente il design dei propri driver.
L’efficacia delle ultime due tecnologie, combinate assieme, ha permesso ai sistemi a 64 bit di essere terreno difficilmente attaccabile per molti rootkit “kernel mode”, molto diffusi invece nei sistemi a 32 bit.
Tra le due tecnologie, tuttavia, quella che ha avuto maggior successo nella prevenzione di infezioni nel kernel è sicuramente la prima ossia la necessità di una firma digitale per poter eseguire in memoria qualsiasi tipo di driver. PatchGuard, infatti, a dispetto dell’impatto iniziale, ha mostrato tutti i propri limiti con il trascorrere del tempo visto che le zone monitorate sono solo una possibile area del sistema che può essere presa di mira da un rootkit per infettare il kernel di Windows, alterandone il funzionamento. In altre parole, la presenza di PatchGuard ha spinto gli autori dei malware ad evolvere i propri codici, muovendo verso una tipologia di infezione di seconda generazione, ancor più complessa, difficile da prevenire, ma soprattutto capace di aggirare nativamente lo stesso PatchGuard senza doverlo disattivare.
Nonostante il più elevato livello di sicurezza intrinsecamente offerto dalle versioni a 64 bit di Windows Vista e Windows 7, i malware per i sistemi a 64 bit esistono. Ad oggi sono molti i malware capaci di infettare sia i sistemi a 32 bit che i sistemi a 64 bit, soprattutto quelli che vengono eseguiti in “user mode“. In tale modalità Windows garantisce una compatibilità di esecuzione sia per i software a 32 bit che per quelli a 64 bit. Tra gli esempi più eclatanti è possibile trovare ZeuS e SpyEye, due dei trojan più proficui per i malware writer, capaci di intercettare e rubare dati sensibili e password di accesso a siti bancari, dati di carte di credito e molte informazioni private degli utenti colpiti.
Differente il discorso per i rootkit, che hanno avuto per diverso tempo vita difficile sui sistemi a 64 bit, regredendo dunque a semplici rootkit “user mode“, più semplici da identificare ma pur sempre efficaci.
TDL4: il primo rootkit in grado di infettare i sistemi Windows a 64 bit
Anche le difese erette sulle versioni a 64 bit di Windows, comunque, hanno dovuto capitolare nel mese di agosto 2010. A partire da allora, il rootkit TDL4 si è mostrato capace di infettare il kernel di Windows scavalcando tutte le protezioni implementate da Microsoft. In realtà, il concetto applicato dal rootkit TDL4 è tanto semplice quanto estremamente efficace: disabilitare il controllo della firma digitale, modificandolo quando ancora Windows è in fase di inizializzazione.
Per fare ciò, tuttavia, è necessario muoversi al di fuori del sistema operativo stesso, infettando dunque il Master Boot Record o il Volume Boot Record, intercettando poi il caricamento di Windows ed alterandolo in tempo reale.
Esistono due modi principali per disabilitare il controllo della firma digitale nei driver: il primo è modificando il funzionamento di Windows variandone il codice, il secondo è facendo partire Windows tramite uno specifico switch, ideato da Microsoft stessa per permettere agli sviluppatori di disabilitare il controllo della firma al fine di verificare il corretto funzionamento dei propri codici.
La modifica del codice consiste nell’alterare il funzionamento di Winload.exe
, il file responsabile del caricamento del kernel di Windows e dei relativi driver essenziali. Essendo un file che viene eseguito prima del kernel, non è soggetto al controllo di PatchGuard, quindi eventuali modifiche non vengono monitorate.
carica il kernel e i suoi relativi driver verificandone per ognuno la firma digitale in due modi differenti: se la firma è presente nel driver, viene validata la firma; se la firma non è presente, viene calcolato l’hash del driver e viene verificato che tale hash sia presente in alcuni database presenti in Windows. Tali database possono essere pensati come dei cataloghi firmati digitalmente da Microsoft: come tali, sono impossibili da alterare per aggiungere eventuali hash di driver nocivi.
TDL4 interviene proprio su questa verifica effettuata da Winload.exe
all’interno dei cataloghi, forzando la routine a ritornare sempre un valore valido e permettendo così al rootkit di caricare in memoria il proprio driver nocivo non firmato.
Grazie a questi due approcci, differenti ma comunque efficaci, i rootkit sono riusciti a sfondare il muro di sicurezza costruito dai sistemi a 64 bit, sebbene l’infezione richieda numerosi passaggi per poter essere portata a buon fine e risulti essere dunque alquanto “rumorosa”: il malware deve infatti riuscire ad essere eseguito (un passo già di per sé molto complesso da effettuarsi in maniera automatica tramite l’uso di exploit, proprio grazie alle tecnologie precedentemente presentate), deve poi essere in grado di ottenere privilegi di amministratore, deve infettare il Master Boot Record o il Volume Boot Record e deve infine forzare il sistema operativo a riavviarsi per ottenere così il controllo del sistema dalle prime fasi di bootup. E’ quindi oggi certamente possibile infettare i sistemi a 64 bit, sebbene sia molto meno agevole rispetto ai sistemi a 32 bit.
Attualmente è possibile contare pochi rootkit “kernel mode” per Windows a 64 bit, mentre è possibile contare un numero molto più vasto di rootkit “user mode“, che possono colpire indistintamente sia le versioni a 32 che 64 bit di Windows.
Alcune utilità per il controllo della presenza di malware o l’effettuazioni di indagini diagnostiche non funzionano correttamente sui sistemi a 64 bit
Se le tecnologie implementate da Microsoft non sono riuscite a fermare in maniera efficace i malware writer, hanno però creato notevoli problemi a molti sviluppatori di software di sicurezza, come ad esempio quei programmatori indipendenti che hanno creato famosi tool antirootkit per Windows e che non vogliono – o non possono – affrontare una spesa quale quella richiesta per l’acquisto di un certificato digitale necessario per proseguire i propri lavori.
E’ il caso ad esempio di GMER, noto software antirootkit gratuito, ampiamente utilizzato sul web per l’identificazione di eventuali minacce. Tale strumento non è mai stato aggiornato per poter funzionare nei sistemi a 64 bit, sia per una necessità di dover riprogettare interamente il software in modo tale da renderlo compatibile con tutte le restrizioni e i cambi dei sistemi a 64 bit, sia per la necessità di dover acquistare un certificato digitale.
La transizione ai 64 bit è ancora in corso, molti software non sono ancora in grado di gestire correttamente tutte le novità implementate, e spesso rischiano di causare falsi positivi ed errate segnalazioni (è il caso, ad esempio, di HijackThis che, sui sistemi Windows a 64 bit segnala come mancanti una serie di file di sistema che sono in realtà regolarmente presenti sul sistema e che sono essenziali per il corretto funzionamento dello stesso). Per questo è sempre necessario, soprattutto per i software di sicurezza, assicurarsi che tali software siano effettivamente compatibili con i sistemi a 64 bit, onde evitare di causare inutili allarmismi o, peggio ancora, situazioni di instabilità del sistema.
L’era dei 64 bit è iniziata e con essa anche l’introduzione di molte più efficaci misure di sicurezza, che teoricamente avrebbero dovuto rallentare e rendere molto più difficile il lavoro ai malware writer. In parte è stato così, anche se ad oggi chi sviluppa malware sta cercando in tutti i modi di aggirare l’ostacolo nella maniera più efficace possibile. D’altronde, come è già stato verificato, TDL4 “docet“.
– Marco Giuliani è Threat Research Analyst per Webroot.