Buscar Rootkits en Linux con RkHunter y Chkrootkit
Buscar Rootkits en Linux con RkHunter y Chkrootkit

Buscar Rootkits en Linux con RkHunter y Chkrootkit

Anteriormente ya hablamos de los virus en Linux, e incluso los hemos encontrado virus en Linux con ClamAV. La mayoría de la gente piensa que no hay virus en Linux y en algo tienen razón. Al fin y al cabo, hay muy pocos programas maliciosos que puedan propagarse por el sistema y cargarse a otros ordenadores de la red. Los programas de este tipo conocidos por el público en general para Linux se pueden contar con los dedos. Pero hay otro tipo de amenaza más específica para Linux. Se trata de rootkits, programas que se instalan manualmente y ocultan su actividad en el sistema.

Concepto de Rootkits en Linux
Concepto de rootkits en Linux

Estos programas pueden dar a la persona que los instaló acceso total a tu sistema, recursos informáticos y datos. No subestimes este peligro. Si tu ordenador está conectado a Internet sin utilizar una red de área local (router) y sin tecnología NAT, cualquiera puede acceder a él desde la red del proveedor. Ni siquiera tiene que saber tu dirección IP para hacerlo. Un intruso puede simplemente escanear todas las direcciones de la subred y si tu ordenador o servidor tiene la vulnerabilidad que está buscando, como una contraseña SSH débil o cualquier otra vulnerabilidad en el software de servicio del sistema o defecto de configuración, tu ordenador se verá comprometido.

Comprobar Virus en Linux

Para saber si alguien se está conectando a tu ordenador, puedes comprobar el contenido de /var/log/audit.log o /var/log/secure.

tail -f /var/log/secure

Registra todos los eventos del sistema, incluyendo los intentos fallidos de inicio de sesión SSH. Puedes darte con la sorpresa de ver que tu contraseña había sido probada. También puedes ver los registros del servicio SSHD usando journalctl:

sudo journalctl _SYSTEMD_UNIT=sshd.service

Si un hacker consigue acceder a tu sistema, tiene muchas opciones: todas las vulnerabilidades de las bibliotecas del sistema y del kernel están expuestas y pueden ser utilizadas para saltarse los mecanismos de seguridad de Linux y elevar los privilegios en el sistema. Por lo tanto, es una buena idea mantener tu software actualizado, es probable que el nuevo software ya haya cerrado las vulnerabilidades conocidas, y a veces comprueba tu ordenador con un software especial de exploración de rootkits. Este artículo te mostrará cómo comprobar tu ordenador en busca de virus en Linux.

Para buscar rootkits, utilizaremos la utilidad rkhunter o RootkitHunter, así como chkrootkit. Veremos cómo instalarlo y configurarlo para comprobarlo correctamente. En general, me inclino más por la primera, ya que es más nueva y tiene más funciones.

Buscar Rootkits con RKHunter

RkHunter (Rootkit Hunter) es una herramienta de escaneo de sistemas Linux / Unix de código abierto publicada bajo la licencia GPL. Analiza Linux en busca de rootkits, puertas traseras, exploits locales y vulnerabilidades. Actualmente hay 349 rootkits conocidos y puede encontrarlos todos si se han instalado en tu sistema. El programa es sólo un script que comprueba los archivos locales y detecta los rootkits conocidos. También comprueba los cambios en los comandos del sistema, los archivos de inicio y comprueba las interfaces de red para puertos específicos.

Puedes instalar el programa en sistemas basados en Ubuntu con el comando:

sudo apt install rkhunter
Instalación de rkhunter en Parrot
Instalación de rkhunter en Parrot

Es posible que necesites instalar algunas utilidades que te permitan utilizar toda la funcionalidad de rkhunter. Se pueden obtener en los repositorios de Ubuntu:

sudo apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 ssl-cert unhide.rb mailutils

En CentOS, ejecuta el siguiente comando:

sudo yum install rkhunter

Si tienes una distribución diferente, siempre puedes descargar el script de instalación desde SourceForge: (recuerda cambiar 1.4.6 por la última versión, si es necesario)

cd /tmp
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz
tar -xvf rkhunter-1.4.6.tar.gz
cd rkhunter-1.4.6
./installer.sh --layout default --install

Antes de poder realizar la comprobación de virus en Linux, la base de datos de la herramienta debe estar actualizada. Para ello, proceda como sigue:

rkhunter --update

Ahora necesita recoger información sobre los archivos del sistema para que el software pueda entender si alguien ha intentado modificar los archivos del sistema durante el siguiente escaneo. Para ello, ejecuta:

rkhunter --propupd
Ejecutar rkhunter con propupd
Ejecutar rkhunter con propupd

Es aconsejable actualizar regularmente, así que vamos a crear un script especial y ejecutarlo mediante cron todos los días. Para ello, crea un archivo de script en la carpeta /etc/cron.daily:

vi /etc/cron.daily/rkhunter.sh
#!/bin/sh
(
/usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter --cronjob --report-warnings-only
) | /bin/mail -s 'rkhunter Daily Run (Tu servidor)' tucorreo@email.com

Aquí hacemos una comprobación de la versión, actualizamos las bases de datos y en la última línea hemos programado una comprobación y le enviamos una notificación por correo electrónico. Para que funcione es necesario sustituir tucorreo@email.com por tu dirección de correo electrónico.

Ahora sólo queda darle al programa los derechos de ejecución:

chmod 755 /etc/cron.daily/rkhunter.sh

Con la instalación del programa resuelto. Primero, veamos las funciones básicas del software que ya hemos utilizado, o que podrían resultarle útiles:

  • --verbose-logging – salida máxima detallada
  • --quiet – salida mínima
  • -l, --logfile – escribe el registro del programa en tu archivo
  • --cronjob – es un modo no interactivo, que se utiliza para ejecutar mediante cron, de ahí su nombre.
  • --list – te permite ver qué opciones soporta el programa, puedes pasar varios parámetros, test – pruebas, lang – idiomas, rootkits – rootkits.
  • --unlock – elimina el archivo de bloqueo de la base de datos, puede ser útil si la sesión anterior fue terminada incorrectamente.
  • --check – comprobación del sistema
  • --update – actualizar las bases de datos de rootkits
  • --versioncheck – actualización del software
  • --propupd – crear una base de datos de archivos

Por ejemplo, para ver todos los rootkits que el software puede encontrar ejecuta:

sudo rkhunter --list rootkits
Lista de rootkits con rkhunter
Lista de rootkits con rkhunter

Para comprobar si hay virus en Linux, ejecuta todo el sistema como usuario root:

sudo rkhunter --check
Comprobar rootkits en Linux con rkhunter
Comprobar rootkits en Linux con rkhunter

Además de mostrar información en la pantalla, el programa también creará un registro de pruebas. No prestes demasiada atención a la información que se muestra durante la prueba, está un poco truncada y se aclarará cuando mires el registro.

cat /var/log/rkhunter.log

Lamentablemente, sólo funciona en inglés, por lo que tendrás que entender un poco de inglés para comprender el estado de tu sistema.

Para ayudarte a entender lo que hace el programa y cómo analizar los resultados, veamos el registro de exploración.

Primero inicializa y descarga los archivos de configuración, nada realmente interesante aquí. Ten en cuenta que estamos viendo el registro de comprobación del sistema, el de actualización y el de creación de la base de datos; los que están más arriba en el mismo archivo no nos interesa. La comprobación del sistema comienza con estos términos:

Escaneo de rootkits con rkhunter
Escaneo de rootkits con rkhunter

El programa escanea las utilidades del sistema e intenta identificar signos sospechosos allí, incluida la comparación del hash de la utilidad con el hash almacenado en la base de datos para ver si se ha cambiado. Por lo general, si todo está bien con las utilidades, el registro está lleno de tales líneas.

Cuando se detecta un archivo sospechoso, el software explica inmediatamente cuál es el problema. Puede ser un falso positivo, pero vale la pena comprobar estos archivos o reinstalar el paquete al que pertenecen.

El siguiente paso es escanear Linux en busca de virus y buscar rootkits conocidos:

Escaneo de rootkits en Linux
Escaneo de rootkits en Linux

Normalmente, si se encuentra algo en esta sección, significa que hay un rootkit en el sistema y que hay que hacer algo al respecto, pero normalmente vemos las líneas Not Found (No encontrado).

A continuación, se iniciará una búsqueda de software malicioso (malware):

Escaneo de malware en Linux
Escaneo de malware en Linux

Comprueba los puertos peligrosos:

Escanear puertos peligrosos en Linux
Escanear puertos peligrosos en Linux

Durante la fase de comprobación del archivo de configuración, es posible recibir algunas advertencias:

Advertencias de archivos de configuración en escaneo de virus
Advertencias de archivos de configuración en escaneo de virus

El siguiente paso es comprobar la configuración del sistema, y aquí también el software no le gusta todo:

Advertencia de uso de V1 en SSH
Advertencia de uso de V1 en SSH

A saber, dos cosas: permitir el acceso root a través de SSH y la capacidad de utilizar el protocolo de la primera versión para conectarse a SSH. Y tiene razón, es muy inseguro.

A continuación, se realizará un escaneo del sistema de archivos:

Escaneo del sistema de archivos en Linux
Escaneo del sistema de archivos en Linux

Y se detectan varios archivos ocultos, pero todos parecen estar bien. Se puede saber qué programa está ejecutando un archivo concreto mediante el comando lsof:

sudo lsof | grep /dirección/archivo

Todavía hay que hacer una comprobación de la aplicación:

[13:26:25] Info: Starting test name 'apps'
[13:26:25] Checking application versions..

Y un breve informe sobre los problemas encontrados:

Resumen de escaneo con rkhunter
Resumen de escaneo con rkhunter

Para facilitar la visualización del registro, puedes elegir no ver todo el registro, sino sólo las advertencias:

sudo cat /var/log/rkhunter.log | grep -A5 "\[ Warning \]"

El parámetro A5 significa mostrar cinco líneas más después de la línea con ocurrencia detectada, para que no nos perdamos nada.

Filtro para advertencia de virus encontrado en Linux
Filtro para advertencia de virus encontrado en Linux

Ahora, veamos otro programa que se puede utilizar para comprobar si hay rootkits en Linux. Esto es chkrootkit. Es un software de opinión, pero también hace un buen trabajo.

Buscar Rootkits con Chkrootkit

Chkrootkit es una herramienta clásica que no sólo busca rootkits de Linux, sino que también comprueba el sistema en busca de signos de presencia de alienígenas. Analizará su ordenador o servidor en busca de procesos sospechosos, rootkits y comprobará la lista de rootkits conocidos. La funcionalidad del programa es muy similar a la de Rkhunter.

El programa consta de varias utilidades individuales:

  • chkrootkit – un script para comprobar el sistema;
  • ifpromisc – escanea las interfaces para el modo ilegible;
  • chklastlog – comprueba las entradas borradas en el lastlog;
  • chkwtmp – comprueba el registro de wtmp en busca de entradas borradas;
  • chkproc – busca troyanos y archivos ocultos en el subsistema proc.

Puedes instalar el software en sistemas basados en Ubuntu utilizando el comando:

sudo apt install chkrootkit
Instalación de chkrootkit en Parrot Linux
Instalación de chkrootkit en Parrot Linux

Si tienes una distribución diferente, puedes construir el programa desde el código fuente:

wget --passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvfz chkrootkit.tar.gz
cd chkrootkit-*/
make sense
make install

En CentOS, necesitarás instalar algunas librerías antes de construir:

yum install gcc-c++ glibc-static

Los comandos se ejecutan sin parámetros. Todo lo que necesitas hacer es ejecutar la herramienta adecuada para encontrar rootkits de Linux:

sudo chkrootkit
Encontrar rootkits y malware con chkrootkit
Encontrar rootkits y malware con chkrootkit

El registro del programa es un poco similar al anterior, por lo que no lo desmontaremos por separado. Aquí, primero comprueba los comandos del sistema, lo que es más limitado que en rkhunter, y luego busca los rootkits de Linux.

Del mismo modo, puedes ejecutar otra utilidad para comprobar las modificaciones del último registro:

sudo chklastlog

Pero es posible que tengas que crear un enlace simbólico a lastlog para que el software pueda encontrarlo.

Palabras Finales

Eso es todo. Realiza escaneos regulares de Linux para poder detectar amenazas, especialmente en los servidores que son más propensos a los ataques de los hackers. Es posible que no encuentre rootkits, pero el software te informará sobre posibles problemas de seguridad que deberías solucionar.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda