Notícia publicada por brain em setembro 29, 2003 10:31 PM
| TrackBack
Antonio Marcelo (amarcelo@plebe.com.br) avisa: "A HoneypotBR tem o prazer de anunciar a nova ferramenta desenvolvida por Daniel B. Cid : o Rootcheck. Trata-se de um auditor e localizador de rootkits desenvolvido para ambientes Linux, que é capaz de detectar rootkits como o : suckit, adore, etc. Já testada em vários ambientes de produção. Disponível para dowload no site oficial."
Vale lembrar que o tradicional chkrootkit também é de origem brasileira! Aliás, se alguém puder apresentar as diferenças entre o chkrootkit e o rootcheck, acho que seria um comentário bastante útil.
Já conhecia o chkrootkit e baixei o rootcheck pra dar uma olhada nas diferenças. Aqui estão elas (do meu ponto de vista) :
Primeiro o óbvio: chkrootkit é escrito em shell script enquanto rootcheck é perl. Apesar das facilidades da linguagem perl, acredito que shell script (!/bin/sh) seja mais genérico, suportando um número maior de plataformas sem necessidade de compilar perl (mas hj em dia, quem não suporta perl..?). Além disso, o rootcheck ainda necessita de perl modules.
Sempre achei que o chkrootkit era meio 'engessado' pelo fato de novas modificações (novos 'rootkits') serem adicionados 'hardcoded' no próprio script. Ou seja, ele não tem uma base externa de consulta - o caso do rootcheck. Por outro lado, alguém poderia argumentar que a base de rootkits estar no próprio script aumentaria a flexibilidade na hora de transporta-lo para servidores. No entanto, ambos possuem mini-ferramentas escritas em C para checagem de interfaces, logs e outros. Logo, se vc quer suporte total, teria de mover os .c e compilá-los de qualquer forma.
Acho que falta ainda no rootcheck uma ferramenta para detecção de LKM (Loadable kernel modules), o mais perverso dos rootkits, pois substitui o endereço das chamadas de sistema padrão, desviando o curso de chamadas básicas (como open, read...) se camuflando no sistema a nível de kernel e fazendo coisas muito maldosas. eeks. Uma ferramenta para detecção de LKM está presente no chkrootkit. Se não estou enganado, o kernel 2.6 não irá permitir mais que se substitua as chamadas de sistema.
Na dúvida eu usaria os dois. :-)
Parabéns aos autores.
Como sou o escritor do rootcheck, vou tecer alguns comentarios sobre a diferenca dos dois.
1- O rootcheck, como bem falou o nosso amigo acima, possue um arquivo unico com os rootkits conhecidos... Isso facilita muito na adicao/remocao/melhoria dos mesmos.
2- O rootcheck tem sim uma ferramenta de deteccao de rootkits lkms.. Ele faz isso de duas formas: Checa quais as portas do sistema estao em uso e compara com o resultado do netstat (checa todas as portas). A maioria dos lkms eh utilizado para esconder backdoors. Entao se a porta esta em uso e o netstat nao mostra. Voce esta contaminado (ou com o netstat trojanado ou com uma lkm).
Na segunda forma ele checa todos os possiveis PIDs e ve quais estao em uso... Se algum estiver em uso e nao puder ser lido no /proc, ou o "ps" nao estiver usando, voce esta contaminado ! :)
3- eu estou adicionando uma checagem dos arquivos de configuracao (a que ele faz atualmente eh muito fraca), arquivos de log e alguns outros arquivos importantes do sistema. Essas checagens ainda nao estao muito completas, pois ainda estou atraz de mais informacoes...
4- O objetivo dele nao eh apenas procurar por rootkits/trojans. Essa eh a principal diferenca...
5- Sobre ele ser em perl... bem, acho que mais de 95% dos sistemas Unix vem com o perl pre-instalado. E os programas em .c podem ser compilados em alguma outra maquina a colocados no sistema alvo.
Bem , eh isso... alias, gosto muito do chkrootkit :)
Daniel B. Cid
Daniel,
Parabéns pela excelente ferramenta.
No entanto, as duas técnicas que vc utiliza podem e já foram burladas por LKM. Quando se modifica system calls, vc diz que abriu um diretório (/proc), quando na verdade não conseguiu (aliás, nem precisaria esconder processos já que o LKM é um módulo). Vc pode dizer que conseguiu fazer o bind, quando na verdade não conseguiu. Tem LKM que ignoram até mesmo rmmod.
Geralmente os rootkits que utilizam LKMs soh modificam certas Sys calls, como READ, OPen, etc, etc... Eh por causa disso que ele consegue descobrir o adore e outros LKM-based rootkits...pq o programa compara varios resultados em busca de diferencas...
Mas agora, se o rootkit alterar todas as system-calls... nao tem como descobrir :)
Mas no caso do BIND (do checkports), ele ainda assim funciona... nao tem como um rootkit alterar isso e o sistema continuar funcionando corretamente :)
Daniel
1505 http://www.rapid-debt-consolidation.com
consolidate debt
Comentários desativados: Esta discussão é antiga e foi arquivada, não é mais possível enviar comentários adicionais.