Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

miércoles, 30 de septiembre de 2015

Rootkits: Qué son y cómo defendernos en Linux

Alguna vez en vuestra vida habréis oído hablar de la palabra rootkit; palabra que siempre ha sido relacionada con un archivo peligroso insertado por un criminal.. ¿Pero qué son exactamente? ¿Qué daño nos pueden llegar a hacer? Un rootkit no es ni más ni menos que un programa que sustituye a un fichero original, con la diferencia de que este sustituto posee ciertos añadidos para realizar tareas delictivas o para otorgarnos privilegios de root (de ahí proviene el nombre rootkit). Obviamente se ha tenido que tener acceso al equipo antes para insertar este elemento, ya sea aprovechando una vulnerabilidad o por una mala gestión de la seguridad...

Estos archivos suelen suplantar archivos de gran importancia, y pueden ser desde archivos de librería hasta binarios de enorme relevancia, tales como sudo, su o login; con lo que se podría decir que su detección no es precisamente sencilla a menos que se recurran a herramientas especializadas o a métodos especialmente creados para determinar la integridad de un fichero.

rootkit_portada

Uno de los métodos más simples para comprobar si la integridad de un fichero ha sido comprometida, es la comprobación de la suma md5, de nuestros ficheros... Esta suma es única y no puede variar a menos que se haya modificado el fichero, cosa que no debería ocurrir; para comprobar dicha suma se utiliza el comando md5sum sobre el fichero o ficheros a analizar, como por ejemplo el binario su.

md5sum /bin/su

De dicho comando obtendríamos una larga lista de caracteres alfanuméricos que siempre deben de ser los mismos a menos que el fichero haya sido modificado. Por ejemplo basándonos en el comando anterior obtendríamos:

md5sum

El valor obtenido (hemos de suponer que el valor es autentico) podría ser usado para guardarlo dentro de una lista o base de datos tras lo cual podríamos comparar el valor almacenado en dicho lugar con el último valor obtenido con el comando md5sum. Algo como:

Con un listado

Para añadir una suma md5 a una lista:

md5sum /bin/su  > /usr/src/listado.txt

Para comprobar si la suma md5 actual es la misma que la que había antaño:

cat /usr/src/listado.txt |grep "$(md5sum /bin/su)"

Con sqlite

Si queremos recurrir a algo más "sofisticado" como el uso de bases de datos, podemos usar una base de datos sqlite (o la que más nos guste). Para ello obviamente deberíamos tener instalado el software en cuestión; en este caso sqlite, el cual se puede instalar desde los repositorios del sistema:

apt-get install sqlite

Comenzaríamos creando la base de datos y la tabla correspondiente:

  1. sqlite db_md5
  2. create table tablamd5(suma varchar(70));

Con la base de datos creada, la inserción de valores se realizaría de la siguiente forma:

sqlite db_md5 "insert into tablamd5(suma) values('$(md5sum /bin/su)');"

Mientras que la consulta sería:

sqlite db_md5 "SELECT '$(md5sum /bin/su)' FROM tablamd5;"


Chkrootkit

El problema de ambos métodos es que son muy laboriosos, requieren añadir valores cada vez que se instala un software importante y además corremos el riesgo de olvidarnos algún fichero importante que puede ser comprometido... Con lo que aunque conceptualmente se trata de algo interesante, no es una solución eficaz que nos pueda garantizar al 100% la integridad de nuestros ficheros. Por ello lo habitual suele ser recurrir a herramientas especializadas para la detección de rootkits, tales como ClamAV que engloba las funciones de antivirus y antirookit, o recurrir a herramientas diseñadas con el único fin de detectar rootkits... Hay dos de ellas que son especialmente conocidas; llamadas: chkrootkit y rootkithunter. Ambas son excelentes herramientas, pero únicamente me centraré en una de ellas: chkrootkit.

Este tipo de herramientas no suelen ir incorporadas por defecto en el sistema, si bien sí que se encuentran disponibles para ser descargadas desde los repositorios oficiales del sistema, con lo cual, si quisiésemos instalar la herramienta deberíamos escribir:

sudo apt-get install chkrootkit

Al ser una herramienta de gran relevancia que analiza ficheros importantes del sistema, hemos de tener en cuenta que cualquier uso de esta herramienta siempre deberá ser realizado como sudo o como root. Una de las virtudes que tiene esta herramienta es que es muy simple de usar ya que solamente posee dos opciones de escaneo destacables: El escaneo "normal" y el silencioso. El escaneo normal es tan simple como escribir:

sudo chkrootkit

Simple y sencillo, aunque personalmente me parece que muestra demasiada información, ya que muestra absolutamente todo lo analizado, ya esté infectado o no... Como generalmente solo nos interesa que se nos muestren los ficheros que han sido comprometidos, recomiendo acompaña al comando chkrootkit del parámetro -q(quiet) para realizar un escaneo silencioso.

sudo chkrootkit -q

Es recomendable usar más de una herramienta de detección de rootkits; por ejemplo podrían combinarse ClamAV con chkrootkit. Esta recomendación se debe a que en algunas ocasiones, estas herramientas de análisis de rootkits pueden dar falsos positivos, con lo que ante la duda siempre es mejor asegurarse de que efectivamente el fichero en cuestión ha sido manipulado,

Espero que os haya resultado útil.

Saludos.

No hay comentarios :

Publicar un comentario