Rootkits - Tutorial Completo

Started by Anonymous, 15 de March , 2006, 09:27:59 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

E ae galera, blz? Eu sou o Fear, sou novo aqui no fórum, e gostaria de começar com o pé direito, então no meu primeiro post posto um artigo sobre Rootkits, eu recomendo a leitura para todos os Black Hats que se prezem, e para os outros também, claro.

Com muito estudo e pesquisa consegui escrever esse artigo, então espero que meu esforço não tenha sido em vão, e quem vcs gostem

Obs: Provávelmente vcs vão ver esse tópico no Plug, ok? Postei primeiro lá, mas to trazendo pra cá também.

O que é um Rootkit?

Rootkits seriam uma nova "raça" de vírus surgida nos últimos anos. A principal intenção dele é se camuflar, impedindo que seu código seja encontrado por qualquer anti-vírus, mas isso é possivel?? Sim! Quando o SO faz um pedido para a leitura ou abertura de um arquivo (seja a mando do anti-vírus ou pelo proprio usuário) o virus intercepta os dados que são requisitados(intercepção via API) e faz uma filtragem dessa informação, deixando passar apenas o código não infectado, impossibilitando o anti-vírus ou outra ferramenta de encontrar o arquivo malicioso. O Rootkit é um driver que roda direto no Kernel (Kernel mode), e chega a ser tão prioritário quanto o próprio sistema, e por isso, mesmo que vc descobrisse-o, como vc o mataria?

Origem do nome rootkit:

Os rootkits possuem esse nome por serem, inicialmente, "kits" de programas para a plataforma Unix-based para manter o acesso total ao sistema previamente comprometido, agindo como backdoor. Como "root" é o usuário com o controle total do computador nas plataformas Unix, originou-se o nome "rootkit" para denominar estes conjuntos de aplicativos.


Tipos de Rootkits:

Rootkit tradicional:

Por rootkit tradicional entende-se o rootkit que
não é implementado em kernel space sob a forma de
LKM. Tipicamente esse tipo de rootkit é composto,
pelo menos, de:

- Versões modificadas de comandos importantes
do sistema como ls, ps, netstat, crontab,
tcpd, syslogd, etc. Os comandos substituídos
podem omitir processos, conexões, arquivos e
logs do invasor, de modo que sua presença não
seja notada pelo administrador e demais usuários
do sistema.

Geralmente contém algumas ferramentas adicionais, como:

- Programas para remoção de entradas em arquivos
de log do sistema bem como nos arquivos
utmp, wtmp e lastlog, como por exemplo z2 e
wted.

- Ferramentas para alterar os tempos de modifi-
cação, acesso e status (MAC times), o tamanho
e o CRC2 dos arquivos modificados pelo invasor,
de modo a torná-los iguais aos originais.

- Sniffers para a captura de senhas que trafeguem
pela rede sem criptografia, como por exemplo
em protocolos como ftp, telnet, pop2, pop3,
imap2, rlogin, etc. Nesse caso geralmente o
comando ifconfig é modificado para que não
indique que uma determinada interface de rede
está em modo promíscuo [6, 20].
Modificações em clientes ssh também se tornaram
um excelente método usado por invasores
para obtenção de senhas.

Esse acesso remoto pode ser obtido através da
instalação de um processo que escuta em uma esse tipo de processo é comumente inserida nos
scripts de inicialização da máquina para garantir
seu funcionamento mesmo por ocasião da
reinicialização do sistema. Alguns backdoors
desse tipo implementam autenticação com senha
e sessões criptografadas.
Outro mecanismo que o invasor possui para garantir
acesso remoto é a modificação de daemons
do sistema, como inetd, e sshd, entre
outros. Embora pareça estar funcionando normalmente,
a versão modificada usualmente é
programada para escutar em alguma porta alternativa
que inicia uma shell ou aceitar alguma
senha especial que garanta acesso privilegiado.

- Ferramentas para o aumento de privilégios de
contas locais.

Caso o invasor perca o acesso remoto privilegiado
através de backdoors ou escolha entrar
usando uma conta do sistema, mecanismos que
permitam a obtenção de privilégio de root através
de uma conta comum são geralmente utilizados.
Para permitir esse aumento de privilégio alguns
comandos são alterados e fornecem uma shell
de root ao serem executados de modo especial,
como por exemplo através de uma senha.
Exemplos de comandos normalmente alterados
são chfn e chsh.

- Exploits, programas de Denial of Service (DoS)
e Scanners.

É muito comum uma máquina invadida estar
sendo usada apenas como base para comprometer
outras redes, desse modo muitos rootkits
já incluem ferramentas para realizar as fases de
varredura e exploração de vulnerabilidades em
outras máquinas.

- Programas relacionados com IRC, como bouncers.

Estes programas permitem que o invasor se conecte
em canais de IRC usando a máquina invadida
como "proxy", desse modo não revelando
o seu ponto de origem real.

O LKM Rootkit:

Módulos de kernel (Loadable Kernel Modules, ou ainda
LKMs) são componentes que podem ser dinamicamente
carregados no kernel, modificando a funcionalidade
de um sistema sem a necessidade de uma
reinicialização. LKMs são implementados em vários
sistemas Unix (Linux, BSD, Solaris, HP-UX) e geralmente
usados para carregar device drivers de maneira
dinâmica.

Enquanto os rootkits tradicionais funcionam alterando
os comandos do sistema para omitir informações
da presença do invasor, como conexões, arquivos,
processos, etc, os rootkits implementados sob
forma de LKMs funcionam alterando chamadas do
sistema (syscalls) tais como kill, getdents e read
e atuando diretamente em algumas estruturas do kernel.

Do ponto de vista do administrador a detecção
desses rootkits implementados como LKMs é muito
mais difícil, pois todos os comandos do sistema
continuam inalterados e o próprio kernel responderá
às requisições mas ocultando a presença do invasor.
Mesmo uma checagem dos hashes criptográficos de
todos os comandos do sistema não apontará nenhuma
modificação. Normalmente esse tipo de rootkit altera
também as chamadas do sistema que permitem listar
os módulos de kernel instalados.

Métodos de Detecção:

A seguir são comentados alguns métodos para detecção
de rootkits tradicionais, rootkits implementados
em módulos de kernel (LKMs) e Worms:

Busca por Arquivos de Configuração

Muitos componentes de rootkits consultam, durante
sua execução, arquivos de configuração. Nesses
arquivos o invasor normalmente insere quais informações
devem ser ocultadas do usuário, como processos,
arquivos, conexões e entradas em arquivos de
log.

É possível localizar a presença de um rootkit procurando
por ocorrências de nomes de arquivos de con-
figuração no interior de comandos alterados por um
rootkit. As ferramentas strings, od e hexdump do
Unix são normalmente usadas para esse tipo de análise.

Busca por Seqüências de Caracteres em Arquivos:
Além de arquivos de configuração, outras evidências
de comprometimento podem ser obtidas através
do exame de cadeias de caracteres em comandos do
sistema modificados por rootkits. Essas seqüências
incluem senhas, endereços de email, a tabela de símbolos,
compilador e bibliotecas usadas na compilação.

Comparação de Hashes Criptográficos:

Hashes criptográficos como MD5 e SHA-1 podem
ser úteis na determinação de quais comandos do
sistema foram alterados por rootkis. Comparando-se
o hash de um comando com suspeita de alteração com
o hash do mesmo comando feito no momento da instalação
da máquina (ou de outra mídia confiável, como
um CDROM de distribuição do sistema) é possível
identificar uma modificação.

Esse método exige que os hashes dos comandos
a serem testados sejam conhecidos e que tenham sido
obtidos de binários confiáveis. Exige também que esses
hashes de comparação sejam mantidos de forma
segura, de maneira a não poderem ser alterados pelo
invasor, e que o próprio programa que calcula os
hashes não tenha sido comprometido.
Alguns sistemas possuem um esquema de packages
que permite a verificação dos comandos instalados
no sistema com uma base de hashes (geralmente
MD5) mantida on-line.

Exame de Chamadas do Sistema:

Outro método de detecção é o exame das chamadas
do sistema efetuadas por um programa sob suspeita
de modificação e observar se existem acessos a
arquivos de configuração de rootkits.
Os comandos strace (Linux), ktrace / kdump
(BSD) e truss (Solaris) podem ser usados para este fim.

Exame dos Tempos de Modificação, Acesso e
Status (MAC Times):


Para cada arquivo e diretório do sistema de arquivos
do Unix estão associados três atributos de tempo:
última modificação (mtime), último acesso (atime) e
última mudança no inode (ctime).

Através do exame cuidadoso desses atributos em
um determinado sistema é possível achar evidências
de uma invasão, da instalação de um rootkit por um
invasor ou da presença de um worm [25, 26].

Exame de Conexões:
Vários rootkits e worms instalam backdoors escutando
em diversas portas da máquina. Descobrir essas
portas em estado de LISTEN, bem como conexões
suspeitas, pode servir para localizar os processos associados
a essas portas de backdoor.

Normalmente o comando netstat é alterado para
não mostrar tais informações. No caso de LKMs estas
são ocultadas diretamente pelo kernel e uma varredura
a partir de uma máquina remota pode se fazer
necessária.

Exame da Tabela de Chamadas do Sistema e
Símbolos do Kernel:


O exame da tabela de chamadas do sistema, usando
por exemplo uma ferramenta como o kstat em
sistemas Linux, pode ser extremamente útil para se
determinar a presença de um LKM rootkit [27].
Alguns LKM rootkits deixam definições de símbolos
característicos que podem ser observados na tabela
de Símbolos do kernel (/dev/ksyms em alguns
sistemas).

Busca por Outros Indícios de Comprometimento:

Muitas vezes os indícios de um rootkit não são
encontrados facilmente. Nesses casos é extremamente
importante que o administrador seja capaz de reconhecer
alguns indícios clássicos de invasão e assim
intensificar suas buscas pelo rootkit.
Evidências de invasão incluem: interfaces de rede
em modo promíscuo (instalação de sniffer), evidências
de remoção de entradas nos arquivos utmp, wtmp
e lastlog do sistema, arquivos regulares abaixo de
/dev (este diretório contém normalmente apenas arquivos
de dispositivos), arquivos e diretórios começando
com '.' ou espaço, entre outras.

Anti-Rootkits:

Podemos usar Anti-Rootkits, como chkrootkit, RootkitHunter, ARIES Rootkit Remover, entre outros. Aqui vou falar sobre o mais usado e melhor (Na minha opinião), o RootkitHunter (For Unix).

RootkitHunter:
O RK Hunter é muito bom AR (Anti-Rootkit), e é de fáil instalação e utilização.

Primeiro baixe o Rootkit Hunter, depois é só descompactar e instalar. Para fazer isso, rode, como root (Veja se a fonte é confiável ein!!!), respectivamente, os seguintes comandos:

tar -xzvf arquivo_rkhunter.tar.gz
cd pasta_rkhunter
./rkhunter

Obs: Caso o Rootkit Hunter esteja com a extenção .tar.bz2 , troque o "z" por um "j".

Ele vai instalar quando o arquivo "rkhunter" for executado.

Para rodar o rkhunter, use o seguinte comando:

rkhunter -c -quick

Ele varrerá seu sistema atrás de assinaturas de RK's, depois de concluído ele vai exibir os logs.

Site oficial: http://www.rootkit.nl/

Diquinha:

Não execute nenhum arquivo como root, a não ser que vc tenha certeza que a fonte é confiável, pois rootkits só podem ser instalados com permissões de super-usuário (root).

Alguns projetos de Rootkits (Inglês):

Hacker Defender:

Hacker Defender is the most common in the wild Windows NT rootkit today with very user friendly inifile that controls its behaviour. It is 98% userland rootkit and it is open source project. There are also commercial versions of Hacker Defender that brings new functionality together with protection against antivirus products and rootkit detectors.

Home Page: http://www.hxdef.org

HE4Hook:

This is the Russian rootkit, HE4HOOK. This code is very complete.

Download do Fonte: http://www.rootkit.com/vault/hoglund/He4Hook215b6.zip

BASIC CLASS:

This is the set of basic windows rootkits used for training purposes in the class 'Offensive Aspects of Rootkit Technology'. Good for starters.

Vanquish:

Vanquish is a DLL injection based Romanian rootkit that hides files, folders, registry entries and logs passwords.

Changelog: https://www.rootkit.com/vault/xshadow/ReadMe.txt

Download do Fonte: https://www.rootkit.com/vault/xshadow/v ... -0.2.1.zip

NT Rootkit:

The original and first public NT ROOTKIT - has not been updated for many years but is good for ideas.

Download do Fonte: https://www.rootkit.com/vault/hoglund/rk_044.zip

FU:

The FU rootkit can hide processes, elevate process privileges, fake out the Windows Event Viewer so that forensics is impossible, and even hide device drivers (NEW!). (Look, Mom, no hands!) It does all this by Direct Kernel Object Manipulation (TM); no hooking! This project has been evolving other time. It was originally conceived as a proof-of-concept. FU is a play on words from the UNIX program "su" used to elevate privilege.

Changelog: https://www.rootkit.com/vault/fuzen_op/FU_README.txt

Download do Fonte: https://www.rootkit.com/vault/fuzen_op/FU_Rootkit.zip


Se vc quiser obter maiores informações sobre Rootkits, visite o site: http://www.rootkit.com.

Anonymous

Opa,tive a oportunidade de ler,e está muito bom.
Parabéns.

Anonymous

Entrou com o pé direito mesmo, merece um ponto. ;)
É bom saber que temos pessoas prestativas entre nós, meu nome é Don PyroMaker e sou um dos moderadores do Darkers, seja bem-vindo Fear.

Anonymous

Legal PyroMaker, se quiser me ADD no MSN: mailto:fear.pain@hotmail.com">fear.pain@hotmail.com

Shady



Mundus Vult Decipi

Cloudy

Nussa! Definitivamente show! Parceiro, mandou muito bem, primeiro post e já arrepia geral. Meus parabéns, vc conseguiu esxplicar Rootkits de uma maneira que nunca tinha visto em lugar nenhum.

Meus parabéns.

...by Cloudy
"You have to be trusted by the people tou lied to, so when they turn their back on you, you have the chance to the put the knife in." (Roger Waters)

...by Cloudy

Anonymous

Bem completo mesmo!!! =)

Parabéns,

H4xn3tw0rk

Anonymous

Ah Fear, esqueci de falar, cadê a bibliografia?  ???

Anonymous

Cara, legal e tals, mas uma coisa que me deixou PUTO.
CADÊ A BIBLIOGRAFIA.
É melhor para tu coloca-la, porque se os autores de trechos originais e descrições verem isso, vão odiar, eu digo isso porque já tive muita coisa minha copiada num piscar de olhos, e fiquei uma verdadeira maquina de matar, então melhor você pegar e colocar daonde pegou as fontes de estudo...
francamente...

Anonymous

Ao Morte e ao PyoMaker.

Não tem como postar bibliografia, eu passei o dia inteiro lendo, estudando, pesquisando. Li vários eBooks, de sites, e não sei como fazer um bibliografia.

A única coisa que posso dizer é que as descrições dos Rootkits eu tirei do http://www.rootkit.com


Skayler

Amigo,

Tanto faz, cloudy e fear são as mesmas pessoas.

vlw

by Skayler
Away

insanity

[quote]Amigo,

Tanto faz, cloudy e fear são as mesmas pessoas.

vlw

by Skayler

Pra que um cara ia ter dois cadastro no mesmo lugar entao!!!

Cloudy

"You have to be trusted by the people tou lied to, so when they turn their back on you, you have the chance to the put the knife in." (Roger Waters)

...by Cloudy

insanity

Devo estar louco mesmo =;)


ate mais