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
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 (baja 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/?UnhideSearching 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:
