Existen varios tipos de ataques e moitos vectores de ataque, pero hai algo único sobre todos: deixan rastros e sempre cambian o sistema dalgunha forma. Desde virus que modifican algúns ficheiros, ata rootkits a nivel do kernel que altera o kernel, sempre hai algún cambio na integridade do sistema.

Un rootkit é un conxunto de ferramentas usadas frecuentemente polos intrusos ou crackers que conseguen acceder ilicitamente a un sistema informático. Estas ferramentas serven para esconder os procesos e ficheiros que permiten ao intruso manter o acceso ao sistema, a miúdo con fins maliciosos. Existen rootkits para unha ampla variedade de sistemas operativos, como Linux, Solaris ou Microsoft Windows.

A comprobación da integridade do sistema é unha parte esencial da detección de intrusos que detecta cambios o modificacións en partes sensibles do sistema. Unha das funcións de OSSEC HIDS é esa a de buscar cambios nos hashes de verificación MD5/SHA1 dos ficheiros clave do sistema e no rexistro de Windows.

O xeito en que funciona isto en OSSEC é que o axente busca dentro do sistema cada unhas poucas horas (franxa de tempo definida polo usuario) e envía todas as sumas de verificación ao servidor. O servidor almacena as sumas de verificación e busca modificacións nelas. Finalmente, o administrador do sistema recibe alertas se algo cambia.

Aínda así, OSSEC HIDS vai un pouco máis aló e quen de realizar unha análise máis especifica para a detección de rootkits en todos os sistemas onde o axente estea instalado. O rootcheck (rootkit detection engine) executase tamén cada certo tempo (tamén especificado polo usuario) con o obxectivo de detectar calquera posible instalación de rootkits. OSSEC usa unha estratexia baseada na análise do rexistro de eventos dos sistema e leva e nun motor de verificación de integridade, converterase nunha solución de control moi poderosa. O motor de verificación de OSSEC basease nunha serie de comprobacións.

  • Procesa o listado de rootkits rootkit_files.txt que contén unha base de datos de rootkits e dos ficheiros que adoitan a ser utilizados habitualmente por estes. OSSEC trata de facer un estudo estadístico con esa información sobre accións coma lectura (fopen) dos arquivos ou directorios (opendir) especificados. Analízanse as invocacións de esas primitivas xa que algúns rootkits de nivel de kernel ocultan ficheiros para algunhas chamadas de sistema. Este tipo de análise funciona mellor canto máis chamemos o sistema. Este método asemellase bastante a unha regra antivirus que debe actualizarse constantemente.
  • Lectura do arquivo rootkit_trojans.txt que contén unha base de datos coas sinaturas dos troianos e rootkits coñecidos. Usase esta base de datos para contrarestar a técnica de modificar binarios con versións troianas. Este método de detección é eficiente a nivel de supervisión do sistema de ficheiros mais ten as súas limitacións con rootkits a nivel kernel xa que non atopará este tipo de rootkits ou outros que aínda non estean actualizados na base de datos e sexan polo tanto descoñecidos para o sistema.
  • Análise e escaneo do directorio /dev buscando anomalías. O /dev só debería ter ficheiros de dispositivo e script de Makedev. Moitos rootkits usan /dev para ocultar ficheiros. O uso de esta técnica pode detectar incluso rootkits aínda non publicados.
  • Tamén se realiza o escaneo de todo o sistema de ficheiros buscando ficheiros pouco habituais e mesmo problemas de permiso. Os ficheiros propiedade de root, con permiso de escritura para outros, son moi perigosos e a detección de rootkit os buscará. OSSEC tamén inspeccionará ficheiros coa marca suid, directorios e ficheiros ocultos.
  • Outra das estratexias seguidas polo sistema é a busca da presenza de procesos ocultos mediante o uso de getid() e kill() para comprobar se se usa algún pid ou non. Se un pid está a ser usado, pero o comando ps non pode velo, semella que existe algo raro no sistema e esta pode ser a indicación de que existe un rootkit a nivel de kernel ou unha versión troiana do comando ps. OSSEC tamén verifica que a saída de kill and getsid é a mesma.
  • OSSEC tamén busca a presenza de portos ocultos. Para isto, usa binding() para comprobar cada porto TCP e UDP no sistema. O caso é o seguinte, se non podemos ligarnos ao porto, entón está a ser usado por algún proceso, pero se o comando netstat non o amosa, probablemente teñamos instalado un rootkit que adultera a información da pila IP dalgún xeito.
  • Finalmente, tamén verifica que as interfaces de rede avisan de do estado promiscuo. Para iso, OSSEC escanea todas as interfaces no sistema e busca as que teñen modo promisc activado. Se a interface está en modo promiscuo, a saída do comando ifconfig debería amosalo. Pola contra, se non o fai, probablemente teñamos instalado un rootkit.

Artigos anteriores

OSSEC: Sistema de detección de intrusos

OSSEC: Pasos de instalación

OSSEC: Análise e monitorización de rexistros do sistema

Pin It on Pinterest

Share This