miércoles, 20 de junio de 2007

ROOTKIT


LOS "ROOTKIT" AMENAZAS INVISIBLES Y DESTRUCTIVAS DE LOS SISTEMAS OPERATIVOS
Los Rootkit son pequeños programas con rutinas encriptadas que se instalan en forma "oculta" en los sistemas de los usuarios de PC y servidores para evitar ser detectados por los antivirus, software de seguridad y utilitarios de administración de los sistemas. Pueden ejecutar acciones de todo clase, incluso destructivas, sin ser detectados.
Un Rootkit es un conjunto de herramientas de software usados por intrusos que acceden ilícitamente a un sistema operativo. Estas herramientas sirven para ocultar "procesos" y archivos en su ejecución, frecuentemente con fines maliciosos. Existen Rootkits para la mayoría de sistemas operativos, como Microsoft Windows, Linux, Solaris, etc.
Los Rootkit ocultan los inicios de sesión (logins), procesos, archivos, creación o modificación de llaves de registro, etc. Pueden interceptar datos contenidos en un sistema, conexiones de red y hasta digitaciones del teclado (Keyloggers).
Métodos de ocultamiento de detección.
Existen muchas metodologías para que los Rootkit logren evadir su detección u ocultar su presencia y accionar.
Un ejemplo simple, consiste en interceptar todas las llamadas a las API FindFirstFile/FindNextFile, las cuales son usadas por las herramientas de exploración de los sistemas de archivos, incluyendo el Windows Explorer y el comando prompt, para listar el contenido de carpetas de archivos de sistema.
API (Interfaz de Aplicaciones de Programación) son librerías de vínculos dinámicos .DLL, que forman parte del sistema operativo Windows.
Cuando un programa ejecuta un listado de una carpeta o directorio que podrían devolver resultados con entradas que identifiquen a los archivos asociados al Rootkit, es cuando éste intercepta y modifica la salida para remover sus entradas. Las API nativas de Windows actúan como interfaz entre el modo-usuario de cliente y los servicios del modo-kernel y es en ese proceso cuando los más sofisticados Rootkit del modo-usuario interceptan los archivos de sistema, registros y los procesos de enumeración de las funciones de las API nativas.
Lo cual evita su detección por scanners que comparan el resultado de la enumeración de las API de Windows con la devolución de enumeración de de las API nativas invocadas.Rootkit de modo-Kernel
Los Rootkit de modo-kernel pueden ser más eficientes debido a que no solo pueden interceptar las API nativas en el modo-kernel, sino que además pueden manipular directamente la estructura de datos del kernel.
Una técnica muy empleada para ocultar el procesos de códigos malignos consiste en remover el proceso de la lista de procesos activos del kernel.
Debido a que la administración de procesos API dependen del contenido de la lista, el proceso de estos códigos no mostrarán la ejecución del Administrador de Tareas o el del Window Explorer.
Los rootkits, en la práctica, son programas que una vez instalados en un sistema, efectúan las modificaciones necesarias para poder llevar a cabo las tareas que tiene programadas sin que su presencia pueda ser detectada. Fundamentalmente, los rootkits tratan de encubrir a otros procesos que están llevando a cabo acciones maliciosas en el sistema. Por ejemplo, si en el sistema hay una puerta trasera para llevar a cabo tareas de espionaje, el rootkit ocultará los puertos abiertos que delaten la comunicación; o si hay un sistema para enviar spam, ocultará la actividad del sistema de correo. La única limitación es la imaginación del creador.Los rootkits, al estar diseñados para pasar desapercibidos, no pueden ser detectados. Si un usuario (o incluso el usuario root) intenta analizar el sistema para ver qué procesos están ejecutándose, el rootkit mostrará información falsa, mostrando todos los procesos excepto él mismo y los que está ocultando. O si se intenta ver un listado de los ficheros de un sistema, el rootkit hará que se muestre esa información pero ocultando la existencia del propio fichero del rootkit y de los procesos que esconde.
Cuando el antivirus hagan una llamada al sistema operativo para comprobar qué ficheros hay, o cuando intente averiguar qué procesos están en ejecución, el rootkit falseará los datos y el antivirus no podrá recibir la información correcta para llevar a cabo la desinfección del sistema.
Además, los rootkits presentan un problema añadido: no son códigos que se propaguen por sí solos. Si un rootkit está en un sistema es porque ha sido introducido directamente, no porque se haya propagado a través de Internet como un gusano tradicional. Así, es muy posible que un determinado rootkit esté pensado y diseñado para un sistema concreto, no para una generalidad de ordenadores. Sus funciones y características dependen del sistema atacado, una solución hecha a medida para llevar a cabo acciones maliciosas en un determinado sistema.
Los rootkits y los antivirus
Con esta característica, los creadores de antivirus se encuentran con la inmensa dificultad de detectar un código que es difícil conocer. No hay propagación, por lo que no pueden obtenerse muestras del mismo, y su análisis se vuelve prácticamente imposible, puesto que además en el propio sistema afectado no se puede conseguir información sobre el rootkit, ya que él mismo se oculta.En diversos medios han aparecido informaciones alertando sobre la gran peligrosidad de estos programas, y no les falta razón. El riesgo es muy elevado, y las consecuencias que generan pueden ser muy graves. Sin embargo, debedesmitificarse la imposibilidad de detección de estos programas.En primer lugar, para que un rootkit infecte un sistema, debe primero instalarse. Y mientras no se demuestre lo contrario, en lo ordenadores actuales para instalar un programa (sea un rootkit o un lector de correo electrónico) debe copiarse una serie de ficheros a un dispositivo de almacenamiento. Es decir, hay que utilizar el disco duro del sistema para introducir los ficheros del rootkit.Desde hace muchos años, los antivirus vigilan la actividad del disco duro como principal mecanismo de defensa contra códigos maliciosos. Cara fichero que se guarda en el disco es analizado por el antivirus, y si se detecta una amenaza es eliminada. Así, si el rootkit es conocido, un antivirus sin grandes alardes técnicos puede al menos detectarlo, y en muchas ocasiones, además eliminarlo.Pero tal y como comentábamos más arriba, los rootkits pueden ser ejemplares únicos, desarrollados en exclusiva para una máquina en particular. Esto impide claramente que los antivirus puedan tener un conocimiento previo del programa y listarlo entre las firmas de identificación de código malicioso.E incluso podríamos llegar a pensar en un rootkit que no hiciera uso del disco duro, tal y como pasaba con el gusano SQLSlammer. En ese caso fracasarían estrepitosamente las soluciones de protección clásicas, como de hecho sucedió con el mencionado gusano. Por tanto, es necesario un sistema que vigile no se limite a vigilar la actividad de los ficheros en el disco, sino que vaya más allá. En lugar de analizar los ficheros byte a byte, debe vigilarse lo que hacen al ejecutarse.
Las tecnologías preventivas
Un rootkit necesita llevar a cabo unas tareas que podríamos considerar “típicas”, como adquirir derechos de root, modificar llamadas básicas al sistema operativo, falsear sistemas de reporte de datos del sistema… Todas estas tareas, una a una, entrañan poco peligro. Pero todas juntas, llevadas a cabo por el mismo programa, nos dan información clara de que algo extraño está pasando en el ordenador.Si tal y como decíamos antes, las soluciones antivirus fracasan definitivamente a la hora de detectar un rootkit, las nuevas tecnologías de detección de amenazas por comportamiento tienen su mejor prueba de eficacia en la detección y bloqueo de rootkits. Estas tecnologías no basan su funcionamiento en condicionantes previamente aprendidos sobre patrones cerrados de identificación de amenazas. Su éxito se basa en la investigación inteligente y automática de la situación de un proceso en un ordenador.Cuando una serie de acciones se llevan a cabo sobre el sistema y todas ellas (o, al menos, alguna) pueden suponer un riesgo para la integridad de la información o el correcto funcionamiento de la máquina, se evalúan una serie de factores que sirven para calificar la peligrosidad de esas tareas Por ejemplo, que un proceso quiera tomar derechos de administración en un sistema puede ser más o menos habitual. E implica un cierto riesgo, sin duda, pero no hay que alertar por ello. Un simple instalador para un juego puede necesitar solicitar derechos de administrador para poder llevar a cabo las modificaciones necesarias y poder ejecutarse correctamente.También puede suceder que un determinado proceso deba permanecer oculto, ya que no existe posibilidad de interacción, o que un determinado proceso abra un puerto en concreto para comunicarse, o que registre pulsaciones de teclas. Pero todas esas características juntas hacen que el proceso se pueda considerar como una amenaza y sea necesario un análisis es profundidad para poder autorizar la ejecución de manera segura.En este momento es cuando las tecnologías preventivas entran en acción, ya que su misión es precisamente vigilar los procesos y evaluar la peligrosidad de los mismos. En caso de que sean realmente dañinos, lo bloquearán y enviarán una muestra para su análisis.
Desinfección de rootkits
A pesar de lo que viene diciéndose, los rootkits pueden eliminarse, aunque no tan fácilmente como un “Viernes 13”. Tal y como hemos dicho, los rootkits se autoprotegen escondiéndose y evitando que ningún otro proceso (como un antivirus) pueda detectarlos. Pero para que ese proceso pueda ocultarse, debe estar en funcionamiento y activado en memoria.La mejor manera de evitar que el proceso entre en acción es evitar el arranque del sistema operativo en el disco en el que se encuentra el rootkit, utilizando un disco diferente al del sistema infectado; como puede ser un CD. Así, si el rootkit es conocido, podrá eliminarse.Sin embargo, si el rootkit no es conocido (es decir, si ha sido desarrollado específicamente para un sistema concreto), cualquier antivirus fracasará. Entonces, el problema informático es casi el menos importante: hay una persona que, intencionadamente, quiere hacer daño a su empresa y se ha molestado en entrar en el sistema para perjudicarle.En este caso es necesario, además de una investigación policial, poder contar con un proveedor de seguridad que disponga de medios suficientes como para llevar a cabo una investigación forense sobre un disco y poder detectar y eliminar el rootkit. Pruebe a llamar a su proveedor de sistemas antimalware.

No hay comentarios: