Unhide para Unix/Linux

Unhide es una herramienta destinada a identificar anomalías en sistemas Unix / Linux, lo hace identificando procesos y puertos tcp/udp ocultos, que suele ser síntoma inequívoco de la presencia de un rootkit en nuestro sistema.

A diferencia de otras soluciones más al estilo anti-virus, Unhide no emplea firmas y se basa en los conceptos del tipo “detección de anomalías” contrastando diferentes fuentes de información y buscando inconsistencias entre ellas.

El software se divide en tres herramientas :

unhide: Para sistemas Unix genéricos (solaris, *BSD, linux antiguos)

Esta herramienta realiza dos tipos de “checks” en el sistema:

  • /bin/ps contra /proc : se basa en comparar la salida del comando /bin/ps contra las entradas del directorio /proc. Si encuentra una entrada en /proc y no encuentra su correspondiente proceso en /bin/ps marca esa PID como “pid oculta”
  • /bin/ps contra syscalls: el objetivo de este test es intentar deducir si existe algún proceso oculto interrogando directamente al Kernel mediante syscalls y comparando su salida contra /bin/ps

unhide-linux26: Para sistemas Linux kernel 2.6

Esta versión de unhide para sistemas linux modernos añade, ademas, otro método de detección consistente en “bruteforcear” el espacio de PIDs del sistema a base de múltiples forks() y comparar contra /bin/ps. Si el sistema, durante el proceso de forks(), no ha dado alguna PID que no aparece listada en /bin/ps es síntoma de que algo no marcha correctamente

unhide-tcp : Herramienta para detectar puertos TCP/UDP ocultos

Esta herramienta localiza puertos TCP o UDP que no aparecen listados en el comando netstat intentando realizar un bind() sobre el espacio de puertos disponibles en el sistema y compararlo contra netstat. Si un puerto en el que no se ha podido hacer bind() no aparece en netstat, ese puerto es cuanto menos, sospechoso

Para usar Unhide puedes descargarlo de la web y compilarlo de la siguiente forma (para compilar únicamente hace falta un gcc normalito) :

#gcc unhide-linux26.c -o unhide-linux26

#gcc unhide-tcp.c -o unhide-tcp

O bien, si eres usuario de Debian Sid/Lenny o Ubuntu puedes instalarlo directamente con apt-get

Para iniciar el scaneo de puertos ocultos únicamente debemos ejecutarlo de la siguiente forma:

#./unhide-tcp

Y para ejecutar los diversos checks de la herramienta unhide-linux26:

#./unhide-linux26 proc
#./unhide-linux26 sys
#./unhide-linux26 brute

Lo interesante sería ejecutar periódicamente la suite de herramientas en nuestros sistemas Unix como medida para detectar eventuales compromisos en el sistema.

El lanzamiento de la última versión estable(recién salida del horno) coincide con el lanzamiento en paralelo de su propio sitio web www.unhide-forensics.info

La novedad mas destacada es que Patrick Gouin, arquitecto senior en desarrollo de sistemas embebidos, se une al staff de forma estable, y de su mano han llegado bastantes de las novedades de esta versión.

Entre las novedades mas destacadas:

  • Mayor granularidad a la hora de ejecutar tests: Hasta ahora existían ‘metatests’ que estaban compuestos en algunos casos por múltiples tareas, en esta versión se pueden seleccionar específicamente que tests ejecutar (por ejemplo un test con una syscall determinada)
  • Añadido un nuevo e interesante test llamado ‘reverse’ para identificar sistemas en los que se haya comprometido /bin/ps para hacerle creer que existe un proceso en ejecución que realmente no lo esté
  • Ampliados los test sobre procfs añadiendo chdir/readdir
  • Posibilidad de volcar el resultado del scan a un fichero con la opción -f
  • Posibilidad de ejecutar un test específico (-r) para Kernels cuyo planificador no sea el estándar (error detectado en sistemas cuyo kernel era una versión ‘pura’ de kernel.org)
  • Mejor integración con rkhunter

Y muchas otras más que podrás ver reflejadas en la pagina man del proyecto.

Para descargar la última versión: www.unhide-forensics.info

Share

One Reply to “Unhide para Unix/Linux”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.