Existen varios tipos de ataques y muchos vectores de ataque, pero hay algo único sobre todos: dejan rastros y siempre cambian el sistema de alguna forma. Desde virus que modifican algunos ficheros, hasta rootkits a nivel del kernel que altera el kernel, siempre hay algún cambio en la integridad del sistema.

Un rootkit es un conjunto de herramientas usadas frecuentemente por los intrusos o crackers que consiguen acceder ilícitamente la un sistema informático. Estas herramientas sirven para esconder los procesos y ficheros que permiten al intruso mantener el acceso al sistema, a menudo con fines maliciosos. Existen rootkits para una amplia variedad de sistemas operativos, como Linux, Solaris o Microsoft Windows.

La comprobación de la integridad del sistema es una parte esencial de la detección de intrusos que detecta cambios el modificaciones en partes sensibles del sistema. Una de las funciones de OSSEC HIDS es esa la de buscar cambios en los hashes de verificación MD5/SHA1 de los ficheros clave del sistema y en el registro de Windows.

La manera en que funciona esto en OSSEC es que el agente busca dentro del sistema cada unas pocas horas (franja de tiempo definida por el usuario) y envía todas las sumas de verificación al servidor. El servidor almacena las sumas de verificación y busca modificaciones en ellas. Finalmente, el administrador del sistema recibe alertas se algo cambia.

Aun así, OSSEC HIDS va uno poco más allá y quien de realizar un análisis más especifica para la detección de rootkits en todos los sistemas donde el agente esté instalado. El rootcheck (rootkit detection engine) ejecutara también cada cierto tiempo (también especificado por el usuario) con lo objetivo de detectar cualquier posible instalación de rootkits. OSSEC usa una estrategia basada en el análisis del registro de eventos de los sistema y lleva y en un motor de verificación de integridad, se convertirá en una solución de control muy poderosa. El motor de verificación de OSSEC basara en una serie de comprobaciones.

  • Procesa el listado de rootkits rootkit_files.txt que contiene una base de datos de rootkits y de los ficheros que suelen a ser utilizados habitualmente por estos. OSSEC trata de hacer un estudio estadístico con esa información sobre acciones como lectura (fopen) de los archivos o directorios (opendir) especificados. Se analizan las invocaciones de esas primitivas ya que algunos rootkits de nivel de kernel ocultan ficheros para algunas llamadas de sistema. Este tipo de análisis funciona mejor cuanto más llamemos el sistema. Este método asemejara bastante la una regla antivirus que debe actualizarse constantemente.
  • Lectura del archivo rootkit_trojans.txt que contiene una base de datos con las firmas de los troyanos y rootkits conocidos. Usara esta base de datos para contrarestar la técnica de modificar binarios con versiones troyanas. Este método de detección es eficiente a nivel de supervisión del sistema de ficheros mas tiene sus limitaciones con rootkits a nivel kernel ya que no encontrará este tipo de rootkits u otros que aún no estén actualizados en la base de datos y sean por lo tanto desconocidos para el sistema.
  • Análisis y escaneo del directorio /dev buscando anomalías. El /dev sólo debería tener ficheros de dispositivo y script de Makedev . Muchos rootkits usan /dev para ocultar ficheros. El uso de esta técnica puede detectar incluso rootkits aun no publicados.
  • También se realiza el escaneo de todo el sistema de ficheros buscando ficheros poco habituales y mismo problemas de permiso. Los ficheros propiedad de root, con permiso de escritura para otros, son muy peligrosos y la detección de rootkit los buscará. OSSEC también inspeccionará ficheros con la marca suid, directorios y ficheros ocultos.
  • Otra de las estrategias sucesivas por el sistema es la busca de la presencia de procesos ocultos mediante lo uso de getid() y kill() para comprobar se se usa algún pid o no. Si un pid está siendo usado, pero el comando ps no puede verlo, parece que existe algo raro en el sistema y esta puede ser la indicación de que existe un rootkit a nivel de kernel o una versión troyana del comando ps. OSSEC también verifica que la salida de kill and getsid es a misma.
  • OSSEC también busca la presencia de puertos ocultos. Para esto, usa binding() para comprobar cada puerto TCP y UDP en el sistema. El caso es el siguiente, si no podemos ligarnos al puerto, entonces está siendo usado por algún proceso, pero si el comando netstat no lo muestra, probablemente hayamos instalado un rootkit que adultera la información de la pila IP de alguna manera.
  • Finalmente, también verifica que las interfaces de red avisan de de el estado promiscuo. Para eso, OSSEC escanea todas las interfaces en el sistema y busca las que tienen modo promisc activado. Si la interfaz está en modo promiscuo, la salida del comando ifconfig debería mostrarlo. Por el contrario, si no lo hace, probablemente hayamos instalado un rootkit.

Artículos anteriores

OSSEC: Sistema de detección de intrusos

OSSEC: Pasos de instalación

OSSEC: Análisis y monitorización de registros del sistema

Pin It on Pinterest

Share This