Kernel Hacking (RootKits)
Apresentamos neste trabalho uma teoria completa sobre kernel hacking, mostrando assim suas vantagens, desvantagens e soluções utilizadas pelos administradores de sistemas para contra-atacar as implementações tão geniosas dos atacantes, sobressaltando a utilização de rootkits.
Parte 3: Como encontrar a tabela de chamadas de sistema
Antes do comprometimento de uma chamada de sistema, o rootkit deve primeiramente encontrá-la. Um exemplo simples e eficaz é a busca pelo segmento de dados inteiro. O rootkit Override por exemplo, verifica cada endereço de memória no segmento de dados em busca da tabela de chamadas de sistema.
Após a obtenção do endereço da tabela de chamadas de sistema, o rootkit fica sem limites. O desenvolvedor pode rodar o strace para descobrir quais chamadas de sistema precisa manipular para enganar um programa específico.
O motivo deste alívio é que os kernels mais antigos utilizam símbolos para exportar a tabela de chamadas de sistema, tornando mais fácil modificar tais chamadas, enquanto que o kernel 2.6 mantém esses endereços em segredo. Um atacante precisaria dispor dos seguintes recursos para alterar uma chamada de sistema:
Para averiguação de invasões e etc o administrador deve exatamente saber como o rootkit funciona para assim buscar evidências.
É importante saber ainda que para cada rootkit a ser analisado, os alvos a serem examinados e procurados são possivelmente diferentes.
Se mesmo após a leitura do artigo surgir alguma dúvida sobre o tema (KERNEL HACKING), por favor envie um e-mail para domguilherme -o- gmail.com. Ficarei feliz em ajudá-lo.
Após a obtenção do endereço da tabela de chamadas de sistema, o rootkit fica sem limites. O desenvolvedor pode rodar o strace para descobrir quais chamadas de sistema precisa manipular para enganar um programa específico.
A relação dos rootkits com o kernel 2.6
Um alívio aos usuários do kernel 2.6, pois como exceção do Adore-NG, não existem rootkits disponíveis para esta versão, tanto benignos quanto malignos.O motivo deste alívio é que os kernels mais antigos utilizam símbolos para exportar a tabela de chamadas de sistema, tornando mais fácil modificar tais chamadas, enquanto que o kernel 2.6 mantém esses endereços em segredo. Um atacante precisaria dispor dos seguintes recursos para alterar uma chamada de sistema:
- O código-fonte do kernel e os arquivos criados durante a compilação;
- Um link simbólico de /lib/modules/versão_do_kernel/build para /usr/src/versão_do_kernel;
- Um kernel.conf correspondente;
- Um Makefile para rootkit;
Conclusões
Mesmo que os administradores façam uso de programas que utilizem checksums, como por exemplo o Aide ou o Tripwire, isto não garante a sua proteção, pois estes são programas alocados no espaço do usuário e os rootkits de kernel manipulam diretamente as chamadas de sistema ou qualquer outra parte do kernel enganando assim qualquer programa do espaço do usuário.Para averiguação de invasões e etc o administrador deve exatamente saber como o rootkit funciona para assim buscar evidências.
É importante saber ainda que para cada rootkit a ser analisado, os alvos a serem examinados e procurados são possivelmente diferentes.
Se mesmo após a leitura do artigo surgir alguma dúvida sobre o tema (KERNEL HACKING), por favor envie um e-mail para domguilherme -o- gmail.com. Ficarei feliz em ajudá-lo.