Técnicas de detecção de Rootkit usadas pelo OSSEC HIDS
por Daniel B. Cid, daniel.cid@gmail.com


Començando  na versão 0.4, o OSSEC HIDS executará a detecção
de rootkit em todos os sistemas que o cliente estiver instalado.
O rootcheck (Sistema de detecção de rootkit) será executado
a cada X minutos (Especificado pelo usuário --por default
a cada 2 horas) para detectar possiveis rootkits instalados.
Em conjunto com a análize de logs e o sistema de checagem de integridade,
ele torna-se uma solução poderosa de monitoramento (o OSSEC HIDS executa
a análize de logs e verificação de integridade desde a versão 0.1).

Outra característica incluída na versão 0.4 é que o servidor de análize
enviará automaticamente as assinaturas de detecção de rootkit aos
clientes, reduzindo o trabalho com administração para o administrador
de sistemas. Os clientes e servidor manterão contato a cada 10 minutos
e se o servidor for atualizado com um novo arquivo de assinatura, ele enviará
para todos os clientes configurados. De uma olhada na documentação para maiores
informações.

O rootcheck executará as seguintes etapas para verificar a presença de 
rootkits:


1- Lerá o arquivo rootkit_files.txt que contem um grande banco de dados
   de rootkits e arquivos usados pelo mesmo. Tentará usar as funções
   fopen e opendir no arquivo especificado. Nós usamos todas a chamadas do 
   sistema,por causa de que rootkits que rodam a nivel de kernel, escondem as 
   chamadas dos sistema. Nós tentamos melhoras as coutras chamadas do sistema, 
   para uma melhor detecção. Este método é mais parecido com uma regra de 
   antí-virus, que necessita ser atualizado contantemente. As chances de 
   falso-positivos são pequenas, mas falso-negativos podem ser produzidos 
   modificando os rootkits.

2- Lerá o arquivo rootkit_trojans.txt que contem um banco de dados de 
   assinaturas de arquivos infectados por rootkits. Esta técnica verifica
   binários modificados por trojans conhecidos. Este método de detecção
   não encontra nenhum rootkit a nivel de kernel ou nenhum rootkit desconhecido.
   
3- Escaneia o diretório /dev procurando por anomalias. O /dev contém todos os
   arquivos de device e scripts de Makedev. Vários rootkits usam arquivos 
   escondidoso no /dev. Esta técnica pode detectar rootkits desconhecidos.

4- Escaneia o sistema de arquivos a procura por arquivos incomuns e problema de 
   permição. Arquivos setados para root, com permição de escrita para outros 
   são muito perigosos e a detecção de rootkit olha isso. Arquivos com Suid, 
   diretórios e arquivos escondidos  são inspecionados.

5- Procura pela presença de processos ocultos. Nós usamos as funções getsid e
   kill para checar se algum PID está sendo usado ou não. Se estiver, mas a função
   não pode ve-lo, é uma indicação de rootkit a nivel de kernel ou o ps foi 
   infectado. Nós verificamos também a saída do kill e do getid que deve ser a mesma.

6- Olha a presença de portas escondidas. Nós usamos a função bind para checar todas
   as portas TCP e UDP to do sistema. Se não podemos usar o bind na porta (ele está
   sendo usado), mas o netsatat não mostra, provavelmente há um rootkit instalado.

7- Escaneia todas a interfaces do sistema e procura por alguma com módo "promisc" 
   abilitado. Se a interface está neste modo, a saída do ifconfig mostrará. Se não,
   há a possibilidade de haver um rootkit instalado.


EOF
