Rootkit

Unrootkitoencubridor​​​ es un conjunto desoftwareque permite al usuario un acceso de "privilegio" a un ordenador, pero mantiene su presencia inicialmente oculta al control de los administradores al descomponer el funcionamiento normal delsistema operativo. Este término proviene de unaconcatenaciónde la palabra inglesaroot, que significa 'raíz' (nombre tradicional de la cuenta privilegiada en los sistemas operativosUnix) y de la palabra inglesakit, que significa 'conjunto de herramientas' (en referencia a los componentes de software que implementan este programa).
El términorootkittiene connotaciones peyorativas ya que se lo asocia aprogramas maliciososal esconderse a sí mismo y a otrosprogramas,procesos,archivos,directorios, claves deregistroy puertos. Esto permite al intruso mantener el acceso a una amplia variedad de sistemas operativos como pueden serGNU/Linux,SolarisoMicrosoft Windowspara remotamente enviar acciones o extraerinformaciónsensible.
Usualmente, unatacanteinstala un encubridor en unacomputadoradespués de primero haber obtenido derechos de escritura en cualquier parte de la jerarquía delsistema de ficheros, pudiendo ser por haberse aprovechado de unavulnerabilidadconocida o por haber obtenido unacontraseña(ya sea pordescifrado de contraseñaso poringeniería social). Una vez que elrootkitha sido instalado, permite que el atacante disfrace la siguiente intrusión y mantenga el acceso privilegiado a la computadora por medio de rodeos a los mecanismos normales deautenticaciónyautorización. Pese a que losrootkitspueden servir con muchos fines, han ganado notoriedad fundamentalmente comomalware, escondiendo programas que se apropian de los recursos de las computadoras o que roban contraseñas sin el conocimiento de los administradores y de los usuarios de los sistemas afectados. Los encubridores pueden estar dirigidos alfirmware, alhipervisor, alnúcleo, o, más comúnmente, a los programas del usuario.
La detección del encubridor es complicada pues es capaz de corromper al programa que debería detectarlo. Los métodos de detección incluyen utilizar un sistema operativo alternativo confiable; métodos de baseconductual; controles de firma, controles de diferencias y análisis devolcado de memoria. La eliminación del encubridor puede ser muy difícil o prácticamente imposible, especialmente en los casos en que elrootkitreside en el núcleo; siendo a veces la reinstalación del sistema operativo el único método posible que hay para solucionar el problema.
Unrootkitse usa habitualmente para esconder algunas aplicaciones que podrían actuar en el sistema atacado. Suelen incluirpuertas traseraspara ayudar al intruso a acceder fácilmente al sistema una vez que se ha conseguido entrar por primera vez. Por ejemplo, el rootkit puede esconder una aplicación que lance unaconsolacada vez que el atacante se conecte al sistema a través de un determinadopuerto. Losrootkitsdelnúcleopueden contener funcionalidades similares. Una puerta trasera puede permitir también que los procesos lanzados por un usuario sin privilegios de administrador ejecuten algunas funcionalidades reservadas únicamente alsuperusuario. Todo tipo de herramientas útiles para obtener información de forma ilícita pueden ser ocultadas medianterootkits.
Los encubridores se utilizan también para usar el sistema atacado como «base de operaciones», es decir, usarlo a su vez para lanzar ataques contra otros equipos. De este modo puede parecer que es el sistema infiltrado el que lanza los ataques y no el intruso externo. Este tipo de ataques podrían ser de denegación de servicio (DoS), ataques medianteIRCo mediantecorreo electrónicoen forma decorreo basura.
El funcionamiento de los encubridores se puede generalizar de la siguiente manera:
Losrootkitsse pueden clasificar en dos grupos: los que van integrados en elnúcleoy los que funcionan a nivel deaplicación. Los que actúan desde el núcleo añaden o modifican una parte del código de dicho núcleo para ocultar elbackdoor. Normalmente este procedimiento se complementa añadiendo nuevo código al núcleo, ya sea mediante uncontroladoro un módulo, como losmódulosdelnúcleo de Linuxo los dispositivos del sistema deWindows. Estos rootkits suelen parchear lasllamadas al sistemacon versiones que esconden información sobre el intruso. Son los más peligrosos, ya que su detección puede ser muy complicada.
Los encubridores que actúan como aplicaciones pueden reemplazar los archivos ejecutables originales con versiones descifradas que contengan algúntroyano, o también pueden modificar el comportamiento de las aplicaciones existentes usandohacks, parches,código inyectado, etc.
Algunos troyanos han utilizado estosrootkitsno persistentes que cargan en la memoria una vez que ellos se encuentran instalados:
Hay limitaciones inherentes a cualquier programa que intente detectarrootkitsmientras se estén ejecutando en el sistema sospechoso. Losrootkitsson aplicaciones que modifican muchas de las herramientas y librerías de las cuales depende el sistema. Algunosrootkitsmodifican el propio núcleo (a través de módulos y otros métodos como se indica más arriba).El principal problema de la detección derootkitsconsiste en que elsistema operativoen ejecución no es fiable globalmente.En otras palabras, algunas acciones como pedir la lista de los procesos en ejecución o listar los ficheros de undirectoriono son fiables al no comportarse como deberían.
El mejor método para detectar unrootkites apagar el sistema que se considere infectado y revisar o salvar los datos arrancando desde un medio alternativo, como undisco de rescate(como un CD-ROM) o unamemoria USB. Unrootkitinactivo no puede ocultar su presencia. Los programas antivirus mejor preparados suelen identificar a losrootkitsque funcionan mediante llamadas al sistema y peticiones de bajo nivel, las cuales deben quedar intactas. Si hay alguna diferencia entre ellas, se puede afirmar la presencia de unrootkit. Losrootkitsintentan protegerse a sí mismos monitorizando los procesos activos y suspendiendo su actividad hasta que el escaneo ha finalizado, de modo que elrootkitno pueda ser identificado por un detector.
Los fabricantes de aplicaciones de seguridad han ido integrando los detectores derootkitsen los productos tradicionales de detección deantivirus. Si unrootkitconsigue esconderse durante el proceso de detección, será identificado por el detector derootkits, que busca movimientos sospechosos. Si el encubridor «decide» detenerse momentáneamente, será identificado como unvirus. Esta técnica combinada de detección puede obligar a los atacantes a implementar mecanismos de contraataque(también llamados retrorrutinas) en el código delrootkit, con el objetivo de eliminar los procesos creados por el software de seguridad, eliminando así al programa antivirus de la memoria. Al igual que con los virus convencionales, la detección y eliminación de los rootkits será una batalla permanente entre los creadores del rootkit y de los programas de seguridad.
Hay varios programas disponibles para detectarrootkits. En los sistemas basados en Unix, dos de las aplicaciones más populares sonchkrootkityrkhunter. Para Windows está disponible un detector llamadoBlacklight(gratuito para uso personal) en la web de F-Secure.Blacklight presenta problemas de incompatibilidad en Windows 7.Otra aplicación de detección para Windows esRootkit Revealerde Sysinternals. Detecta todos losrootkitsactuales comparando las funcionalidades del sistema operativo original con las que se han detectado. Sin embargo, algunosrootkitshan empezado a añadir este programa a la lista de los cuales no deben esconderse. En esencia, eliminan las diferencias entre los dos listados, de modo que el detector no los encuentra. Pero algo tan simple como renombrar el fichero 'rootkitrevealer.exe' hace que elrootkitya no sepa que se está enfrentando a un detector. Como se decía antes, será una continua batalla entre losrootkitsy losantivirus.