Unhide es una excelente herramienta forense de GNU/Linux que permite encontrar tanto procesos como puertos en escucha ocultos en el sistema. Este tipo de procesos y listeners suelen aparecer cuando el sistema ha sufrido algún tipo de ataque y ha sido infectada con un rootkit. También está disponible para Windows, ambas versiones se pueden descargar desde el sitio web www.unhide-forensics.info
Instalación
Para descargarla por repositorios en Debian y Ubuntu:
# apt-get install unhide
Para descargarla por repositorios en RHEL, CentOS, Fedora, etc utilizamos el repositorio de RepoForge (bajad el rpm según arquitectura):
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm # yum install rpmforge-release-0.5.3-1.el6.rf.i686.rpm # yum install unhide
unhide para procesos
Básicamente, unhide (modo ps)utiliza tres técnicas para encontrar los procesos:
Comparar la salida del comando /bin/ps con los datos que hay en el filesystem /proc. Para utilizar esta técnica ejecutamos el comando con el parámetro «proc»:
# $ unhide proc Unhide 20100201 http://www.security-projects.com/?Unhide [*]Searching for Hidden processes through /proc scanning
Comparar la información del comando /bin/ps con la información recolectada de syscalls (system call scanning). Para ello pasamos el parámetro «sys»:
$ unhide sys Unhide 20100201 http://www.security-projects.com/?Unhide [*]Searching for Hidden processes through kill(..,0) scanning [*]Searching for Hidden processes through comparison of results of system calls [*]Searching for Hidden processes through getpriority() scanning [*]Searching for Hidden processes through getpgid() scanning [*]Searching for Hidden processes through getsid() scanning [*]Searching for Hidden processes through sched_getaffinity() scanning [*]Searching for Hidden processes through sched_getparam() scanning [*]Searching for Hidden processes through sched_getscheduler() scanning [*]Searching for Hidden processes through sched_rr_get_interval() scanning [*]Searching for Hidden processes through sysinfo() scanning HIDDEN Processes Found: 0
Y por última la técnica desesperada con el parámetro «brute», disponible sólo es kernels superiores a la versión 2.6. Esta técnica consiste en buscar por fuerza bruta en todos los PIDs del sistema.
# unhide brute
unhide para puertos y UDP en escucha
El modo TCP de unhide permite identificar los puertos que están escuchando (TCP y UDP) en nuestro sistema pero que por contra no aparecen al ejecutar el comando netstat:
# unhide-tcp