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