RootkitRevealer v1.71
Por Mark Russinovich
Publicado: 1 de novembro de 2006
Baixar RootkitRevealer(231 KB)
Corra agora da Sysinternals Live.
Introdução
RootkitRevealer é um utilitário avançado de deteção de rootkit. Funciona com Windows XP (32 bits) e Windows Server 2003 (32 bits), e as suas listas de saída registam discrepâncias de API do sistema de registo e ficheiros que podem indicar a presença de um kit de raiz em modo de utilizador ou de modo kernel. RootkitRevealer deteta com sucesso muitos rootkits persistentes, incluindo AFX, Vanquish e HackerDefender (nota: RootkitRevealer não se destina a detetar rootkits como Fu que não tentam esconder os seus ficheiros ou chaves de registo). Se o usar para identificar a presença de um rootkit, por favor, avise-nos!
A razão pela qual já não existe uma versão de linha de comando é que os autores de malware começaram a direcionar a verificação de RootkitRevealer usando o seu nome executável. Por isso, atualizámos o RootkitRevealer para executar a sua verificação a partir de uma cópia de si mesma com nome aleatório que funciona como um serviço Windows. Este tipo de execução não é propício a uma interface de linha de comando. Note que pode utilizar opções de linha de comando para executar uma verificação automática com resultados registados num ficheiro, que é o equivalente ao comportamento da versão da linha de comando.
O que é um Rootkit?
O termo rootkit é usado para descrever os mecanismos e técnicas através dos quais malware, incluindo vírus, spyware e cavalos de troia, tentam esconder a sua presença de bloqueadores de spyware, antivírus e utilitários de gestão de sistemas. Existem várias classificações de rootkit dependendo se o malware sobrevive ao reboot e se executa no modo de utilizador ou no modo kernel.
Rootkits persistentes
Um rootkit persistente é um associado a malware que ativa cada vez que o sistema bota. Uma vez que tal malware contém código que deve ser executado automaticamente cada sistema inicia ou quando um utilizador inicia, deve armazenar código numa loja persistente, como o Registo ou sistema de ficheiros, e configurar um método pelo qual o código executa sem intervenção do utilizador.
Rootkits baseados na memória
Os rootkits baseados na memória são malware que não tem código persistente e, portanto, não sobrevive a um reboot.
Rootkits em modo de utilizador
Existem muitos métodos através dos quais os rootkits tentam evitar a deteção. Por exemplo, um rootkit de modo de utilizador pode intercetar todas as chamadas para o Windows FindFirstFile/FindNextFile APIs, que são utilizados por utilitários de exploração de sistemas de ficheiros, incluindo o Explorer e a pronta de comando, para enumerar o conteúdo dos diretórios do sistema de ficheiros. Quando uma aplicação executa uma lista de diretórios que de outra forma devolveriam resultados que contenham entradas que identifiquem os ficheiros associados ao rootkit, o rootkit interceta e modifica a saída para remover as entradas.
A API nativa Windows serve como interface entre clientes em modo de utilizador e serviços de modo kernel e rootkits de raiz mais sofisticados do modo de utilizador intercetam sistema de ficheiros, registo e funções de enumeração de processos da API nativa. Isto impede a sua deteção por scanners que comparam os resultados de uma Windows a enumeração da API com a que foi devolvida por uma enumeração nativa da API.
Rootkits de modo kernel
Os rootkits em modo kernel podem ser ainda mais poderosos, uma vez que, não só podem intercetar a API nativa em modo kernel, como também podem manipular diretamente as estruturas de dados do modo kernel. Uma técnica comum para esconder a presença de um processo de malware é remover o processo da lista de processos ativos do núcleo. Uma vez que as APIs de gestão de processos dependem do conteúdo da lista, o processo de malware não será exibido em ferramentas de gestão de processos como Task Manager ou Process Explorer.
Como funciona rootkitRevealer
Uma vez que os rootkits persistentes funcionam alterando os resultados da API de modo que uma visão do sistema usando APIs difere da visão real no armazenamento, RootkitRevealer compara os resultados de uma varredura de sistema ao nível mais alto com o que está no nível mais baixo. O nível mais alto é o Windows API e o nível mais baixo é o conteúdo bruto de um volume de sistema de ficheiros ou colmeia de registo (um ficheiro de colmeia é o formato de armazenamento no disco do Registo). Assim, os rootkits, seja no modo de utilizador ou no modo kernel, que manipulam a API Windows ou a API nativa para remover a sua presença de uma lista geminada, por exemplo, serão vistos pela RootkitRevealer como uma discrepância entre as informações devolvidas pela API Windows e as vistas na digitalização bruta das estruturas do sistema de ficheiros fat ou NTFS.
Pode um Rootkit esconder-se do RootkitRevealer
É teoricamente possível que um rootkit se esconda do RootkitRevealer.
Fazê-lo exigiria a interceção das leituras de RootkitRevealer sobre dados da colmeia do Registo ou dados do sistema de ficheiros e alterar o conteúdo dos dados de modo a que os dados ou ficheiros do Rootkit não estejam presentes. No entanto, isto exigiria um nível de sofisticação não visto em rootkits até à data.
As alterações aos dados exigiriam tanto um conhecimento íntimo dos formatos NTFS, FAT e Registry hive, além da capacidade de alterar estruturas de dados de modo a ocultar o rootkit, mas não causar estruturas inconsistentes ou inválidas ou discrepâncias de efeito colateral que seriam sinalizadas pelo RootkitRevealer.
Há uma maneira segura de saber da presença de um rootkit
Em geral, não de dentro de um sistema de funcionamento. Um rootkit de modo kernel pode controlar qualquer aspeto do comportamento de um sistema para que as informações devolvidas por qualquer API, incluindo as leituras brutas da colmeia de registo e dados do sistema de ficheiros realizados pela RootkitRevealer, possam ser comprometidas. Embora comparar uma varredura on-line de um sistema e uma varredura off-line de um ambiente seguro, como uma bota numa instalação do sistema operativo baseado em CD é mais fiável, os rootkits podem direcionar tais ferramentas para escapar à deteção por eles.
A conclusão é que nunca haverá um scanner universal de rootkit, mas os scanners mais poderosos serão scanners de comparação on-line/off-line que se integram com antivírus.
Usando RootkitRevealer
RootkitRevealer requer que a conta a partir da qual a sua execução lhe atribuiu os ficheiros e diretórios de cópia de segurança, os controladores de carga e executar tarefas de manutenção de volume (em Windows XP e superiores) privilégios. O grupo de administradores é atribuído a estes privilégios por defeito. Para minimizar os falsos positivos, executar RootkitRevealer num sistema ocioso.
Para obter melhores resultados, saia todas as aplicações e mantenha o sistema inativo durante o processo de digitalização RootkitRevealer.
Se tiver dúvidas ou problemas, visite o Fórum Sysinternals RootkitRevealer.
Digitalização manual
Para digitalizar um sistema, lance-o no sistema e prima o botão Scan. RootkitRevealer verifica o sistema reportando as suas ações numa área de estado na parte inferior da sua janela e notando discrepâncias na lista de saída. As opções que pode configurar:
- Ocultar ficheiros de metadados NTFS: esta opção está por defeito e tem rootkitRevealer não mostrar ficheiros de metadados NTFS padrão, que estão escondidos do Windows API.
- Registo de verificação: esta opção é por predefinição. A desselecção tem o RootkitRevealer não efetuar uma verificação de registo.
Lançamento de uma varredura automática
RootkitRevealer suporta várias opções para sistemas de auto-digitalização:
Utilização: rootkitrevealer [-a [-c] [-m] [-r] ficheiro de saída]
| Parâmetro | Descrição |
|---|---|
| - um | Verifique e saia automaticamente quando terminar. |
| -c | Saída de formato como CSV. |
| -m | Mostre ficheiros de metadados NTFS. |
| -r | Não digitalize o registo. |
Note que a localização da saída do ficheiro deve estar num volume local.
Se especificar a opção -c, não reporta progressos e as discrepâncias são impressas em formato CSV para facilitar a importação numa base de dados. Pode efetuar digitalizações de sistemas remotos executando-as com o utilitário Sysinternals PsExec utilizando uma linha de comando como:
psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log
Interpretação da saída
Esta é uma imagem de RootkitRevealer que deteta a presença do popular kit de raiz hackerDefender. As discrepâncias-chave do registo mostram que as teclas de registo que armazenam as definições do controlador e do serviço do HackerDefender não são visíveis para a API Windows, mas estão presentes na digitalização bruta dos dados da colmeia do Registo. Da mesma forma, os ficheiros associados ao HackerDefender não são visíveis para Windows verificações de diretórios da API, mas estão presentes na digitalização dos dados do sistema de ficheiros brutos.

Deve examinar todas as discrepâncias e determinar a probabilidade de indicar a presença de um kit de raízes. Infelizmente, não há uma forma definitiva de determinar, com base na saída, se um rootkit está presente, mas deve examinar todas as discrepâncias relatadas para garantir que são explicáveis. Se determinar que tem um kit de raiz instalado, procure na web instruções de remoção. Se não tiver a certeza de como remover um kit de raiz, deverá reformar o disco rígido do sistema e reinstalar Windows.
Além das informações abaixo sobre possíveis discrepâncias RootkitRevealer, o RootkitRevealer Forum at Sysinternals discute rootkits detetados e falsos positivos específicos.
Escondido da API Windows
Estas discrepâncias são as exibidas pela maioria dos rootkits; no entanto, se ainda não verificou os ficheiros de metadados Hide NTFS deverá esperar ver uma série dessas entradas em qualquer volume NTFS, uma vez que o NTFS esconde os seus ficheiros metada, como $MFT e $Secure, da API Windows. Os ficheiros de metadados presentes nos volumes NTFS variam consoante a versão do NTFS e as funcionalidades NTFS que foram ativadas no volume. Existem também produtos antivírus, como o Kaspersky Antivirus, que utilizam técnicas de rootkit para ocultar dados que armazenam em fluxos de dados alternativos NTFS. Se estiver a executar um scanner de vírus, verá um Hidden from Windows API discrepância para um fluxo de dados alternativo em cada ficheiro NTFS. RootkitRevealer não suporta filtros de saída porque os rootkits podem tirar partido de qualquer filtragem. Finalmente, se um ficheiro for apagado durante uma digitalização, também poderá ver esta discrepância.
Esta é uma lista de ficheiros de metadados NTFS definidos a partir de 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
O acesso é negado.
RootkitRevealer nunca deve reportar esta discrepância uma vez que utiliza mecanismos que lhe permitem aceder a qualquer ficheiro, diretório ou chave de registo num sistema.
Visível em Windows API, índice de diretório, mas não em MFT.
Visível em Windows API, mas não em MFT ou índice de diretório.
Visível em Windows API, MFT, mas não no índice de diretório.
Visível no índice de diretório, mas não Windows API ou MFT.
Uma varredura do sistema de ficheiros consiste em três componentes: a API Windows, a Tabela de Ficheiros Master NTFS (MFT) e as estruturas de índice de diretório de discos NTFS. Estas discrepâncias indicam que um ficheiro aparece em apenas um ou dois dos exames. Uma razão comum é que um ficheiro é criado ou eliminado durante as tomografias. Este é um exemplo do relatório de discrepância da RootkitRevealer para um ficheiro criado durante a digitalização:
C:\newfile.txt
3/1/2005 17:26
8 bytes
Visível em Windows API, mas não em MFT ou índice de diretório.
Windows comprimento da API não é consistente com dados de colmeias cruas.
Rootkits podem tentar esconder-se deturpando o tamanho de um valor de registo para que o seu conteúdo não seja visível para a API Windows.
Deve examinar tal discrepância, embora também possa aparecer como resultado dos valores do Registo que mudam durante uma varredura.
Tipo de incompatibilidade entre Windows API e dados de colmeias cruas.
Os valores de registo têm um tipo, como DWORD e REG_SZ, e esta discrepância observa que o tipo de valor relatado através do Windows API difere do dos dados da colmeia bruta. Um rootkit pode mascarar os seus dados armazenando-os como um valor REG_BINARY, por exemplo, e fazendo com que a Windows API acredite que é um valor REG_SZ; se armazenar um 0 no início dos dados, a API Windows não poderá aceder aos dados posteriores.
O nome chave contém nulos embutidos.
A API Windows trata os nomes-chave como cordas terminadas nulas, enquanto o núcleo trata-os como cordas contadas. Assim, é possível criar chaves de registo que sejam visíveis para o sistema operativo, mas apenas parcialmente visíveis para ferramentas de registo como o Regedit. O código de amostra de Reghide na Sysinternals demonstra esta técnica, que é usada tanto por malware como por rootkits para ocultar dados do Registo. Utilize o utilitário Sysinternals RegDelNull para eliminar as teclas com nulos incorporados.
Desfasamento de dados entre Windows dados de API e colmeias cruas.
Esta discrepância ocorrerá se um valor de registo for atualizado enquanto a verificação do registo estiver em curso. Valores que mudam frequentemente incluem os picos de tempo, tais como o valor de Microsoft SQL Server de tempo, mostrado abaixo, e os valores de "última digitalização" do vírus. Deve investigar qualquer valor reportado para garantir que se trata de um valor válido de registo de aplicações ou sistemas.
HKLM\SOFTWARE\Microsoft\microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
3/1/2005 16:33
8 bytes
Recursos Rootkit
Os seguintes web sites e livros são fontes de mais informações sobre rootkits:
Sony, Rootkits e Gestão de Direitos Digitais foram longe demais
Leia a entrada do Mark no blog sobre a sua descoberta e análise de um rootkit da Sony num dos seus computadores.
Descobrindo rootkits
O artigo da Mark's June Windows IT Pro Magazine fornece uma visão geral das tecnologias do rootkit e como funciona o RootkitRevealer.
Rootkits: Subvertendo o kernel Windows
Este livro de Greg Hoglund e Jamie Butler é o tratamento mais abrangente dos rootkits disponíveis.
www.phrack.org
Este site armazena o arquivo da Phrack, uma revista orientada para bolachas onde os desenvolvedores discutem falhas em produtos relacionados com segurança, técnicas de rootkit e outros truques de malware.
A Arte de Investigação e Defesa de Vírus Informáticos,por Peter Szor
Malware: Fighting Malicious Code, by Ed Skoudis and Lenny Zeltser
Windows Internals, 4ª Edição,de Mark Russinovich e Dave Solomon (o livro não fala de rootkits, mas compreender a arquitetura Windows é útil para entender rootkits).
Baixar RootkitRevealer(231 KB)
Corra agora da Sysinternals Live.