RootkitRevealer v1.71

Di Mark Russinovich

Data di pubblicazione: 1° novembre 2006

DownloadScaricare RootkitRevealer(231 KB)
Esegui ora da Sysinternals Live.

Introduzione

RootkitRevealer è una utilità avanzata di rilevamento di rootkit. Viene eseguito in Windows XP (32 bit) e Windows Server 2003 (32 bit) e l'output è costituito da elenchi di discrepanze nelle API del file system e del Registro di sistema che potrebbero indicare la presenza di un rootkit in modalità kernel o in modalità utente. RootkitRevealer rileva correttamente molti rootkit persistenti, tra cui AFX, Vanquish e HackerDefender (nota: RootkitRevealer non è progettato per rilevare i rootkit come Fu che non tentano di nascondere i file o le chiavi del Registro di sistema). Se si usa l'utilità per identificare la presenza di un rootkit, segnalarlo.

Il motivo per cui non esiste più una versione della riga di comando è che gli autori di malware hanno iniziato a bersagliare l'analisi di RootkitRevealer usando il nome dell'eseguibile. Abbiamo quindi aggiornato RootkitRevealer in modo che l'analisi venga eseguita da una copia di se stesso con un nome casuale eseguita come servizio di Windows. Questo tipo di esecuzione non è compatibile con un'interfaccia della riga di comando. Si noti che è possibile usare le opzioni della riga di comando per eseguire un'analisi automatica con i risultati registrati in un file, il che equivale al comportamento della versione da riga di comando.

Che cos'è un rootkit?

Il termine rootkit viene usato per descrivere i meccanismi e le tecniche con cui il malware, inclusi virus, spyware e trojan, tentano di nascondere la loro presenza a blocchi di spyware, antivirus e utilità di gestione del sistema. Esistono diverse classificazioni del rootkit a seconda che il malware sopravviva o meno al riavvio e che venga eseguito in modalità utente o kernel.

Rootkit persistenti
Un rootkit persistente è associato a malware che si attiva ogni volta che il sistema viene avviato. Poiché tale malware contiene codice che deve essere eseguito automaticamente a ogni avvio del sistema o quando un utente accede, deve archiviare il codice in un archivio permanente, ad esempio il Registro di sistema o il file system, e configurare un metodo in base al quale il codice viene eseguito senza intervento dell'utente.

Rootkit basati sulla memoria
I rootkit basati sulla memoria sono malware che non ha codice persistente e pertanto non sopravvive a un riavvio.

Rootkit in modalità utente
Esistono vari metodi con cui i rootkit tentano di eludere il rilevamento. Ad esempio, un rootkit in modalità utente potrebbe intercettare tutte le chiamate alle API Windows FindFirstFile/FindNextFile, usate dalle utilità di esplorazione del file system, tra cui Esplora risorse e il prompt dei comandi, per enumerare il contenuto delle directory del file system. Quando un'applicazione avvia la visualizzazione di un elenco di directory che altrimenti restituirebbe risultati contenti voci che identificano i file associati al rootkit, il rootkit intercetta e modifica l'output per rimuovere le voci.

L'API nativa di Windows funge da interfaccia tra i client in modalità utente e i servizi in modalità kernel e i rootkit in modalità utente più sofisticati intercettano le funzioni di enumerazione di file system, Registro di sistema e processi dell'API nativa. Ciò impedisce che vengano rilevati dagli scanner che confrontano i risultati di un'enumerazione dell'API di Windows con quelli restituiti da un'enumerazione dell'API nativa.

Rootkit in modalità kernel
I rootkit in modalità kernel possono essere ancora più potenti perché, oltre a intercettare l'API nativa in modalità kernel, possono anche modificare direttamente le strutture di dati in modalità kernel. Una tecnica comune per nascondere la presenza di un processo di malware consiste nel rimuovere il processo dall'elenco dei processi attivi del kernel. Poiché le API di gestione dei processi si basano sul contenuto dell'elenco, il processo di malware non verrà visualizzato negli strumenti di gestione dei processi come Gestione attività o Process Explorer.

Come funziona RootkitRevealer

Poiché i rootkit persistenti funzionano cambiando i risultati dell'API in modo che una visualizzazione di sistema che usa le API differisca dalla visualizzazione effettiva nell'archiviazione, RootkitRevealer confronta i risultati di un'analisi di sistema al livello più alto con quelli al livello più basso. Il livello più alto è l'API di Windows e il livello più basso è il contenuto non elaborato di un volume del file system o di un hive del Registro di sistema (un file hive è il formato di archiviazione su disco del Registro di sistema). Pertanto, i rootkit, sia in modalità utente che in modalità kernel, che modificano l'API di Windows o l'API nativa per rimuovere la loro presenza da un elenco di directory, ad esempio, verranno visti da RootkitRevealer come discrepanza tra le informazioni restituite dall'API di Windows e quelle viste nell'analisi di contenuto non elaborato delle strutture del file system di un volume FAT o NTFS.

Un rootkit può nascondersi RootkitRevealer
In teoria è possibile che un rootkit si nasconda da RootkitRevealer. A questo scopo dovrebbe intercettare le letture di RootkitRevealer dei dati degli hive del Registro di sistema o dei dati del file system e cambiare il contenuto dei dati in modo che i dati o i file del Registro di sistema del rootkit non siano presenti. Tuttavia, questo richiederebbe un livello di complessità non visto finora nei rootkit. Le modifiche ai dati richiederebbero sia una conoscenza completa dei formati degli hive di NTFS, FAT e Registro di sistema, sia la capacità di cambiare le strutture dei dati in modo che nascondano il rootkit, ma non causino strutture incoerenti o non valide oppure effetti collaterali come discrepanze che verrebbero contrassegnate da RootkitRevealer.

Esiste un modo sicuro per conoscere la presenza di un rootkit
In generale, non dall'interno di un sistema in esecuzione. Un rootkit in modalità kernel può controllare qualsiasi aspetto del comportamento di un sistema, quindi le informazioni restituite da qualsiasi API, incluse le letture di contenuto non elaborato di hive del Registro di sistema e dati del file system eseguite da RootkitRevealer, possono essere compromesse. Mentre si confronta un'analisi on-line di un sistema e un'analisi off-line da un ambiente sicuro, ad esempio un avvio in un'installazione del sistema operativo basato su CD è più affidabile, i rootkit possono indirizzare tali strumenti per evitare il rilevamento anche da essi.

Il risultato è che non sarà mai disponibile uno scanner universale di rootkit, ma i più potenti saranno quelli che eseguono il confronto online/offline e si integrano con l'antivirus.

Uso di RootkitRevealer

RootkitRevealer richiede che all'account da cui viene eseguito siano assegnati i privilegi Backup di file e directory, Caricamento di driver ed Esecuzione attività di manutenzione volume (in Windows XP e versioni successive). Questi privilegi sono assegnati per impostazione predefinita al gruppo Administrators. Per ridurre al minimo i falsi positivi, eseguire RootkitRevealer in un sistema inattivo.

Per ottenere risultati ottimali, chiudere tutte le applicazioni e mantenere il sistema inattivo durante il processo di analisi di RootkitRevealer.

Per domande o problemi, visitare il forum di Sysinternals su RootkitRevealer.

Analisi manuale

Per analizzare un sistema avviare l'utilità e premere il pulsante Scan. RootkitRevealer analizza il sistema segnalando le azioni in un'area di stato nella parte inferiore della finestra e annotando le discrepanze nell'elenco di output. Le opzioni che è possibile configurare sono:

  • Hide NTFS Metadata Files: con questa opzione, attivata per impostazione predefinita, RootkitRevealer non mostra i file di metadati standard di NTFS, che sono nascosti all'API di Windows.
  • Scan Registry: questa opzione è attivata per impostazione predefinita. Se viene deselezionata, RootkitRevealer non esegue l'analisi del Registro di sistema.

Avvio di un'analisi automatica

RootkitRevealer supporta diverse opzioni per l'analisi automatica dei sistemi:

Sintassi: rootkitrevealer [-a [-c] [-m] [-r] outputfile]

Parametro Descrizione
-a Esegue automaticamente la scansione ed esce al termine.
-c Genera output in formato CSV.
-m Mostra i file di metadati di NTFS.
-r Non analizza il Registro di sistema.

Si noti che il percorso di output del file deve trovarsi in un volume locale.

Se si specifica l'opzione -c lo stato di avanzamento non viene indicato e le discrepanze vengono stampate in formato CSV per facilitare l'importazione in un database. È possibile eseguire analisi dei sistemi remoti eseguendole con l'utilità Sysinternals PsExec usando una riga di comando simile alla seguente:

psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log

Interpretazione dell'output

Questo screenshot di RootkitRevealer rileva la presenza del popolare rootkit HackerDefender. Le discrepanze nelle chiavi del Registro di sistema mostrano che le chiavi che archiviano le impostazioni del driver di dispositivo e del servizio di HackerDefender non sono visibili all'API di Windows, ma sono presenti nell'analisi di dati non elaborati degli hive del Registro di sistema. Analogamente, i file associati a HackerDefender non sono visibili alle analisi della directory dell'API di Windows, ma sono presenti nell'analisi dei dati non elaborati del file system.

Rootkit Revealer

È consigliabile esaminare tutte le discrepanze e determinare la probabilità che indichino la presenza di un rootkit. Purtroppo non esiste un modo definitivo per determinare, in base all'output, se è presente un rootkit, ma è necessario esaminare tutte le discrepanze segnalate per assicurarsi che siano spiegabili. Se si determina che è installato un rootkit, cercare sul Web le istruzioni per rimuoverlo. Se non si è certi di come rimuovere un rootkit, è necessario riformattare il disco rigido del sistema e reinstallare Windows.

Oltre alle informazioni seguenti sulle possibili discrepanze rilevate da RootkitRevealer, il forum di Sysinternals su RootkitRevealer illustra i rootkit rilevati e specifici falsi positivi.

Hidden from Windows API

Queste discrepanze sono quelle esposte dalla maggior parte dei rootkit; tuttavia, se non è stata selezionata l'opzione Hide NTFS metadata files, si dovrebbero vedere diverse voci di questo tipo in qualsiasi volume NTFS, perché NTFS nasconde i propri file di metadati, come $MFT e $Secure, all'API di Windows. I file di metadati presenti nei volumi NTFS variano in base alla versione di NTFS e alle funzionalità NTFS abilitate nel volume. Esistono anche prodotti antivirus, come Kaspersky Antivirus, che usano tecniche di rootkit per nascondere i dati che archiviano in flussi di dati alternativi di NTFS. Se si esegue un tale antivirus, si vedrà una discrepanza Hidden from Windows API per un flusso di dati alternativo in ogni file di NTFS. RootkitRevealer non supporta i filtri di output perché i rootkit possono sfruttare qualsiasi filtro. Infine, questa discrepanza potrebbe verificarsi anche se un file viene eliminato durante un'analisi.

Questo è un elenco di file di metadati di NTFS definiti a partire da Windows Server 2003:

  • $AttrDef
  • $BadClus
  • $BadClus:$Bad
  • $BitMap
  • $Boot
  • $LogFile
  • $Mft
  • $MftMirr
  • $Secure
  • $UpCase
  • $Volume
  • $Extend
  • $Extend\$Reparse
  • $Extend\$ObjId
  • $Extend\$UsnJrnl
  • $Extend\$UsnJrnl:$Max
  • $Extend\$Quota

Access is Denied.
RootkitRevealer non dovrebbe mai segnalare questa discrepanza, perché usa meccanismi che gli consentono di accedere a qualsiasi file, directory o chiave del Registro di sistema in un sistema.

Visibile nell'API di Windows, nell'indice di directory, ma non in MFT.
Visibile nell'API di Windows, ma non in MFT o nell'indice di directory.
Visibile nell'API di Windows e in MFT ma non nell'indice di directory.
Visibile nell'indice di directory, ma non nell'API di Windows o in MFT.

Un'analisi del file system è costituita da tre componenti: l'API di Windows, la tabella MFT (Master File Table) e le strutture dell'indice di directory NTFS su disco. Queste discrepanze indicano che un file viene visualizzato solo in una o due delle analisi. Un motivo comune è che un file viene creato o eliminato durante le analisi. Questo è un esempio del report di discrepanze di RootkitRevealer per un file creato durante l'analisi:

C:\newfile.txt
3/1/2005 5:26 PM
8 byte
Visibile nell'API di Windows, ma non in MFT o nell'indice di directory.

Windows API length not consistent with raw hive data.
I rootkit possono tentare di nascondersi rappresentando erroneamente le dimensioni di un valore del Registro di sistema in modo che il relativo contenuto non sia visibile all'API di Windows. È consigliabile esaminare qualsiasi discrepanza di questo tipo, sebbene possa comparire anche come risultato di valori del Registro di sistema che cambiano durante un'analisi.

Type mismatch between Windows API and raw hive data.
I valori del Registro di sistema hanno un tipo, ad esempio DWORD e REG_SZ, e questa discrepanza nota che il tipo di un valore segnalato tramite l'API di Windows differisce da quello dei dati di hive non elaborati. Un rootkit può mascherare i suoi dati archiviandoli come valore REG_BINARY, ad esempio, e facendo credere all'API di Windows che si tratta di un valore REG_SZ; se archivia un valore 0 all'inizio dei dati, l'API di Windows non sarà in grado di accedere ai dati successivi.

Key name contains embedded nulls.
L'API di Windows considera i nomi delle chiavi come stringhe con terminazione Null, mentre il kernel li considera come stringhe conteggiate. Pertanto, è possibile creare chiavi del Registro di sistema visibili al sistema operativo, ma solo parzialmente visibili agli strumenti del Registro di sistema come Regedit. Il codice di esempio Reghide in Sysinternals illustra questa tecnica, usata sia da malware che da rootkit per nascondere i dati del Registro di sistema. Usare l'utilità RegDelNull di Sysinternals per eliminare le chiavi con valori Null incorporati.

Data mismatch between Windows API and raw hive data.
Questa discrepanza si verifica se un valore del Registro di sistema viene aggiornato mentre è in corso l'analisi del Registro di sistema. I valori che cambiano di frequente includono timestamp, ad esempio il valore del tempo di attività di Microsoft SQL Server, illustrato di seguito, e i valori dell'ultima analisi di un antivirus. È consigliabile esaminare qualsiasi valore segnalato per assicurarsi che si tratti di un'applicazione o di un valore del Registro di sistema valido.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
3/1/2005 4:33 PM
8 byte

Risorse per i rootkit

I siti Web e i libri seguenti sono fonti di altre informazioni sui rootkit:

Sony, Rootkits and Digital Rights Management Gone Too Far
Leggere il post di blog di Mark su come ha individuato e analizzato un rootkit di Sony in uno dei suoi computer.

Unearthing Rootkits
L'articolo di giugno di Windows IT Pro Magazine scritto da Mark offre una panoramica delle tecnologie di rootkit e del funzionamento di RootkitRevealer.

Rootkits: Subverting the Windows Kernel
Questo libro di Greg Hoglund e Jamie Butler è il trattato più completo disponibile sui rootkit.

www.phrack.org
Questo sito contiene l'archivio di Phrack, una rivista orientata ai cracker in cui gli sviluppatori discutono di falle dei prodotti correlati alla sicurezza, tecniche di rootkit e altri trucchi del malware.

The Art of Computer Virus Research and Defense di Peter Szor

Malware: Fighting Malicious Code di Ed Skoudis and Lenny Zeltser

Windows Internals, 4a edizione di Mark Russinovich e Dave Solomon (il libro non parla di rootkit, ma per comprenderli è utile conoscere l'architettura di Windows).

DownloadScaricare RootkitRevealer(231 KB)

Esegui ora da Sysinternals Live.