ROOTKIT
SEMPRE VIVI E ATTIVI
LE POSSIBILITÀ DI ATTACCO
SONO MOLTEPLICI E SEMPRE
DIFFICILI DA INDIVIDUARE.
Marco Bozzetti, OAI founder
Negli articoli precedenti ho talvolta citato il termine ‘rootkit’: è arrivato il momento di approfondire
questo tema. Il termine rootkit è costituito da due
parti: ‘kit’, che significa strumento, e ‘root, radice; in
informatica, e in particolare nei sistemi Unix, indica
il più alto livello dei diritti di amministrazione di un
sistema. Il significato originario di rootkit è quindi
di strumento, o insieme di strumenti, per acquisire
e gestire i massimi livelli di amministratore; a questo si è associato un altro significato, iniziato per
altro nei sistemi Windows, quello di strumento che
nasconde la presenza di codici maligni. In tal senso
spesso rootkit è usato come sinonimo di malware:
recentemente infatti alcuni codici maligni hanno
svolto le funzioni di rootkit all’interno del sistema
operativo attaccato e operando a livello di processo, di file, di chiave di registro, di porta di rete.
I primi rootkit, realizzati per Unix, risalgono agli inizi
degli anni ‘90, e alla fine di questa decade apparve
il primo per l’NT Windows; occorre arrivare al 2009
per trovare il primo per MacOS X. L’esplosione dei
rootkit e la loro conoscenza da parte del grande
pubblico avvenne nel 2005: Sony BMG pubblicò
dei CD con un software per la protezione dei diritti
d’autore che celava un rootkit in grado di limitare
l’accesso ai contenuto del CD stesso. La patch prodotta per eliminare questo rootkit causò agli utenti
danni ancora più gravi sui loro PC, con un enorme
danno di immagine, oltre a una class action negli
Stati Uniti per Sony BMG.
Sempre più spesso nella creazione di nuovi malware
i rootkit sono usati per nascondere delle backdoor
(‘porta di servizio’ lasciata aperta in un programma
88
maggio 2013
per consentire accessi da locale o da remoto), o, indipendentemente dalla presenza di queste ultime, per
rendere più difficile la rilevazione di codici maligni.
Si deve tener conto che il termine root costituisce
la base logica di ogni rootkit: pur nelle sue diverse
modalità funzionali, l’elemento caratterizzante è
conquistare e mantenere i diritti da amministratore,
che consentono di prendere il totale controllo del
sistema sotto attacco. L’installazione di un rootkit
può essere automatizzata da parte di un codice
maligno o direttamente effettuata dall’attaccante,
che deve avere acquisito i diritti d’accesso da amministratore normalmente grazie a un precedente
attacco basato su tecniche quali il social engineering, il cracking delle password, lo sfruttamento di
vulnerabilità del sistema operativo target.
Nascondere l’intrusione
Installato il rootkit, è possibile nascondere l’intrusione e mantenere i privilegi d’accesso di amministratore. Un rootkit può anche guadagnare i diritti
di amministratore usando vulnerabilità note, e poi
modificare il sistema operativo in modo da nascondere la sua presenza e quella di altro malware che
può installare: tipici esempi backdoor e keylogger.
Win32/Sinowal è un esempio di rootkit che ruba
password, installa backdoor e viene trasportato da
un trojan horse. Esistono rootkit che operano a livello utente e, ad esempio, intercettano le chiamate al
sistema operativo, modificando librerie come le DLL
in Windows o dylib in MacOsX , o interagiscono con
le API degli applicativi: tipicamente permettono di
carpire identificativi d’utente, password e tutte le
informazioni relative all’identità digitale di un utente.
I rootkit più critici si installano sul kernel del sistema
operativo, nel firmware delle periferiche o nel Bios,
Binary InputOutput System. Modificando il Bios si
può ripartire con nuovi sistemi operativi. Un tipo di
rootkit kernel , chiamato bootkit riesce a modificare il Master Boot Record (MBR). Spesso vengono
modificati anche i registri di sistema.
In termini di criticità, oltre ai rootkit di tipo kernel altrettanto pericolosi sono i rootkit a livello di
firmware, capaci di celare codici maligni nel firmware di dispositivi hardware quali le schede di rete, i
driver di porte fisiche e degli hard disk, il Bios. La
loro criticità è acuita dal fatto che normalmente i
software di sicurezza non analizzano il firmware.
Con la diffusione degli hypervisor per la virtualizzazione, sono stati creati rootkit specifici per questi ambienti.
Come identificarli ed eliminarli?
I rootkit sono in genere difficilmente identificabili
grazie soprattutto all’alto livello di priorità con il
quale sono in esecuzione, in particolare quelli che
non operano nello spazio utente; e altrettanto difficili, se non impossibili, da disinstallare. I normali software antivirus e antispyware sovente non li
riescono a individuare e tanto meno a rimuovere.
L’eventuale presenza non voluta di un rootkit può
essere scoperta (analogamente a quella di altri codici maligni) da comportamenti anomali o diversi da
quelli attesi del sistema: funzionalità dei programmi, occupazione CPU, traffico sulle schede di rete;
oppure dall’analisi dei programmi, in particolare di
quelli nascosti.
Un modo semplice ma efficace per individuare rootkit nel sistema, PC o server, è di calcolare e registrare una ‘checksum’ su tutti i file presenti nel
sistema; al suo avvio, e/o periodicamente, ricalcolare questa chekcsum e confrontarla con quella
archiviata per riscontrare se qualche codice maligno, rootkit inclusi, si è annidato nel sistema. Tale
metodo, però, può provocare numerosi falsi allarmi:
modifiche e aggiornamenti nei programmi, spesso
automatici, possono essere non noti/rilevati e quindi erroneamente considerati come codici maligni.
Anche l’uso di sistemi più moderni dotati di Uefi
(unified extensible firmware interface, una nuova
interfaccia tra i sistema operativo e il firmware) può
rappresentare un valido antidoto.
I tradizionali e sistematici aggiornamenti dei software, il backup, l’uso di firewall e di sistemi di monitoraggio e controllo delle funzioni/prestazioni del
sistema, oltre all’attenzione in Internet di non visitare
siti sospetti e di scaricare programmi sconosciuti
Esempi di rootkit recenti
TDL rootkit , con le sue diverse e numerose versioni,
rappresenta un esempio diffuso e ben documentato:
crea un proprio volume criptato e nascosto nel file
system del sistema attaccato, e opera con sistemi
operativi sia a 32 che a 64 bit.
Rootkit.Win32.Fisp.a, con le sue varianti, è un potente rootkit di probabile origine cinese individuato nel
2011: quando viene attivato, rimpiazza l’MBR con un
proprio codice crittato, e apre il sistema al download di altri programmi, ad esempio diffusi giochi on
line, grazie ai quali cattura identità digitali, account
di e-banking e codici di carte di credito per realizzare
frodi.
Ancor più recenti rootkit per il mondo Windows includono ZeroAccess, aka ZAccess and max++.
Un elenco di rootkit, più storico che aggiornato
ed esaustivo, è reperibile sul sito http://www.bleepingcomputer.com/startups/rootkit.html.
e/o di dubbia origine, sono sempre comportamenti
essenziali di prevenzione.
Esistono vari software, open source e commerciali, per scoprire (e tentare di rimuovere) rootkit nei
sistemi Unix/Linux e Windows. In ambito commerciale essi sono inclusi nelle suite di sicurezza dei
principali fornitori di sicurezza; alcuni di questi sono
forniti gratuitamente (talvolta con alcuni limiti),
quali ad esempio TDSSKiller e Microsoft Security
Essentials/ RootkitRevealer.
Tra gli open source si evidenziano per l’ambiente Windows GMER e RootRepeal; per l’ambiente
Unix/Linux Zeppoo, chkrootkit, rkhunter. Ossec,
che svolge le tipiche funzioni di Intrusion Detection
System, può essere usato anche come anti rootkit
in entrambi gli ambienti.
Marco Bozzetti
[email protected]
maggio 2013
89