jueves, 23 de febrero de 2012

Rootkits

Este tema es un poco distinto de los que suelo escribir, ya que normalmente explico la solución a alguna duda que previamente se me ha planteado, pero aquí planteo la duda, pero no he encontrado una respuesta que me parezca adecuada.

En Linux no hay virus, pero si rootkits...al menos eso he leído. Y en este tema expongo un resumen de lo que he aprendido, aunque a nivel práctico no me sirve de mucho.

Que son: un rootkit es una herramienta software maliciosa que tiene como finalidad esconderse a sí misma, esconder otros programas, procesos, directorios, archivos, llaves de registro o puertos, que permiten a un usuario no autorizados obtener información sensible o controlar remotamente nuestra computadora.

Existen rootkits de diferentes clases y para diferentes sistemas operativos (Windows, Solaris, GNU/Linux). Pueden funcionar a nivel de aplicación (reemplazando ejecutables, modificando aplicaciones, etc.) o a nivel de kernel (modificando código de forma intrínseca agregándose a través de drivers, módulos, etc.). Estos últimos son los más difíciles de detectar.

Ningún sistema operativo en ejecución es confiable al 100% para realizar una detección y lo realmente conveniente es ejecutar este tipo de programas mediante un CD-live o un pendrive, ya que cuando el sistema operativo está detenido el rootkit es más fácil de detectar.

Detectar :

Chkrootkit:
Es un programa que se maneja mediante consola. Permite localizar rootkits conocidos, realizando múltiples pruebas en las que busca entre los binarios modificados por dicho software, archivos PHP sospechosos, etc. Es una herramienta muy simple pero eficaz en cuanto a detección.
Para instalarlo podemos acudir a Sistema > Administración > Gestor de paquetes Sypnaptic o teclear en consola la orden: sudo apt-get install chkrootkit
Para ejecutar Chkrootkit teclearemos en un terminal:  sudo chkrootkit
Si queremos ejecutarlo en modo experto:  sudo chkrootkit -x
Chkrootkit nos presentará un completo informe con el resultado del análisis y probablemente hará alguna sugerencia. Debemos confirmar que los resultados obtenidos son del tipo “not infected” o “nothing found”.



Rootkit Hunter
Funciona de forma similar a Chkrootkit. Permite escanear archivos de texto, archivos ocultos y nos da los resultados en base a una lista bastante larga de rootkits, backdoors y exploit locales conocidos.
Para instalarlo podemos acudir a Sistema > Administración > Gestor de paquetes Sypnaptic o teclear en consola la orden: sudo apt-get install rkhunter
Para actualizar la base de datos de Rootkit Hunter a la última versión introducimos la orden: sudo rkhunter --update
Rootkit Hunter actualizará los ficheros necesarios. Después de actualizarlos podemos empezar con el escaneo tecleando la orden: sudo rkhunter --checkall
Rootkit Hunter nos irá mostrando el resultado por pantalla (el test puede tardar unos minutos, dependiendo de tu CPU). Al finalizar el análisis nos mostrará un resumen por pantalla que puede consultarse con más detalle en /var/log/rkhunter.log.



Eliminar : Ahora viene lo mas "gracioso": los programas indicados para detectar  rootkits pueden dar tanto falsos positivos ( indica que es un rootkit cuando no lo es ) como falsos negativos ( no detectar un rootkit , y por tanto decir que no lo hay ); y ademas en ninguno de los sitios donde he buscado información* he encontrado una forma fiable de eliminar un rootkit que creamos firmemente que lo es.

*http://www.taringa.net/posts/linux/11682620/Como-buscar-rootkits-en-Ubuntu.html

http://www.laconsolablog.com/2008/09/15/seguridad-en-ubuntu-ii-rootkits/

http://www.uned.es/csi/sistemas/secure/seguridad/docs/rootkitlin.htm


http://es.wikipedia.org/wiki/Rootkit

Una duda mas es: si ejecuto los comandos desde la terminal del sistema iniciado desde un cdlive, ¿ lo que me mostrará no serian los rootkits que hubiera en el cd y no en el disco duro?  ¿ hay que primero montar la/s partición/es del sistema instalado en el disco duro ( partición / y partición /home) , y luego desde la terminal ejecutar desde esos directorios los comandos ?

La verdad es que no lo he probado todavía, ya que me da mucha pereza tener que iniciar el sistema desde un cdlive, instalar las dos herramientas y ejecutarlas, y que luego si me detecta algo  no saber como eliminarlo, ya que tampoco he visto por ningún lado como hacerlo; todo lo que he conseguido ver es como detectar los rootkits, pero no he encontrado nada sobre como eliminar los que aparezcan.

Mi conclusión: si tu sistema te parece que funciona perfectamente, mas te vale que no intentes detectar rootkits, porque te vas a quedar con la duda de si lo que te ha detectado es o no un rootkit, y  tampoco vas a saber muy bien como eliminarlo, con que para que saber si tienes o no semejantes "cosas" si el sistema funciona perfectamente...quizás esto sea aplicar la técnica del avestruz, pero en fin, ojos que no ven, corazón que no siente.

A ver si hay suerte y algún lector me indica algo mas práctico con respecto a estos "bichitos".

-------------------------------------------------------------

Editado/Añadido: Comentario hecho por Guadafan en el foro de Guadalinex:
Un rootkit puede ser cualquier programa. Desde el momento en que tienes que meter la clave de administrador para instalar cualquier programa, estás abriendo la puerta y dando vía libre a ese programa para que haga lo que le salga de los webs con tu sistema. De ahí la importancia de usar repositorios “confiables”. Al final todo es una cuestión de confianza, no de seguridad en sí.

Como te puedes imaginar, es prácticamente imposible distinguir un programa malicioso per sé. Al igual que los antivirus, el antirootkit, puede considerar que un programa es sospechoso y marcarlo como malicioso cuando no lo es o considerarlo un programa normal del sistema cuando en realidad tú como usuario no lo has instalado conscientemente (pero sí que lo hizo el rootkit, que está usando programas comunes de tu sistema). Y él mismo usaría un nombre común de sistema para despistar y ocultarse.

Lo que hacen los escaneadores de rootkit es mirar archivos ocultos “raros”, archivos que tienen permisos que no deberían (por ejemplo en /usr/bin o en /usr/sbin), buscar archivos de rootkits conocidos, etc…

Para eliminarlo normalmente es sencillo, borras el archivo o archivos en cuestión y listo. Lo malo es que hayan sustituido archivos importantes para el funcionamiento del sistema y tengas que reinstalarlos a mano. También se pueden ocultar en algún módulo del kernel, en tal caso, tendrás que eliminar ese módulo o reinstalar otro kernel.

-------------------------------------------------------------

2 comentarios:

  1. Como tu bien indicas, son muy difíciles de detectar, una vez instalados al esconderse dentro de los binarios de otros programas o del propio sistema. Ante la duda lo más recomendable es un formateo completo del sistema y empezar de nuevo, y como prevención no instalar nada raro en los sistemas, ahí salimos ganando con linux frente a otros sistemas, donde para utilizar programas se crakean y.... ahí puede estar.

    ResponderEliminar
  2. Vaya, vaya, pueden dar falsos positivos, falsos negativios pero con la ventaja de que tampoco es muy importante lo que hagan porque tampoco vamos a saber qué hacer con los "bichitos"... ciertamente una herramienta genial....

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.