00 07/07/2006 18:07
SECURITY

Rootkit, la nuova ondata di malware invisibile

Recentemente è sorta una grande discussione in merito ai rootkit e al tipo di minaccia che essi rappresentano.
Questo articolo intende fornire una spiegazione di base
sui rootkit e sulle modalità con cui questa può essere sfruttata dagli autori di malware per infiltrarsi
all'interno dei computer in maniera estremamente
difficile da rilevare e neutralizzare.

News - 16-11-2005



Il peluche Tim

Il nome "rootkit" deriva dal termine "root", ovvero la figura del "superuser" nei sistemi operativi appartenenti alla famiglia UNIX. Negli anni Ottanta gli hacker erano soliti penetrare all'interno di macchine UNIX per installare un programma che, di fatto, apriva una backdoor al loro interno consentendo di rientrarvi in qualunque momento con tutti i privilegi di "root". Il termine "rootkit" è ora usato in modo similare dai moderni ricercatori anche programmi basati su Windows.

Il sistema operativo fornisce ai programmatori un insieme di funzioni di base utilizzabili per effettuare azioni comuni come aprire un file o stabilire una connessione di rete. Questo set di funzioni è conosciuto come API (Application Programmer's Interface). I rootkit intercettano particolari funzioni della API in modo tale che le informazioni restituite da queste ultime siano false.

Immaginiamo cosa potrebbe fare un rootkit che si impossessasse di una funzione relativa ai file: potrebbe facilmente impedire la visualizzazione di un certo file o di una determinata cartella sul disco. Potrebbe nascondere se stesso e qualunque altro file agli occhi di qualsiasi programma, da Windows Explorer fino al semplice comando "dir".

Potente, vero? Ma non è finita qui. Un rootkit potrebbe nascondere la presenza di programmi pericolosi attivi nel sistema così come qualunque elemento del registry modificato per i propri scopi. Ecco perché i rootkit stanno diventando così popolari tra gli autori di malware: come minimo, garantiscono loro un manto d'invisibilità.

Va bene, ma come fanno tutto questo?

I rootkit possono dirottare le chiamate a funzioni del sistema operativo e restituire informazioni fasulle. Ma come riescono a far ciò?

Esistono due strategie principali per questo scopo, corrispondenti alla loro classificazione: rootkit funzionanti in user-mode e rootkit attivi in kernel-mode.

Nei microprocessori moderni i programmi possono girare in kernel-mode o in user-mode. La differenza principale risiede nel livello di accesso agli altri programmi residenti in memoria. I programmi kernel-mode possono accedere a tutta la memoria (possono sovrascrivere qualunque altro dato o programma e compiere qualsiasi operazione immaginabile), mentre i programmi user-mode sono confinati in un proprio spazio di memoria e non possono influire su aree esterne. La distinzione tra queste due modalità permette di ottenere ambienti di calcolo molto più sicuri, come ad esempio può essere Windows XP rispetto a Windows 9x.

Esistono metodi per alterare il comportamento del sistema anche in user-mode, cosa che i moderni programmi spyware hanno spesso messo a frutto per loro tornaconto, ma girare in kernel-mode è l'obiettivo per antonomasia di qualunque attaccante. Un programma pericoloso capace di installarsi come driver in kernel-mode potrebbe manipolare qualunque struttura di dati presente in memoria, persino il codice del sistema operativo. I puntatori alle funzioni delle API si troverebbero a puntare invece al codice del rootkit.

Si noti qui l'uso del termine "driver": solamente i device driver possono ottenere un livello di accesso così alto. I permessi sono elementi vitali per la sicurezza di una rete: se tutti gli utenti disponessero dei privilegi dell'amministratore, chiunque sarebbe in grado di caricare driver - anche quelli pericolosi. Sebbene di ciò si sia già parlato in passato, le nuove minacce kernel-mode evidenziano la necessità di considerare anche quest'elemento ai fini della sicurezza aziendale quando si progettano nuovi sistemi. Se ci fossero meno utenti dotati dei privilegi dell'amministratore, i rootkit sarebbero una minaccia meno grave.

È vero che sviluppare un rootkit è una cosa difficile. Tuttavia lo sviluppo continuo di queste minacce è per sua natura aperto, e il codice sorgente necessario a creare rootkit è liberamente scaricabile da Internet. Proprio come altre tipologie di malware registrate di recente, diventa liberamente disponibile sempre più codice di questo genere - e il suo formato modulare permette anche a personaggi inesperti di aggiungerlo con relativa facilità ai loro programmi nonostante la complessità intrinseca dei rootkit.

La connessione tra bot e spyware

I rootkit sono essenzialmente una tecnologia: per loro natura non sono dunque né buoni né cattivi. Piuttosto, vengono sempre più frequentemente usati come sistema per rendere invisibile spyware o altro malware. E poiché i rootkit sono facilmente disponibili, i creatori di worm bot hanno iniziato a nascondere le loro creazioni dietro la cortina dei rootkit allo scopo di non farsi individuare per un tempo più lungo.

Ciò significa che in futuro potremo attenderci un aumento dei casi di rootkit rilevati. Dal punto di vista di un attaccante, saltare sul carro dei rootkit presenta diversi vantaggi: codice sorgente liberamente scaricabile e un meccanismo di rilevamento separato che, se scoperto, non inficia in ogni caso il programma principale.

La sfida degli antivirus: intercettazione ed eliminazione

Il problema che deve affrontare ora la maggior parte degli antivirus riguarda il rilevamento dei rootkit: la difficoltà deriva dal fatto che il malware protetto dai rootkit risulta installato a livello di sistema, per cui le tradizionali tecniche di scansione antivirus non sono efficaci - e il malware può continuare a funzionare indisturbato.

Le tre aree in cui le aziende possono concentrare l'intercettazione dei rootkit sono le seguenti:
1. Intervento. Rilevare e fermare il rootkit prima che infetti il sistema; per questo si può usare il meccanismo di verifica delle segnature (o firme) dei programmi di installazione.
2. Rilevamento comportamentale. Rilevare il rootkit mentre viene installato sul sistema. In teoria è possibile analizzare il comportamento dei programmi in esecuzione evidenziando le azioni simili a quelle tipiche di un rootkit. Un problema è dato dal fatto che tecniche di questo genere sono facilmente preda di falsi positivi, dato che programmi legittimi possono presentare schemi di comportamento simili (è il caso ad esempio dei normali device driver). Questo è pertanto un modo rischioso per rilevare i rootkit.
3. Pulizia. Rilevare i rootkit una volta che sono installati. L'obiettivo è quello di scoprire i driver fasulli mentre sono attivi, intercettando una loro porzione non nascosta.

Come accade con tutto il resto del malware, anche le tecniche dei rootkit sono in costante evoluzione e i loro autori scoprono nuovi metodi per nascondere processi, file e registry in maniera efficace contrastando i tentativi dei produttori di antivirus di rilevarli. Si tratta di una battaglia senza soste che potrebbe non avere mai fine, anche se è chiaro che i rootkit non sono destinati a scomparire e continueranno anzi a presentare una sfida alquanto seria. I produttori di antivirus devono concentrarsi sui sistemi per intercettare, rilevare e neutralizzare questa minaccia crescente.