RootkitRevealer v1.71

Di Mark Russinovich

Pubblicato: 1 novembre 2006

ScaricareRootkitRevealer(231 KB)
Eseguire orada Sysinternals Live.

Introduzione

RootkitRevealer è un'utilità di rilevamento rootkit avanzata. Viene eseguito in Windows XP (a 32 bit) e Windows Server 2003 (a 32 bit) e le relative discrepanze tra Registro di sistema e API file system che possono indicare la presenza di un rootkit in modalità utente o in modalità kernel. RootkitRevealer rileva correttamente molti rootkit persistenti, tra cui AFX, Vanquish e HackerDefender (nota: RootkitRevealer non è destinato a rilevare i rootkit come Fu che non tentano di nascondere i file o le chiavi del Registro di sistema). Se lo usi per identificare la presenza di un rootkit, ti preghiamo di informarci!

Il motivo per cui non esiste più una versione della riga di comando è che gli autori di malware hanno avviato l'analisi di RootkitRevealer usando il nome eseguibile. È stato quindi aggiornato RootkitRevealer per eseguire l'analisi da una copia denominata casualmente di se stessa che viene eseguita come servizio Windows. Questo tipo di esecuzione non è favorevole a 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, equivalente al comportamento della riga di comando.

Che cos'è un rootkit?

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

Rootkit persistenti
Un rootkit persistente è uno associato al malware che attiva ogni volta che il sistema viene avviato. Poiché tale malware contiene codice che deve essere eseguito automaticamente ogni avvio del sistema o quando un utente accede, deve archiviare il codice in un archivio persistente, ad esempio Registro di sistema o 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 dispone di codice persistente e pertanto non sopravvive a un riavvio.

Rootkit in modalità utente
Esistono molti metodi in base ai quali i rootkit tentano di evitare 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 Explorer e il prompt dei comandi, per enumerare il contenuto delle directory del file system. Quando un'applicazione esegue un elenco di directory che restituisce in caso contrario risultati che contengono 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 file system, Registro di sistema e enumerazione del processo dell'API nativa. Ciò impedisce il rilevamento da scanner che confrontano i risultati di un'enumerazione api Windows con quella restituita da un'enumerazione API nativa.

Rootkit in modalità kernel
I rootkit in modalità kernel possono essere ancora più potenti perché non solo possono intercettare l'API nativa in modalità kernel, ma possono anche modificare direttamente le strutture dei dati in modalità kernel. Una tecnica comune per nascondere la presenza di un processo 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 malware non verrà visualizzato negli strumenti di gestione dei processi, ad esempio Task Manager o Esplora processi.

Funzionamento di RootkitRevealer

Poiché i rootkit persistenti funzionano modificando i risultati dell'API in modo che una visualizzazione di sistema usando le API sia diversa dalla visualizzazione effettiva nell'archiviazione, RootkitRevealer confronta i risultati di un'analisi di sistema al livello più alto con quello più basso. Il livello più alto è l'API Windows e il livello più basso è il contenuto non elaborato di un volume del file system o 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 Windows o l'API nativa per rimuovere la loro presenza da un elenco di directory, ad esempio, verranno visualizzati da RootkitRevealer come una discrepanza tra le informazioni restituite dall'API Windows e che visto nell'analisi non elaborata di strutture di file system di un volume FAT o NTFS.

Può nascondere un rootkit da RootkitRevealer
È teoricamente possibile nascondere un rootkit da RootkitRevealer. A tale scopo, è necessario intercettare le letture di rootkitRevealer dei dati hive del Registro di sistema o dei dati del file system e modificare il contenuto dei dati in modo che i dati o i file del Registro di sistema rootkit non siano presenti. Tuttavia, questo richiederebbe un livello di sofisticatezza non visto nei rootkit fino a data. Le modifiche ai dati richiedono sia una conoscenza intima dei formati HIVe NTFS, FAT e Registro di sistema, sia la possibilità di modificare le strutture dei dati in modo da nascondere il rootkit, ma non causano discrepanze incoerenti o non valide o non valide che sarebbero contrassegnate da RootkitRevealer.

C'è 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 in modo che le informazioni restituite da qualsiasi API, incluse le letture non elaborate dei dati hive e file system del Registro di sistema 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.

La linea inferiore è che non ci sarà mai uno scanner rootkit universale, ma gli scanner più potenti saranno scanner di confronto on-line/off-line che si integrano con antivirus.

Uso di RootkitRevealer

RootkitRevealer richiede che l'account da cui è stato eseguito abbia assegnato i file di backup e le directory, i driver di caricamento ed Eseguire attività di manutenzione del volume (in Windows XP e versioni successive). Il gruppo Administrators viene assegnato questi privilegi per impostazione predefinita. Per ridurre al minimo i falsi positivi, eseguire RootkitRevealer in un sistema inattivo.

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

Se si verificano domande o problemi, visitare il forum RootkitRevealer Sysinternals.

Analisi manuale

Per analizzare un sistema avviarlo nel sistema e premere il pulsante Scan. RootkitRevealer analizza il sistema che segnala le sue azioni in un'area di stato nella parte inferiore della finestra e notando le discrepanze nell'elenco di output. Le opzioni che è possibile configurare:

  • Nascondi file di metadati NTFS: questa opzione è attiva per impostazione predefinita e ha RootkitRevealer non mostra i file di metadati NTFS standard, nascosti dall'API Windows.
  • Analisi del Registro di sistema: questa opzione è attiva per impostazione predefinita. Deselezionare l'opzione rootkitRevealer non eseguire un'analisi del Registro di sistema.

Avvio di un'analisi automatica

RootkitRevealer supporta diverse opzioni per i sistemi di analisi automatica:

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

Parametro Descrizione
-a Eseguire automaticamente l'analisi e uscire al termine.
-c Formattare l'output come CSV.
-m Mostra i file di metadati NTFS.
-r Non analizzare 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 che non segnala lo stato di avanzamento e le discrepanze vengono stampate in formato CSV per l'importazione semplice in un database. È possibile eseguire analisi dei sistemi remoti eseguendolo 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 è uno screenshot di RootkitRevealer che rileva la presenza del popolare rootkit hackerDefender. Le discrepanze delle chiavi del Registro di sistema mostrano che le chiavi del Registro di sistema che archiviano i driver di dispositivo e le impostazioni del servizio di HackerDefender non sono visibili all'API Windows, ma sono presenti nell'analisi non elaborata dei dati hive del Registro di sistema. Analogamente, i file associati a HackerDefender non sono visibili alle analisi della directory API di Windows, ma sono presenti nell'analisi dei dati del file system non elaborati.

Rootkit Revealer

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

Oltre alle informazioni seguenti sulle possibili discrepanze rootkitRevealer, il Forum RootkitRevealer in Sysinternals illustra i rootkit rilevati e i falsi positivi specifici.

Nascosto dall'API Windows

Queste discrepanze sono quelle esposte dalla maggior parte dei rootkit; tuttavia, se non sono stati controllati i file di metadati NTFS nascosti, è consigliabile visualizzare una serie di voci di questo tipo in qualsiasi volume NTFS, poiché NTFS nasconde i file metada, ad esempio $MFT e $Secure, dall'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 rootkit per nascondere i dati archiviati in flussi di dati alternativi NTFS. Se si esegue uno scanner di virus di questo tipo, verrà visualizzata una discrepanza nascosta dall'API Windows per un flusso di dati alternativo in ogni file NTFS. RootkitRevealer non supporta i filtri di output perché i rootkit possono sfruttare qualsiasi filtro. Infine, se un file viene eliminato durante un'analisi, potrebbe verificarsi anche questa discrepanza.

Questo è un elenco di file di metadati NTFS definiti come di 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

L'accesso viene negato.
RootkitRevealer non dovrebbe mai segnalare questa discrepanza perché usa meccanismi che consentono di accedere a qualsiasi file, directory o chiave del Registro di sistema in un sistema.

Visibile in API Windows, indice directory, ma non in MFT.
Visibile nell'API Windows, ma non nell'indice MFT o directory.
Visibile nell'API Di Windows, MFT, ma non nell'indice della directory.
Visibile nell'indice della directory, ma non nell'API Windows o MFT.

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

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

Lunghezza dell'API Windows non coerente con i dati hive non elaborati.
I rootkit possono tentare di nascondersi in modo errato rappresentando 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, anche se può essere visualizzata anche come risultato dei valori del Registro di sistema che cambiano durante un'analisi.

Digitare una mancata corrispondenza tra l'API Windows e i dati hive non elaborati.
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 come segnalato tramite l'API Di Windows differisce da quello dei dati hive non elaborati. Un rootkit può mascherare i dati archiviandolo come valore REG_BINARY, ad esempio, e rendendo l'API Di Windows che ritiene che sia un valore REG_SZ; se archivia 0 all'inizio dei dati, l'API Di Windows non sarà in grado di accedere ai dati successivi.

Il nome della chiave contiene valori Null incorporati.
L'API Di Windows considera i nomi delle chiavi come stringhe con terminazione null, mentre il kernel li considera come stringhe conteggiate. È quindi 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à Sysinternals RegDelNull per eliminare chiavi con valori Null incorporati.

Mancata corrispondenza dei dati tra l'API Windows e i dati hive non elaborati.
Questa discrepanza si verificherà se un valore del Registro di sistema viene aggiornato mentre l'analisi del Registro di sistema è in corso. I valori che cambiano spesso includono timestamp, ad esempio il valore di tempo di attività di Microsoft SQL Server, illustrato di seguito e i valori dello scanner di virus "last scan". È necessario analizzare qualsiasi valore segnalato per assicurarsi che sia un'applicazione o 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 rootkit

I siti Web e i libri seguenti sono origini di ulteriori informazioni sui rootkit:

Sony, Rootkits e Digital Rights Management Andato troppo lontano
Leggere la voce di blog di Mark sulla sua individuazione e analisi di un rootkit Sony in uno dei suoi computer.

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

Rootkit: conversione del kernel di Windows
Questo libro di Greg Hoglund e Jamie Butler è il trattamento più completo dei rootkit disponibili.

www.phrack.org
Questo sito archivia l'archivio di Phrack, una rivista orientata al cracker in cui gli sviluppatori descrivono i difetti nei prodotti correlati alla sicurezza, alle tecniche rootkit e ad altri trucchi malware.

L'arte della ricerca e della difesa del computer, di Peter Szor

Malware: combattere il codice dannoso, di Ed Skudis e Lenny Zeltser

Windows Internals, 4th Edition, di Mark Russinovich e Dave Solomon (il libro non parla dei rootkit, ma la comprensione dell'architettura di Windows è utile per comprendere i rootkit).

ScaricareRootkitRevealer(231 KB)

Eseguire orada Sysinternals Live.