# Rootkit

Il rootkit è un insieme di software, tipicamente malevoli, realizzati per ottenere l'accesso a un computer, o a una parte di esso, che non sarebbe altrimenti possibile (per esempio da parte di un utente non autorizzato a effettuare l'autenticazione). Questi software, oltre a garantire tali accessi, si preoccupano di mascherare se stessi o altri programmi utili per raggiungere lo scopo. Il termine inglese "rootkit" deriva dalla concatenazione di due termini: "root", che indica, tradizionalmente, l'utente con i maggiori permessi nei sistemi simil-Unix, e "kit", che si riferisce al software che implementa lo strumento. Il termine "rootkit" assume spesso una connotazione negativa, perché generalmente associato a un malware.
L'installazione di un rootkit può essere automatizzata, oppure un attaccante (cracker) può installarla personalmente una volta ottenuti i permessi di root o l'accesso come amministratore. Ottenere questo tipo di accesso può essere il risultato di un attacco diretto verso il sistema sfruttando, per esempio, una vulnerabilità nota (come Privilege Escalation) o scoprendo una password (ottenuta tramite Cracking o Ingegneria Sociale). Una volta installato il Rootkit, è importante mantenere nascosta l'intrusione così da poter mantenere i privilegi ottenuti. La chiave di questo attacco sta quindi nei permessi di root o Amministratore. Con questi permessi è possibile avere un controllo completo del sistema, questo include anche modificare software, compreso quello nato per rilevarli e bloccarli (come gli antivirus).
Rilevare un Rootkit può essere complicato, perché la prima preoccupazione di questi software è bloccare i programmi che possono trovarli. I metodi per rilevare rootkit includono l'utilizzo di un sistema operativo alternativo e fidato, metodi di analisi comportamentale (behavioral-based methods), signature scanning, analisi dei dump della memoria (memory dump). La rimozione può essere davvero complicata se non quasi impossibile, specialmente nei casi in cui il rootkit risiede nel kernel; formattare la macchina e reinstallare il sistema operativo potrebbe essere l'unica soluzione possibile. Quando però si ha a che fare con dei rootkit nel firmware, la rimozione potrebbe richiedere la sostituzione di parti hardware, oppure l'utilizzo di strumenti specializzati.

## Storia

Il termine rootkit o root kit originariamente si riferiva ad un insieme di software di amministrazione, per sistemi operativi Unix-like modificati a scopo malevolo, per ottenere i privilegi da utente "root". Se un intruso è in grado di rimpiazzare i tool di amministrazione standard di un sistema con un rootkit, allora può ottenere non solo l'accesso come utente "root", ma allo stesso tempo può nascondere le sue attività al vero amministratore di sistema.
Questa prima tipologia di rootkit era facile da rilevare tramite l'utilizzo di strumenti quali Tripwire che non erano stati compromessi, per accedere alle stesse informazioni. Lane Davis e Steven Dake hanno scritto il primo rootkit conosciuto, nel 1990, per i sistemi SunOs UNIX della Sun Microsystem. Nel 1983, nella conferenza tenutasi per il premio Turing, Ken Thompson dei Laboratori Bell, uno dei creatori di Unix, ha teorizzato un compilatore C alterato nelle distribuzioni Unix, e ne ha discusso l'exploit. Il compilatore modificato avrebbe rilevato i tentativi di compilare i comandi Unix di login e generato, di conseguenza, del codice alterato che avrebbe accettato non solo la password corretta dell'utente, ma una password addizionale di “backdoor”, conosciuta solo dall'attaccante. Inoltre il compilatore alterato avrebbe rilevato tentativi di compilare una nuova versione del compilatore stesso, inserendo così lo stesso exploit in quello nuovo. Una revisione del codice sorgente del comando di login o l'aggiornamento del compilatore non avrebbe rivelato nessun codice malevolo. Questo exploit era l'equivalente di un rootkit.
Il primo virus, che attaccava personal computer, documentato, risale al 1986 ed utilizzava una tecnica di occultamento per nascondersi: il virus Brain intercettava i tentativi di leggere il settore di avvio e li reindirizzava ad altre parti dell'hard disk, dove era mantenuta una copia del boot originale. Con il passare del tempo i metodi di occultamento dei virus DOS divennero più sofisticati, con tecniche avanzate che includevano l'aggancio (hooking) di chiamate interrupt INT 13H di basso livello del BIOS, per nascondere modifiche non autorizzare ai file.
Il primo rootkit malevolo per Windows NT è apparso nel 1999: un trojan chiamato NTRootkit creato da Greg Hoglund. Il caso è stato seguito da HackerDefender nel 2003. Il primo rootkit a bersagliare un sistema Mac OS X è apparso nel 2009, mentre il worm Stuxnet è stato il primo a colpire un PLC.

### Lo scandalo rootkit sulla protezione copie della Sony BMG

Nel 2005 Sony BMG ha pubblicato dei CD con dei software per la protezione contro la copia e di gestione dei diritti digitali chiamato Extended Copy Protection, creato dalla società di software First 4 Internet. Il software includeva un lettore musicale il quale di nascosto installava un rootkit che limitava la capacità dell'utente di accedere al disco.
L'ingegnere informatico Mark Russinovich, il quale aveva creato un tool di rilevamento rootkit chiamato RootkitRevealer, ha scoperto il problema in uno dei suoi computer. Lo scandalo che ne è derivato, ha aumentato la consapevolezza del pubblico riguardo ai Rootkit.
Per occultarsi, il rootkit si nascondeva in ogni file che iniziava con “$sys$”. Appena dopo la segnalazione di Russinovich, sono apparsi diversi malware che sfruttavano questa vulnerabilità che affliggeva i sistemi interessati.
Un analista della BBC lo ha chiamato “public relations nightmare” (incubo delle pubbliche relazioni). Sony BGM ha rilasciato delle patch per cancellare il rootkit, ma queste hanno esposto gli utenti ad una vulnerabilità ancora più seria. La società infine si è vista costretta a ritirare i CD. Negli USA è stata intentata una class-action contro Sony BGM.

### Lo scandalo delle intercettazioni greche nel 2004-05

Il caso delle intercettazioni greche nel 2004-05, anche noto come Greek Watergate, riguardava le intercettazioni illegali di oltre 100 telefoni cellulare della rete Vodafone greca, questi telefoni appartenevano per lo più a membri del governo e funzionari pubblici di alto livello. Le intercettazioni cominciarono circa ad agosto 2004 e andarono avanti fino a marzo 2005, senza che l'identità dei colpevoli venisse mai scoperta. Gli intrusi installarono un rootkit che aveva come bersaglio l'AXE telephone exchange della Ericsson. In accordo con la IEEE Spectrum, questo è stato il primo attacco rootkit mai osservato su un sistema special-pourpose, in questo caso la centrale telefonica Ericsson. Il rootkit è stato progettato per modificare la memoria di scambio, mentre stava operando, abilitando così le intercettazioni, mentre disabilitava i registri di controllo, modificava inoltre i comandi che elencavano i processi e i blocchi di dati attivi e interveniva sul comando di verifica del blocco dati di checksum. Una backdoor consentiva ad un operatore, con i permessi da amministratore di sistema, di disattivare il log delle transazioni della centrale, gli allarmi e i comandi di accesso relativi alla sorveglianza. Il rootkit venne scoperto in seguito ad un aggiornamento errato che causava la mancata consegna degli SMS, il quale generava un rapporto di errore automatico. Gli ingegneri della Ericsson furono chiamati ad investigare sul problema, e scoprirono così dei blocchi di dati nascosti contenenti le liste dei numeri di telefono da sorvegliare, insieme al rootkit e al software di monitoraggio illecito.

## Utilizzi

I rootkit moderni non si preoccupano più di elevare i permessi, ma piuttosto mascherano il caricamento di un altro software aggiungendo funzioni per renderlo invisibile. La maggior parte dei rootkit sono classificati come malware, perché sono legati a software malevolo. Per esempio il carico (payload) che si porta dietro un rootkit potrebbe segretamente rubare le password dell'utente, informazioni sulle carte di credito, risorse dal computer oppure potrebbe svolgere attività non autorizzate. Un numero ridotto di rootkit può essere utile all'utente: per esempio, potrebbe mascherare un driver di emulazione dei CD-ROM, permettendo di superare le misure anti-pirateria di un videogioco che richiedono, ad esempio, di inserire il CD nell'apposito lettore per verificare l'autenticità del programma (questa misura di protezione potrebbe risultare fastidiosa anche a chi ha legalmente comprato il software).
I rootkit con il loro payload, possono avere diversi utilizzi:
* Forniscono all'attaccante un accesso non autorizzato e completo tramite backdoor, con lo scopo, per esempio, di rubare o falsificare documenti. Uno dei possibili metodi per raggiungere tale scopo è quello di alterare il meccanismo di login, che per i sistemi UNIX-like può essere il programma /bin/login oppure GINA per i sistemi Windows. Il sostituto sembra funzionare normalmente, ma accetta anche una combinazione di login (username e password) segreta che permette all'attaccante un accesso diretto al sistema con privilegi di amministratore, bypassando così l'autenticazione standard e i meccanismi di autorizzazione.
* Nascondere altri malware, in particolar modo i keyloggers in grado di rubare password e i virus informatici.
* Si appropriano della macchina compromessa rendendola un computer zombie per poterla così sfruttare per attacchi ad altri computer (l'attacco parte dal computer zombie invece che direttamente dal computer dell'attaccante, rendendo così molto difficile, se non impossibile, rintracciare l'autore. I computer “zombie” fanno tipicamente parte di una vasta botnet che può lanciare attacchi di tipo DDoS (Distributed Denial of Service), spam di mail distribuito, click fraud, ecc.
* Forzatura dei DRM (Digital Rights Management)
In alcuni casi i rootkit forniscono funzionalità desiderate, e possono essere installati intenzionalmente dall'utente sul proprio computer:
* Programmi di occultamento dei cheats nei giochi online, per evitare software come Warden.
* Scovare attacchi, per esempio, con un honeypot.
* Software di emulazione avanzata e di sicurezza. Alcohol 120% e Daemon Tools sono esempi di rootkit commerciali non ostili usati per superare i sistemi di protezione dalla copia come SafeDisc o SecuROM. Anche il software antivirus Kaspersky usa tecniche che lo fanno assomigliare ad un rootkit per proteggere sé stesso da azioni malevole. Infatti lui carica dei suoi drivers per intercettare le attività di sistema ed impedire che queste vadano a danneggiarlo. I suoi processi non sono nascosti ma non possono essere terminati con metodi standard (Può essere terminato tramite Process Hacker)
* Protezione antifurto: I portatili possono avere un software rootkit a livello di BIOS che periodicamente riferiscono ad una autorità centrale, permettendo così di monitorare, cancellare o rendere inaccessibili le informazioni sulla macchina in caso di furto.
* Bypassare il Microsoft Product Activation

## Tipologie

Esistono almeno 5 tipi di rootkit, che vanno da quelli a livello più basso nel firmware (con i privilegi più alti), fino a quello con i privilegi minori, cioè a livello utente, che operano nell'anello 3. Esistono combinazioni ibride che possono combinare, per esempio, la modalità utente e la modalità kernel.

### Modalità utente

I rootkit in modalità utente lavorano nell'anello 3, insieme alle altre applicazioni dell'utente, piuttosto che a livello più basso con i processi di sistema. Hanno diversi possibili vettori di installazione per intercettare e modificare il comportamento standard delle application programming interfaces (APIs). Alcuni iniettano delle dynamically linked library (come ad esempio dei file .DLL su windows, o dei file .dylib nei sistemi Mac OS X) negli altri processi, e da qui sono in grado di eseguire all'interno di ogni processo bersaglio, nascondendo queste librerie; altri, se i loro permessi sono sufficienti, semplicemente sovrascrivono la memoria dell'applicazione bersaglio. I meccanismi di injection includono:
* L'utilizzo di estensioni delle applicazioni, fornite dal produttore stesso. Per esempio, Windows Explorer ha delle interfacce pubbliche che permettono a terze parti di estenderne le funzionalità
* Intercettazione di messaggi
* Debugger
* Sfruttamento di vulnerabilità di sicurezza
* Hooking delle funzioni o patch delle API usate più comunemente, ad esempio, per nascondere un processo in esecuzione o un file all'interno del file system.
«…fino a quando le applicazioni in modalità utente eseguiranno solo nel loro spazio riservato, il rootkit avrà bisogno di modificare lo spazio di memoria di ogni singola applicazione. Inoltre, il rootkit ha bisogno di monitorare il sistema per scoprire ogni nuova applicazione che esegue e modificare anche la sua memoria, solo così potrà eseguire in maniera ottimale.»
(Window Rootkit Overview, Symantec)

### Modalità Kernel

I rootkit in modalità kernel (kernel-mode) lavorano con i privilegi più alti nel sistema operativo (anello 0), avendo così la possibilità di aggiungere codice o rimpiazzare porzioni fondamentali del sistema operativo, che comprendono sia il kernel, sia i driver dei dispositivi associati. La maggior parte dei sistemi operativi consentono ai driver dei dispositivi di operare in modalità kernel, quindi di lavorare con gli stessi privilegi del sistema operativo stesso. Per questa ragione molti rookit in kernel-mode sono sviluppati come driver per dispositivi o moduli caricabili, come quelli per il kernel (loadable kernel modules) su sistemi Linux o driver per dispositivi su sistemi Windows. Questa classe di rootkit ha un accesso completo senza restrizioni di sicurezza, ma sono molto più difficili da sviluppare. La loro elevata complessità rende i bug abbastanza comuni ed un qualunque bug a livello kernel può avere un pesante impatto sulla stabilità del sistema, portando così alla scoperta del rootkit. Uno dei più noti rootkit a livello kernel è stato sviluppato per Windows NT 4.0 e pubblicato sulla rivista Phrack da Greg Hoglund nel 1999.
I rootkit di questo tipo possono essere particolarmente ostici da trovare e rimuovere in quanto operano allo stesso livello di sicurezza del sistema operativo e sono quindi in grado di intercettare e sovvertire anche operazioni trusted (fidate) del sistema operativo. Qualunque software, come ad esempio un antivirus, che opera su un sistema compromesso è anch'esso vulnerabile. In una situazione di questo tipo, nessun componente del sistema operativo può essere ritenuta affidabile.
Un rootkit può modificare strutture dati nel kernel di Windows usando un metodo conosciuto come DKOM (direct kernel object manipulation). Questo sistema può essere usato per nascondere processi. Un rootkit in kernel mode può poi agganciare la System Service Descriptor Table (SSDT), o modificare le “porte” per passare da user-mode a kernel-mode per nascondersi. In modo del tutto analogo nei sistemi Linux, un rootkit può modificare la system call table per intervenire sulle funzionalità del kernel. Non è raro che un rootkit crei un file system nascosto e criptato nel quale nascondere altri malware o le copie originali dei file infettati.
I sistemi operativi si stanno evolvendo per far fronte alla minaccia dei rootkit in modalità kernel. Per esempio, le versioni 64 bit di Microsoft Windows ora implementano una firma obbligatoria per tutti i drivers che operano sullo stesso livello del kernel, in modo da rendere molto più difficile, per il codice non verificato, eseguire con privilegi così alti.

#### Bootkits

Una variante del rootkit in kernel-mode è il bootkit, il quale può infettare il codice di avvio, come il Master boot record (MBR), Volume Boot Record(VBR) oppure il settore di boot ed in questo modo può essere usato per attaccare sistemi full disk encryption, ovvero sistemi con hard disk completamente criptati. Un esempio è l'“Evil Maid Attack”, nel quale l'attaccante installa il bootkit su un pc incustodito e rimpiazza il boot loader originale con un altro sotto al suo controllo. Tipicamente il loader del malware sopravvive al passaggio attraverso il protected mode, quando il kernel è già stato caricato ed è quindi in grado di scavalcare questa protezione. Per esempio lo “Stoned Bootkit” riesce a sovvertire il sistema utilizzando un boot loader compromesso in grado di intercettare le chiavi di cifratura e le password. Più recentemente l'Alureon rootkit è riuscito a superare con successo la protezione su Windows 7, basata sulla firma dei driver, per evitare rootkit in kernel-mode nelle architetture a 64 bit. Questo risultato è stato ottenuto mediante la modifica del master boot record. Altri malware, anche se non intesi come qualcosa che compie azioni indesiderate dall'utente, possono essere alcuni “Vista Loader” o “Windows Loader” che lavorano in maniera molto simile, iniettando una tabella ACPI SLIC (System Licensed Internal Code) nella versione caricata in RAM del BIOS durante il boot, in modo tale da scavalcare il processo di attivazione di Windows Vista e Windows 7. Questo vettore di attacco è stato reso inutile nelle versioni (non server) di Windows 8, il quale usa una chiave unica, specifica per ogni macchina, in ogni sistema. La chiave può essere utilizzata solo sulla macchina a cui appartiene.
L'unica difesa nota contro i bootkit è la prevenzione contro gli accessi fisici alla macchina non autorizzati, un problema per i dispositivi portatili, oppure l'utilizzo di un Trusted Platform Module configurato per proteggere i file di avvio.

### Hypervisor Level

I rootkit sono stati creati come Type II Hypervisors, in ambito accademico, come proof of concept (prova del concetto). Sfruttando le funzionalità di virtualizzazione, come Intel VT o AMD-V, questo tipo di rootkit opera nell'Anello-1 e ospita il sistema operativo di destinazione come una macchina virtuale, in tal modo autorizzano il rootkit ad intercettare le chiamate di sistema fatte dal sistema operativo originale. Diversamente dai normali Hypervisors, loro non devono essere caricati prima del sistema operativo. Un Hypervisor Rootkit non ha bisogno di effettuare alcuna modifica al kernel del bersaglio per attaccarlo; questo però non significa che non possa essere scoperto dal sistema operativo ospite. Per esempio le differenze nelle tempistiche possono essere scoperte da istruzioni della CPU. Il rootkit “SubVirt” sviluppato in laboratorio congiuntamente da Microsoft e dai ricercatori della Università del Michigan, è un esempio accademico di rootkit basato su macchina virtuale (VMBR- Virtual Machine Based Rootkit), mentre Blue Pill ne è un altro esempio.
Nel 2009 i ricercatori di Microsoft e della North Carolina State University hanno mostrato il funzionamento di un hypervisor-layer anti-rootkit chiamato Hooksafe, che fornisce una protezione generica contro i rootkit in modalità kernel.
Windows 10 introduce una nuova feature chiamata “Device Guard”, la quale sfrutta la virtualizzazione per fornire una protezione esterna indipendente al sistema operativo contro malware di tipo rootkit.

### Firmware and hardware

Un firmware rootkit utilizza il firmware del dispositivo o della piattaforma per creare un'immagine persistente del malware in un dispositivo hardware, come ad esempio in un router, una scheda di rete, un disco rigido o il BIOS del sistema. Il rootkit si nasconde nel firmware, in quanto spesso non ne viene controllata l'integrità del codice. John Heasman ha dimostrato la fattibilità dei firmware rootkit sia nelle routine del firmware ACPI sia nelle schede di espansione PCI della ROM.
Nell'Ottobre del 2008, dei criminali hanno manomesso dei lettori di carte di credito Europee, prima che fossero installate. I dispositivi intercettavano e trasmettevano i dati delle carte attraverso una rete di telefonia mobile. Nel marzo 2009, i ricercatori Alfredo Ortega e Anibal Sacco hanno pubblicato i dettagli di un rootkit a livello BIOS per sistemi Windows, in grado di resistere alla sostituzione dell'hard disk o alla reinstallazione del sistema operativo. Alcuni mesi dopo hanno scoperto che alcuni portatili erano venduti con un rootkit legittimo, conosciuto come Absolute CompuTrace o Absolute LoJack for Laptops, preinstallato in molti BIOS. Questo rootkit è un sistema anti-furto, ma i ricercatori hanno dimostrato che può essere facilmente utilizzato per scopi malevoli.
Intel Active Management Technology, parte di Intel vPro, implementa un'out-of-band management, il quale fornisce agli amministratori una amministrazione remota, una gestione remota e controllo remoto dei pc, senza alcun coinvolgimento del processore del sistema ospite o del BIOS, anche quando il sistema è spento. L'amministrazione remota include uno spegnimento o una accensione remota, reset, ridirezione del boot, ridirezione della console, accesso pre-boot alle impostazioni del BIOS, filtri configurabili per il traffico di rete in uscita e in ingresso, controllo della presenza, avvisi out-of-band basati su delle policy, accesso alle informazioni del sistema come ad esempio la configurazione hardware, log degli eventi persistente e altre informazioni che sono conservate in una memoria dedicata (non sull'hard disk), accessibile anche a pc spento o se il sistema operativo non è avviato. Alcune di queste funzioni richiedono un rootkit del livello più profondo e un secondo computer spia non removibile è costruito attorno al pc principale. Sandy Bridge e i chipset futuri hanno "l'abilità di uccidere e ripristinare da remoto un PC, perso o rubato, utilizzando il 3G”. I rootkit hardware impiantati nel chipset possono aiutare nel recupero di PC rubati, rimuovere dati o renderli inutili, ma rappresentano anche un problema di privacy e sicurezza, in quanto si trattano a tutti gli effetti di spie irrintracciabili e un hacker potrebbe ottenere il controllo della macchina da remoto.

## Installazione e occultamento

I rootkit impiegano varie tecniche per prendere il controllo di un sistema; il tipo di rootkit va ad influire sulla scelta del vettore di attacco. La tecnica più comune è quella di fare leva su una vulnerabilità di sicurezza per ottenere un aumento dei privilegi non desiderato. Un altro approccio è quello che utilizza un trojan, ingannando l'utente di un computer facendogli credere che l'installazione del rootkit è in realtà un'installazione benigna — in questo caso è la social engineering a convincere l'utente che l'installazione è benefica. Il compito di installazione è ancora più semplice se il principio del privilegio minimo non viene applicato, poiché in questo caso il rootkit non deve richiedere esplicitamente dei permessi elevati (livello amministratore). Altre classi di rootkit possono essere installate solamente da qualcuno con accesso fisico al sistema bersaglio. Alcuni rootkit possono anche essere installati intenzionalmente dal proprietario del sistema o da qualcun altro autorizzato dal proprietario, con lo scopo, ad esempio, di monitorare gli impiegati, rendendo le tecniche sovversive inutili.
L'installazione di rootkit malevoli è commercialmente guidata, con un metodo di compensazione pay-per-install tipico per la distribuzione.
Una volta installato un rootkit prende misure attive per oscurare la sua presenza all'interno del sistema ospite attraverso la sovversione o l'evasione degli strumenti standard di sicurezza del sistema e delle API usate per la diagnosi, scansione e monitoraggio. I rootkit ottengono questo con la modifica del comportamento delle parti fondamentali di un sistema operativo attraverso il caricamento di codice nei processi, l'installazione o la modifica di drivers o moduli kernel. Le tecniche di offuscamento includono il nascondere i processi in esecuzione ai meccanismi di monitoraggio del sistema e nascondere i file di sistema e altri dati di configurazione. Non è raro per un rootkit disabilitare la capacità di event logging di un sistema operativo, nel tentativo di nascondere le prove di un attacco. I Rootkit possono, in teoria, sovvertire ogni attività del sistema operativo. Il “rootkit perfetto” può essere pensato come il “crimine perfetto”: quello che nessuno si rende conto che ha avuto luogo.
I rootkit inoltre prendono una serie di misure, oltre alla installazione nel Ring 0 (kernel-mode), per assicurarsi la loro sopravvivenza contro il rilevamento e la pulizia da parte di software antivirus. Questo include il polimorfismo, tecniche di occultamento, rigenerazione, blocco di software anti-malware e la non installazione su macchine virtuali, nelle quali sono più facili da scoprire e analizzare per i ricercatori.

## Rilevazione

Il problema fondamentale nella scoperta dei rootkit è che il sistema operativo stesso viene compromesso, specialmente dai rootkit a livello kernel, esso quindi non è attendibile per quanto riguarda la ricerca di modifiche non autorizzate a se stesso o ai suoi componenti. Azioni come richiedere una lista di processi in esecuzione, o una lista di file nelle directory, non sono affidabili, le risposte potrebbero non essere quelle previste. In altre parole, i programmi che identificano rootkit che lavorano mentre il sistema infetto è in esecuzione, sono efficaci solo contro i rootkit che hanno qualche difetto nel loro occultamento, o che operano con privilegi più bassi rispetto al programma incaricato di scoprirli. Come con i virus, la scoperta e l'eliminazione dei rootkit è una lotta costante tra le due parti.
La identificazione può utilizzare diversi approcci differenti, incluse firme (es. Software Antivirus), check di integrità (es. firme digitali), rilevamento basato su differenze (es. risultato del confronto atteso vs risultati effettivi) e rilevamento comportamentale (es. monitoraggio dell'utilizzo della CPU o del traffico di rete). Per i rootkit in kernel mode, la scoperta è da considerarsi più complessa, essa richiede infatti un'attenta analisi della System Call Table alla ricerca di hooked function dove il malware potrebbe compromettere il comportamento del sistema oppure l'analisi della memoria alla ricerca di pattern che indicano processi nascosti.
I software per il rilevamento dei rootkit su sistemi Unix includono Zeppo, chrootkit, rkhunter, e OSSEC. Su ambiente Windows, i software di questo tipo sono Microsoft Sysinternals, RootkitRevealer, Avast! Antivirus, Sophos Anti-Rootkit, F-Secure, Radix, GMER e WindowsSCOPE. Ogni software di questo tipo, con la scoperta di nuovi malware, migliora la sua stessa efficacia, ma allo stesso modo gli autori dei malware adattano e testano il loro codice per evitare di essere scoperti dagli strumenti più noti.
La scoperta attraverso un esame della memoria, mentre il sistema operativo preso in esame non sta operando, può mancare i rootkit non conosciuti dal software utilizzato, in quanto neanche il rootkit sta operando e quindi non sono rilevati i comportamenti sospetti. I software anti-malware convenzionali, che operano insieme al rootkit, potrebbero fallire se il rootkit si nasconde in modo efficace.

### Alternative trusted medium

Il metodo migliore e più affidabile per la scoperta dei rootkit che operano a livello del sistema operativo è quello di spegnere il computer sospetto e fare un check della sua memoria di archiviazione attraverso l'avvio di un alternative trusted medium (es. un CD di recupero, una chiave USB). La tecnica è efficace perché il rootkit non può nascondere in maniera attiva la sua presenza, dato che non è in esecuzione.

### Behavioral-based

L'approccio behavioral based per scovare i rootkit tenta di dedurre la presenza di un rootkit, cercando un comportamento rootkit-like. Per esempio può profilare il sistema alla ricerca di differenze nelle tempistiche e nella frequenza della chiamate API, oppure può analizzare l'utilizzo generale della CPU. Questo metodo è complesso e si ha un'alta incidenza di falsi positivi. Rootkit difettosi possono generare cambiamenti molto evidenti per un sistema: il rootkit Alureon blocca i sistemi Windows dopo che un aggiornamento di sicurezza ha portato alla luce un errore di progettazione nel suo codice.
I log di un packet analyzer, di un firewall, o di un sistema di prevenzione delle intrusioni possono evidenziare la presenza di un rootkit in ambiente di rete.

### Signature-based

Gli antivirus raramente trovano tutti i virus nei test pubblici (a seconda di ciò che viene utilizzato e in quale misura), anche se i produttori di questi software incorporano dei rootkit detector nei loro prodotti. Se un rootkit prova a nascondersi durante una scansione antivirus, lo stealth detector potrebbe accorgersene; se il rootkit prova a rimuoversi temporaneamente dal sistema, il signature detector (o “impronta digitale”) può ancora trovarlo. Questo approccio combinato obbliga l'attaccante a implementare dei meccanismi di contrattacco, o “retro” routine che tentano di interrompere i programmi antivirus. I metodi di rivelazione signature-based possono essere efficaci con rootkit ben noti, ma lo sono molto meno con rootkit creati apposta per una specifica vittima, i custom-root rootkit.

### Difference-based

Un altro metodo in grado di scoprire rootkit compara dei dati grezzi “fidati” con il contenuto “contaminato” restituito da una API. Per esempio, i file binari presenti nel disco possono essere confrontati con le loro copie all'interno della memoria operativa (in alcuni sistemi operativi, l'immagine in memoria dovrebbe essere identica alla versione su disco), altrimenti con il risultato restituito dal file system oppure dalle API del registro di sistema può essere controllato tramite le strutture grezze nei dischi fisici sottostanti —però, nel primo caso, possono essere introdotte alcune importanti variazioni da parte di alcuni meccanismi del sistema operativo come il memory relocation o lo shimming. Un rootkit può scoprire la presenza di diversi difference-based scanner o macchine virtuali (quest'ultimo viene comunemente usato per eseguire analisi forensi), e modificare il suo comportamento in modo tale che non venga rilevata alcuna differenza. La rilevazione Difference-based è stata usata da Russinovich per trovare il Sony DRM rootkit.

### Integrity checking

La firma del codice utilizza la struttura della chiave pubblica per verificare se il file ha subito modifiche dopo essere stato firmato digitalmente dal produttore. In alternativa il proprietario o l'amministratore del sistema può usare una funzione crittografica di hash per calcolare l'“impronta digitale” al momento dell'installazione che può aiutare a scoprire successive modifiche non autorizzate alle librerie sul disco. Però, i sistemi meno sofisticati controllano solo se il codice è stato modificato dopo il momento della installazione; eventuali modifiche prima di questo momento non vengono rilevate. L'impronta digitale dovrà essere ristabilita ogni volta che vengono apportate modifiche importanti al sistema: per esempio, dopo aver installato aggiornamenti di sicurezza o service pack. La funzione di hash crea un messaggio digest, ovvero un codice relativamente corto, calcolato a partire da ogni singolo bit nel file, utilizzando un algoritmo che genera grossi cambiamenti in conseguenza ad una modifica, anche minima, nel file originale. Ricalcolando e confrontando i messaggi digest del file installato ad intervalli regolari con un elenco di messaggi fidati, i cambiamenti nel sistema possono essere scoperti e monitorati —purché la baseline originale sia stata creata prima dell'introduzione del malware. I rootkit più sofisticati sono in grado di compromettere il sistema di verifica presentando una copia non modificata del file durante l'ispezione, o attuando le modifiche al codice solo in memoria anziché su hard-disk. Questa tecnica quindi può essere efficace solo contro i rootkit poco sofisticati —per esempio, quelli che rimpiazzano i file binari di Unix, come “ls”, per nascondere la presenza di file.
In modo analogo, la scoperta nel firmware può essere ottenuta calcolando l'hash del firmware e comparandolo con una whitelist di valori attesi, oppure estendendo i valori di hash nel registro di configurazione del Trusted Platform Module (TPM) che vengono poi comparati, anche in questo caso, ad una whitelist di valori attesi. Il codice che esegue l'hash, compara o estende le operazioni deve essere protetto —in questo contesto, la nozione di immutable root-of-trust sostiene che il primo codice per misurare le proprietà di sicurezza di un sistema, deve essere esso stesso attendibile per garantire che un rootkit o un bootkit non compromettano il sistema al suo livello più fondamentale.

### Memory dump

Forzare un dump completo della memoria virtuale, o un dump del kernel (nel caso di un rootkit in kernel-mode) può catturare un rootkit attivo, permettendo così un'analisi forense attuata tramite un debugger applicato al file di dump, senza che il rootkit sia in grado di utilizzare alcuna misura per nascondersi. Questa tecnica è altamente specializzata, e può essere necessario l'accesso a codice sorgente non pubblico o debugging symbols. I dump della memoria avviati dal sistema operativo non sempre possono essere usati per scoprire un hypervisor-based rootkit, il quale è in grado di intercettare e compromettere i tentativi a livello più basso e di leggere la memoria —in uno scenario di questo tipo potrebbe essere necessario un dispositivo hardware, come ad esempio uno che implementa un non-maskable interrupt, per effettuare il dump della memoria. Anche le macchine virtuali rendono più facile l'analisi della memoria di una macchina compromessa dal hypervisor sottostante, per questo motivo alcuni rootkit evitano di infettare macchine virtuali.

## Rimozione

La rimozione manuale di un rootkit è spesso troppo complessa per un utente medio, ma molti software di sicurezza contengono tool specifici per la loro ricerca e rimozione, tipicamente questi tool fanno parte delle suite antivirus. A partire dal 2005, lo strumento Microsoft di rimozione malware per Windows è in grado di rilevare e rimuovere diversi tipi di rootkit. Alcuni scanner antivirus possono bypassare le API del file system, le quali sono vulnerabili alla manipolazione da parte dei rootkit, e accedere direttamente alle strutture dati grezze del file system usando queste informazioni per validare i risultati delle API del sistema e individuare così eventuali differenze che possono essere indicative della presenza di un rootkit.
Ci sono esperti che credono che l'unica via affidabile per rimuovere un rootkit sia reinstallare il sistema operativo tramite un mezzo fidato (trusted). Questo perché gli antivirus e gli antimalware operano su un sistema non fidato e potrebbero quindi rivelarsi loro stessi inefficaci contro rootkit in kernel-mode ben scritti. Avviare un sistema operativo alternativo tramite un trusted media può consentire una pulizia sicura del sistema infetto e una copia dei dati critici —o, in alternativa, di eseguire un'analisi forense. I sistemi operativi leggeri quali Windows PE, Windows Recovery Console, Windows Recovery Environment, BartPE o le Distro Live possono essere utilizzate per questo proposito, permettendo così una pulizia del sistema.
Anche se il tipo e la natura del rootkit sono noti, un intervento manuale potrebbe essere poco pratico, mentre reinstallare il sistema operativo e le applicazioni è più sicuro, semplice e veloce.

## Disponibilità Pubblica

Come molti malware utilizzati dagli attaccanti, così anche molte implementazioni di rootkit sono condivise e facilmente reperibili in rete. Non è raro vedere un sistema compromesso nel quale un rootkit sofisticato e disponibile pubblicamente nasconde la presenza di un worm molto più semplice oppure tool di attacco apparentemente scritti da programmatori inesperti.
La maggior parte dei rootkit disponibili in rete sono nati come exploit o come “proof of concept" accademici per dimostrare la veridicità di metodi per nascondere qualcosa all'interno del sistema di un computer oppure per prendere il controllo di esso. Spesso hanno sistemi per nascondersi non ottimizzati, talvolta infatti lasciano prove involontarie della loro presenza. Comunque, nonostante questo, quando sono utilizzati per un attacco, si rivelano comunque efficaci il più delle volte. Altri rootkit con feature di keylogging come GameGuard sono installati insieme a giochi online.

## Difesa

Il system hardening rappresenta il primo strato di difesa contro i rootkit, impedendo direttamente l'installazione. Applicare patch di sicurezza, applicare il principio del privilegio minimo, ridurre la superficie di attacco e installare software antivirus sono le migliori e più comuni pratiche di difesa contro tutti i tipo di malware.
Le nuove specifiche di avvio sicuro come Unified Estensibile Firmware Interface sono state progettate per affrontare la minaccia dei bootkit, ma anche queste si rivelano inefficaci se le caratteristiche di sicurezza che offrono non vengono utilizzate.
Per i sistemi server vengono utilizzate tecnologie come la Trusted Execution Technology (TXT) di Intel, la quale fornisce un sistema per validare questi server che rimangono così in uno stato fidato. Per esempio, Microsoft Bitlocker cripta i data-at-rest convalidando i server che sono in uno stato fidato all avvio.
PrivateCore Cage è un software che protegge i data-in-use (memoria), per evitare rootkit e bootkit, convalidando i server che si trovano in uno stato riconosciuto come “buono” all'avvio.

## Rootkit famosi

Tra i più noti si possono annoverare FU e NT Rootkit.
Un particolare tipo di rootkit è presente anche nel sistema operativo (versione 3.56 o superiori) della PlayStation 3. Questo è stato introdotto da Sony con l'aggiornamento alla versione 3.56 del firmware e serve a prevenire l'accesso a PlayStation Network delle console modificate, con successivo ban dell'Indirizzo MAC della loro scheda di rete.