¿Win32.rootkit es un virus? ¿Cómo borrarlo?
Rootkit es un rootkit que se encuentra a menudo en la seguridad de redes. El "Glosario de términos utilizados en seguridad y detección de intrusiones de la NSA" define el rootkit de la siguiente manera: Permitir a los piratas informáticos Una colección de herramientas que proporcionan puertas traseras a un sistema y recopilan información. sobre otros sistemas a los que los piratas informáticos pueden acceder. Un rootkit es una herramienta de piratería típica que permite a los piratas informáticos proporcionar una puerta trasera a un sistema, recopilar información sobre otros sistemas en la red, encubrir el hecho de que el sistema ha sido comprometido y mucho más. Los rootkits son un ejemplo clásico de software troyano. Los rootkits están disponibles para una variedad de sistemas operativos.
Mucha gente cree erróneamente que un rootkit es una herramienta utilizada para obtener acceso root a un sistema. En realidad, los rootkits son herramientas utilizadas por los atacantes para ocultar sus rastros y conservar el acceso de root. Normalmente, los atacantes obtienen acceso raíz mediante ataques remotos, adivinación de contraseñas o descifrado forzado de contraseñas. Una vez dentro del sistema, si aún no ha obtenido acceso de root, obtendrá acceso de root al sistema a través de alguna vulnerabilidad de seguridad. A continuación, el atacante instalará un rootkit en el host comprometido y, a menudo, comprobará si hay otros usuarios iniciando sesión en el sistema a través de la puerta trasera del rootkit. Si es solo él, el atacante comenzará a limpiar la información relevante del host. registros. Después de obtener el usuario y la contraseña de otros sistemas a través del rastreador del rootkit, el atacante utilizará esta información para invadir otros sistemas.
Qué es un rootkit
Un rootkit es una pieza de software cuya función principal es ocultar los procesos de otros programas. Puede estar compuesto por uno o más software a grandes rasgos; , un rootkit También se puede considerar como una tecnología. Los rootkits se utilizaron al principio con fines benignos, pero desde entonces los piratas informáticos los han utilizado para invadir y atacar los sistemas informáticos de otras personas, virus informáticos, software espía y más. Los rootkits se utilizan a menudo para ocultar rastros y, por lo tanto, la mayoría de los programas antivirus los clasifican como malware dañino. La mayoría de los programas antivirus han clasificado los rootkits como malware dañino.
[1] Los rootkits aparecieron a principios de la década de 1990, y el término rootkit se utilizó por primera vez en un aviso de seguridad en febrero de 1994. El aviso de seguridad es el CA-1994-01 de CERT-CC, titulado "Ataques continuos de vigilancia de redes", que fue revisado por última vez el 19 de septiembre de 1997. Desde su aparición hasta hoy, la tecnología rootkit se ha desarrollado muy rápidamente, sus aplicaciones se están generalizando cada vez más y la detección es cada vez más difícil.
Introducción a los rootkits Un rootkit es un programa peculiar que es sigiloso: no se puede detectar si está en reposo (existiendo como un archivo) o activo (existiendo como un proceso). En otras palabras, este programa siempre puede existir en nuestros ordenadores sin que lo sepamos, lo cual es una característica con la que sueña mucha gente, ya sean hackers informáticos o personal de informática forense. Los piratas informáticos pueden colocar rootkits después de la intrusión para espiar en secreto información confidencial, o esperar una oportunidad para actuar; los investigadores forenses también pueden usar rootkits para monitorear a los sospechosos de actividades ilegales en tiempo real, lo que no solo recopila pruebas, sino que también facilita la acción oportuna.
1. Conocimientos previos
Lo que solemos llamar máquinas inteligentes, desde supercomputadoras hasta PC personales y teléfonos inteligentes, suelen consistir en hardware y software. La inteligencia del dispositivo se realiza mediante software. Entre todo el software uno es imprescindible y ese es el sistema operativo. El sistema operativo puede entenderse simplemente como un conjunto de programas centrales altamente reutilizables. Por un lado, debe administrar los dispositivos de hardware subyacentes y, por otro lado, debe proporcionar un buen entorno operativo para otros programas de la capa superior. Es cierto que el sistema operativo no es lo mismo que el software, pero goza del privilegio supremo: no sólo debe gestionar el hardware, sino que todo el resto del software debe estar subordinado a él.
Dado que el sistema operativo separa el programa de aplicación del hardware, el programa de aplicación no puede acceder directamente al hardware, sino que utiliza el hardware llamando a la interfaz proporcionada por el sistema operativo. En otras palabras, la aplicación no puede ver el hardware. Por supuesto, no hay garantías y no es imposible que las aplicaciones eviten el sistema operativo y accedan al hardware directamente, pero el costo de hacerlo puede ser alto. Imagínese, cuando un desarrollador de software desarrolla un software rico en funciones, la función en sí es suficiente para causarle dolor de cabeza. Ahora tiene que preocuparse por la agrupación de tal o cual datos en tal o cual pista, y el La visualización de tal o cual carácter en tal o cual monitor de marca, sin mencionar los recursos financieros y materiales necesarios para cosas tediosas como la codificación binaria de colores, el ciclo de desarrollo por sí solo es insoportable. Por tanto, las aplicaciones actuales utilizan directamente los servicios que proporciona el sistema operativo para acceder al sistema, porque al fin y al cabo nadie quiere hacer el ridículo.
2. Las funciones principales del kernel
De lo anterior hemos aprendido que el kernel es el núcleo del sistema. A continuación presentaremos en detalle varios aspectos estrechamente relacionados con. el kernel y el Rootkit. Las funciones principales y, lo que es más importante, lo que estas funciones significan para los rootkits:
Gestión de procesos. Los procesos pueden entenderse simplemente como programas en ejecución que requieren recursos del sistema, como memoria y tiempo de CPU. La mayoría de los sistemas operativos actuales admiten la multitarea multiusuario, lo que significa que el sistema debe ejecutar varios programas en paralelo. Por lo tanto, el kernel no sólo requiere código especializado para asignar tiempo de CPU a procesos o subprocesos, sino que también necesita abrir áreas de memoria para almacenar estructuras de datos para registrar información detallada sobre estos procesos. ¿Cómo sabe el núcleo cuántos procesos hay en el sistema, el estado de cada proceso, etc.? En otras palabras, son la base para que el núcleo sea consciente de la existencia de un proceso. Por tanto, modificando estas estructuras de datos se puede ocultar el proceso.
Acceso a archivos. El sistema de archivos es una de las características más importantes que proporciona el sistema operativo. El controlador en el kernel abstrae las estructuras originales, como columnas y sectores del dispositivo, en un sistema de archivos más utilizable y proporciona una interfaz consistente para que la llamen los programas de capa superior. En otras palabras, esta parte del código controla completamente el acceso al disco duro. Al modificar esta parte del kernel, el atacante puede ocultar archivos y directorios.
Controles de seguridad. Para la mayoría de los sistemas operativos, dado que hay varios procesos en el sistema al mismo tiempo, el núcleo debe implementar medidas de aislamiento efectivas para cada proceso para evitar conflictos entre ellos. Por ejemplo, en MS-Windows, cada proceso está obligado a tener permisos específicos y un rango de memoria independiente. Por lo tanto, para un atacante, todo lo que necesita es una ligera modificación del código responsable de las transacciones de seguridad en el kernel, y todo el mecanismo de seguridad colapsará.
Gestión de la memoria. Los mecanismos de gestión de memoria de las plataformas de hardware actuales, como la familia de procesadores Intel Pentium, son lo suficientemente complejos como para traducir una única dirección de memoria en múltiples direcciones físicas. Por ejemplo, el proceso A lee la memoria en la dirección 0x0030030 y obtiene el valor "avión" mientras que el proceso B lee la memoria en la dirección 0x0030030 y obtiene el valor "cañón". El hecho de que la misma dirección apunte a dos ubicaciones de memoria física distintas, cada una con datos diferentes, no es sorprendente, es solo que los dos procesos asignan direcciones virtuales a direcciones físicas de manera diferente; Si se explota correctamente, podemos hacer que el rootkit sea invisible para los depuradores y el software forense.
Lo anterior presenta las características principales del kernel y su importancia para los rootkits. Ahora, vayamos directo al punto: si subvertimos (es decir, modificamos) los servicios principales del sistema operativo (es decir, el kernel), entonces todo el sistema, incluidas las aplicaciones, estará bajo nuestro control. Para subvertir el kernel, un requisito previo es poder importar nuestro código al kernel.
Los rootkits más comunes son para SunOS y Linux. Todos los rootkits se componen básicamente de varios programas independientes. Los rootkits típicos incluyen:
1 Programa de rastreo de Ethernet, utilizado para obtener información como nombres de usuario y contraseñas transmitidas a través de la red.
2 Los programas troyanos, como inetd o login, proporcionan puertas traseras a los atacantes.
3 Programas como ps, netstat, rshd y ls que ocultan los directorios y procesos del atacante.
4 También puede incluir herramientas de limpieza de registros como zap, zap2 o z2, que los atacantes utilizan para eliminar entradas sobre su paradero en archivos de registro como wtmp, utmp y lastlog.
Algunos rootkits sofisticados también pueden proporcionar a los atacantes telnet, shell y finger.
También incluye scripts para limpiar otros archivos en los directorios /var/log y /var/adm.
El atacante utiliza programas relacionados en el rootkit para reemplazar los programas ps, ls, netstat y df originales del sistema, de modo que los administradores del sistema no puedan encontrarse a través de estas herramientas. A continuación, el atacante utilizará herramientas de limpieza de registros para limpiar los registros del sistema y eliminar sus propios rastros. Luego, el atacante suele ingresar al sistema a través de la puerta trasera instalada y ver los registros del rastreador para lanzar otros ataques. Si el atacante instala el rootkit correctamente y limpia los archivos de registro adecuadamente, será difícil para el administrador del sistema darse cuenta de que el sistema ha sido comprometido hasta que un día el administrador de otro sistema se comunique con él o el registro del rastreador llene todos los discos antes. se da cuenta de que está en un gran problema. Sin embargo, la mayoría de los atacantes no son muy cautelosos al limpiar los registros del sistema, o simplemente eliminan todos los registros del sistema, y alertar a los administradores del sistema puede determinar que el sistema se ha visto comprometido en función de estas anomalías. Sin embargo, los comandos más comunes como ps, df y ls ya no son confiables durante la recuperación y limpieza del sistema. Muchos rootkits tienen un programa llamado FIX que permite a un atacante tomar una instantánea del código binario del sistema antes de instalar el rootkit y luego instalar un reemplazo. FIX puede falsificar las tres marcas de tiempo (atime, ctime, mtime) y la fecha del programa de reemplazo según el programa original, PERMISO, el usuario al que pertenece y el grupo de usuarios al que pertenece. Si un atacante puede utilizar con precisión estas buenas aplicaciones y tener cuidado al instalar un rootkit, será difícil para los administradores del sistema detectarlo.
Linux ROOTKIT IV
Como se mencionó anteriormente, la mayoría de los rootkits se dirigen a Linux y SunOS. A continuación presentaremos un rootkit de sistema Linux muy típico, a saber, Linux Rootkit IV. Linux Rootkit IV es un rootkit de código abierto Linux Rootkit IV es un rootkit de código abierto escrito por Lord Somer y lanzado en noviembre de 1998. Sin embargo, no es el primer rootkit de Linux; fue precedido por rootkits de Linux como lrk, lnrk, lrk2 y lrk3. Estos rootkits incluyen componentes comunes de rootkit, como rastreadores, herramientas de edición/eliminación de registros y puertas traseras.
Después de años de desarrollo, Linux Rootkit IV tiene cada vez más funciones y características más ricas. Sin embargo, aunque tiene una gran cantidad de código, es muy sencillo de instalar y utilizar. Simplemente ejecute make install para instalarlo correctamente. Si también desea instalar la herramienta de sombra, simplemente realice la instalación de sombra. Nota: Linux Rootkit IV solo se puede utilizar con el kernel Linux 2.x. A continuación proporcionamos una breve descripción general de las diversas herramientas incluidas en Linux Rootkit IV. Para obtener instrucciones detalladas, consulte el archivo README de su paquete de distribución.
Programas para ocultar intrusos
Para ocultar intrusos, el autor de Linux Rootkit IV no escatimó esfuerzos para escribir muchos programas de reemplazo para los comandos del sistema, que pueden usarse para reemplazar el original. Comandos del sistema para ocultar al intruso. Estos programas incluyen:
ls, find, du
Estos programas evitan que se muestren los archivos del intruso y calculan el espacio que ocupan los archivos del intruso.
Antes de la compilación, un intruso puede usar ROOTKIT_FILES_FILE para establecer la ubicación de sus archivos, que por defecto es /dev/ptyr. Tenga en cuenta que si compila con la opción SHOWFLAG, puede usar el comando ls -/ para enumerar todos los archivos. Estos programas también ocultan automáticamente todos los archivos llamados ptyr, hack.dir y W4r3z.
ps, top, pidof
Estos programas se utilizan para ocultar todos los procesos relacionados con el intruso.
netstat
Oculta el tráfico de red hacia y desde una dirección IP o puerto específico.
killall
No mata procesos ocultos por intrusos.
ifconfig
Si un intruso inicia un rastreador, este programa evita que se muestre el indicador PROMISC, lo que dificulta que los administradores del sistema descubran que una interfaz de red se ha colocado en modo promiscuo. .
crontab
Ocultar entradas de crontab sobre el atacante.
tcpd
Evitar que ciertas conexiones se registren en el registro
syslogd
Filtrar cierta información de conexión del registro
p>
Programas troyanos
Programas de puerta trasera para usuarios locales, incluido
chfn
Un programa que eleva los privilegios de los usuarios locales normales . Ejecute chfn y cuando solicite un nuevo nombre de usuario, si el usuario ingresa la contraseña de rookit, sus permisos se elevarán a root.
chsh
también es un programa que eleva los derechos de los usuarios locales. Ejecute chsh y, cuando solicite un nuevo shell, si el usuario ingresa la contraseña de rootkit, sus privilegios se elevarán a root.
passwd
Funciona igual que los dos programas anteriores.
iniciar sesión
Permite iniciar sesión con una contraseña de rootkit utilizando cualquier cuenta. Si se deniega el inicio de sesión con la cuenta raíz, intente rewt. El programa también desactiva la grabación del historial de comandos cuando se utiliza la puerta trasera.
Programas troyanos de monitoreo de red
Estos programas proporcionan a los usuarios remotos una puerta trasera a inetd, rsh, ssh, etc., según la versión. A medida que se actualiza la versión, Linux Rootkit IV se vuelve cada vez más potente y rico en funciones. Generalmente incluye los siguientes programas de servicios de red:
inetd
El programa troyano inetd, que proporciona acceso remoto a los atacantes.
rshd
Proporciona un servicio de shell remoto a los atacantes. Un atacante puede utilizar el comando rsh -l rootkitpassword host para iniciar un shell raíz remoto.
sshd
Una puerta trasera que proporciona servicios ssh a los atacantes.
Utilidades
Todos los programas que no entran en las categorías anteriores pueden incluirse en esta categoría y realizar funciones como limpieza de registros, detección de mensajes y vinculación de puertos de shell remotos, incluidos:
corrección
Programa de falsificación de atributos de archivos
linsniffer
Programa de rastreo de mensajes.
sniffchk
Un script de shell bash simple para comprobar si se está ejecutando un rastreador en el sistema.
wted
editor de registros wtmp/utmp. Puede editar todos los archivos de tipo wtmp o utmp usando esta herramienta.
z2
herramienta de limpieza de registros utmp/wtmp/lastlog. Puede eliminar todas las entradas en el archivo de registro utmp/wtmp/lastlog para un nombre de usuario específico.
Sin embargo, si se utiliza en un sistema Linux, su código fuente debe modificarse manualmente para establecer la ubicación de los archivos de registro.
bindshell rootkit
Vincula el servicio shell en el puerto, el puerto predeterminado es 12497.
Cómo detectar un rootkit
Obviamente, la única forma de protegerse de los ataques de rootkit es proteger su red de los atacantes. Me temo que nadie puede ofrecer tal garantía, pero desarrollar algunos buenos hábitos en la gestión y el mantenimiento diario de la red puede reducir en gran medida el daño causado por los rootkits y detectar su existencia a tiempo.
En primer lugar, no transmita contraseñas en texto claro a través de la red ni utilice contraseñas de un solo uso. De esta forma, incluso si se instala un rootkit en el sistema, el atacante no puede escuchar a través de la red y obtener más nombres de usuario y contraseñas, evitando así la propagación de la intrusión.
El uso de herramientas de detección como Tripwire y Aide puede ayudarle a detectar atacantes antes de que ocurran y también proporciona una buena verificación de la integridad del sistema. Estas herramientas se diferencian de otras herramientas de detección de intrusiones en que, en lugar de detectar intrusiones mediante los llamados códigos de firma de ataque, monitorean e inspeccionan los cambios que ocurren en el sistema. Tripwire primero utiliza capacidades de código de firma específicas para crear una base de datos de firmas para los archivos y directorios del sistema que deben monitorearse. La llamada función de firma toma cualquier archivo como entrada y genera datos de tamaño fijo ("código de firma"). Si un intruso modifica el archivo, la firma del archivo se dañará incluso si el tamaño del archivo sigue siendo el mismo. Utilizando esta base de datos, Tripwire puede detectar fácilmente cambios en el sistema. Además, la firma del archivo es casi imposible de falsificar y cualquier cambio en el sistema no puede escapar al monitoreo de Tripwire (por supuesto, la premisa es que haya realizado configuraciones precisas para su sistema: P, consulte este artículo para obtener más información). uso de Tripwire y asistente) Artículos relacionados en el sitio). Finalmente, debe colocar la base de datos de códigos de características en un lugar seguro.
Los rootkits son un tipo especial de malware. Son especiales porque no tienes idea de lo que están haciendo. Si bien la cantidad de herramientas de detección continúa aumentando, los desarrolladores de malware continúan encontrando nuevas formas de cubrir sus huellas.
El propósito de un rootkit es ocultarse a sí mismo y a otros programas para que no sean detectados. Lo hace evitando que los usuarios identifiquen y eliminen el software del atacante. Los rootkits pueden ocultar casi cualquier software, incluidos servidores de archivos, registradores de pulsaciones de teclas, botnets y remailers. Muchos rootkits pueden incluso ocultar conjuntos de archivos grandes, lo que permite a un atacante guardar muchos archivos en su computadora sin que usted pueda verlos.
Los rootkits en sí no afectan al funcionamiento de un ordenador como lo hacen los virus o gusanos. Un atacante puede identificar vulnerabilidades existentes en el sistema objetivo. Las vulnerabilidades pueden incluir: puertos de red abiertos, sistemas sin parches o sistemas con contraseñas de administrador débiles. Después de obtener acceso a un sistema vulnerable, un atacante puede instalar manualmente un rootkit. Estos ataques furtivos normalmente no activan controles automatizados de seguridad de la red, como los sistemas de detección de intrusos.
Encontrar rootkits es complicado. Hay muchos paquetes de software que pueden detectar rootkits y se pueden dividir en dos categorías: verificadores basados en firmas y verificadores basados en comportamiento. Los verificadores basados en firmas, como la mayoría de los escáneres de virus, verifican los archivos binarios en busca de rootkits conocidos. Los verificadores basados en el comportamiento encuentran rootkits buscando elementos ocultos que representan el comportamiento principal del rootkit. Rootkit Revealer es un popular comprobador de rootkits basado en el comportamiento.
Los remedios para descubrir la presencia de un rootkit en un sistema también son limitados. Debido a que los rootkits pueden ocultarse, es posible que no sepas cuánto tiempo han estado en tu sistema. Tampoco sabes qué información destruyó el rootkit. La mejor manera de lidiar con un rootkit detectado es limpiar y reinstalar su sistema.
Aunque este método es duro, es la única forma eficaz de eliminar completamente los rootkits.
Evitar que los rootkits entren en tu sistema es lo mejor que puedes hacer. Para lograrlo, puede utilizar la misma estrategia de defensa en profundidad que utiliza para protegerse contra todo malware que ataque su computadora. Los elementos de defensa en profundidad incluyen escáneres de virus, actualizaciones periódicas de software, firewalls de red y host y una política de contraseñas segura.