Red de conocimiento de divisas - conocimientos contables - Rootkit de virus informático

Rootkit de virus informático

Los rootkits se encuentran a menudo en la seguridad de redes. El Glosario de términos utilizados en seguridad y detección de intrusiones de la NSA los define de la siguiente manera: Una herramienta de seguridad de piratas informáticos que captura contraseñas y tráfico de mensajes hacia y desde una computadora. herramientas que permiten a un pirata informático proporcionar una puerta trasera a un sistema, recopilar información sobre otros sistemas en la red, enmascarar el hecho de que el sistema está comprometido y mucho más. Rootkit es un ejemplo clásico de software Trojan Horse disponible para un. amplia gama de sistemas operativos.

Muchas personas tienen la idea errónea de que los rootkits son herramientas utilizadas 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. Por lo general, los atacantes obtienen acceso raíz a través de ataques remotos, o primero obtienen acceso al sistema adivinando o descifrando contraseñas forzadamente. Después de ingresar al sistema, si no ha obtenido permisos de root, obtendrá los permisos de root del sistema a través de ciertas lagunas de seguridad. A continuación, el atacante instalará un rootkit en el host intruso 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 el único, el atacante comenzará a limpiar la información relevante. en los registros. Después de obtener el nombre de usuario y la contraseña de otros sistemas a través del rastreador de rootkits, el atacante utilizará esta información para invadir otros sistemas.

¿Qué es un rootkit?

El rootkit apareció a principios de la década de 1990. El término rootkit se utilizó por primera vez en un informe de seguridad de febrero de 1994. Este aviso de seguridad es el CA-1994-01 de CERT-CC, titulado Ataques continuos de monitoreo de red, y la última revisión fue el 19 de septiembre de 1997. Desde su aparición, la tecnología rootkit se ha desarrollado muy rápidamente, sus aplicaciones están cada vez más extendidas y su detección es cada vez más difícil.

Introducción a rootkit Rootkit es un programa único que tiene una función sigilosa: no se notará si está en reposo (existiendo como un archivo) o activo (existiendo como un proceso). En otras palabras, es posible que este tipo de programas siempre haya existido en nuestros ordenadores sin que lo sepamos, y esta característica es exactamente con lo que sueña mucha gente, ya sean piratas informáticos o personal de informática forense. Los piratas informáticos pueden colocar Rootkits después de una intrusión para espiar en secreto información confidencial o esperar una oportunidad para actuar; los investigadores forenses también pueden utilizar Rootkits para monitorear el comportamiento ilegal de los sospechosos en tiempo real. No solo pueden recopilar pruebas, sino también facilitar la adopción de medidas oportunas. . !

1. Conocimientos previos

Lo que normalmente llamamos máquinas inteligentes va desde supercomputadoras hasta PC personales y teléfonos inteligentes. Generalmente constan de dos partes: hardware y software. Además, la inteligencia del dispositivo se realiza mediante software.

Entre todo software, uno es indispensable y es el sistema operativo. El sistema operativo puede entenderse simplemente como un conjunto de programas centrales altamente reutilizables. Por un lado, administra dispositivos de hardware de bajo nivel y, por otro lado, proporciona un buen entorno operativo para otros programas de nivel superior. Es cierto que tenemos las mismas personas pero destinos diferentes. Ambos son software, pero el sistema operativo goza de privilegios supremos: no sólo gestiona el hardware, sino que todo el resto del software también está sujeto a él.

Debido a que el sistema operativo está entre la aplicación y el hardware, la aplicación no puede acceder directamente al hardware, sino que utiliza el hardware llamando a la interfaz proporcionada por el sistema operativo. Es decir, el hardware es invisible para la aplicación. Por supuesto, no hay absolutos y no es imposible que las aplicaciones eviten el sistema operativo y accedan directamente al hardware, pero hacerlo tendrá un precio elevado. Imagine que un desarrollador de software está desarrollando un software rico en funciones. La función en sí es suficiente para causarle dolor de cabeza. Ahora tiene que preocuparse por ciertos datos en un determinado grupo en una determinada pista y el color de un determinado carácter en una. Cierto tipo de monitor, código binario y otras cosas engorrosas, sin mencionar los recursos financieros y materiales, el ciclo de desarrollo por sí solo es intolerable. Por lo tanto, las aplicaciones actuales utilizan servicios simples y claros proporcionados por el sistema operativo para acceder al sistema, porque después de todo, nadie quiere meterse en problemas.

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 varias funciones del kernel. que están estrechamente relacionados con Rootkit Las funciones principales, y más importante, lo que estas funciones significan para Rootkit:

Gestión de procesos. Un proceso puede entenderse simplemente como un programa en ejecución, que requiere 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. Para ello, el kernel no sólo debe tener un código especial responsable de asignar tiempo de CPU a procesos o subprocesos, sino también abrir un área de memoria para almacenar estructuras de datos utilizadas para registrar los detalles de estos procesos. ¿Cómo sabe el núcleo cuántos procesos hay en el sistema, el estado de cada proceso y otra información? Es a través de estas estructuras de datos, en otras palabras, que son la base para que el núcleo perciba la existencia del proceso. Por lo tanto, siempre que se modifiquen estas estructuras de datos, se puede lograr el propósito de ocultar el proceso.

Acceso a archivos. El sistema de archivos es una de las funciones más importantes que proporciona el sistema operativo. El controlador en el kernel abstrae las estructuras originales del dispositivo, como cilindros y sectores, en un sistema de archivos más fácil de usar 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 código del kernel, el atacante puede ocultar archivos y directorios.

Controles de seguridad. Para la mayoría de los sistemas operativos, debido a que hay múltiples procesos en el sistema al mismo tiempo, para evitar conflictos entre procesos, el kernel debe implementar medidas de aislamiento efectivas para cada proceso. Por ejemplo, en los sistemas MS-Windows, cada proceso se aplica con permisos específicos y un rango de memoria independiente. Por lo tanto, para un atacante, siempre que el código responsable de las transacciones de seguridad en el kernel se modifique ligeramente, todo el mecanismo de seguridad colapsará.

Gestión de la memoria. El mecanismo de administración de memoria de las plataformas de hardware actuales (como los procesadores de la serie Pentium de Intel) es tan complejo que puede convertir una dirección de memoria en múltiples direcciones físicas. Por ejemplo, el proceso A lee la memoria en la dirección 0x0030030 y el valor que obtiene es "avión", sin embargo, el proceso B también lee la memoria en la misma dirección 0x0030030, pero el valor que obtiene es "cañón". Como se muestra arriba, no es sorprendente que la misma dirección apunte a dos ubicaciones de memoria física completamente diferentes, y cada ubicación almacene datos diferentes; es solo que los dos procesos realizan diferentes transformaciones de la dirección virtual a la dirección física. Si esto se explota, podemos hacer que el rootkit eluda los depuradores y el software forense.

Lo anterior presenta las funciones principales del kernel y su importancia para los rootkits.

Dicho esto, tenemos que ir al grano, es decir: mientras subvirtamos (es decir, modifiquemos) el servicio central (es decir, el kernel) del sistema operativo, todo el sistema, incluidas varias aplicaciones, estará completamente bajo nuestro control. . Para subvertir el kernel, el requisito previo es que nuestro código pueda importarse al kernel.

De entre ellos, se encuentran la mayoría de los rootkits para sistemas operativos SunOS y Linux. Todos los rootkits se componen básicamente de varios programas independientes. Un rootkit típico incluye:

1. Programa rastreador de Ethernet, utilizado para obtener información como nombres de usuario y contraseñas transmitidas en la red.

2 Los programas troyanos, como inetd o login, proporcionan puertas traseras a los atacantes.

3. Programas que ocultan los directorios y procesos del atacante, como: ps, netstat, rshd, ls, etc.

4 También puede incluir algunas herramientas de limpieza de registros, como zap, zap2 o z2. Los atacantes utilizan estas herramientas de limpieza para eliminar entradas relacionadas con su paradero en archivos de registro como wtmp, utmp y lastlog.

Algunos rootkits complejos también pueden proporcionar a los atacantes servicios como telnet, shell y finger.

También incluye algunos scripts para limpiar /var/log y otros archivos en el directorio /var/adm.

Los atacantes utilizan programas relacionados en el rootkit para reemplazar los programas originales del sistema, como ps, ls, netstat y df, lo que hace imposible que los administradores del sistema descubran sus propios rastros a través de estas herramientas. Luego utilice la herramienta de limpieza de registros para limpiar los registros del sistema y eliminar sus propios rastros. Luego, los atacantes suelen ingresar al sistema a través de la puerta trasera instalada para ver los registros del rastreador y lanzar otros ataques. Si el atacante puede instalar el rootkit correctamente y limpiar 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 el disco. Cuando esté lleno, se dará cuenta de que se avecina un desastre. Sin embargo, la mayoría de los atacantes no son muy cuidadosos al limpiar los registros del sistema o simplemente eliminarlos. Los administradores del sistema Vigilant pueden juzgar que el sistema ha sido invadido basándose en estas anomalías. Sin embargo, durante el proceso de limpieza y recuperación del sistema, los comandos más utilizados, como ps, df y ls, ya no son confiables. Muchos rootkits incluyen un programa llamado FIX. Antes de instalar el rootkit, un atacante puede usar este programa para tomar una instantánea del código binario del sistema y luego instalar un programa de reemplazo. FIX puede falsificar las tres marcas de tiempo (atime, ctime, mtime), fecha, permiso, usuario y grupo de usuarios del programa de reemplazo basándose en el programa original. Si los atacantes pueden utilizar con precisión estas excelentes aplicaciones y actuar con cautela al instalar rootkits, será difícil para los administradores del sistema detectarlas.

LINUX ROOTKIT IV

Como se mencionó anteriormente, la mayoría de los rootkits son para Linux y SunOS. A continuación presentamos un rootkit muy típico para sistemas Linux: Linux Rootkit IV. 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, existen rootkits de Linux como lrk, lnrk, lrk2 y lrk3 antes. Estos rootkits incluyen componentes comunes de rootkit, como rastreadores, herramientas de edición/eliminación de registros y puertas traseras.

Después de tantos años de desarrollo, las funciones de Linux Rootkit IV se han vuelto cada vez más completas y cada vez tiene más funciones.

Sin embargo, aunque su código es muy grande, es muy fácil de instalar y usar. Simplemente ejecute make install y podrá instalarlo correctamente. Si también desea instalar una herramienta de sombra, simplemente ejecute make shadow install. Nota: Linux Rootkit IV sólo se puede utilizar con kernels Linux 2.x. A continuación presentamos brevemente las diversas herramientas incluidas en Linux Rootkit IV. Para una introducción detallada, consulte el archivo README de su paquete de lanzamiento.

Programas que ocultan el paradero de los intrusos

Para ocultar el paradero de los intrusos, el autor de Linux Rootkit IV se esforzó mucho en escribir muchos programas de reemplazo para los comandos del sistema y utilizarlos. programas para reemplazar El comando original del sistema se utiliza para ocultar el paradero del intruso. Estos programas incluyen:

ls, find, du

Estos programas impiden la visualización de los archivos del intruso y calculan el espacio ocupado por los archivos del intruso. Antes de la compilación, el intruso puede establecer la ubicación de sus propios archivos a través de ROOTKIT_FILES_FILE. El valor predeterminado es /dev/ptyr. Tenga en cuenta que si usa la opción SHOWFLAG al compilar, puede usar el comando ls -/ para enumerar todos los archivos. Estos programas también pueden ocultar automáticamente todos los archivos denominados: 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 datos de red hacia/desde la dirección IP o el puerto especificado.

killall

no eliminará los procesos ocultos por los intrusos.

ifconfig

Si un intruso inicia un rastreador, este programa impide la visualización del indicador PROMISC, lo que dificulta que el administrador del sistema descubra que la interfaz de red está 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 en el registro

Los programas troyanos

proporcionan puertas traseras para los usuarios locales, incluidos:

chfn

Programas que elevan los derechos de los usuarios locales comunes. Ejecute chfn y, cuando solicite un nuevo nombre de usuario, si el usuario ingresa la contraseña de rootit, sus permisos se elevan a root. La contraseña predeterminada del rootkit es satori.

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 permisos se elevan a root.

passwd

Tiene la misma función que los dos programas anteriores. Cuando se le solicita que ingrese una nueva contraseña, si ingresa la contraseña de rokit, los permisos se pueden cambiar a root.

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, puede intentar rewt. Este programa también tiene la capacidad de desactivar el registro del historial de comandos cuando se utiliza una puerta trasera.

Programas troyanos de monitoreo de red

Estos programas proporcionan puertas traseras para usuarios remotos y pueden proporcionar inetd, rsh, ssh y otros servicios a usuarios remotos, que varían según la versión. A medida que se actualiza la versión, Linux Rootkit IV se vuelve cada vez más potente y tiene cada vez más funciones.

Generalmente incluyen los siguientes programas de servicios de red:

inetd

El programa troyano inetd proporciona servicios de acceso remoto a los atacantes.

rshd

Proporciona servicios de shell remotos a los atacantes. Un atacante puede utilizar el comando rsh -l rootkitpassword host comando para iniciar un shell raíz remoto.

sshd

Un programa de puerta trasera que proporciona servicios ssh a los atacantes.

Programas de herramientas

Todos los programas que no pertenecen a los tipos anteriores se pueden clasificar en este tipo. Implementan algunas tareas como: limpieza de registros, rastreo de paquetes y puerto de shell remoto. Funciones vinculantes, que incluyen:

corregir

programa de falsificación de atributos de archivos

linsniffer

programa rastreador de mensajes.

sniffchk

Un script de shell bash simple que verifica si se está ejecutando un rastreador en el sistema.

wted

editor de registros wtmp/utmp. Puede utilizar esta herramienta para editar todos los archivos de tipo wtmp o utmp.

z2

herramienta de limpieza de registros utmp/wtmp/lastlog. Se pueden eliminar todas las entradas de un nombre de usuario en los archivos de registro utmp/wtmp/lastlog. Sin embargo, si se utiliza en un sistema Linux, deberá modificar manualmente su código fuente y establecer la ubicación del archivo de registro.

bindshell rootkit

Vincula el servicio de shell en un puerto determinado. El puerto predeterminado es 12497. Proporcionar servicios de shell a atacantes remotos.

Cómo descubrir rootkits

Obviamente, sólo haciendo que su red sea muy segura para que los atacantes puedan aprovecharla podrá proteger su red de la influencia de los rootkits. Sin embargo, me temo que nadie puede ofrecer esta garantía, pero mantener algunos buenos hábitos en la gestión y mantenimiento diario de la red puede reducir en cierta medida las pérdidas provocadas por los rootkits y detectar la existencia de rootkits 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 su sistema ha sido instalado con un rootkit, el atacante no puede monitorear 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 pueden ayudarle a descubrir las intrusiones de los atacantes de manera oportuna. Pueden proporcionar una buena verificación de la integridad del sistema. Este tipo de herramienta se diferencia de otras herramientas de detección de intrusiones en que no detectan el comportamiento de intrusión a través de las llamadas firmas de ataque, sino que monitorean y examinan los cambios en el sistema. Tripwire primero usa una función de firma específica para construir una base de datos de firmas para los archivos y directorios del sistema que necesitan ser monitoreados. La llamada función de firma es una función que utiliza cualquier archivo como entrada para generar datos de tamaño fijo (código de firma). . Si un intruso modifica el archivo, la firma del archivo se destruirá incluso si el tamaño del archivo permanece sin cambios. Utilizando esta base de datos, Tripwire puede detectar fácilmente cambios en el sistema. Además, la firma de un archivo es casi imposible de falsificar y cualquier cambio en el sistema no puede escapar al monitoreo de Tripwire (por supuesto, siempre que haya realizado configuraciones precisas para su sistema: P, consulte este artículo para conocer el uso de Tripwire). y asistente) Artículos relacionados en el sitio). Finalmente, debe poder colocar esta base de datos de firmas en un lugar seguro.

Un rootkit es un tipo especial de malware. Los rootkits son especiales porque no sabes lo que están haciendo.

Los rootkits son esencialmente indetectables y es casi imposible eliminarlos. Si bien las herramientas de detección continúan proliferando, 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 otro software 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 grandes colecciones de archivos y permitir que un atacante guarde 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. Este tipo de ataque furtivo normalmente no activa controles automatizados de seguridad de la red, como los sistemas de detección de intrusos.

Encontrar rootkits es complicado. Existen paquetes de software que pueden detectar rootkits. Estos paquetes 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 intentan encontrar rootkits buscando algunos elementos ocultos que representan el comportamiento principal del rootkit. Un comprobador de rootkits basado en el comportamiento popular es Rootkit Revealer.

Una vez que se descubre un rootkit en un sistema, las acciones correctivas que se pueden tomar son limitadas. Debido a que los rootkits pueden ocultarse, es posible que no sepas cuánto tiempo han estado en tu sistema. Y no sabes qué información ha comprometido el rootkit. La mejor respuesta a un rootkit encontrado es borrar y reinstalar el sistema. Aunque este método es duro, es el único método probado para eliminar completamente los rootkits.

Evitar que los rootkits entren en su sistema es el mejor método disponible. Para lograrlo, utilice 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 en hosts y redes y políticas de contraseñas seguras.

上篇: Guía Chunin de un solo paso de Naruto Bonds 2.3 下篇: Desde el brote, un gran número de personal médico se ha unido a la primera línea de lucha contra la epidemia. ¿Qué cuidados prácticos cree que necesita el personal médico?
Artículos populares