Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon Rootkits (II)




En esta segunda parte del artículo de Rootkits, vamos a hablar sobre los distintos tipos de Rootkits que existen en Linux. Básicamente, podemos separarlos en 2 tipos:

  • KernelSpace Rootkits

Estos Rootkits, se cargan como un modulo de Kernel. Lo que les permite modificar estructuras del Kernel, hookear llamadas de sistema al más bajo nivel, etc.

  • UserSpace Rootkits

Estos rootkits trabajan el el espacio del usuario. Sus privilegios son menores al de los Rootkits de Kernel. Para poder trabajar, tienen que modificar archivos y/o librerias para poder trabajar correctamente. Son más fáciles de detectar que los Rootkits de Kernel.
Las principales tareas de un Rootkits son las de Ocultar procesos, ocultar archivos, ocultar conexiones a Internet, etc. Para ello, y dependiendo del tipo de Rootkit, hacen servir distintos métodos para lograr su cometido.


  • Hookeando la sys_call_table:

Cuando una aplicación necesita realizar una acción del tipo listar procesos, archivos o conexiones, para ello necesita utilizar una función específica para ello. Esta función, esta guardada dentro de una librería, la cual, al ser ejecutada, realiza una llamada al Kernel, para que este le retorne el resultado de la función (evidentemente, no todas las funciones llaman al Kernel para que les retorne el resultado, como ya dije, son funciones especiales, que requieren llamadas al Kernel par que les retorne el resultado). El siguiente gráfico lo explica:


Como vemos, para realizar una llamada de sistema dentro del Kernel, se hace de la siguiente manera:


sys_call_table[eax]

Donde eax contiene el índice de la función a la que se quiere llamar (en el caso de la imagen, a sys_getpid(). Muchos Rootkits lo que hacían era lo siguiente:


sys_call_table[Index] = (void*) my_func_ptr;

Con lo que conseguían que al consultar la dirección de la función, se les daba la dirección de la función hookeada, es decir, llamaban a la función del Rootkit en lugar de la dirección correcta.
Actualmente, sys_call_table no esta exportado, por lo que el método anterior no funcionaria “a priori”, ya que existen maneras para localizar sys_call_table.

  • UserSpace Rootkits:
Para poder mantenerse ocultos, estos Rootkits lo que hacen es modificar ciertos archivos, los cuales sirven para realizar las acciones antes comentadas (listar procesos, archivos, etc.). Evidentemente, esto es realmente sencillo de detectar, ya que si realizamos un checksum del archivo, veremos que esta modificado, lo que indica que tenemos un Rootkit instalado en nuestra maquina.
Aunque no siempre trabajan así, ya que pueden realizar lecturas y escrituras sobre la memoria virtual del kernel (/dev/Kmem) y sobre la memoria física (/dev/mem). Aunque muchas distribuciones ya llevan deshabilitadas estas direcciones por defecto.

En el próximo capítulo de esta serie de artículos, vamos a analizar, de forma práctica, los distintos tipos de Rootkits.

Un Saludo
Hendrix

2 comentarios :

AcE dijo...

Es cierto que en Win7 x64, no es posible instalar drivers que no sean firmados?, si es asi el hook en ring0 seria inutil no?

Hendrix dijo...

Buenas, pues la verdad es que no lo se. Si se que las versiones de Win7 traen esta configuración (de que no se pueden cargar drivers sin firmar). A lo que no te puedo responder es si existe alguna manera de cargarlo. Ya que, al menos en XP, hay distintas maneras de cargar un Driver. No e testado drivers sobre Win7.

Un Saludo.

Publicar un comentario en la entrada

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.