Un rootkit es una colección de software informático , normalmente malicioso, diseñado para permitir el acceso a un ordenador o a un área de su software que de otro modo no está permitido (por ejemplo, a un usuario no autorizado) y a menudo enmascara su existencia o la existencia de otro software. [1] El término rootkit es un compuesto de " root " (el nombre tradicional de la cuenta privilegiada en los sistemas operativos tipo Unix ) y la palabra "kit" (que se refiere a los componentes de software que implementan la herramienta). [2] El término "rootkit" tiene connotaciones negativas a través de su asociación con el malware . [1]
La instalación de un rootkit puede ser automática, o un atacante puede instalarlo después de haber obtenido acceso root o de administrador. [3] La obtención de este acceso es el resultado de un ataque directo a un sistema, es decir, explotando una vulnerabilidad (como la escalada de privilegios ) o una contraseña (obtenida mediante cracking o tácticas de ingeniería social como el " phishing "). Una vez instalado, se hace posible ocultar la intrusión, así como mantener el acceso privilegiado. El control total sobre un sistema significa que el software existente puede modificarse, incluido el software que de otro modo podría usarse para detectarlo o eludirlo.
La detección de rootkits es difícil porque pueden ser capaces de subvertir el software que se pretende que los detecte. Los métodos de detección incluyen el uso de un sistema operativo alternativo y de confianza , métodos basados en el comportamiento, escaneo de firmas, escaneo de diferencias y análisis de volcado de memoria . La eliminación puede ser complicada o prácticamente imposible, especialmente en los casos en los que el rootkit reside en el núcleo ; la reinstalación del sistema operativo puede ser la única solución disponible para el problema. Cuando se trata de rootkits de firmware , la eliminación puede requerir el reemplazo de hardware o equipo especializado.
El término rootkit , rkit o root kit originalmente se refería a un conjunto de herramientas administrativas modificadas maliciosamente para un sistema operativo tipo Unix que otorgaba acceso " root ". [4] Si un intruso pudiera reemplazar las herramientas administrativas estándar en un sistema con un rootkit, el intruso podría obtener acceso root sobre el sistema mientras que simultáneamente ocultaba estas actividades del administrador legítimo del sistema . Estos rootkits de primera generación eran triviales de detectar mediante el uso de herramientas como Tripwire que no habían sido comprometidas para acceder a la misma información. [5] [6] Lane Davis y Steven Dake escribieron el rootkit más antiguo conocido en 1990 para el sistema operativo UNIX SunOS de Sun Microsystems . [7] En la conferencia que dio al recibir el premio Turing en 1983, Ken Thompson de Bell Labs , uno de los creadores de Unix , teorizó sobre subvertir el compilador de C en una distribución de Unix y discutió el exploit. El compilador modificado detectaría los intentos de compilar el comando Unix y generaría un código alterado que aceptaría no sólo la contraseña correcta del usuario, sino también una contraseña adicional de " puerta trasera " conocida por el atacante. Además, el compilador detectaría los intentos de compilar una nueva versión del compilador e insertaría los mismos exploits en el nuevo compilador. Una revisión del código fuente del comando o del compilador actualizado no revelaría ningún código malicioso. [8] Este exploit era equivalente a un rootkit.login
login
El primer virus informático documentado que atacaba a los ordenadores personales , descubierto en 1986, utilizaba técnicas de ocultación para ocultarse: el virus Brain interceptaba los intentos de leer el sector de arranque y los redirigía a otra parte del disco, donde se guardaba una copia del sector de arranque original. [1] Con el tiempo, los métodos de ocultación de los virus DOS se volvieron más sofisticados. Las técnicas avanzadas incluían el enganche de llamadas de interrupción de BIOS de bajo nivel INT 13H del disco para ocultar modificaciones no autorizadas a los archivos. [1]
El primer rootkit malicioso para el sistema operativo Windows NT apareció en 1999: un troyano llamado NTRootkit creado por Greg Hoglund . [9] Fue seguido por HackerDefender en 2003. [1] El primer rootkit dirigido a Mac OS X apareció en 2009, [10] mientras que el gusano Stuxnet fue el primero en apuntar a los controladores lógicos programables (PLC). [11]
En 2005, Sony BMG publicó CD con protección de copia y software de gestión de derechos digitales llamado Extended Copy Protection , creado por la empresa de software First 4 Internet. El software incluía un reproductor de música pero instalaba silenciosamente un rootkit que limitaba la capacidad del usuario para acceder al CD. [12] El ingeniero de software Mark Russinovich , que creó la herramienta de detección de rootkits RootkitRevealer , descubrió el rootkit en una de sus computadoras. [1] El escándalo resultante aumentó la conciencia pública sobre los rootkits. [13] Para ocultarse, el rootkit ocultaba al usuario cualquier archivo que comenzara con "$sys$". Poco después del informe de Russinovich, apareció un malware que se aprovechó del rootkit existente en los sistemas afectados. [1] Un analista de la BBC lo llamó una " pesadilla de relaciones públicas ". [14] Sony BMG lanzó parches para desinstalar el rootkit, pero expuso a los usuarios a una vulnerabilidad aún más grave. [15] La empresa finalmente retiró los CD. En los Estados Unidos, se presentó una demanda colectiva contra Sony BMG. [16]
El caso de escuchas telefónicas griegas de 2004-05 , también conocido como Watergate griego, [17] implicó la intervención telefónica ilegal de más de 100 teléfonos móviles de la red de Vodafone Grecia , pertenecientes en su mayoría a miembros del gobierno griego y funcionarios públicos de alto rango. Las escuchas comenzaron en algún momento cerca de principios de agosto de 2004 y fueron eliminadas en marzo de 2005 sin descubrir la identidad de los perpetradores. Los intrusos instalaron un rootkit dirigido a la central telefónica AXE de Ericsson . Según IEEE Spectrum , esta fue "la primera vez que se ha observado un rootkit en un sistema de propósito especial, en este caso una central telefónica de Ericsson". [18] El rootkit fue diseñado para parchear la memoria de la central mientras estaba en funcionamiento, habilitar las escuchas telefónicas mientras se deshabilitan los registros de auditoría, parchear los comandos que enumeran los procesos activos y los bloques de datos activos, y modificar el comando de verificación de la suma de comprobación del bloque de datos . Una "puerta trasera" permitía a un operador con estatus de administrador de sistemas desactivar el registro de transacciones, las alarmas y los comandos de acceso de la central de cambio relacionados con la capacidad de vigilancia. [18] El rootkit fue descubierto después de que los intrusos instalaran una actualización defectuosa, que provocó que los mensajes de texto SMS no se entregaran, lo que llevó a que se generara un informe de error automático. Se llamó a los ingenieros de Ericsson para que investigaran la falla y descubrieron los bloques de datos ocultos que contenían la lista de números de teléfono que se estaban monitoreando, junto con el rootkit y el software de monitoreo ilícito.
Los rootkits modernos no elevan el acceso, [4] sino que se utilizan para hacer que otra carga útil de software sea indetectable al agregar capacidades de sigilo. [9] La mayoría de los rootkits se clasifican como malware , porque las cargas útiles con las que están empaquetados son maliciosas. Por ejemplo, una carga útil podría robar de forma encubierta contraseñas de usuario , información de tarjetas de crédito , recursos informáticos o realizar otras actividades no autorizadas. Una pequeña cantidad de rootkits pueden ser considerados aplicaciones de utilidad por sus usuarios: por ejemplo, un rootkit podría ocultar un controlador de emulación de CD-ROM , lo que permite a los usuarios de videojuegos burlar las medidas antipiratería que requieren la inserción del medio de instalación original en una unidad óptica física para verificar que el software se compró legítimamente.
Los rootkits y sus cargas útiles tienen muchos usos:
En algunos casos, los rootkits proporcionan la funcionalidad deseada y pueden instalarse intencionalmente en nombre del usuario de la computadora:
Existen al menos cinco tipos de rootkit, desde los que se encuentran en el nivel más bajo del firmware (con los privilegios más altos) hasta las variantes basadas en el usuario con menos privilegios que operan en el Anillo 3. Pueden darse combinaciones híbridas de estos que abarquen, por ejemplo, el modo de usuario y el modo kernel. [26]
Los rootkits en modo usuario se ejecutan en Ring 3 , junto con otras aplicaciones como usuario, en lugar de procesos de sistema de bajo nivel. [27] Tienen varios vectores de instalación posibles para interceptar y modificar el comportamiento estándar de las interfaces de programación de aplicaciones (API). Algunos inyectan una biblioteca vinculada dinámicamente (como un archivo .DLL en Windows o un archivo .dylib en Mac OS X ) en otros procesos y, por lo tanto, pueden ejecutarse dentro de cualquier proceso de destino para falsificarlo; otros con privilegios suficientes simplemente sobrescriben la memoria de una aplicación de destino. Los mecanismos de inyección incluyen: [27]
...ya que todas las aplicaciones en modo usuario se ejecutan en su propio espacio de memoria, el rootkit necesita realizar esta actualización en el espacio de memoria de cada aplicación que se esté ejecutando. Además, el rootkit necesita monitorear el sistema para detectar nuevas aplicaciones que se ejecuten y aplicar actualizaciones al espacio de memoria de esos programas antes de que se ejecuten por completo.
— Descripción general de rootkit de Windows, Symantec [4]
Los rootkits en modo kernel se ejecutan con los privilegios más altos del sistema operativo ( Ring 0 ) agregando código o reemplazando partes del sistema operativo central, incluido el kernel y los controladores de dispositivos asociados . [ cita requerida ] La mayoría de los sistemas operativos admiten controladores de dispositivos en modo kernel, que se ejecutan con los mismos privilegios que el propio sistema operativo. Como tal, muchos rootkits en modo kernel se desarrollan como controladores de dispositivos o módulos cargables, como módulos de kernel cargables en Linux o controladores de dispositivos en Microsoft Windows . Esta clase de rootkit tiene acceso de seguridad sin restricciones, pero es más difícil de escribir. [29] La complejidad hace que los errores sean comunes, y cualquier error en el código que opera a nivel de kernel puede afectar seriamente la estabilidad del sistema, lo que lleva al descubrimiento del rootkit. [29] Uno de los primeros rootkits de kernel ampliamente conocidos fue desarrollado para Windows NT 4.0 y publicado en la revista Phrack en 1999 por Greg Hoglund . [30] [31] Los rootkits del kernel pueden ser especialmente difíciles de detectar y eliminar porque operan en el mismo nivel de seguridad que el propio sistema operativo y, por lo tanto, pueden interceptar o subvertir las operaciones más confiables del sistema operativo. Cualquier software, como el software antivirus , que se ejecute en el sistema comprometido es igualmente vulnerable. [32] En esta situación, no se puede confiar en ninguna parte del sistema.
Un rootkit puede modificar las estructuras de datos en el núcleo de Windows utilizando un método conocido como manipulación directa de objetos del núcleo (DKOM). [33] Este método se puede utilizar para ocultar procesos. Un rootkit en modo núcleo también puede enganchar la Tabla de descriptores de servicios del sistema (SSDT), o modificar las puertas entre el modo de usuario y el modo núcleo, para ocultarse. [4] De manera similar, para el sistema operativo Linux , un rootkit puede modificar la tabla de llamadas del sistema para subvertir la funcionalidad del núcleo. [34] [35] Es común que un rootkit cree un sistema de archivos oculto y cifrado en el que puede ocultar otro malware o copias originales de los archivos que ha infectado. [36] Los sistemas operativos están evolucionando para contrarrestar la amenaza de los rootkits en modo núcleo. Por ejemplo, las ediciones de 64 bits de Microsoft Windows ahora implementan la firma obligatoria de todos los controladores a nivel de núcleo para dificultar la ejecución de código no confiable con los privilegios más altos en un sistema. [37]
Una variante de rootkit en modo kernel llamada bootkit puede infectar código de inicio como el Master Boot Record (MBR), Volume Boot Record (VBR) o sector de arranque , y de esta manera puede usarse para atacar sistemas de cifrado de disco completo . [38] Un ejemplo de un ataque de este tipo al cifrado de disco es el " ataque de la mucama malvada ", en el que un atacante instala un bootkit en una computadora desatendida. El escenario imaginado es una mucama que se cuela en la habitación del hotel donde las víctimas dejaron su hardware. [39] El bootkit reemplaza el cargador de arranque legítimo con uno bajo su control. Normalmente, el cargador de malware persiste durante la transición al modo protegido cuando el kernel se ha cargado y, por lo tanto, puede subvertir el kernel. [40] [41] [42] Por ejemplo, el "Stoned Bootkit" subvierte el sistema utilizando un cargador de arranque comprometido para interceptar claves de cifrado y contraseñas. [43] [ ¿ fuente autopublicada? ] En 2010, el rootkit Alureon ha subvertido con éxito el requisito de firma de controlador de modo kernel de 64 bits en Windows 7 , modificando el registro de arranque maestro . [44] Aunque no es malware en el sentido de hacer algo que el usuario no quiere, cierto software "Vista Loader" o "Windows Loader" funciona de manera similar inyectando una tabla ACPI SLIC (Código interno con licencia del sistema) en la versión en caché de RAM del BIOS durante el arranque , para derrotar el proceso de activación de Windows Vista y Windows 7. [ cita requerida ] Este vector de ataque se volvió inútil en las versiones (no servidor) de Windows 8 , que utilizan una clave única y específica de la máquina para cada sistema, que solo puede ser utilizada por esa máquina. [45] Muchas compañías de antivirus proporcionan utilidades y programas gratuitos para eliminar bootkits.
Los rootkits se han creado como hipervisores de tipo II en el ámbito académico como pruebas de concepto. Al explotar las características de virtualización de hardware como Intel VT o AMD-V , este tipo de rootkit se ejecuta en Ring -1 y aloja el sistema operativo de destino como una máquina virtual , lo que permite al rootkit interceptar las llamadas de hardware realizadas por el sistema operativo original. [6] A diferencia de los hipervisores normales, no tienen que cargarse antes que el sistema operativo, sino que pueden cargarse en un sistema operativo antes de promoverlo a una máquina virtual. [6] Un rootkit de hipervisor no tiene que realizar ninguna modificación en el núcleo del objetivo para subvertirlo; sin embargo, eso no significa que no pueda ser detectado por el sistema operativo invitado. Por ejemplo, las diferencias de tiempo pueden detectarse en las instrucciones de la CPU . [6] El rootkit de laboratorio "SubVirt", desarrollado conjuntamente por investigadores de Microsoft y la Universidad de Michigan , es un ejemplo académico de un rootkit basado en máquina virtual (VMBR), [46] mientras que el software Blue Pill es otro. En 2009, investigadores de Microsoft y la Universidad Estatal de Carolina del Norte demostraron un anti-rootkit de capa de hipervisor llamado Hooksafe , que proporciona protección genérica contra rootkits de modo kernel. [47] Windows 10 introdujo una nueva característica llamada "Device Guard", que aprovecha la virtualización para proporcionar protección externa independiente de un sistema operativo contra malware de tipo rootkit. [48]
Un rootkit de firmware utiliza el firmware del dispositivo o la plataforma para crear una imagen de malware persistente en el hardware, como un enrutador , una tarjeta de red , [49] un disco duro o el BIOS del sistema . [27] [50] El rootkit se esconde en el firmware, porque el firmware no suele inspeccionarse para comprobar la integridad del código . John Heasman demostró la viabilidad de los rootkits de firmware tanto en las rutinas de firmware ACPI [51] como en la ROM de una tarjeta de expansión PCI . [52] En octubre de 2008, los delincuentes manipularon las máquinas de lectura de tarjetas de crédito europeas antes de que se instalaran. Los dispositivos interceptaron y transmitieron los datos de las tarjetas de crédito a través de una red de telefonía móvil. [53] En marzo de 2009, los investigadores Alfredo Ortega y Anibal Sacco publicaron detalles de un rootkit de Windows a nivel de BIOS que pudo sobrevivir al reemplazo del disco y la reinstalación del sistema operativo. [54] [55] [56] Unos meses después se enteraron de que algunas computadoras portátiles se venden con un rootkit legítimo, conocido como Absolute CompuTrace o Absolute LoJack for Laptops , preinstalado en muchas imágenes BIOS. Se trata de un sistema de tecnología antirrobo que los investigadores demostraron que puede utilizarse con fines maliciosos. [24]
La tecnología Intel Active Management Technology , parte de Intel vPro , implementa la administración fuera de banda , lo que brinda a los administradores administración remota , administración remota y control remoto de las PC sin la participación del procesador host o BIOS, incluso cuando el sistema está apagado. La administración remota incluye encendido y apagado remotos, reinicio remoto, arranque redirigido, redirección de consola, acceso previo al arranque a las configuraciones de BIOS, filtrado programable para tráfico de red entrante y saliente, verificación de presencia de agente, alertas basadas en políticas fuera de banda, acceso a información del sistema, como información de activos de hardware, registros de eventos persistentes y otra información que se almacena en memoria dedicada (no en el disco duro) donde es accesible incluso si el sistema operativo está inactivo o la PC está apagada. Algunas de estas funciones requieren el nivel más profundo de rootkit, una segunda computadora espía no extraíble construida alrededor de la computadora principal. Sandy Bridge y los chipsets futuros tienen "la capacidad de matar y restaurar remotamente una PC perdida o robada a través de 3G". Los rootkits de hardware integrados en el chipset pueden ayudar a recuperar computadoras robadas, eliminar datos o inutilizarlas, pero también presentan problemas de privacidad y seguridad debido a espionaje indetectable y redirección por parte de la administración o piratas informáticos que podrían obtener el control.
Los rootkits emplean una variedad de técnicas para obtener el control de un sistema; el tipo de rootkit influye en la elección del vector de ataque. La técnica más común aprovecha las vulnerabilidades de seguridad para lograr una escalada subrepticia de privilegios . Otro enfoque es utilizar un caballo de Troya , engañando a un usuario de computadora para que confíe en el programa de instalación del rootkit como benigno; en este caso, la ingeniería social convence a un usuario de que el rootkit es beneficioso. [29] La tarea de instalación se hace más fácil si no se aplica el principio del mínimo privilegio , ya que el rootkit entonces no tiene que solicitar explícitamente privilegios elevados (de nivel de administrador). Otras clases de rootkits solo pueden ser instaladas por alguien con acceso físico al sistema de destino. Algunos rootkits también pueden ser instalados intencionalmente por el propietario del sistema o alguien autorizado por el propietario, por ejemplo, con el propósito de monitorear a los empleados , lo que hace que tales técnicas subversivas sean innecesarias. [57] Algunas instalaciones de rootkit maliciosos están impulsadas comercialmente, con un método de compensación de pago por instalación (PPI) típico para la distribución. [58] [59]
Una vez instalado, un rootkit toma medidas activas para ocultar su presencia dentro del sistema anfitrión a través de la subversión o evasión de las herramientas de seguridad estándar del sistema operativo y la interfaz de programación de aplicaciones (API) utilizadas para diagnóstico, escaneo y monitoreo. [60] Los rootkits logran esto modificando el comportamiento de las partes centrales de un sistema operativo mediante la carga de código en otros procesos, la instalación o modificación de controladores o módulos del núcleo . Las técnicas de ofuscación incluyen ocultar procesos en ejecución de los mecanismos de monitoreo del sistema y ocultar archivos del sistema y otros datos de configuración. [61] No es raro que un rootkit deshabilite la capacidad de registro de eventos de un sistema operativo, en un intento de ocultar evidencia de un ataque. Los rootkits pueden, en teoría, subvertir cualquier actividad del sistema operativo. [62] El "rootkit perfecto" puede considerarse similar a un " crimen perfecto ": uno del que nadie se da cuenta de que ha tenido lugar. Además de instalarse comúnmente en el anillo 0 (modo kernel), donde tienen acceso completo al sistema, los rootkits también adoptan una serie de medidas para garantizar su supervivencia frente a la detección y la "limpieza" por parte de software antivirus. Entre ellas se incluyen el polimorfismo (cambios para que su "firma" sea difícil de detectar), técnicas de ocultación, regeneración, desactivación o apagado de software antimalware [63] y no instalarse en máquinas virtuales , donde puede ser más fácil para los investigadores descubrirlos y analizarlos.
El problema fundamental con la detección de rootkits es que si el sistema operativo ha sido subvertido, particularmente por un rootkit a nivel de kernel, no se puede confiar en que encuentre modificaciones no autorizadas a sí mismo o a sus componentes. [62] No se puede confiar en que acciones como solicitar una lista de procesos en ejecución, o una lista de archivos en un directorio, se comporten como se espera. En otras palabras, los detectores de rootkits que funcionan mientras se ejecutan en sistemas infectados solo son efectivos contra rootkits que tienen algún defecto en su camuflaje, o que se ejecutan con privilegios de modo de usuario inferiores a los del software de detección en el kernel. [29] Al igual que con los virus informáticos , la detección y eliminación de rootkits es una lucha continua entre ambos lados de este conflicto. [62] La detección puede adoptar varios enfoques diferentes, incluida la búsqueda de "firmas" de virus (por ejemplo, software antivirus), la comprobación de la integridad (por ejemplo, firmas digitales ), la detección basada en diferencias (comparación de los resultados esperados frente a los reales) y la detección del comportamiento (por ejemplo, la supervisión del uso de la CPU o el tráfico de la red).
En el caso de los rootkits en modo kernel, la detección es considerablemente más compleja y requiere un escrutinio cuidadoso de la tabla de llamadas del sistema para buscar funciones enganchadas donde el malware puede estar subvirtiendo el comportamiento del sistema, [64] así como un escaneo forense de la memoria en busca de patrones que indiquen procesos ocultos. Las ofertas de detección de rootkits de Unix incluyen Zeppoo, [65] chkrootkit , rkhunter y OSSEC . Para Windows, las herramientas de detección incluyen Microsoft Sysinternals RootkitRevealer , [66] Avast Antivirus , [67] Sophos Anti-Rootkit, [68] F-Secure , [69] Radix, [70] GMER , [71] y WindowsSCOPE . Cualquier detector de rootkit que resulte efectivo en última instancia contribuye a su propia ineficacia, ya que los autores de malware adaptan y prueban su código para escapar de la detección por herramientas bien utilizadas. [Notas 1] La detección mediante el examen del almacenamiento mientras el sistema operativo sospechoso no está operativo puede pasar por alto rootkits no reconocidos por el software de verificación, ya que el rootkit no está activo y se suprime el comportamiento sospechoso; el software antimalware convencional que se ejecuta con el rootkit operativo puede fallar si el rootkit se oculta de manera efectiva.
El mejor y más confiable método para la detección de rootkits a nivel de sistema operativo es apagar la computadora sospechosa de estar infectada y luego verificar su almacenamiento iniciando desde un medio confiable alternativo (por ejemplo, un CD-ROM de "rescate" o una unidad flash USB ). [72] La técnica es efectiva porque un rootkit no puede ocultar activamente su presencia si no se está ejecutando.
El enfoque basado en el comportamiento para detectar rootkits intenta inferir la presencia de un rootkit buscando un comportamiento similar al de un rootkit. Por ejemplo, al crear un perfil de un sistema, las diferencias en el tiempo y la frecuencia de las llamadas a la API o en la utilización general de la CPU se pueden atribuir a un rootkit. El método es complejo y se ve obstaculizado por una alta incidencia de falsos positivos . Los rootkits defectuosos a veces pueden introducir cambios muy obvios en un sistema: el rootkit Alureon hizo que los sistemas Windows se bloquearan después de que una actualización de seguridad expusiera un fallo de diseño en su código. [73] [74] Los registros de un analizador de paquetes , un cortafuegos o un sistema de prevención de intrusiones pueden presentar evidencia del comportamiento de un rootkit en un entorno en red. [26]
Los antivirus rara vez detectan todos los virus en las pruebas públicas (dependiendo de lo que se use y en qué medida), aunque los proveedores de software de seguridad incorporan la detección de rootkits en sus productos. Si un rootkit intenta ocultarse durante un análisis antivirus, un detector oculto puede detectarlo; si el rootkit intenta descargarse temporalmente del sistema, la detección de firmas (o "huellas digitales") aún puede encontrarlo. [75] Este enfoque combinado obliga a los atacantes a implementar mecanismos de contraataque, o rutinas "retro", que intentan terminar con los programas antivirus. Los métodos de detección basados en firmas pueden ser efectivos contra rootkits bien publicados, pero no tanto contra rootkits personalizados y especialmente diseñados. [62]
Otro método que puede detectar rootkits compara datos en bruto "confiables" con contenido "contaminado" devuelto por una API . Por ejemplo, los binarios presentes en el disco se pueden comparar con sus copias dentro de la memoria operativa (en algunos sistemas operativos, la imagen en memoria debe ser idéntica a la imagen en disco), o los resultados devueltos por el sistema de archivos o las API del Registro de Windows se pueden comparar con estructuras en bruto en los discos físicos subyacentes [62] [76] —sin embargo, en el caso del primero, se pueden introducir algunas diferencias válidas mediante mecanismos del sistema operativo como la reubicación de memoria o el shimming . Un rootkit puede detectar la presencia de un escáner basado en diferencias o una máquina virtual (este último se usa comúnmente para realizar análisis forenses) y ajustar su comportamiento para que no se puedan detectar diferencias. La detección basada en diferencias fue utilizada por la herramienta RootkitRevealer de Russinovich para encontrar el rootkit DRM de Sony. [1]
La firma de código utiliza una infraestructura de clave pública para comprobar si un archivo ha sido modificado desde que fue firmado digitalmente por su editor. Alternativamente, un propietario o administrador del sistema puede utilizar una función hash criptográfica para calcular una "huella digital" en el momento de la instalación que puede ayudar a detectar cambios no autorizados posteriores a las bibliotecas de código en disco. [77] Sin embargo, los esquemas poco sofisticados comprueban solo si el código ha sido modificado desde el momento de la instalación; la subversión anterior a ese momento no es detectable. La huella digital debe restablecerse cada vez que se realizan cambios en el sistema: por ejemplo, después de instalar actualizaciones de seguridad o un service pack . La función hash crea un resumen del mensaje , un código relativamente corto calculado a partir de cada bit del archivo utilizando un algoritmo que crea grandes cambios en el resumen del mensaje con cambios aún más pequeños en el archivo original. Al recalcular y comparar el resumen del mensaje de los archivos instalados a intervalos regulares con una lista confiable de resúmenes de mensajes, se pueden detectar y monitorear los cambios en el sistema, siempre que la línea base original se haya creado antes de que se agregara el malware.
Los rootkits más sofisticados pueden subvertir el proceso de verificación presentando una copia no modificada del archivo para su inspección, o haciendo modificaciones de código solo en la memoria, registros de reconfiguración, que luego se comparan con una lista blanca de valores esperados. [78] El código que realiza operaciones de hash, comparación o extensión también debe estar protegido; en este contexto, la noción de una raíz de confianza inmutable sostiene que el primer código que mide las propiedades de seguridad de un sistema debe ser confiable para garantizar que un rootkit o bootkit no comprometa el sistema en su nivel más fundamental. [79]
Forzar un volcado completo de la memoria virtual capturará un rootkit activo (o un volcado de kernel en el caso de un rootkit en modo kernel), lo que permitirá que se realice un análisis forense fuera de línea con un depurador contra el archivo de volcado resultante , sin que el rootkit pueda tomar ninguna medida para ocultarse. Esta técnica es altamente especializada y puede requerir acceso a código fuente no público o símbolos de depuración . Los volcados de memoria iniciados por el sistema operativo no siempre se pueden usar para detectar un rootkit basado en hipervisor, que es capaz de interceptar y subvertir los intentos de nivel más bajo de leer la memoria [6] —un dispositivo de hardware, como uno que implemente una interrupción no enmascarable , puede ser necesario para volcar la memoria en este escenario. [80] [81] Las máquinas virtuales también facilitan el análisis de la memoria de una máquina comprometida desde el hipervisor subyacente, por lo que algunos rootkits evitarán infectar máquinas virtuales por este motivo.
La eliminación manual de un rootkit suele ser extremadamente difícil para un usuario típico de computadora, [27] pero varios proveedores de software de seguridad ofrecen herramientas para detectar y eliminar automáticamente algunos rootkits, generalmente como parte de una suite antivirus . A partir de 2005 , la herramienta mensual de eliminación de software malintencionado de Windows[actualizar] de Microsoft puede detectar y eliminar algunas clases de rootkits. [82] [83] Además, Windows Defender Offline puede eliminar rootkits, ya que se ejecuta desde un entorno confiable antes de que se inicie el sistema operativo. [84] Algunos escáneres antivirus pueden eludir las API del sistema de archivos , que son vulnerables a la manipulación por parte de un rootkit. En su lugar, acceden directamente a las estructuras del sistema de archivos sin procesar y usan esta información para validar los resultados de las API del sistema para identificar cualquier diferencia que pueda ser causada por un rootkit. [Notas 2] [85] [86] [87] [88] Hay expertos que creen que la única forma confiable de eliminarlos es reinstalar el sistema operativo desde un medio confiable. [89] [90] Esto se debe a que las herramientas de eliminación de antivirus y malware que se ejecutan en un sistema no confiable pueden ser ineficaces contra rootkits en modo kernel bien escritos. Arrancar un sistema operativo alternativo desde un medio confiable puede permitir que se monte un volumen de sistema infectado y se limpie de forma potencialmente segura y se copien datos críticos o, alternativamente, se realice un examen forense. [26] Se pueden usar sistemas operativos livianos como Windows PE , Windows Recovery Console , Windows Recovery Environment , BartPE o Live Distros para este propósito, lo que permite "limpiar" el sistema. Incluso si se conoce el tipo y la naturaleza de un rootkit, la reparación manual puede ser poco práctica, mientras que reinstalar el sistema operativo y las aplicaciones es más seguro, más simple y más rápido. [89]
El endurecimiento del sistema representa una de las primeras capas de defensa contra un rootkit, para evitar que pueda instalarse. [91] La aplicación de parches de seguridad , la implementación del principio del mínimo privilegio , la reducción de la superficie de ataque y la instalación de software antivirus son algunas de las mejores prácticas de seguridad estándar que son efectivas contra todas las clases de malware. [92] Se han diseñado nuevas especificaciones de arranque seguro como UEFI para abordar la amenaza de los bootkits, pero incluso estas son vulnerables si no se utilizan las características de seguridad que ofrecen. [50] Para los sistemas de servidor, la certificación de servidor remoto mediante tecnologías como Intel Trusted Execution Technology (TXT) proporciona una forma de verificar que los servidores permanezcan en un estado bueno conocido. Por ejemplo, el cifrado de datos en reposo de Microsoft Bitlocker verifica que los servidores estén en un "buen estado" conocido al iniciarse. PrivateCore vCage es una oferta de software que protege los datos en uso (memoria) para evitar bootkits y rootkits verificando que los servidores estén en un estado "bueno" conocido al iniciarse. La implementación de PrivateCore funciona en conjunto con Intel TXT y bloquea las interfaces del sistema del servidor para evitar posibles bootkits y rootkits.
Otro mecanismo de defensa, denominado Virtual Wall (VTW), funciona como un hipervisor ligero con capacidades de detección de rootkits y rastreo de eventos. En funcionamiento normal (modo invitado), Linux se ejecuta y, cuando un LKM cargado viola las políticas de seguridad, el sistema cambia al modo host. El VTW en modo host detecta, rastrea y clasifica los eventos de rootkits basándose en el control de acceso a la memoria y los mecanismos de inyección de eventos. Los resultados experimentales demuestran la eficacia del VTW en la detección y defensa oportunas contra rootkits de kernel con una sobrecarga mínima de CPU (menos del 2%). El VTW se compara favorablemente con otros esquemas de defensa, destacando su simplicidad en la implementación y las posibles ganancias de rendimiento en servidores Linux. [93]