Verificar la Existencia de Rootkits utilizando Chkrootkit

  • Posted on: 16 June 2014
  • By: ReYDeS

Chrootkit es una herramienta para realizar la verificación local de señales generados por Rootkits. Un rookit es un tipo de software oculto, típicamente malicioso, diseñado para ocultar su existencia de ciertos procesos o programas de los método normales de detección, permitiendo mantener un acceso privilegiado en una computadora. Chkrootkit está constituido por los siguientes componentes.

  • chkrootkit: Un script en shell que verifica los binarios del sistema modificados por un rootkit.
  • ifpromisc.c: Verifica si la interfaz de red está en modo promiscuo.
  • chklastlog.c: Verifica por eliminaciones realizadas en el archivo lastlog.
  • chkwtmp.c: Verifica por eliminaciones realizadas en el archivo wtmp.
  • check_wtmpx.c: Verifica por eliminaciones en wtmpx (Solo sistemas Solaris).
  • chkproc.c: Verifica por señales de troyanos LKM.
  • chkdirs.c: Verifica por señales de troyanos LKM.
  • strings.c: Reemplazo rápido y sucio de cadenas.
  • chkutmp.c: Verifica por eliminaciones en el archivo utmp.

chkwtmp y chklastlog “intentan” verificar las entradas eliminadas en los archivos “wtmp” y “lastlog”, pero esto no es garantía de que cualquier modificación será detectada.

Aliens intenta encontrar registros de sniffers y archivos de configuración de rootkits. Busca por algunas ubicaciones por defecto de archivos, por lo tanto tampoco es garantía de que sea satisfactorio en todos los casos.

Chkproc verifica si existen entradas en /proc ocultas de “ps” y llamadas al sistema “readdir”. Esto podría sea un indicador de un troyano LKM. También se puede ejecutar este comando por la opción “-v”.

LKM

LKM o por sus siglas en idioma inglés “Loadable Kernel Modules” son utilizados por el kernel de Linux para expandir su funcionalidad. La ventaja de estos LKMs es que pueden ser cargados dinámicamente, por lo que no se requiere la recompilación de todo el kernel. Debido a estas características son frecuentemente utilizados para controladores de dispositivos (o sistemas de archivos) como tarjetas de sonido, entre otros. Esta funcionalidad es aprovechada por los atacantes para apropiarse de un sistema insertando un LKM infectado o un troyano LKM.

Para la siguiente práctica se utilizará una máquina virtual vulnerable de nombre “Metasploitable”.

Se descarga la versión más reciente de Chkrootkit.

Se descomprime y desempaqueta el archivo descargado.

Se compilan los programas en C.

# make sense

Chkrootkit esta listo para ser utilizado. Mencionar que chkrootkit debe ser ejecutado con los privilegios del usuario "root". La manera más sencilla de ejecutarlo es escribiendo el nombre de la herramienta sin opciones.

# ./chkrootkit

Al finalizar la ejecución de chkrootkit se expondrán los resultados obtenidos.

Chkrootkit también puede ser invocado con “testname” o los nombres de las pruebas a realizar. En el siguiente comando se definen tres pruebas a los binarios “date”, “echo” e “ifconfig”

# ./chkrootkit date echo ifconfig

Si el usuario requiere realizar el análisis de cadenas sospechosas en lo programas binarios que indiquen la presencia de un troyano, se debe utilizar la opción “-x”

# ./chkrootkit -x | less

Otra opción interesante de chkrootkit es permitir el uso de una ruta alternativa desde donde se leerán los archivos binarios a ser utilizados en el análisis. Esta opción es muy útil cuando no se confían en los archivos binarios de un sistema comprometido. En el siguiente comando los archivo binarios "confiables" serán leídos desde el directorio /mnt/usb/bin, el cual puede ser el punto de montaje de una unidad USB.

# ./chkrootkit -p /mnt/usb/bin

Fuentes:

http://www.chkrootkit.org/
http://en.wikipedia.org/wiki/Rootkit
http://www.chkrootkit.org/README
https://www.thc.org/papers/LKM_HACKING.html

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1