Você está na página 1de 12

Página 

W
H
Eu
T
E
P
UMA
P Quando o Malware
E
R
:
Encontra Rootkits
S
Y
M
UMA
N
T
E Elia Florio
C Symantec Security Response, Dublin
S
E
C
você
R
Eu
T
Y
R
E
S
P
O
N
S
E

Originalmente publicado pelo Virus Bulletin, dezembro de 2005. Direitos autorais de Virus Bulletin, Ltd., mas é feito
Disponível gratuitamente através da permissão do Virus Bulletin. Para obter mais informações sobre o Virus Bulletin,
Visite http://virusbtn.com/

Página 2
Página 3

White Paper: Resposta da Symantec Security

WHEN Muma
eu
Wuma
RE
MEETS ROOTKEu
TS

CONTENTS

UMA
BSTRuma
CT-benzóico. -benzóico. 4

Eu
NTRODVcCTEu
ON - THE uma
RT OF HEu
DEu
NG EXPRESSED Eu
N Muma
NY FORMS-benzóico. 4

GHOST PROCESSES Eu
N THE SYSTEM-benzóico. 8

WORMS VcSEu
NG \DEVEu
CE\PHYSEu
Cuma
eu
MEMORY-benzóico. 7

UMA
Ceu
OSER eu
OOK uma
T THE ROOTKEu
T CODE VcSED BY Fuma
NBOT-benzóico. -benzóico. 8

ROOTKEu
T TECHNOeu
OGEu
ES Eu
N THE WEu
eu
D-benzóico. ................................................. 11

REFERENCES-benzóico. -benzóico. -benzóico. 13

UMA
BOVcT THE UMA
VcTHOR-benzóico. -benzóico. 14
3

Página 4

Quando o malware atende aos rootkits

UMA
BSTRuma
CT
Houve um tempo em que os rootkits do Windows eram apenas aplicativos autônomos, mas hoje é muito comum
Para encontrar avançadas tecnologias de rootkit usadas em worms e trojans - e às vezes até em sites não-maliciosos
Programas. Embora os rootkits do Windows tenham sido introduzidos há poucos anos, o número de programas
Atualmente usa tecnologia furtiva, ou que irá usá-la no futuro, está crescendo muito rapidamente, às vezes com
Conseqüências inesperadas. Este artigo não abrange todas as técnicas de rootkits, uma vez que o tópico é enorme.
Para obter informações sobre rootkits e como eles funcionam em sistemas operacionais Windows, consulte [1]. Este papel
Trata apenas de uma técnica de rootkit específica conhecida como 'DKOM usando \ Device \ PhysicalMemory'. Isso
Técnica foi observada recentemente no worm W32/Fanbot.A@mm [2], que se espalhou em todo o mundo em outubro
2005. O artigo também apresentará alguns dados sobre o uso de rootkits em ameaças maliciosas.

Eu
NTRODVcCTEu
ON - THE uma
RT OF HEu
DEu
NG EXPRESSED Eu
N Muma
NY FORMS
Os rootkits geralmente são divididos em duas categorias: rootkits de modo usuário que funcionam no modo Ring 3 e kernel-
Modo rootkits que operam em Ring0. Este último representa um código mais sofisticado, que
Requer muitos conhecimentos de programação e familiaridade com o kernel do Windows.

As técnicas em modo kernel são muito poderosas e os rootkits mais avançados são capazes de subverter o
Windows kernel [3] e ocultar arquivos, pastas, chaves de registro, portas e processos. Esse tipo de rootkit precisa
Operar como um driver de sistema para manipular o kernel porque essa interação requer privilégios Ring0,
Que não estão disponíveis para executáveis normais no espaço userland.

O principal inconveniente desta implementação é que o rootkit sempre vem com dois binários diferentes
(Um driver SYS e um EXE que instala o driver) e este fato levanta algumas barreiras para a prática
Integração deste tipo de ameaça em aplicações reais. Mesmo se o driver SYS pode esconder tudo
(Incluindo a si mesma), ele precisa manter as estruturas estáticas instaladas na memória do kernel que podem ser detectadas [4].
Além disso, o processo de instalação requer interação com o Windows Service Control Manager (SCM)
Ou usa a API ZwSetSystemInformation indocumentada. Ambos os métodos podem criar
evidências da presença da ameaça ou pode ser bloco ed durante a ins fase tallation.

GHOST PROCESSES Eu
N THE SYSTEM
Por estas razões, a próxima geração de rootkits começou a se aproximar do kernel do Windows em um
Modo, evitando a necessidade de um driver SYS e ganchos do sistema. Esse objetivo é alcançado misturando a idéia
Introduzido pelo rootkit FU (conhecido como DKOM, Direct Kernel Object Manipulation) com outra técnica
Que envolve a manipulação do objeto \ Device \ PhysicalMemory e não requer qualquer
motorista . O método de ' jogar' com o objeto memória física foi importada do mundo Linux,
Onde outro (em) rootkit famoso conhecido como 'SucKIT' [5] está ganhando muita popularidade.

DKOM roo tkits são capazes de manipular k ernel s STRUTURAS e podem ocultar processos e portas, mudança
Privilégios e enganar o visualizador de eventos do Windows sem muitos problemas. Este tipo de rootkit oculta

Página 5

Quando o malware atende aos rootkits


Processos manipulando a lista de processos ativos do sistema operacional, alterando os dados dentro do
EPROCESS estruturas. Este método é bem documentado e foi inicialmente implementado pelo rootkit FU [6].

Essencialmente, o sistema operacional Windows mantém duas listas diferentes de todos os processos e threads
Informações (PID, nome, token, etc.). Cada processo tem uma estrutura EPROCESS associada, que está ligada
Para o anterior eo seguinte processo (lista dupla) usando alguns ponteiros. A Figura 1 mostra, com um
Diagrama simplificado, como as estruturas EPROCESS estão interligadas.

FEu
GVcRE 1: WEu
NDOWS EPROCESS STRVcCTVcRES uma
RE CONNECTED TO Euma
CH OTHER BY uma
DOVcBeu
E-eu
Eu
NKED eu
Eu
ST.

No entanto, muitas pessoas não percebem que os processos não funcionam; Apenas threads executar. O sistema operacional Windows
5

Página 6

Quando o malware atende aos rootkits

Usa um método preventivo, prioritário, round robin de escalonamento de threads, trocando o


Status ativo de um segmento para outro (estruturas de processo não estão envolvidas no switch).

Considerando este fato, os rootkits do DKOM exploram um truque muito simples: eles desvinculam seu próprio EPROCESS de
Lista, conectando os ponteiros do anterior e do próximo EPROCESS de uma forma que
Processo "fantasma".
FEu
GVcRE 2: TO HEu
DE uma
PROCESS THE DKOM ROOTKEu T SEuMPeu Y VcNeu
Eu
NKS Eu
T FROM THE eu
Eu
ST, eu
Eu
NKEu
NG Eu
TS PREVEu
OVcS PROCESS
WEuTH THE NEXT ONE. Eu
T' S JVcST uma
SWuma
P OF uma
FEW POEu
NTERS.

Página 7

Quando o malware atende aos rootkits

Com essa simples alteração, um processo torna-se invisível para o gerenciador de tarefas e outros processos comuns
Gerente, mas ele ainda é executado no sistema como todos os seus segmentos ainda estão ativos. Apenas ferramentas avançadas (por exemplo,
KProcCheck [7]) pode detectar a presença do processo oculto atravessando a lista de
Lista de threads do planejador.

Esse tipo de ameaça (rootkit DKOM que usa \ Device \ PhysicalMemory) é bastante difícil de codificar porque ele
Requer as seguintes habilidades:

1. A capacidade de obter acesso de leitura / escrita para o objeto \ Device \ PhysicalMemory.


2. A capacidade de manipular corretamente a estrutura EPROCESS / ETHREAD (estas estruturas diferem
Muito entre Windows 2000, XP e 2003).
3. A capacidade de localizar o processo 'System' na memória do kernel e corrigi-lo.
4. A habilidade de traduzir o endereço virtual de um processo para um endereço físico na memória.

Embora tenha havido bons exemplos dos três primeiros passos [8] no passado, o último passo é o mais
Difícil como o esquema de endereçamento do Windows é baseado em uma camada complexa de matrizes múltiplas.
Os endereços virtuais de um processo podem ter endereços físicos diferentes mapeados em memória do kernel [9].

WORMS VcSEu
NG \DEVEu
CE\PHYSEu
Cuma
eu
MEMORY
Foi surpreendente encontrar uma implementação prática (e bem escrita) desta técnica de rootkit dentro do
W32/Fanbot.A@mm código. W32 / Fanbot.A não é o único worm que usa o DKOM e
\ Device \ PhysicalMemory. O primeiro worm que tentou conseguir isso foi W32 / Myfip.H. Contudo,
A rotina observada neste worm foi um pouco buggy e não funcionou bem em sistemas XP e 2003 como
Ele usou um modelo de memória simplificado (o truque introduzido em [8]) para mapear endereços lógicos para física
Endereços.

W32 / My fip.H tentou "emular" o MmGetPhysicalAddress kernel do API, verificando se o endereço virtual
Estava no intervalo (0x80000000 - 0xA0000000) e aplicar a ele uma máscara AND de 0x1FFFF000. Contudo,
MmGetPhysicalAddress muda a lo t do Windows 2000 para o XP , então a forma correta de traduzir o virtual
Endereço é usar as tabelas de página do processo específico que possui o endereço virtual a ser traduzido.

Em vez disso, o W32 / Fanbot.A implementa um bom algoritmo para a tradução de endereços que considera a página
Diretório ea Tabela de Páginas (incluindo testes para páginas grandes).

Ele também segue todas as regras básicas de gerenciamento de memória: ele extrai PDindex do endereço virtual, obtém
O PDE correto, localiza o PTE correspondente e, finalmente, calcula o endereço físico correto. o
única limitação do W32 / F Anbo código t.A é que ele não funciona em versões do Windows com PAE (Página
Address Extension), porque faz a suposição de entradas de quatro bytes para PD e PT.
7

Página 8

Quando o malware atende aos rootkits

FEu
GVcRE 3: THE MYFEu
P.H Vuma
REu
uma
NT Eu
MPeuEMENTED uma
DKOM ROVcTEu
NE Puma
TCHEu
NG PHYSEu
Cuma
eu
MEMORY OBJECT, BVcT Eu
T VcSES
uma
SEu
MPeuEu
FEu
ED TRuma
NSeu
uma
TEu
ON uma
eu
GOREu
THM FOR uma
DDRESSES.

UMA
Ceu
OSER eu
OOK uma
T THE ROOTKEu
T CODE VcSED BY Fuma
NBOT
W32 / F Anbo t.A@mm é um worm que tem todas as técnicas de correio em massa típicos. Esta variante vem
Embalado com NsPack e instala-se como um serviço. Ele pode se espalhar por e-mail, copiar-se em pastas P2P e
Explorar a vulnerabilidade plug-and-play universal (MS05-039).

Uma vez descompactado (276 KB de código), é possível localizar a rotina DKOM procurando o Unicode
String '\ Device \ PhysicalMemory' e rastreando sua referência de volta para o endereço virtual 0x40F8A5, onde
O código do rootkit começa. A coisa agradável (para escritores de malware) é que a rotina de rootkit do worm é
Escrito de forma modular para que possa ser facilmente extraído e reutilizado em qualquer outro malware.

Primeiro, o worm carrega a biblioteca NTDLL.DLL e obtém as APIs necessárias para operar
(RtlInitUnicodeString e ZwOpenSection).

Página 9

Quando o malware atende aos rootkits

Em seguida, ele verifica a versão do sistema operacional e usa uma técnica interessante para localizar o PDB (Page Directory Base)
Processo "Sistema". Os rootkits DKOM precisam localizar o processo System para obter seu PDB (que é
Necessário para a tradução de endereços físicos). Por exemplo, o rootkit FU tenta localizar o sistema iterando
Todas as estruturas
Processo do sistema,EPROCESS
verificandoeUniqueProcessID, porque 'System'
procurando a seqüência no nome.
em sistemas Outros
Microsoft rootkits suposição
a seguinte encontraméo
Geralmente verdadeiro:

• Windows NT / 2000 => 'Sistema' PID = 8


• Windows XP / 2003 => 'Sistema' PID = 4

No entanto, o W32 / Fanbot.A usa um método completamente diferente: ele não procura uma seqüência de caracteres ou PID - apenas
Verifica a versão do sistema operacional e localiza o PDB do processo do sistema diretamente usando um dos seguintes
Offsets (como explicado em [10]):

• Windows 2000 => 'Sistema' PDB = 0x30000


• Windows XP => 'Sistema' PDB = 0x39000

Nesta fase, o worm está pronto para abrir '\ Device \ PhysicalMemory' usando ZwOpenSection. Se falhar (geralmente
Porque o usuário atual não tem direitos para manipular este objeto), então ele usa o truque (descrito por
Crazylord) de alterar ACLs (adicionando permissões de leitura / gravação) para a memória física.

Uma vez que o worm localiza o diretório da página do sistema, ele lê o PDB da memória e mantém uma
Para todas as traduções de endereços. A rotina de rootkit segue este procedimento:

1. L Ocate a estrutura funcionamento ETHREAD corrente em 0xFFDFF124 (FS: 0x124).


2. De ETHREAD saltar para EPROCESS, usando o ponteiro no deslocamento 0x44 da estrutura.
3. Leia FLINK e BLINK de ActiveProcessLinks da estrutura EPROCESS atual (estes
Offsets de 2000 para XP).
4. Desvincular o EPROCESS atual da lista ActiveProcessLinks conectando o
processo com o próximo ( jus t uma troca de alguns DWORDS!).

O worm Fanbot funciona em Windows 2000 e XP porque o autor implementou todas as


Verifica se há diferentes versões do sistema operacional e porque usa os deslocamentos corretos para manipular as estruturas EPROCESS
Corretamente, de acordo com a seguinte tabela:

Página 10

Quando o malware atende aos rootkits

Tabela 1: Alguns deslocamentos importantes da estrutura EPROCESS que mudam para diferentes versões do Windows.
Após o fim da rotina do rootkit, o executável do worm está completamente escondido e desaparece do
Lista de processos.
WEu
NDOWS 200
ND 000 WEu
NDO
DOWS XP WEu
WEu
NDOWS 2003

Deslocamento PID 0x94 0x9C 0x84

FLINK offset 0xA0 0x88 0x88

Desvio de BLINK 0xA4 0x8C 0x8C

Após o fim da rotina do rootkit, o executável do worm está completamente escondido e desaparece do
Lista de processos.
FEu
GVcRE 4: THE ROOTKEu
T ROVcTEu
NE OF W32/FumaNBOT.UMA
WORM EuS uma
Beu
E TO
TO WORK VcNDER WEu NDOWS
WS 2000
00 uma
ND XP, uma
S Eu
T
KNOWS uma
eu
eu
THE CORRECT OFFSETS OF SEVERuma
TH eu
KERNEeuSTRVcCTVcRES.

10

Página 11

Quando o malware atende aos rootkits

ROOTKEu
T TECHNOeu
OGEu
ES Eu
N THE WEu
eu
D
O recente caso de gerenciamento de direitos digitais da Sony é evidência de como a tecnologia de rootkit madura se tornou
Uma entidade comercial ([11] e p.11). Este rootkit tem causado alvoroço geral consumidor como pode ser visto
Simplesmente nas páginas de feedback da Amazon para vários CDs da Sony que acompanham o rootkit (consulte
Http://www.amazon.com/). Mas se os rootkits ganharam tanta popularidade na indústria de software,
O que está acontecendo na 'indústria de malware'? Um processo de integração de rootkits já começou e
Muitos exemplos de diferentes técnicas de rootkit podem ser vistos em trojans, worms e agora também em spyware
E programas de adware. Os escritores de malware aprenderam a lição e sabem que o inimigo mais
Luta é a única que ninguém pode ver!

Tabela 2: Lista de malware e riscos de segurança que usam técnicas de rootkit para ocultar arquivos, processos ou registro
chaves. Em alguns casos, é possível observar técnicas de rootkit completamente diferentes usadas por variantes de
A mesma família (por exemplo, Backdoor / Graybird). Alguns malwares, como o W32/Loxbot.A@mm, contêm um
Cópia do rootkit FU (msdirectx.sys) incorporado em seu código.
Numa
ME THREuma
T Cuma
TEGORY ROOTKEu
T CHuma
Ruma
CTEREu
STEu
CS
Minhoca Porta dos fundos
Adware / DLL / IAT SDT / IDT Usar SYS Use "Física
DKOM
/Vírus / Trojan Spyware Engatando Engatando condutor Memória"
Adware / Elitebar X X
Adware / CommonName X X X
Spyware / Pesquisa X X X
Spyware / Elpowkeylogger X X X
Spyware / Apropos.C X X X X
Backdoor / Graybird um X X X
Backdoor / Haxdoor um X X X
Backdoor / Darkmoon um X X X
Backdoor / Berbew um X X X X
Backdoor / Ryejet um X X X
Trojan / Drivus X X X
PWSteal / Raidys X X X
W32 / Spybot.NLX X X X
W32/Theals.A@mm X X
W32 / Tdiserv.A X X X
W32.Mytob.AR@mm X X
W32.L oxbot.A@mm X X X
W32.My FIP .H @ mm X X X
W32.Fanbot.A@mm X X X

A - Os dados referem-se à família de ameaças, não apenas a uma ameaça individual.

11

Página 12
Quando o malware atende aos rootkits

G
N
Eu
S
Vc
 )
D
E
eu
eu
Eu
K
 D
N
uma

D
E
T
C
E
T
E
D
 E
B
 T
O
N
N
uma
C
 
D
N
uma
 t .  
s s
i l
eu
 k  óO
s  t 
uma
T D
 R
M uma
O D N
R

 s  Tum
s
R
uma
E
P
P
uma
S
Eu
D
 Y
eu
eu
uma
T
O
T
 S
S
E
C
O
R
P
 T
O
B
N
uma
F
 :
5
 E
R
Vc
G
Eu
F
12

Página 13

Quando o malware atende aos rootkits

REFERENCES
[1] Patrick Runald, 'O problema com rootkits', Virus Bulletin, Setembro de 2005, p.4.
[2] Descrição de W32/Fanbot.A@mm, http://securityresponse.symantec. Com / avcenter / venc / data /
W32.fanbot.a@mm.html.
[3] Greg Hoglund e Jamie Butler, Rootkits: subvertendo o kernel do Windows, Addison-Wesley
Profissional, 2005.
[4] 'modGREPER', um detector de módulo escondido criado por Joanna Rutkowska,
Http://invisiblethings.org/tools/ modGREPER / modGREPER-0.2-bin.zip.
[5] Sd e Devik, 'Linux on-the-fly kernel remendar sem LKM', Phrack # 58, Artigo 7,
Http://www.phrack.org/show.php?p=58&a=7.
[6] FU Rootkit, http://www.rootkit.com/ project.php? Id = 12.
[7] 'Kernel
Code / kproccheck.html.
Win2K Hidden Process / Module Checker' KprocCheck por SIG ^ 2 http://www.security.org.sg/
[8] Crazylord, 'Jogando com Windows / dev / (k) mem', Phrack # 58, Artigo 16, http://www.phrack.org/
Show.php? P = 59 & a = 16.
[9] Pankaj Garg, 'Gestão de Memória do Windows', http://www.intellectualheaven.com/Articles/
WinMM.pdf.
[10] Mark Russinovich e David Solomon, Microsoft Windows Internals, Quarta Edição, Microsoft Press,
2004.
[11] XCP (eXtended Copy Protection), a protecção de áudio digital utilizada pela Sony, que utiliza
Tecnologia de rootkit http://www.xcp-aurora.com/.

13

Página 14

Quando o malware atende aos rootkits

UMA
BOVcT THE UMA
VcTHOR
Elia Florio é engenheira de software da Symantec Security Response, com sede em Dublin, na Irlanda.
Elia formou-se na Universidade da Calábria (UNICAL), Itália, com um Bacharelado em Engenharia
2003. Elia trabalhou anteriormente para a Value Partner e para a Accenture em vários projetos,
Consultoria relacionada à segurança. Elia escreveu vários artigos para revistas da indústria e contribuiu para
Uma série de anúncios de vulnerabilidade.
14

Página 15

Página 16

UMA
BOVcT SYMumaNTEC
A Symantec é líder global
Segurança da informação, fornecendo
Uma ampla gama de software,
Aparelhos e serviços projetados
Ajudar os indivíduos, pequenos e
Empresas de médio porte e grandes
Garantir e gerenciar
Sua infra-estrutura de TI.
A marca Norton ™ da Symantec
Produtos é a
Líder em segurança do consumidor e
Solução de problemas.
Com sede em Cupertino,
Califórnia, a Symantec
Operações em 35 países.
Mais informações estão disponíveis
Em www.symantec.com.

A Symantec tem em todo o mundo Symantec Corporation A Symantec e o logotipo da Symantec são marcas comerciais registradas nos Estados Unidos da Symantec
Sede Mundial Corporação. Microsoft e Windows são marcas comerciais registradas ou
Operações em 35 países. Marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Para escritórios e 20330 Stevens Creek Boulevard Outros nomes de marcas e produtos são marcas comerciais de seus respectivos detentores.
Números de contato, visite Cupertino, CA 95014 EUA Informações técnicas disponibilizadas pela Symantec Corporation são as informações
Protegido por direitos autorais da Symantec Corporation e pertence à Symantec
Nosso site. Para o produto 408 517 8000 Corporação. NO W arrant Y . A inf técnica ormação está sendo entregue a você
inf ormação em os EUA, chamada 800 721 3934 Tal como está e a Symantec Corporation não oferece nenhuma garantia quanto à sua precisão ou uso.
Utilização da documentação técnica ou as informações aqui contidas estão
Número gratuito 1 800 745 6054. w ww.symantec.com risco de o utilizador . Copyright © 2005 Symantec Corporation. Todos os direitos reservados.
04/05 10406630

Você também pode gostar