Colección de citas famosas - Colección de máximas - ¿Qué es la tecnología rootkit y cómo utilizarla?

¿Qué es la tecnología rootkit y cómo utilizarla?

Después de obtener el control del objetivo, todavía queremos mantener este control, por lo que aparecen puertas traseras troyanos, rootkits y otros medios para proteger los permisos. Primero, hablemos de nuestras puertas traseras troyanas a nivel de aplicación comunes, como nuestro software de control remoto común, como Sub7 extranjero, VNC, netbus, Glacier nacional, Grey Pigeon, Black Hole, etc. Todos están familiarizados con estos, así que No hay detalles se dará. Sin embargo, este tipo de puerta trasera se puede descubrir fácilmente. La mayoría del software antivirus actual puede detectarla y solucionarla fácilmente. Incluso si no se puede encontrar temporalmente, no es muy difícil detectarla por otros medios. Les presentamos un tipo de puerta trasera troyana que es mejor que los troyanos comunes. Se esconde un tipo de puerta trasera troyana más profunda: Rootkit.

Traditional Rootkit es una puerta trasera troyana que es más insidiosa que las puertas traseras troyanas comunes. Principalmente logra su propósito reemplazando archivos del sistema. Esto lo ocultará más, lo que dificultará la detección. Los rootkits tradicionales son eficaces en una variedad de plataformas, pero están dirigidos principalmente a Unix, como Linux, AIX, SunOs y otros sistemas operativos. Por supuesto, algunos Rootkits pueden atacar las plataformas Windows reemplazando archivos DLL o cambiando el sistema. Los Rootkits no le permiten obtener permisos directamente. Por el contrario, son una medida para proteger permisos que solo se pueden usar después de obtener permisos a través de varios. En nuestro artículo Después de los permisos de raíz del sistema (los permisos de raíz son los permisos más altos en los sistemas Unix), los rootkits proporcionan un conjunto de herramientas para construir puertas traseras y ocultar sus pistas, lo que permite a los atacantes conservar los permisos.

A continuación se explicarán los principios de ataque de los Rootkits tradicionales para Unix.

¿Cómo implementan los RootKits las puertas traseras? Para comprender las puertas traseras de los Rootkits, primero es necesario comprender el flujo de trabajo básico de Unix. Cuando accedemos a Unix (ya sea iniciando sesión local o remotamente), el programa /bin/login se ejecutará y el sistema recopilará y verificará la cuenta y la contraseña del usuario a través de /bin/login. Los rootkits usan un /bin/login. contraseña de la puerta trasera de permiso de root. bin/login para reemplazar el /bin/login del sistema, de modo que el atacante pueda ingresar al sistema ingresando la contraseña de la puerta trasera de permiso de root. Incluso si el administrador cambia la contraseña original del sistema o la borra. Aún pudimos

iniciar sesión como root usando la contraseña de la puerta trasera. Después de irrumpir en un sistema Unix, los intrusos suelen llevar a cabo una serie de acciones de ataque, como instalar rastreadores para recopilar datos importantes. También hay archivos del sistema en Unix que monitorean estas acciones, como ifconfig, etc. Por supuesto, Rootkit no lo hará. será capturado sin piedad. También reemplazará estos archivos del sistema.

Los programas del sistema generalmente reemplazados por Rootkit incluyen login, ifconfig, du, find, ls, netstart, ps, etc. Debido a problemas de espacio, las funciones de estos archivos del sistema no se enumeran una por una. Los lectores interesados ​​pueden buscarlos por sí mismos. Ahora existen muchas herramientas de Rootkit, que básicamente contienen algunos archivos del sistema procesados ​​para reemplazar los archivos del sistema originales. Algunos Rootkits como tOmkit son relativamente buenos.

Método de defensa: Rootkit da tanto miedo que hay que protegerse de él. De hecho, la forma más eficaz de defenderse es comprobar periódicamente la integridad de los archivos importantes del sistema. Tripwire es una muy buena herramienta de verificación de la integridad de los archivos. Una vez que descubra que ha sido atacado por un Rootkit, tendrá problemas. Deberá reinstalar completamente todos los componentes y programas de los archivos del sistema para garantizar la seguridad.

Sin embargo, al escribir esto, la guerra parece haber terminado. El Rootkit más aterrador aún no ha aparecido, es decir, el Rootkit a nivel de kernel aún más aterrador (esta palabra no es una exageración).

En la mayoría de los sistemas operativos (varios Unix y Windows), el kernel es el componente más básico del sistema operativo. Controla el acceso a dispositivos de red, procesos, memoria del sistema, discos, etc. Por ejemplo, cuando abre un archivo, se envía una solicitud para abrir el archivo al kernel, que es responsable de obtener los bits del archivo del disco y ejecutar el programa de exploración de archivos. Los rootkits a nivel de kernel permiten a los atacantes obtener un control total sobre el sistema subyacente. Un atacante puede modificar su kernel, y la mayoría de los rootkits a nivel de kernel pueden realizar una redirección de ejecución, es decir, interceptar el comando para ejecutar un determinado programa, redirigirlo a un programa elegido por el intruso y ejecutar este programa. Es decir, el usuario o administrador quiere ejecutar el programa A, y el kernel modificado pretende ejecutar el programa A, pero en realidad ejecuta el programa B. Ahora introduzcamos cómo el Rootkit a nivel de kernel ataca a los sistemas Unix

y A diferencia de los Rootkits tradicionales, el bin/login de Unix no se ha modificado, pero todas las solicitudes para ejecutar /bin/login (que se generarán al iniciar sesión en el sistema) se redirigen al archivo oculto /bin/backdoorlogin creado por el atacante, por lo que que cuando los métodos tradicionales utilizados por los administradores de sistemas para detectar rootkits (como el uso de software como tripwire para detectar la integridad de los archivos) no funcionarán porque /bin/login no se ha modificado. Del mismo modo, el atacante también reinicia otros programas del sistema, de modo que sus operaciones se realicen realmente según los deseos del intruso. En otras palabras, en la superficie estás ejecutando el programa A y crees que estás ejecutando el programa A, pero en realidad estás ejecutando el programa B configurado por el intruso ~ ¡Lo que es aún más aterrador es que! , Los rootkits a nivel de kernel no solo realizan la redirección de ejecución, sino que muchos rootkits a nivel de kernel también admiten la ocultación de archivos. Los rootkits tradicionales ocultan archivos reemplazando el programa ls, mientras que los rootkits a nivel de kernel engañan al programa ls modificando el kernel, haciéndolos aún más insidiosos y encubiertos. Además, los rootkits a nivel de kernel también pueden ocultar procesos y redes, por lo que los usuarios no obtendrán informes reales del estado del sistema.

Idea de implementación: Dependiendo del tipo de sistema, los atacantes tienen diferentes formas de modificar el kernel. La forma más sencilla de modificar el kernel en N tipos de sistemas Unix es utilizar el módulo de kernel cargado (LKM). el sistema en sí. ), por lo que la mayoría de los rootkits a nivel de kernel brindan nueva funcionalidad al aprovechar LKM para actualizar dinámicamente el kernel. Los módulos recién agregados extienden el kernel al mismo tiempo que brindan acceso completo al kernel y a todo lo que utiliza el kernel.

Por lo tanto, muchos rootkits a nivel de kernel se implementan a través de LKM. Instalar un rootkit a nivel de kernel implementado a través de LKM es muy sencillo. Por ejemplo, para instalar el rootkit a nivel de kernel de Knark en Linux, un intruso con privilegios de root solo necesita ingresar el comando: insmod knark.o Una vez instalado el módulo, está esperando que ingresemos el comando. Aún mejor es que todo el proceso no requiere reiniciar. Los rootkits implementados mediante LKM son muy populares en Unix. También atacamos a menudo a Windows aplicando parches LKM a la plataforma Windows.

Varios ejemplos de rootkits a nivel de kernel

Hay una gran cantidad de rootkits a nivel de kernel disponibles ahora. elegirá Analicemos algunos de los más potentes con usted

1. Rootkit a nivel de kernel en Linux: Knark

Knark tiene varias funciones estándar de Rootkit a nivel de kernel, incluida la redirección de ejecución. , ocultación de archivos, ocultación de procesos y ocultación de redes. Además, hay muchas funciones más divertidas, como:

1 Ejecución remota: podemos enviar un comando a la máquina que ejecuta Knark a través de la red y la dirección de origen es falsa.

Los comandos se envían al puerto UDP 53, lo que hace que parezca tráfico DNS.

Podemos usar esta función

para actualizar Knark, eliminar archivos del sistema o cualquier otra cosa que queramos hacer

2 Ataque de tarea: cuando un proceso se está ejecutando en el sistema, siempre lo hace. permisos asociados con el UID y el UID efectivo (EUID). Además, el proceso también tiene derechos de acceso a archivos y directorios relacionados con el UID del sistema de archivos (FSUID). La capacidad de ataque de tareas de Knark puede cambiar el proceso UID, EUID y FSUID en tiempo real. El proceso repentinamente tiene nuevos permisos sin detener su movimiento

3. Modo promiscuo oculto:

Al igual que RootKit general, el intruso también se ejecutará en el rastreador de la máquina víctima. Podemos ocultar el rastreador ocultando archivos y ocultando procesos. Sin embargo, la tarjeta Ethernet se configurará en modo promiscuo y el administrador puede comprobarlo.

Knark ha modificado el kernel para ocultar el modo promiscuo de la tarjeta, lo que hará que el rastreo sea más sigiloso.

4. Ocultamiento de procesos en tiempo real:

Knark puede ocultar un proceso en ejecución. Al enviar la señal 31 a un proceso, el proceso desaparecerá pero seguirá ejecutándose. El comando kill-31 Process_id evitará que el kernel proporcione información sobre este proceso. Cuando el proceso se está ejecutando, los comandos ps y lsof no pueden mostrar el proceso.

5. Ocultar el módulo del kernel: el comando lsmod en Linux puede enumerar el LKM actualmente instalado en la máquina. para permitir que esto suceda, el administrador ve el módulo de Knark, por lo que Knark incluye un modhide de módulo separado, que oculta a Knark

y a sí mismo. De esta manera, cuando usamos Knark para atacar un sistema, primero creamos un insmod para Knark.o y luego un insmod para modhide.o. De esta manera, no importa quién ejecute el comando lsmod, estos módulos no serán descubiertos.

2. Otro Rootkit a nivel de kernel en Linux: Adore

Al igual que Knark, Adore también lo es. un rootkit para Linux LKM RootKit. Contiene funciones estándar de Rootkit a nivel de kernel, como ocultación de archivos, ocultación de procesos, ocultación de redes y ocultación de módulos del kernel. Sólo hablamos de Adore porque también tiene una característica muy poderosa: una puerta trasera de acceso raíz incorporada.

La puerta trasera de permisos de root de Adore nos permite conectarnos al sistema y obtener un shell de comandos con permisos de root. Esta función es muy sencilla. Adore incluye inteligentemente esta función en el módulo del kernel. Este truco es muy difícil de superar porque el administrador no puede ver ningún signo de archivos, procesos o puertos de red en escucha.

Método de defensa: la forma fundamental de defenderse contra los Rootkits a nivel de kernel es evitar que los atacantes obtengan los permisos básicos del sistema de su máquina (root en Unix y administrador en Windows), pero esto parece una tontería: ), actualmente no existe un sistema de defensa absoluto contra los Rootkits a nivel de kernel.

También existen algunas herramientas de detección automática de Rootkit, pero no son muy confiables. Al mismo tiempo, los Rootkits a nivel de kernel también se desarrollan constantemente. Para algunos sistemas, la mejor manera de defenderse contra ellos es. utilice LKM que no lo admita. El kernel de Linux se puede configurar en un único kernel que no admita LKM.