|
¿Son los Rootkits la raíz de
todos los males, o sólo una rama más del árbol
de aplicaciones maliciosas?
Todo lo que necesita saber acerca
de la amenaza Rootkit.
Una primera aproximación
Un Rootkit es
una colección de una o más herramientas diseñadas
para controlar de forma encubierta un ordenador, y obtener
o mantener, de manera fraudulenta, un acceso a nivel de administrador
que puede también ejecutarse de forma indetectable.
Finalizando
este documento encontrará la sección Descripciones
breves,
con mayor información sobre algunos términos usados específicamente
en este artículo.
Para
conocer más sobre otras definiciones en general, por
favor, consulte la sección Glosarios.
Introducción
La conciencia pública sobre los Rootkits ha crecido mucho en los últimos años. Pero, tal como sucede con gusanos, virus y demás formas de aplicaciones maliciosas, el término Rootkit se aplica indistintamente a un amplio rango de tecnologías, y atrajo una cierta cantidad de definiciones poco apropiadas.
Si bien desarrollaremos ampliamente el tema en este artículo,
nuestra intención no es establecer una definición
oficial del término. Sin embargo, ofrecemos unas breves
descripciones al final de este documento.
Los Rootkits corren riesgo de convertirse en los últimos de una larga lista de amenazas pobremente comprendidas, para ser exageradamente promocionadas como “el fin de la informática tal como la conocemos”.
Al haber recibido descripciones como “el método
de ataque más pernicioso y sofisticado que puede efectuarse
actualmente sobre un sistema Windows” [1],
han ganado algo del temor supersticioso que términos como Stealth (modo
oculto) y polimorfismo inspiraron anteriormente
en la historia del código malicioso.
De hecho, los conceptos de Rootkits y Stealth (actualmente
conocido como aplicaciones de modo oculto, Stealthware)
están estrechamente relacionados y solapados, si es que
no son sinónimos.
Este artículo intenta evaluar la realidad de la amenaza Rootkit, y examinar el estado de las soluciones disponibles.
Es fácil comprender por qué el concepto de Rootkit es tan preocupante. Las aplicaciones que utilizan técnicas de invisibilidad están diseñadas para ocultar su presencia ante los antivirus, otros programas de seguridad, el sistema operativo y el sistema de archivos.
A pesar de que la magnitud de algunos Rootkits representa un desafío particular, las tecnologías están avanzando para ambas partes de la guerra del código malicioso.
Mientras que los Rootkits eran, hasta hace poco, una preocupación para los especialistas en seguridad, principalmente en las comunidades UNIX/Linux, la utilización del modo oculto no es ninguna novedad para la industria antivirus.
¿Tiene raíz?
En un sistema UNIX, el usuario más privilegiado se
denomina Root (raíz),
y posee el control máximo sobre el sistema. Por ende,
es el blanco más deseado por los atacantes.
La raíz, o directorio
raíz también se refiere al directorio principal en la estructura de archivos de UNIX, el único elemento de máxima jerarquía en un árbol de directorios convencional (¿me pregunto por qué los árboles de directorios crecen hacia abajo?)
El directorio raíz usualmente se representa con una barra
hacia delante “/” (es casi equivalente a “C:\” en un ordenador con DOS o Windows) y es el que permite acceder a todos los demás elementos del árbol.
Habitualmente, los usuarios del sistema sin privilegios, no
estarían autorizados para modificar los archivos de este
directorio, ni los de ningún otro que no sea el propio.
Por lo tanto, quien logre acceso al sistema con la cuenta Root (Rooting)
podrá realizar cualquier tipo de acción o tarea que debería ser
realizada solamente por el usuario administrador, teniendo acceso
al sistema y a todos sus archivos y directorios.
Rootkits y modo oculto
En las primeras etapas de la detección de código malicioso, la tecnología de modo oculto ha sido definida en estos términos [2] [3]:
- Modo oculto negativo (nivel -1): los daños provocados por la infección afectan el funcionamiento del objeto atacado de manera tan evidente, que hacen inevitable su detección.
- Sin modo oculto (nivel 0): No se toman medidas específicas para disimular la presencia de la infección.
- Modo oculto elemental (nivel 1): No aparecen características que llamen la atención. Se toman recaudos básicos para no ser detectados, por ejemplo preservar los registros de fecha y hora.
- Modo oculto intermedio (nivel 2): Se mantiene una imagen
parcial o total del objeto en el estado anterior a la infección para mostrarle al sistema, con el fin de ocultar las huellas del virus.
- Modo oculto avanzado (nivel 3): Los métodos de invisibilidad se utilizan específicamente para ocultar la infección ante las aplicaciones de seguridad.
Actualmente, esta clasificación no se utiliza mucho fuera de la comunidad antivirus. Sin embargo, es válida, no sólo en el contexto de los virus, sino también al referirse a otros códigos maliciosos que utilizan modo oculto, incluyendo los Rootkits.
Se afirma que la tecnología de los últimos Rootkits es tan avanzada que sólo pueden ser detectados por herramientas especiales, y que la única manera de eliminarlos es formateando el disco infectado y reinstalando el sistema operativo.
Pero, si tenemos en cuenta que estos mecanismos han sido descubiertos y tratados apropiadamente durante muchos años por las aplicaciones antivirus, no deberíamos alarmarnos tanto ante dichas aseveraciones.
Potencialmente, un programa antivirus puede detectar los Rootkits tan fácilmente como lo hace con los virus tradicionales. Ciertamente lo hará antes que tenga la oportunidad de instalarse, pero también, en varias oportunidades, cuando ya lo han hecho.
Esto no significa, en absoluto, que todas las aplicaciones antivirus manejen con la misma eficacia el problema, ni que traten a todos los Rootkits con la misma suerte. Sin embargo, el problema es controlable: el cielo no se está cayendo.
Definiciones de Rootkits
Según Hoglund [4],
un Rootkit es “un conjunto de programas y código
que permite una presencia permanente o consistente, no detectable
en un ordenador”. Esta es una definición de alto
nivel, razonable, pero no disminuye la confusión existente
entre la antigua técnica de modo oculto (Stealthing),
los nuevos conjuntos de herramientas para modo oculto (Stealthkits),
y los Rootkits.
Consideremos entonces, una definición básica [5] de un conjunto de herramientas maliciosas: “Un paquete que contiene instrucciones, programas, o agentes autónomos que se aprovechan de las vulnerabilidades existentes”.
Un Rootkit es un conjunto de herramientas usualmente asociado con el intento de obtener o mantener acceso privilegiado, manteniendo oculto el hecho de que el sistema ha sido comprometido.
Podría entonces definirse como un grupo de herramientas informáticas maliciosas, que permiten que un intruso, que logró acceder y permanecer en el sistema, oculte esta situación.
En realidad, el hecho es un poco más complicado, pero antes de avanzar en ese sentido, necesitamos comprender ciertos conceptos acerca de la administración de las cuentas de usuario y sus privilegios. Después de aclarar esto, podremos considerar conjuntos de herramientas específicos, en determinados entornos.
Por el momento, una definición práctica de un Rootkit sería una clase de conjunto de herramientas instalado en un sistema con privilegios de usuario con el fin de:
- Mantener acceso privilegiado y control.
- Permitir al individuo o a la aplicación utilizar ese acceso en la forma que prefiera.
- Disimular o restringir el acceso a objetos tales como:
- Procesos
- Hilos de ejecución
- Archivos
- Carpetas / Directorios / Subdirectorios
- Entradas de registro
- Puertos abiertos
- Controladores
Debemos tener en cuenta que estas definiciones no presuponen:
- Intrusión, es decir acceso no autorizado.
- Acciones o intentos maliciosos.
- Administración del directorio raíz (ganando un nivel de acceso y privilegio inapropiado y no autorizado).
Analizaremos este concepto más adelante.
Esta sutil evasión al concepto de piratería maliciosa, es, actualmente, bastante fácil de justificar.
La mayor parte de los sistemas operativos multiusuarios utilizan alguna forma de ocultación, o acceso restringido a los datos importantes y a los archivos críticos del sistema, para los usuarios sin privilegios.
Esto se hace por razones de seguridad completamente legítimas, por ejemplo, para prevenir que los usuarios finales accedan a datos que no les competen, o evitar que modifiquen o eliminen archivos y programas arriesgando la integridad de los datos y la estabilidad del sistema.
En este sentido, la seguridad no presupone malicia de parte del usuario final, y podría clasificar fácilmente en una versión levemente modificada del modelo de modos ocultos citado anteriormente.
Sin embargo, esta definición abarca el uso de técnicas del tipo Rootkit y de ocultación, también con motivos legítimos (ver el resumen del Rootkit Sony más adelante).
Breve introducción a la administración de cuentas
Incluso el más modesto de los ordenadores contemporáneos
tiene recursos y poder de procesamiento equivalentes o superiores
a muchos de los superordenadores (mainframes) y pequeños
ordenadores del pasado.
Algo que no es tan obvio, es que los ordenadores personales actuales, han evolucionado desde el modelo de los sistemas autónomos, monousuarios, y con limitada capacidad de trabajar en red, a ser máquinas con las características de un servidor.
Los equipos y los sistemas operativos actuales, pueden soportar no sólo varios usuarios y procesos, sino también procesos de usuarios múltiples y concurrentes; a pesar de que la mayoría de los ordenadores de escritorio y portátiles son generalmente utilizados por una sola persona y, por lo tanto, una sola cuenta a la vez, a menos que estén ofreciendo un servicio en línea a usuarios remotos.
Literalmente, esto significa que trabajan como servidores, al mismo tiempo que se utilizan como estaciones de trabajo.
Una cuenta de usuario no sólo permite ingresar al sistema, también define qué acciones se podrán realizar en el mismo.
La mayoría de los usuarios tiene derechos o privilegios de administración y acceso limitados. Estos privilegios se otorgan de acuerdo a sus tareas y deberes individuales, y también se considera su pertenencia a un grupo en particular.
Los grupos se definen en base a intereses o actividades comunes, geográficamente, por ubicación en la estructura de la red, etcétera.
Generalmente, sólo los administradores tienen derechos para instalar o modificar aplicaciones, acceder a las cuentas de otros usuarios y otros permisos exclusivos.
Sus derechos también pueden ser restringidos de acuerdo a su jerarquía; por ejemplo, un administrador podría tener privilegios absolutos en algunos servidores o dominios, pero no en otros.
La cuenta raíz (Root account) normalmente tiene
todos los privilegios de administrador (“súper usuario”)
tanto en UNIX / Linux como en sistemas no UNIX.
La cuenta de administrador por defecto en sistemas Windows es casi equivalente a la de UNIX. Como los sistemas operativos Macintosh OS X se basan en BSD UNIX, el sistema de cuentas se accede a través de la interfaz gráfica y es un poco diferente al de UNIX, pero el principio es el mismo.
Privilegios de usuario y administración del directorio raíz
La administración del directorio raíz (Rooting)
es un concepto que se aplica a la obtención de control
absoluto sobre un sistema UNIX o Linux. Esto podría lograrse
por escala directa de jerarquías, es decir, aprovechando
las vulnerabilidades del sistema para obtener un nivel de privilegio
superior.
Sin embargo, también puede lograrse por la acción de un virus, tal como informa Cohen [6] en las primeras épocas de la investigación de códigos maliciosos.
El uso del vocablo Rooting suena extraño
en el contexto de los sistemas Windows, donde una cuenta denominada
raíz (root) no tiene un significado especial.
Sin embargo, puede ser utilizado como término genérico
para referirse al proceso de obtención de acceso privilegiado
en ambos tipos de sistemas (UNIX / Linux, y no UNIX).
Objetivos de los Rootkits
El objetivo principal de un Rootkit no es necesariamente acceder al directorio raíz del sistema anfitrión, si bien pueden incluir programas diseñados para obtener ese tipo de acceso administrativo. Preferentemente, su objetivo es habilitar al intruso para mantener y aprovechar un punto débil no detectado en el sistema.
Sin embargo, algunos autores hacen una distinción entre Rootkits y
conjuntos de herramientas para modo oculto (Stealthkits).
Según ellos, un Rootkit podría definirse
como un conjunto de herramientas con funcionalidades que incluyen
instrumentos para administrar el directorio principal del sistema [7].
Este artículo, en cambio, prefiere presentar varios componentes y tipos de Rootkits, y no ofrecer un simple punto de vista purista y estricto sobre qué es y qué no es un Rootkit.
Esta aproximación no sólo se basa en el intento de ser claros, sino también en la realidad y la multiplicidad de las amenazas existentes en el mundo actual.
Los objetivos secundarios de un Rootkit podrían ser:
- Ocultar las huellas de un intruso en un sistema de privilegios.
- Esconder la presencia de aplicaciones o procesos maliciosos.
- Disimular las actividades de código binario, bajo la apariencia de archivos legítimos.
- Ocultar la presencia de códigos que se aprovechan de las vulnerabilidades
del sistema: modificación de parches, retorno a versiones
anteriores,
puertas traseras, entradas clandestinas.
- Recolectar información a la que el intruso no accedería sin permisos. Esto
podría
incluir datos del sistema, tráfico de red y demás.
- Usar el sistema de privilegios como intermediario para realizar otras intrusiones
o
ataques maliciosos.
- Guardar otras aplicaciones nocivas y actuar como servidor de recursos para
actualizaciones de robots.
Componentes tradicionales de las Rootkits de UNIX
Las aplicaciones de tipo Troyano, son sustitutos de las instrucciones legítimas del sistema, con el fin de esconder la presencia de huellas de un intruso, para permitirle acceder a voluntad, u obtener información restringida.
En un entorno UNIX, comandos como “top”, “ps”, “login”, y “passwd” son blancos comunes, para ser sustituidos [8], pero cualquier programa que pueda ser aprovechado para generar procesos que utilizan los privilegios de la cuenta “root” (ver la entrada “shell” en el glosario) será el blanco natural para un Rootkit, pues ayuda al intruso a ganar o mantener acceso administrador.
Estos no son necesariamente los medios utilizados para obtener acceso al sistema privilegiado, pero podría tener una gran cantidad de usos posibles, incluyendo el compromiso de otras cuentas y sistemas, o volver a ganar acceso privilegiado a pesar de los intentos por reparar una intrusión detectada.
Los comandos que podrían advertir al administrador la presencia de un intruso (por ejemplo, “last”, “ls”, “netstat” e “ifgonfig”) [9] son también blanco de sustitución. Los programas que se ejecutan como servidores en segundo plano (daemons), como “inetd”, “rshd” y “syslogd”, o los procesos de sistema (ver glosario), también pueden ser reemplazados, tanto para disimular actividad maliciosa como para recolectar información.
Las aplicaciones para limpiar los registros y herramientas similares, cubren las huellas del intruso. Pueden, por ejemplo, eliminar entradas relacionadas con una presencia maliciosa de los archivos de registro del sistema.
Otras formas de Troyanos pueden encontrarse en los Rootkits clásicos,
tales como los que se utilizan para recolectar información:
registradores de pulsaciones (Keyloggers), o capturadores
de paquetes de red (Sniffers), y para permitir acceso
futuro a voluntad: puertas traseras (Backdoors).
Un Rootkit típico de UNIX o Linux seguramente tendrá sustitutos de comandos para aplicaciones de servidor, instrucciones para aumentar los privilegios del usuario, recursos para monitorizar el uso de comandos (para ocultar archivos), capturadores de paquetes para controlar el tráfico de la red, y aplicaciones de tipo Troyano para esconder procesos, registros y conexiones.
Los Rootkits de Windows
La expresión “Rootkit de Windows” se utiliza popularmente para describir aplicaciones que sirven para ocultar procesos, archivos o claves de registro al sistema operativo.
De hecho, los Rootkits de Windows funcionan de modo similar a las tradicionales Rootkits de UNIX, aunque los mecanismos exactos varían de acuerdo a la plataforma.
Las versiones derivadas de Windows NT, como Windows XP, usan un modelo de seguridad multiusuario, muy parecido al de versiones de sistemas más antiguos, como VMS y UNIX, a pesar de que la terminología y los mecanismos exactos pueden ser muy distintos.
Las versiones anteriores de Windows dependen, casi por completo, de aplicaciones de seguridad independientes para no ser vulneradas, de modo que las Rootkits más completas no representan un obstáculo significativo en la búsqueda de un sistema de archivos de seguridad legítimo.
Como los sistemas UNIX, las versiones del entorno operativo de Windows derivadas de NT tienen grados de acceso privilegiado.
Esto no es sólo para controlar el acceso de los usuarios a las áreas de datos, sino también a los procesos del núcleo.
Las plataformas de la familia NT soportan dos modos de ejecución (o niveles de privilegio): modo usuario, y modo núcleo. (Los procesadores x86 modernos actualmente soportan cuatro modos de privilegio, pero Windows sólo puede implementar dos de ellos, pues la intención era que NT pudiera utilizarse también en procesadores no sólo Intel).
Los niveles de privilegio tienen el propósito de proteger el núcleo (nivel 0) de modo que los datos del sistema no puedan ser modificados ni sobrescritos por un proceso no autorizado. Las aplicaciones normales en un sistema de tipo NT se ejecutan en el nivel 3, que es el de menor privilegio.
Modo usuario contra modo núcleo
La distinción entre usuarios privilegiados y administradores no coincide exactamente con la diferencia entre modo núcleo (nivel 0) y modo usuario, pero hay una estrecha relación entre ambas.
El núcleo puede describirse como el centro literal del sistema operativo [10]: los servicios del sistema se ejecutan en modo núcleo, por ende un usuario sin privilegios no puede realizar modificaciones inapropiadas, tales como agregar o eliminar controladores, unidades, y programas, sin autorización.
Las aplicaciones de usuario generalmente están disponibles para todo el grupo, y se ejecutan en modo usuario. De esta forma, se restringe la capacidad de los programas para alterar los procesos del sistema, a través de una modificación inadecuada o inadvertida.
Los componentes de un Rootkit en modo usuario se ejecutan como una aplicación, o dentro de otro programa, realizando cambios en las API (Application Programming Interface, Interfaz de programación de aplicaciones) de Windows, de los procesos correspondientes.
Cada aplicación de usuario se ejecuta en su propio espacio de memoria, de modo que un Rootkit con estas características debe modificar la memoria de cada uno de los programas en ejecución, con el fin de filtrar para todos ellos lo que en realidad está ocurriendo con el sistema operativo.
Para hacer esto, debe monitorizar el sistema para poder alterar el espacio de memoria antes que una aplicación recientemente abierta sea completamente ejecutada.
Un método habitual para lograr estos objetivos es modificar las bibliotecas de enlace dinámico (DLL, Dinamic Link Libraries) del sistema, mientras se están ejecutando.
El modo núcleo concede acceso privilegiado a la memoria del sistema, y todo el conjunto de instrucciones del procesador. Los Rootkits de modo núcleo, interceptan las API de este tipo, y de esta manera ocultan procesos, archivos, entradas de registro y demás.
Cuando se genera un pedido de información de parte de una aplicación en modo usuario, los datos devueltos son filtrados para esconder la evidencia.
Un Rootkit en modo núcleo tiene un potencial casi irrestricto para dañar o manipular el sistema, comparado con el de un Rootkit en modo usuario. Pero, debido a su alto grado de complejidad inherente, es más dificultosa su instalación y mantenimiento.
Esconder datos en el espacio del núcleo es más confiable, y la tarea es más fácil ya que todos los procesos centrales comparten el mismo espacio en memoria, pero tiene que ser efectuada por un usuario privilegiado, no necesariamente con su conocimiento.
Debemos destacar que este método para ocultar información
(ver la entrada “Hooking” en el glosario),
no es el único que puede utilizar un Rootkit.
La manipulación directa de objetos del núcleo (DKOM, Direct Kernel Object Manipulation), en vez de filtrar los datos que retorna el núcleo, directamente modifica los objetos creados con propósitos de auditoria por el sistema operativo.
Un Rootkit que utilice este método, puede esconder un proceso desvinculando el objeto asociado con un proceso [11], para dificultar aún más a las aplicaciones de seguridad la detección de su presencia.
Rootkits residentes contra Rootkits no residentes
Muchos Rootkits son residentes: se guardan en el disco y se insertan en la secuencia de inicio del sistema, y así sobreviven al reinicio del ordenador.
Los Rootkits no residentes, o en memoria, no realizan la misma acción, sin que instalan su código directamente en la memoria volátil, y no sobreviven al reinicio del sistema.
Esto los vuelve más difíciles de descubrir, ya que no queda rastro alguno en el sistema que pueda ser detectado por un análisis de encendido.
Sin embargo, su funcionalidad está limitada por la duración del período en el que el sistema infectado permanece en línea, pues al ser reiniciado el Rootkit desaparece.
Esto no es un tema menor en sistemas que no son apagados, o reiniciados habitualmente, por ejemplo los servidores.
Pareciera que hay una tendencia a utilizar este tipo de Rootkits entre los investigadores de vulnerabilidades, y quienes publican prototipos de código que se aprovechan de ellas. Probablemente se debe a que los atraen las ventajas de la ocultación para las aplicaciones maliciosas, que no realizan modificaciones permanentes a los archivos del sistema.
Algunos Troyanos han utilizado este tipo de Rootkits no residentes, por ejemplo FU, al que cargan en memoria una vez que ellos mismos ya han sido guardados. El Rootkit se utiliza entonces para esconder los archivos y procesos del Troyano.
Rootkits de Macintosh
También existen algunos prototipos de Rootkits para el sistema operativo de Apple, OS X. Su impacto ha sido bajo, y su importancia tiende a ser minimizada por la comunidad de usuarios de Mac pues ellos necesitan acceso al directorio raíz para instalar, es decir que no pueden utilizar escala de privilegios.
Esta misma actitud se repite con respecto a los pocos ejemplos de código malicioso para Macintosh actualmente conocidos.
De hecho, los usuarios de este sistema operativo niegan frecuentemente que haya virus para OS X, porque los que existen deben ser ejecutados por un usuario, para poder infectar el ordenador, y replicarse (sin embargo, el mismo razonamiento es válido para varios virus de Windows).
Es difícil que un usuario de Macintosh utilice su cuenta de administrador, a menos que realmente quiera hacerlo. No obstante, es ingenuo pensar que ningún usuario de Mac podrá ser engañado para ejecutar su cuenta “root” temporalmente y permitir que un Rootkit se instale.
Mientras que los usuarios de Mac comprenden bien la superioridad de la administración de privilegios, no es habitual que los Rootkits de Windows puedan acceder al directorio raíz, es decir, obtener por su cuenta los privilegios del administrador, sin la ayuda de la víctima (psicológicamente manipulada).
Sin embargo, Windows es objetablemente tolerante con respecto a permitir que el usuario trabaje, por defecto, con privilegios de administrador:
Buenas intenciones, y la experiencia del Rootkit Sony
El uso de tecnología de tipo Rootkit o de modo
oculto no se limita a quienes se infiltran en un sistema con
los habituales fines de piratería informática. También
puede ser utilizada por otras formas de aplicaciones maliciosas,
incluyendo virus, gusanos y troyanos, como un medio para esconder
la presencia de dichos programas.
El término Greyware se utiliza para denominar
a las aplicaciones que se ubican en algún lugar confuso
entre los programas legítimos y los que no lo son, como
la publicidad no solicitada (Adware), algunos programas
espía (Spyware), aplicaciones de rastreo (Trackware)
y demás.
Algunos desarrolladores de antivirus las llaman, cautamente, “programas
potencialmente indeseables”. Esto es para evitar posibles
complicaciones legales en las que el fabricante intentara argüir
que las aplicaciones son legítimas.
En algunos casos podría ser código legítimo que puede ser, o ha sido ya, subvertido con propósitos maliciosos.
Estas aplicaciones también dependen, usualmente, de cierto grado de invisibilidad. Su presencia es muy obvia en algunos casos, debido a la aparición de publicidades emergentes, navegadores que se abren en direcciones inesperadas, y demás.
Pero debemos prestar un grado de atención considerable, para prevenir la detección y eliminación de los archivos de programa en cuestión.
Algunos comentaristas del campo [4] están ansiosos
por señalar
que la tecnología Rootkit puede ser utilizada
con propósitos legítimos, y que debe ser así para
superar deficiencias del sistema operativo cuando se refiere
a ocultar datos. Algunas de las áreas citadas habitualmente
son:
- Administración de derechos de propiedad intelectual.
- Proteger a los programas de la ingeniería reversa.
- Evaluar la amenaza de los quienes tienen acceso a datos confidenciales.
- Rastrear intrusos.
- Monitorizar empleados.
- Administración de derechos digitales.
- Proteger a las aplicaciones de seguridad de código malicioso o de interfaces
de usuario inadecuadas.
- Resguardar aplicaciones y datos.
- Utilizar aplicaciones para recuperar el sistema.
- Cifrado de datos y encubrimiento en sistemas multiusuario.
No todos están de acuerdo con la aplicación de terminología de los Rootkits a los asuntos mencionados, porque enturbia en cierto modo las definiciones. Después de todo, el propio Windows utiliza efectivamente dichas técnicas por defecto, para esconder archivos del sistema importantes.
Sin embargo, algunos desarrolladores están claramente de acuerdo tanto con los términos como con los conceptos.
En octubre de 2005, Mark Russinovich informó en su bitácora Sysinternals [12] el descubrimiento de los que parecía ser un Rootkit en su sistema.
Este caso se convirtió en el famoso Rootkit “Sony”, y estableció una gran confusión en el pensamiento popular, entre la administración de derechos digitales (DRM, Digital Rights Management) y las tecnologías tipo Rootkit y de modo oculto.
DRM puede definirse como la tecnología utilizada para controlar el acceso a los datos y los dispositivos físicos con la finalidad de mantener los derechos de los autores.
Sony utilizaba tecnología XCP (Extended Copy Protection, Protección extendida para las copias), creada por First 4 Internet Ltd, para controlar el acceso a ciertos discos compactos de música.
Los discos protegidos con XCP restringían la cantidad de copias de CD o DVD que pueden hacerse, y también controlaban la conversión de formato de codificación (ripping) de la música, para guardarla y escucharla en un reproductor digital.
No era posible reproducir el CD en un ordenador sin instalar la aplicación, que después escondía archivos, procesos, y valores de entradas de registro, modificando el camino de ejecución de las funciones de la API. Para hacer esto, utilizaba una técnica propia de los Rootkits, que modifica la tabla de servicio del sistema (SST, System Service Table).
El derecho de Sony para limitar la distribución ilícita de sus productos no está en duda, y no parece apropiado considerar su método como un Rootkit en el sentido malicioso.
Sin embargo, muchos se sintieron incómodos porque modificaron el sistema de los usuarios finales, sin aclarar que lo estaban haciendo y sin ofrecer tampoco una forma para desinstalar la aplicación.
Esto los puso en riesgo de violar la legislación que prohíbe el acceso o las modificaciones no autorizadas.
Aún peor, su solución no estaba bien programada, y creaba una vulnerabilidad que fue gratamente recibida por la comunidad de delincuentes informáticos.
De hecho, el problema concreto fue que el Rootkit era
utilizado para esconder un troyano, que no tenía nada que
ver con Sony, ni con el programa de protección de copias.
Esto demuestra la sutil diferencia entre un intento malicioso y una vulnerabilidad inadvertida: claramente, Sony y First 4 Internet no tenían la intención, ni esperaba que su esquema DRM abriera un hueco que pudiese ser aprovechado por código malicioso.
Sony tampoco supo manejar la publicidad subsiguiente de modo correcto, y su primer intento por corregir el problema fue inadecuado.
La desinstalación sólo estaba disponible para aquellos que completaban un formulario, y ofrecía una opción simple para desinstalar el programa completo, y no poder utilizar los CD protegidos con XCP, o deshabilitar la función que trabajaba en modo oculto.
De acuerdo a los comentarios, el parche original fue muy promocionado y pobremente probado, y tenía una funcionalidad de “llamar a casa” que no era explícitamente mencionada [13] en el Contrato de licencia de usuario final (EULA, End User License Agreement).
La tecnología XCP no ha impresionado mucho a la comunidad Rootkit, y con esta expresión me refiero a quienes tienen un profundo interés técnico en el (no necesariamente ilícito) uso de tecnologías de ocultación y de tipo Rootkit.
Pero sí enfocó la mente de algunos desarrolladores de código malicioso en la manera de utilizar la vulnerabilidad que había creado originalmente. Sin embargo, también tiene una cierta cantidad de implicaciones para la industria en general.
Seguramente habrá esfuerzos para solucionar el problema
de este Rootkit por medios legales [10]. Este caso
debería
tomar forma en una legislación específica contra
los Rootkits de tipo malicioso, pero también
podría resultar en intentos por prohibir la tecnología
tipo Rootkit incluso para fines legítimos.
Si esto último sucediera, cualquier aplicación que utiliza un método de ocultación para proteger su código y otros datos podría estar en problemas legales. Esto tendría serias implicaciones para la administración de derechos digitales (DRM, Digital Rights Management), que generalmente se basa en cierta medida de ocultación y de acceso restringido.
Incluso si no se toman esas medidas, hay artículos
acerca de la manera en que son vistas por los usuarios potenciales.
Tomemos el ejemplo de la papelera de reciclaje protegida de Symantec
(Symantec Protected Recycle Bin, una papelera de reciclaje segura
que permite recuperar por completo los archivos eliminados que
no podrían rescatarse con la papelera de Windows), una característica
legítima, documentada, y potencialmente útil.
Sin embargo, después de varios titulares sobre el “Rootkit Symantec”,
fue [14] revelada, para minimizar
los riesgos de ser aprovechada por código malicioso.
Esto trae implicaciones para otras aplicaciones de seguridad,
que tienen que esforzarse para jugar en primer lugar (por ejemplo,
los programas de monitorización del comportamiento, y de
bloqueo utilizan procesos que esconden los datos manipulando la
API con técnicas similares a las de los Rootkits.
Los programas de seguridad también usan otras funcionalidades
ocultas, por ejemplo, para detener ingeniería reversa,
desalentar la exposición del usuario a códigos maliciosos,
(virus en cuarentena, etc.), interferir con la configuración
del sistema, y demás.
Metodología para la detección de Rootkits
Con frecuencia, alguien descubre que la detección de aplicaciones maliciosas basada en firmas tiene alguna falla, y que no puede detectar nuevos virus. Afortunadamente, hace años que los antivirus no se basan solamente en la detección de virus conocidos.
Actualmente, se utiliza una amplia variedad de tecnologías suplementarias (análisis heurístico, controladores genéricos, monitorización de comportamiento, y demás), para mejorar la detección de nuevas amenazas y variantes.
Tal como ocurre con los virus de modo oculto, el problema de los Rootkits es del tipo “¿Quién juega primero?” Es difícil para el analizador del antivirus detectar qué elementos están ya instalados y escondiendo la evidencia de una infección.
Sin embargo, los desarrolladores de antivirus tienen muchos años
de experiencia para encontrar maneras de eludir los últimos
mecanismos de suplantación de identidad (Spoofing)
una vez que el código malicioso ha sido estudiado.
En general, los Rootkits pueden ser detectados utilizando el denominado análisis de firmas del sistema de archivos y de la memoria.
La aplicación característica de tecnologías suplementarias, para detectar una posible actividad de Rootkits heurísticamente, depende mucho de la verificación de disparidades entre una imagen confiable (razonablemente precisa) del sistema, y la vista contaminada que presenta el sistema cundo está filtrado mediante la tecnología de Rootkits [15].
Clásicamente, UNIX y los sistemas operativos similares
han sido bien protegidos por lo que podríamos llamar tripwire (programa
que detecta e informa modificaciones en los archivos del sistema)
o un enfoque de reconciliación de objetos [9], a pesar de
que en la rama principal de la industria antivirus, es más
conocido como verificación de integridad.
Esto puede ser útil en un contexto Windows, pero tiende a tener gastos de mantenimiento elevados, pues hay muchas instancias donde las modificaciones en el entorno (archivos ejecutables, entradas de registro, archivos de configuración) son de rutina.
El crecimiento de los Rootkits no residentes refuerza la necesidad de analizar la memoria y de detectar procesos ocultos, más que confiar en los cambios del sistema de archivos como indicadores de infección.
Sería deseable también un enfoque más proactivo
a la detección de variantes. Los productos más inteligentes
son aquellos que pueden discriminar eficazmente entre procesos
ocultos probablemente maliciosos, configuraciones de registro,
y demás de sus contrapartes legítimas, y esto se
logra mediante análisis heurístico [10].
Los antivirus, en años recientes, se han vuelto adeptos a la eliminación heurística de virus [16]. Sin embargo, las dificultades de este tipo de limpieza, cuando no es posible identificar exactamente el virus, permanecen, sobre todo cuando se trata de aplicaciones maliciosas no virales.
Si bien es exagerado afirmar que una infección provocada
por Rootkits, sólo puede terminarse con la reinstalación
completa del sistema, sería más eficiente recuperar
un sistema resguardado, que eliminar el Rootkit, incluso
con aplicaciones maliciosas conocidas, pero profundamente encapsuladas,
particularmente en los casos en los que otros archivos ejecutables
han sido alterados o emparchados.
Para poder hacer eso, sin dañar los datos ni la productividad, es necesario mantener una cuidadosa política de resguardo de la información, de las aplicaciones del sistema y de los usuarios, y tener práctica en reinstalación.
Medidas preventivas
Existen medidas de precaución que tienen sentido en cualquier plataforma. La práctica adecuada de copias de seguridad es una defensa vital contra las amenazas y desastres imprevistos, y debería ser un punto indispensable de toda política de integridad de datos.
Los administradores no deberían registrarse con su cuenta raíz, a menos que deban iniciar una sesión que necesite acceso privilegiado para que el trabajo se cumpla. Es preferible utilizar una cuenta no privilegiada para las tareas de rutina, cuando sea posible.
Todas las plataformas modernas brindan una forma de cambiar de una cuenta a otra, cuando se necesita acceso privilegiado, sin necesidad de reiniciar el sistema.
Podría ser peligroso confiar en las aplicaciones de seguridad de código abierto o voluntarias. Muchos proyectos comunitarios han producido excelentes trabajos, pero a veces es difícil evaluar la competencia (y las buenas intenciones, en algunos casos) de cada una de las personas involucradas en los mismos.
Ciertamente, no es apropiado para la organización de un sector público o comercial, confiar su seguridad a un producto para el cual no existen garantías, o no puede comprobarse la responsabilidad del desarrollador.
Los usuarios particulares, o con oficina en la casa (SOHO, small office home office) seguramente recibirán menos anuncios gubernamentales, pero no querrán ser abandonados a su suerte por las aplicaciones, que prueban, en cierto sentido, ser inadecuadas para sus propósitos.
También es importante la necesidad de realizar pruebas de vulnerabilidad, mantener regularidad en la administración de procesos de actualización, y evitar los trucos de ingeniería social.
Conclusión
No teman. El cielo no está cayendo… ¿O sí?
Se afirma que Blue Pill, la tecnología
experimental de Johanna Rutkowska, permite crear “aplicaciones
maliciosas 100% no detectables, que no se basa en la oscuridad
del concepto” [17],
aprovechando la tecnología que utiliza AMD, SVP / Pacifica,
y que permite ocultar los dispositivos físicos a las aplicaciones,
permitiendo que múltiples sistemas operativos se ejecuten
simultáneamente en un solo ordenador.
A la fecha, no se han ofrecido detalles suficientes con respecto a esta cuestión, para evaluar las aseveraciones que se hacen sobre ella. Parece basarse en un Rootkit no residente, que se ejecuta en una máquina virtual.
El Rootkit SubVirt [18] también usa la tecnología de máquinas virtuales, pero es residente (por ejemplo, sobrevive a un reinicio de sistema). Es un prototipo interesante, pero de ningún modo es indetectable. Será interesante ver en el momento adecuado, si Blue Pill es realmente superior en este aspecto.
A pesar de ello, es seguro asumir que la carrera de las aplicaciones maliciosas, donde la ventaja pasa alternadamente de los buenos a los malos y viceversa, continuará mucho tiempo más. Ni el pánico ni la complacencia son apropiados, pero la vigilancia sí lo es.
Muchos de los actuales autores de código malicioso están utilizando tecnología Rootkit para esconder sus creaciones, pero la popularidad de dichos objetos todavía es baja, y la naturaleza esencial de estas aplicaciones maliciosas tiende a facilitar su detección, a causa de sus acciones.
Los informes de la muerte de los antivirus son demasiado exagerados, sin embargo, el término “antivirus” es un poco engañoso cuando hablamos de las soluciones actuales.
Los días en que las aplicaciones de seguridad sólo detectaban virus, e ignoraban cualquier otra amenaza han pasado hace rato. Ahora, muchos productos son capaces de descubrir un amplio rango de amenazas modernas.
Así como evolucionaron las aplicaciones maliciosas, la industria antivirus no ha permanecido precisamente estancada, y algunos desarrolladores de este tipo de programas han tenido un significativo éxito en la detección de Rootkits.
Sin embargo, no es seguro cerrar los ojos y desentenderse del tema, esperando que todo sea protegido por aplicaciones externas, sin la participación del usuario.
Los antivirus exclusivamente basados en firmas no pueden proteger
contra nuevas amenazas que sean sustancialmente diferentes de las
ya conocidas, por más que sean regularmente actualizados.
Los usuarios finales, deben usar productos que lleven un registro confiable de huellas, utilizando heurística avanzada, y otros métodos genéricos de detección proactiva, y ser exigentes al evaluar las tecnologías antivirus y las capacidades del producto.
Descripciones breves
|
API Hooking
|
En el contexto de los Rootkits, hooking describe el siguiente proceso: Cuando se genera una petición de información del sistema, llama una función API que lleva la petición al núcleo y devuelve la información solicitada a la aplicación que la pidió, a través del mismo camino de ejecución. Hooking describe el proceso de ocultación de datos desviando el camino de ejecución mediante un filtro, que modifica la información entregada.
|
|
AV
|
Antivirus
|
|
Backdoor-Ali
(Ierk o Slanret)
|
Un troyano de puerta trasera, a menudo descripto como un Rootkit.
|
|
Daemon o demon
(Demonio)
|
En UNIX, es un proceso servidor o de sistema, que se ejecuta en segundo plano, al contrario de los procesos ejecutados por el usuario. Por ejemplo, el programa ftpd es un daemon, un servicio del sistema que se ejecuta todo el tiempo; el programa ftp es una aplicación cliente, llamada por un usuario final, quien usó el servicio de sistema ftpd.
|
|
Deepdoor
|
Prototipo de Rootkit creado por Joanne Rutkowska
|
|
Controlador genérico
o
Detección genérica
|
En antivirus, un término adecuado pero no universalmente
utilizado, que describe una firma o definición de virus
que ha sido generalizada, para detectar una familia de virus
o variantes, antes que detectar una única variante simple.
Esto es similar, pero no igual, a la distinción entre identificación exacta e identificación casi exacta, pues esta última está generalmente asociada con la desinfección genérica.
Una discusión más detallada sobre estos conceptos está fuera del alcance de este artículo.
Una buena fuente de información al respecto es The Art of Computer Virus Research and Defense, de Peter Szors.
|
|
Governance
o
Information Governance
|
Plataforma de administración de información, particularmente relacionada con cuestiones de política y acuerdos.
|
|
Grayware, Greyware
|
Una especie de aplicación confusa, que puede incluir publicidad no solicitada, programas espía, bromas informáticas, acceso remoto a programas, etc. Tiende a incluir la presunción de funcionalidad de ocultación.
|
|
Hacker Defender
|
Un Rootkit de aparición frecuente.
|
|
Hacktool
|
Un Rootkit de Windows.
|
|
Heurística
|
Término que se aplica a una variedad de técnicas para detectar código malicioso desconocido, y sus variantes.
|
|
Keylogger
|
Aplicación que monitoriza pulsaciones de teclas, a menudo (pero no necesariamente) con propósitos siniestros (robo de contraseñas, por ejemplo).
|
|
Lrk
|
Un Rootkit de Linux famoso y muy establecido. Descripto en http://staff.washington.edu/dittrich/misc/facs/Irk4.faq
|
|
Oponer
(O Renepo)
|
Aplicación maliciosa para Macintosh, a veces descripta como Rootkit.
|
|
OS X
|
Es el sistema operativo actual de Macintosh, basado en BSD UNIX pero con una interfaz que mantiene el entorno gráfico amigable, así como acceso a líneas de comando de UNIX más convencionales.
|
|
OSXrk
|
Rootkit de Macintosh.
|
|
Shadow Walker
|
Prototipo de Rootkit creado por James Butler y Sherri Sparks, basada parcialmente en el Rootkit FU de Butler.
|
|
Shell
|
El procesador que interpreta los comandos ingresados en una Terminal y los traduce a un conjunto de instrucciones del sistema.
Sin embargo, el término también se utiliza para describir un proceso o cadena de procesos ejecutados por el procesador de comandos.
Un proceso que utiliza los privilegios de la cuenta raíz puede ser llamado “root shell”.
Algunos programas pueden ejecutarse bajo la cuenta raíz, sin extender privilegios de esta cuenta a los usuarios. Este mecanismo puede, donde existen vulnerabilidades como el desborde de datos, ser utilizado por un intruso malicioso o programa para llegar a la raíz.
|
|
Análisis de firmas
|
Estrictamente, significa la búsqueda de la presencia de virus verificando una secuencia de bytes más o menos estática. De hecho, hasta los antivirus más básicos utilizan técnicas más complejas y eficientes actualmente.
El término firmas es a menudo deplorado en la investigación antivirus a causa de su ambigüedad, a pesar de que probablemente sea demasiado tarde para erradicarlo del uso popular y en los medios. Sin embargo, todavía es utilizado por rutina en la detección de intrusos.
|
|
SOHO
|
Small Office, Home Office: Oficina pequeña en el hogar.
|
|
Stealth
|
Término utilizado en seguridad relacionado con las estrategias de ocultación.
|
|
Stealthware
|
Aplicación generalmente maliciosa que utiliza técnicas de ocultación para esconderse a sí misma.
|
|
Trackware
|
Aplicación que registra información del uso del sistema. A veces se utiliza para distinguir los programas que llevan registro con el consentimiento del usuario.
|
|
WeaponX
|
Rootkit de modo núcleo para OS X.
|
Referencias
- University of Minnesota ResNet FAQ: http://www.resnet.umn.edu/html/rn_security.html
- Viruses Revealed. David Harley, Robert Slade, y Urs Gattiker. Ed. Osborne.
- Dr. Solomon´s Virus Encyclopaedia. Dr. Alan Solomon y Dimitri Gryaznov. Ed. S&S Internacional.
- Rootkits are not Malware. Grez Hoglund.
http://www.Rootkit.com/newsread.php?newsid=504; http://www.sysinternals.com/Forum/forum_posts.asp?TID=5798
- “Using a ‘common language’ for computer security incident information”. Por John D. Howard y Pascal Meunier, en Computer Security Handbook (4ª edición). Ed. Seymoour Bosworth & M.E. Kabay (Wiley)
- A Short Course on Computer Viruses, 2ª Edición. Dr. Frederick B.Cohen, Wiley; “Models of Practical Defenses Against Computer Viruses”. Dr. Frederick B. Cohen:
http://all.net/books/integ/vmodels.html
- http://blogs.securiteam.com/index.php/archives/382
- Chey Cobb, Stephen Cobb, M.E. Kabay: “Penetrating Coputer Systems and Networks”. En Computer Security Handbook, 4ª Edición. Ed. Bosworth & Kabay (Wiley)
- “Trojans”. David Harley. En Maximum Security (SAMS).
- Rootkit Threats Explained. Andrew Lee, ESET, 2006.
http://www.eset.com/joomla/index.php?option=com_content&task=view&id=1401&Itemid=5
- Windows Rootkits of 2005, Partes 1-3. James Butler y Serri Sparks.
http://www.securityfocus.com/infocus
- Sony, Rootkits and Digital Rights Management Gone Too Far. Mark Russinovich.
http://www.sysinternals.com/blog/2005/10/sony-Rootkits-and-digital-rights.html ;
More on Sony: Dangerous Decloaking Patch, EULAs and Phoning Home. Mark Russionvich.
http://www.sysinternals.com/blog/2005/11/mor-on-sony-dangerous-decloaking.html
- http://cp.sonybmg.com/xcp/english/updates.html; http://cp.sonybmg.com/xcp/english/form14.html
- http://securityresponse.symantec.com/avcenter/security/Content/2006.01.10.html
- Hide ‘n Seek Revisited – Full Stealth is Back. Kimmo Kasslin, Mika Stahlberg, Samuli Larvala and Antti Tikkanen. En Proceedings of the 15th Virus Bulletin International Conference, 2005.
- The Art of Computer Virus Research and Defense. Peter Szor (Adison-Wesley)
- Subverting Vista Kernel for Fun and Profit. Joanna Rutkowska.
http://theinvisiblethings.blogspot.com/.
- Subvirt: Implementing malware with virtual machines. Samuel T. King, Peter M. Chen, Yi-Min Wang, Chadverbowski, Helen J. Wang, Jacob R. Lorch.
http://www.eecs.umich.edu/virtual/papers/king06.pdf
Los autores
David Harley
David Harley ha investigado y escrito sobre código malicioso
y otros temas de seguridad desde fines de los ’80.
A partir del año 2001, trabajó en el Servicio Nacional
de Salud del Reino Unido, como Gerente de infraestructura de seguridad
nacional.
Allí se especializó en la administración de aplicaciones
maliciosas y todas las variantes de abuso de correo electrónico,
además de dirigir el Threat Assessment Centre (Centro de Evaluación
de Amenazas).
Desde abril de 2006 ha trabajado como autor y consultor independiente.
Fue coautor de Virus Revealed, y colaboró en capítulos
de varios libros de seguridad y educación para grandes editoriales.
También ha redactado una gran cantidad de artículos y discursos
para conferencias.
Andrew Lee
Andrew Lee, posee certificación CISSP (Certified Information
Systems Security Professional, Profesional en seguridad de sistemas
certificado), y es Director técnico de investigación
en ESET LLC.
Fue miembro fundador de la Red de intercambio de información
antivirus (AVIEN, Anti-Virus Information Exchange
Network), y su organización hermana
AVIEWS (una comunidad virtual en línea para compartir esfuerzos
y reducir el impacto de la difusión de código malicioso).
También es miembro de la Asociación de Investigadores
de Antivirus de Asia (AVAR, Association of anti
Virus Asia Researchers),
y periodista de la organización WildList. Previamente trabajó en
el área de mayor exigencia en defensa contra programas maliciosos,
como administrador de seguridad en una gran organización gubernamental.
Andrew Lee es autor de varios artículos acerca de aplicaciones
maliciosas, y es un orador frecuente en conferencias y eventos,
incluyendo AVAR, Virus Bulletin y EICAR (European
Institute for Computer Antivirus Research, Instituto Europeo para la Investigación
de Antivirus Informáticos).
|