Rootkit: cosa sono, come difendersi
Le recenti notizie di cronaca riguardanti l'utilizzo di rootkit da parte di Sony BMG all'interno di alcuni suoi CD ha portato alla ribalta un fenomeno a lungo sottovalutato di cui molti ignoravano l'esistenza. L'affare Sony è in realtà solo la punta di un iceberg sommerso in costante e rapida crescita. Il fenomeno si sta diffondendo al punto tale che alcuni addetti ai lavori hanno ritenuto di dover coniare un nuovo termine per identificare il malware facente uso di tali tecniche. D'ora in poi sarà sempre più facile imbattersi nel cosiddetto Ghostware.
Il punto di forza di questi software fantasma è che grazie a particolari tecniche di programmazione riescono a rendersi completamente invisibili all'utente, ai programmi applicativi e all'intero sistema operativo. Questo significa che nessun antivirus, nessun programma antispyware e nessuno strumento antimalware sarà in grado di rilevarli. Diventa del tutto irrilevante il fatto che questi programmi di scansione posseggano nel loro database le firme per poterli individuare. Non si può riconoscere ciò che non si vede!
Di seguito si descriveranno brevemente le tecniche di funzionamento adottate dai rootkit per nascondere file e programmi e si illustreranno alcuni strumenti utili alla loro individuazione.
Breve storia
Il termine rootkit esiste da più di una decina di anni, non è quindi un fenomeno nuovo. Per molto tempo gli unici esemplari conosciuti erano destinati a mascherare intrusioni perpetrate da pirati informatici ai danni di macchine Unix collegate alla rete. Il loro scopo era nascondere all'amministratore di sistema eventuali backdoor o altri programmi installati dall'intrusore.
Il mondo Windows non è stato a guardare per molto tempo. L'articolo "A *REAL* NT Rootkit, patching the NT Kernel" di Greg Hoglund pubblicato nel 1999 su Phrack rappresenta la svolta. Da questo momento in poi le evoluzioni sono rapide e continue. I primi abbozzi di codice, che spesso rendevano instabile il sistema, vengono perfezionati rendendo i rootkit per Windows una realtà di cui cominciare ad aver paura.
Allo stato attuale esiste un discreto numero di rootkit disponibile liberamente su internet che aspetta soltanto di essere usato per creare il nuovo ghostware di turno. AFX, Vanquish, Hacker Defender (disponibile in versione silver, gold e brilliant) sono solo alcuni della lista. Di quest'ultimo è disponibile una versione open source pronta per essere studiata e modificata. Su richiesta e a pagamento l'autore fornisce addirittura una copia del programma personalizzata che non sia individuabile dagli antivirus prima della sua installazione.
Siti come rootkit.com sono il ritrovo preferito di persone attive in prima linea per studiare il fenomeno, per creare nuove tecniche di attacco ma anche per programmare strumenti di difesa. Infine il libro "ROOTKITS, Subverting the Windows Kernel" del già citato Hoglund è diventato una vera e propria bibbia per chi si interessa dell'argomento.
Cos'è un rootkit
Un rootkit è costituito da un insieme di programmi che consente la presenza invisibile e permanente di processi e informazioni all'interno di un sistema. È importante precisare che un rootkit non è necessariamente nocivo. Un rootkit non è un virus, non è un trojan e non è uno spyware. Il rootkit costituisce solo l'insieme delle tecniche di occultamento e di per sé non è un elemento dannoso. La pericolosità è insita nello scopo che ci si prefigge con il suo utilizzo. Questo è testimoniato dal fatto che gli stessi metodi vengono spesso usati da programmi commerciali per scopi del tutto leciti.
L'antivirus Kaspersky, per esempio, aggiunge ad ogni file analizzato un Alternate Data Streams: i file invisibili di Windows (ADS) di nome KAVICS nel quale memorizza data e ora dell'ultima scansione e una firma (hash) del file stesso. Questa tecnica gli permette di risparmiare tempo durante la ricerca dei virus in quanto l'analisi viene evitata se dall'ultima scansione non sono occorse modifiche al file. Per non rendere pubbliche, e quindi modificabili, le informazioni presente nei suoi ADS, Kaspersky usa tecniche derivate dai rootkit per nasconderle al sistema.
Le stesse tecniche vengono usate inoltre da programmi di terze parti che consentono l'accesso e la visibilità di determinate cartelle solamente agli utenti possessori di una password.
Infine la nota dolente: una schiera di trojan e backdoor, diventata oramai numerosa, usa rootkit per sfuggire alle maglie dei software antimalware. Backdoor.Win32.Breplibot.b e Backdoor.IRC.Snyd.A sono solo alcuni dei tanti.
Il compito principale di un rootkit è occultare oggetti di sistema all'utente. Per esempio possono essere resi invisibili file, processi in memoria, servizi, chiavi di registro e porte TCP/IP in stato di ascolto.
Una volta installato un programma ghostware verrà in genere lanciato all'avvio del sistema attraverso una chiave di registro invisibile. A questo punto potrà intercettare i tasti digitati sulla tastiera per carpire informazioni riservate (keylogger), mettersi in ascolto sulla rete per accettare istruzioni dall'esterno (backdoor), sniffare il traffico di rete, sferrare attacchi Attacchi DoS su internet e quanto di peggio si possa immaginare. Nessun taskmanager potrà individuarlo e nessun comando netstat potrà rivelare le connessioni create sulla rete.
Per rendere possibile la loro invisibilità i rootkit agiscono a livello profondo installandosi come parte integrante del sistema operativo stesso. Un software che voglia mascherare la presenza di alcuni file sul disco, per esempio, deve poter intercettare le chiamate di tutti i processi alle funzioni di sistema (API) riguardanti il filesystem. Il rootkit quindi agisce da filtro tra il nostro Windows e i programmi applicativi, eliminando dalla risposta fornita dal sistema tutte le informazioni sui file che esso intende nascondere. Una cosa analoga avviene per tutti gli altri oggetti che si intendono occultare.
A chi ricorda il funzionamento dei vecchi virus di tipo stealth che circolavano anni fa in ambiente Ms-Dos la tecnica descritta non sembrerà nuova. La complessità e la maggiore sicurezza dei moderni sistemi operativi rende però il raggiungimento dello scopo molto più difficile.
Strumenti per la rivelazione dei rootkit
La lotta ai rootkit è ardua ma non impossibile. Al giorno d'oggi esistono un paio di valide soluzioni gratuite, RootkitRevealer e Blacklight, che, per quanto efficaci, possiedono comunque i loro limiti. Esse si basano principalmente sulla rilevazione di discrepanze a livello di filesystem. Un programma ghostware, anche se virtualmente invisibile, deve essere presente fisicamente sul disco fisso. Per individuarlo i programmi anti rootkit cercano di accedere al filesystem attraverso due diversi metodi:
- invocando le normali funzioni del sistema operativo a livello utente per l'accesso ai file
- utilizzando funzioni a bassissimo livello che consentono loro di accedere in modo diretto alle strutture del disco
Nella maggior parte dei casi i rootkit non riescono a raggiunge un livello di sofisticazione tale da poter intercettare e gestire le funzioni di accesso diretto al disco ma riescono agevolmente a modificare il comportamento delle chiamate di sistema a livello superiore. Viene quindi scansionato l'intero disco utilizzando i due metodi. Se esistono differenze nei risultati significa che un programma ghostware sta occultando qualche file nel sistema.
La tecnica non è esente da problemi poiché si basa sull'assunto che nessun rootkit riesca ad operare a bassissimo livello. A tal proposito, il video che mostra come la versione Brilliant di Hacker Defender riesca a farsi beffa di tutti i principali software antirootkit non è affatto incoraggiante.
RootkitRevealer
RootkitRevealer di Sysinternals è stato scritto da Mark Russinovich, scopritore del famigerato rootkit usato da Sony.
Il suo uso è estremamente semplice. Il programma non necessita di installazione e può quindi essere lanciato anche da supporti rimovibili. Scansiona il filesystem di tutte le unità disco presenti nel sistema alla ricerca di file e chiavi di registro nascoste. Il programma è in grado di analizzare anche gli eventuali alternate data stream (ADS) allegati ai file. Non è data nessuna possibilità di eliminare i file nascosti.
Nell'immagine si vede come RootkitRevealer abbia individuato gli ADS nascosti creati da Kaspersky. Se si usa tale antivirus su un filesystem NTFS la scansione produrrà una voce per ogni file presente sul disco. Ovviamente in questo caso non si tratta di oggetti dannosi.
Blacklight
La versione beta di Blacklight è distribuita da F-Secure ed è utilizzabile gratuitamente fino all'1 marzo 2006. Anche Blacklight non necessita di installazione. Dopo aver accettato i termini di uso è possibile procedere alla scansione. Verranno rilevati processi nascosti in memoria e file invisibili presenti su disco ma non è possibile l'analisi degli ADS.
Blacklight da la possibilità di rinominare eventuali file mascherati da un rootkit in modo da prevenirne il mascheramento al successivo riavvio e quindi inibirne l'esecuzione. Il file ideale su cui operare in questo modo è ovviamente l'eseguibile del rootkit stesso.
Per ulteriori informazioni è possibile consultare l'help online
Nell'immagine si vede come Blacklight abbia individuato alcuni file nascosti creati da HackerDefender.
Il progetto Strider Ghostbuster
L'unico metodo veramente efficace contro i rootkit sembra essere quello messo a punto da Microsoft attraverso il suo Strider Ghostbuster project. Purtroppo non si sa ancora se il progetto rimarrà un esperimento interno alla casa di Redmond oppure se il prezioso tool sarà messo a disposizione degli utenti. Per ora non viene data alcuna possibilità di testarlo.
Abbiamo visto che nessun metodo di scansione su un sistema in esecuzione può essere sicuro in modo assoluto poiché ogni funzione può essere intercettata. Strider Ghostbuster basa il suo funzionamento su una analisi offline del sistema:
- Si esegue una prima scansione del disco dal sistema in esecuzione usando le stesse API ad alto livello usate dai tool precedentemente descritti e se ne salvano i risultati. Se un rootkit è attivo alcuni file non saranno identificati.
- Si resetta il sistema e si riavvia la macchina attraverso un CD avviabile, sicuramente non infetto, in grado di leggere in modo autonomo il filesystem. Si esegue nuovamente la scansione e si memorizzano i risultati. Nessun rootkit potrà mai operare a questo livello poiché stiamo leggendo le informazioni da un sistema operativo pulito.
- Vengono confrontati i risultati. Eventuali discrepanze vengono segnalate come potenziale rootkit.
Links e approfondimenti
The Basics of Rootkits: Leave No Trace
Hacker Defender homepage
Sony, Rootkits and Digital Rights Management Gone Too Far
Strider GhostBuster: Why It's A Bad Idea For Stealth Software To Hide Files
Detecting Stealth Software with Strider GhostBuster
FONTE: SICUREZZA.HTML.IT