Botiquín

Combinando chkrootkit y rkhunter en un script

 
 

Crear un Script en bash para ejecutar chkrootkit y rkhunter
Como se comentó en un artículo anterior, a la hora de ejecutar chkrootkit o rkhunter, ninguno de los dos se ejecuta en segundo plano, hacen el análisis a demanda del usuario, por lo que ambos pueden convivir en el mismo sistema. Es más, contar con ambos es de gran utilidad para tener una segunda opinión y descartar posibles falsos positivos.

Para la ejecución de ambas herramientas, es más cómodo crear un script que ejecute todas las operaciones que realizarán ambas utilidades para luego, lanzarlo desde una terminal o bien desde cron. En este ejemplo, ambas utilidades crearán su propio archivo de log para luego poder comprobar el resultado del análisis.

NOTA: ambos programas han de ejecutarse con privilegios de root.

A nuestro script de ejemplo lo llamaremos buscarootkits.sh. Es muy simple y la única aclaración que haremos respecto a él será la siguiente:

  • Nuestro sistema deberá tener instalados los paquetes chkrootkit y rkhunter.
  • El script deberá tener permisos de lectura, escritura y ejecución solo para el propietario del archivo:
    sudo chmod 700 buscarootkits.sh
  • El script tendrá como único propietario a root:
    sudo chown root.root buscarootkits.sh
  • Si al script le pasamos como parámetro un 1, rkhunter tomará una instantánea del estado actual de nuestro sistema operativo para poder compararlo las próximas veces que ejecutemos el programa con ella.
    $ sudo ./buscarootkits.sh 1
  • Si no se le pasa parámetro alguno, sencillamente no se tomará la instantánea y el script continuará con su trabajo de análisis.
    $ sudo ./buscarootkits.sh

 
Contenido del script buscarootkits.sh

#/bin/bash
 
##Definición de variables
# Directorio donde se guardarán los ficheros de log
DIRLOG="/ruta/a/carpeta/de/logs"
 
# El script comprueba si el usuario que lo ejecuta es root
if [ $UID == 0 ] ; then
	##chkrootkit#######
        ##Se optará por una de las dos opciones o chkrootkit -q o chkrootkit. A gusto del consumidor. 
        ##Como se puede ver, yo opté por filtrar la salida con grep.
	# Análisis estándar mostrando por pantalla solamente las detecciones y los avisos o las alertas
        # con la opción -q y manda la salida del análisis al archivo de log añadiéndole al nombre la
        # fecha que se realizó
	#chkrootkit -q > $DIRLOG/Chkrootkit-$(date +%Y-%m-%d).txt
 
	#Análisis estándar filtrando la información de salida con grep (solo líneas que aparezca la palabra INFECTED)
        # y manda la salida del análisis al archivo de log añadiéndole al nombre la fecha que se realizó.
	chkrootkit |grep INFECTED > $DIRLOG/Chkrootkit-$(date +%Y-%m-%d).txt
 
	##Rootkit Hunter######
	#Tomar una muestra del estado actual de nuestro sistema operativo para compararlo
	#las próximas veces que ejecutemos el programa con ella. Sólo si se le pasa como
        #parámetro un 1
	if [ $1 == 1 ]; then
            rkhunter --propupd
        fi
	#Actualizar las bases de datos de virus y malware antes del análisis.
	rkhunter --update
 
	#Análisis completo del sistema deshabilitando el comportamiento interactivo y manda la
        # salida del análisis al archivo de log añadiéndole al nombre la fecha que se realizó.
	rkhunter --check --enable all -sk --logfile $DIRLOG/RootkitHunter-$(date +%Y-%m-%d).txt
 
#Si el usuario que ejecuta el script no es root presenta el siguiente aviso
else
    clear
    echo " "
    echo "Si no eres root no puedes ejecutar este script."
    echo "Ahora eres $USER."
    echo " "
    echo " "
fi

 
Programar tarea para ejecutar el script desde el crontab
En este ejemplo lanzaremos una tarea con cron todos los días a las 24:00 h para ejecutar nuestro script.

En primer lugar, editamos el crontab para añadir la tarea programada con la siguiente orden:

$ sudo crontab -u root -e

Añadimos en la última línea del editor lo siguiente:

0 00 * * * /ruta/al/script/buscarootkits.sh

La línea anterior indica que en el minuto 0, a las 00 horas, todos los días, todos los meses y todos los días de la semana, se ejecute buscarootkits.sh para realizar el análisis completo con chkrootkit y rkhunter.
 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
  Configuración de privacidad y de cookies.
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

2 comentarios

  1. Fernando

    Hola. Muy interesante el artículo además un toque de atención para los que pensamos que Linux es Superman y nada ni nadie podrá con él. Tengo un problema. Al poner en el terminal el comando para iniciarlo me manda un error (./buscarootkits.sh 1
    ./buscarootkits.sh: línea 19: /ruta/a/carpeta/de/logs/Chkrootkit-2022-05-23.txt: No existe el fichero o el directorio
    ./buscarootkits.sh: línea 26: rkhunter: orden no encontrada
    ./buscarootkits.sh: línea 29: rkhunter: orden no encontrada
    ./buscarootkits.sh: línea 33: rkhunter: orden no encontrada) cuando lo hago pulsando dos veces en el script, simplemente no se lanza. ¿alguna idea de por qué? Un saludo y gracias

    • J. Carlos

      Hola Fernando,

      Para ejecutar el script, en primer lugar, deberás tener instalados los paquetes rkhunter y chkrootkit y en segundo lugar, tendrás que adaptar el script a tu sistema, por ejemplo, /ruta/a/carpeta/de/logs/Chkrootkit-2022-05-23.txt apunta a un fichero que tendrás que crear y modificar la ruta según en el directorio donde lo hayas creado.

      Por supuesto tu script deberá tener permisos de ejecución.
      He modificado el artículo indicando dichas necesidades.

      Un saludo

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.