¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal


Verificar Linux contra rootkits con rkhunter y chkrootkit 

Copyright © 2005-2024 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.

Autor:  

De acuerdo a la definición en wikipedia un rootkit es una herramienta, o un grupo de ellas que tiene como finalidad esconderse a sí misma y esconder otros programas, procesos, archivos, directorios, llaves de registro, y puertos que permiten al intruso mantener el acceso a un sistema para remotamente comandar acciones o extraer información sensible, a menudo con fines maliciosos o destructivos.

De hecho que un hacker (black hat) te instale un root kit en tu equipo Linux es la máxima intrusión a la que estarías expuesto. Recuerda que en GNU/Linux el peligro no son virus como en el mundo Windows sino las vulnerabilidades que se descubren a diario en los muy distintos programas que usa el sistema. Por eso la importancia de verificar y actualizar lo más continuo posible el sistema en su totalidad.

En este artículo de LinuxTotal.com.mx te presento dos utilerías que te permitirán verificar tu equipo por posibles cambios en los archivos y programas más comunes, ya que ha menudo los rootkits se disfrazan como programas de uso muy comun como ls o ps, incluso conservan la misma funcionalidad (que es el objetivo, que el usuario no se entere que ya ha sido hackeado con un rootkit) pero a la vez de manera furtiva realizan su trabajo de ejecutar comandos remotos, abrir puertos, realizar ataques DoS, instalar servidores Web ocultos, utilizar ancho de banda para transferencia de archivos, monitorear con keylogers, etc., etc.


chkrootkit

chkrootkit muy popular checador de rootkits, verifica localmente por señales de estos. Es una buena opción para equipos Desktop, laptops, incluso para servidores como un complemento más de este tipo de programas.

Después de que lo descargues hay que compilarlo: (como root)

#> wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
#> tar xvzf chkrootkit.tar.gz
#> cd chkrootkit     
#> make sense        

Con lo anterior debes de tener ahora en el mismo directorio un binario llamado chkrootkit, se ejecuta sin argumentos de la siguiente manera:

#> ./chkrootkit 
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
Checking `find'... not infected
...  

Es posible ver la lista de pruebas que chkrootkit puede realizar mediante la opción -l y ejecutar solo una o varias a la vez:

#>./chkrootkit -l
./chkrootkit: tests: aliens asp bindshell lkm rexedcs sniffer w55808 wted scalper slapper z2 chkutmp amd basename biff chfn chsh cron crontab date du dirname echo egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf identd init killall  ldsopreload login ls lsof mail mingetty netstat named passwd pidof pop2 pop3 ps pstree rpcinfo rlogind rshd slogin sendmail sshd syslogd tar tcpd tcpdump top telnetd timed traceroute vdir w write
#> ./chkrootkit tar top         
ROOTDIR is `/'
Checking `tar'... not infected
Checking `top'... not infected

chkrootkit no tiene opción (al menos hasta la versión 0.48) para enviar a archivo el resultado del escaneo realizado, pero se resulve con direccionamiento:

#> ./chkrootkit >  chkrootkit20080414.txt

Puedes hacer un script donde se agregue la fecha automáticamente (ver Comando date, sus usos y respaldo de archivos) y a través de una entrada de cron ejecutarlo diariamente. Revisar y/o comparar esttos archivos diariamente te ayudarán a detectar cambios en tu sistema.

rkhunter

rkhunter en mi opinión, es un checador de rootkits mucho más completo y potente que chkrootkit, es ideal para ser usado en servidores. En su página de descarga sostiene (a modo de broma) que verifica en un 99.9% que estás libre de indeseables rootkits, es decir, realmente se trata de una capa más de seguridad. rkhunter verifica el sistema por:

  • Comparación de hashes MD5
  • Busca por archivos comunes usados por rootkits
  • Permisos equivocados para binarios
  • Busca por cadenas de texto sospechosoas en módulos LKM (Loadable Kernel Modules) y KLD (Kernel Loadable Device)
  • Busca por archivos ocultos
  • Opciones de escaneo dentro de archivos binarios y planos

Después de descargar el tar.gz lo instalamos:

#> tar xvzf rkhunter-1.3.2.tar.gz
#> cd rkhunter                       
#> ./installer.sh --layout default --show
PREFIX:             /usr/local
Application:        /usr/local/bin
Configuration file: /etc
Documents:          /usr/local/share/doc/rkhunter-1.3.2
Man page:           /usr/local/share/man/man8
Scripts:            /usr/local/lib/rkhunter/scripts
Databases:          /var/lib/rkhunter/db
Temporary files:    /var/lib/rkhunter/tmp





#> ./installer.sh --layout default --install

Una vez instalado, la manera más básica de ejecutar rkhunter es de la siguiente manera:

#> rkhunter -c
[ Rootkit Hunter version 1.3.2 ]

Checking system commands...

  Performing 'strings' command checks
    Checking 'strings' command                               [ OK ]

  Performing 'shared libraries' checks
    Checking for preloading variables                        [ None found ]
    Checking for preload file                                [ Not found ]
    Checking LD_LIBRARY_PATH variable                        [ Not found ]

  Performing file properties checks
    Checking for prerequisites                               [ OK ]
    /bin/awk                                                 [ OK ]
    /bin/basename                                            [ OK ]
    /bin/bash                                                [ OK ]
    /bin/cat                                                 [ OK ]
    /bin/chmod                                               [ OK ]
    /bin/chown                                               [ OK ]
    /bin/cp                                                  [ OK ]
    /bin/csh                                                 [ OK ]
    /bin/cut                                                 [ OK ]
    /bin/date                                                [ OK ]
    /bin/df                                                  [ OK ]
  ....
  

rkhunter con la opción -c realiza un escaneo muy completo del sistema, no es posible apreciarlo aqui, pero en cada sección del escaneo la salida se interrumpe como para poder analizarlo, y hasta que no se presiones 'Enter' continua. Puedes deshacerte de este comportamiento interactivo con la opción --sk, por cierto, la lista de opciones o ayuda, la obtienes invocando rkhunter sin ningún argumento.

Si hubiera algo que reportar, el archivo /var/log/rkhunter.log, pero puedes cambiar la salida del archivo a otro que tu desees:

#> rkhunter -c --sk --logfile /root/rkhunter20080414.txt

Lo anterior enviará toda la salida al archivo indicado y sin hacer pausas para continuar. También es posible realizar pruebas personalizadas y no todas a la vez.

#> rkhunter --list   
Available test names:
    additional_rkts all apps attributes deleted_files filesystem
    group_accounts group_changes hashes hidden_procs immutable known_rkts
    local_host malware network none os_specific other_malware
    packet_cap_apps passwd_changes ports possible_rkt_files possible_rkts possible_rkt_strings
    promisc properties rootkits running_procs scripts shared_libs
    shared_libs_path startup_files startup_malware strings suspscan system_commands
    system_configs trojans

Grouped test names:
    additional_rkts => possible_rkt_files possible_rkt_strings
    group_accounts  => group_changes passwd_changes
    local_host      => filesystem group_changes passwd_changes startup_malware system_configs
    malware         => deleted_files hidden_procs other_malware running_procs suspscan
	...


#> rkhunter --enable hidden_procs,system_commands   

#> rkhunter --disable system_commands   

Como ya se mencionó previamente, es conveniente que se ejecute periódicamente a través de un cron y con un control por fechas de los reportes que se generan, asi se teendrá una bitacora muy completa de cuando pudieron ocurrir cambios en el sistema.


También, recuerda que estos anti-rootkits son solo una medida de seguridad más para la protección de tu sistema, hay que actualizar continuamente, apagar los servicios que no se usen, configurar adecuadamente ssh, apache, servidores de correo, etc.



¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

LinuxTotal en:

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.


Dona a través de paypal::


O a través de bitcoins:


14TNQv5wM3xkSv65gHGQ6s6f8yTZuFTohE
Más artículos de LinuxTotal

Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automáticamente comandos o scripts (grupos de comandos)....


Hay ocasiones que los usuarios insisten en poner contraseñas muy débiles de 5 o 6 caracteres a lo más. Y el argumento que dan e....


El siguiente es un script muy básico de iptables que puedes usar para proteger un solo equipo conectado a Internet a través de u....


ssh es quizás (en mi opinión) la mejor herramienta de comunicación que existe cuando se trata de establecer contacto con un ser....


El siguiente script te presenta la manera de colocar un reloj (hora y fecha) en la parte superior derecha de una terminal de texto....


En el artículo de LinuxTotal.com.mx sobre permisos se explica lo que es un archivo con permisos SUID o SGID, pueden ser potencial....


Una de las dificultades con una base de datos MySQL grande y activa es la de realizar respaldos limpios sin tener que desconectar ....


Muchos validadores de direcciones de correo electrónico devolverán errores cuando se enfrenten con una inusual pero válida dire....


En Linux existen tres formas de controlar y mostrar la marca del tiempo en archvios y directorios. Asi es, cuando creas o editas u....


Si ya has usado la línea de comandos o shell de Linux por un tiempo, seguramente entonces, el comando date ya te es familiar, lo ....



Copyright © LinuxTotal.com.mx 2006-2024
info@linuxtotal.com.mx · linuxtotal.com.mx@gmail.com