Autor Tema: Hide and Find Rootkits en GNU/Linux  (Leído 3727 veces)

0 Usuarios y 1 Visitante están viendo este tema.

NataSHell

  • Mensajes: 3
  • Liked: 2
Hide and Find Rootkits en GNU/Linux
« : abril 23, 2012, 01:22:02 am »
Greetings!

Pues, bueno, en el transcurso de los siguientes dias/semanas (espero no meses), estaré subiendo unos "papers/manuales" para la creación de rootkits sobre GNU/Linux, incluyendo source-code que ya tengo funcional, y algunos varios ejemplos.

Me han sugerido que lo meta como si fuera una especie de curso... con capítulos y demás... aún lo estoy considerando.

De momento les adjunto la presentación que dí en la GuadalajaraCon, para que tengan una introducción de lo que estaré mandando.

Saludos!

Do0mMx

  • *
  • Mensajes: 34
  • Liked: 8
Re: Hide and Find Rootkits en GNU/Linux
« Respuesta #1 : abril 23, 2012, 01:19:30 pm »
Excelente plática Nata, pues estaria chido concentrar todo lo que hubo en el GuadalajaraCON, no se quizá en la misma web, o algo, que este todo junto, bueno es una sugerencia xD.

Saludos

Radix

  • *
  • Mensajes: 44
  • Liked: 10
  • .: Ignotus Idem :.
Re: Hide and Find Rootkits en GNU/Linux
« Respuesta #2 : abril 23, 2012, 10:39:29 pm »


 Revisando....y gracias.

Cargando firma, esperando respuesta del servidor.

int_0x40

  • **
  • Mensajes: 163
  • Liked: 25
Re: Hide and Find Rootkits en GNU/Linux
« Respuesta #3 : abril 25, 2012, 11:11:08 am »
Satan del infiernus:

está chido el paper. Por eso le he dicho a Oscarín que ni chkrootkit ni el rkhunter funcan en este caso (aunque éste último, si la memoria no me falla utiliza detección por comparación de hashes en parte), pues primero las llamadas serían interceptadas y segundo el LKM no figuraría ni accediendo a /proc, /sys, /dev si entendí la técnica de ocultamiento de la que se habla en el paper, que si mal no recuerdo son las vías que utilizan estas aplicaciones (recordemos que ambas corren desde el sistema en ejecución). Así no se podría de ningún modo confiar en el sistema que se está ejecutando y sólo se podrían hacer inferencias de inconsistencias en la información de las estructuras de datos.
 
Según entendí para el hide, la solución sería borrar nuestro módulo de las linked list de módulos cargados y tasks que maneja el nucleo, además de usar funciones estáticas para no dejar rastros en /proc/kallsyms y pasarlo como padre del proceso 0.

En cuanto a la detección ¿sería factible también checar la partición donde se sospecha la infección reiniciando en read only como /bin/bash sin dejar que se cargue init y después montar /proc y luego si es posible montar la raíz del sistema de archivos, vfs, etc.? ¿En teoría, si eso es posible, tendríamos el sistema corriendo sin haber cargado el módulo malicioso y podríamos hacerle ls, find y rm? O ¿estoy para variar dejando que se me vayan las cabras?

Nada más otra cosa, en la página 13 dice 'potabilidad', mi duda es: no será 'portabilidad', refiriéndote al código y versión de kernel?

Saludos.
"I am a blind man...now my room is cold..."

NataSHell

  • Mensajes: 3
  • Liked: 2
Re: Hide and Find Rootkits en GNU/Linux
« Respuesta #4 : abril 26, 2012, 02:06:03 pm »
Efectivamente... ni el chkrootkit ni el rkhunter funcionan bien, el detalle para que detecten los que ya tienen es por medio de firmas o búsqueda de ciertos patrones... algo que igual que en desarrollo de virus puedes modificar mediante polimorfismo... pero eso ya es otra cosa.

No hay manera fiable de que confies en los resultado de un sistema ya comprometido. Lo que puedes hacer es un Path Execution Analysis, mientras esta corriendo tu kernel y compararlo contra otro. Esto para ver por ejemplo si tienes saltos de memoria cuando se ejecuta alguna acción. Pero de igual manera, puedes subirte el código de la syscall que tratas de hookear, sobre tu función y una vez más no te detectan.

Vamos, que la manera de detectar un rootkit de este estilo, es mediante sumas SHA1 o MD5, de la memoria del kernel. De las llamadas a sistemas y de la sys_call_table, para tener siempre en seguro cual era la dirección original y si esta no ha sido hookeada.

En el último caso efectivamente es posible realizar dicha verificación, aunque claro ya ahí pueden venir temas de Ing Social, como nombrar a tu modulo con cierto nombre que parezca mas de sistema que otra cosa. O en el peor de los casos, y asumiendo que no hicieron un MD5 de initrd, subir tu módulo al mismo. Incluso hacer una inyección sobre un módulo que siempre se cargue y que este se encargue de subir el tuyo... esto claro esta pensando que no hay una base de datos MD5 o SHA1 que tiene dicha información.

Respecto a la página 13... si se me fueron los dedos XD. Y si el tema de portabilidad se refiere al código y versión del kernel, y en algunos casos de arquitectura, por las direcciones de memoria donde buscar por la sys_call_table.

Saludos!

lyonn

  • Mensajes: 3
  • Liked: 1
Re:Hide and Find Rootkits en GNU/Linux
« Respuesta #5 : febrero 25, 2013, 04:54:58 pm »
Muy buen documento. Sin duda muy útil cuando se comienza (como en mi caso) a conocer más de estos temas.

Como parte de mi búsqueda de información hallé un pequeño artículo que ayuda a enteder qué y cómo se comporta un rootkit.

http://www.symantec.com/connect/articles/detecting-rootkits-and-kernel-level-compromises-linux