Cómo aprender rootkit de Linux
Un rootkit tradicional es una puerta trasera troyana que es más insidiosa que una puerta trasera troyana normal. Principalmente logra su propósito reemplazando archivos del sistema. Esto lo hace más sigiloso y más difícil de detectar. Los rootkits tradicionales funcionan en una variedad de plataformas, pero principalmente apuntan a Unix, como Linux, AIX, SunOs y otros sistemas operativos. Por supuesto, algunos rootkits pueden reemplazar archivos DLL o cambiar el sistema para atacar la plataforma Windows. Rootkit no le permite obtener permisos directamente. Por el contrario, es una medida que se utiliza después de obtener permisos a través de varios métodos para proteger los permisos de raíz del sistema (los permisos de raíz son permisos de raíz y son los permisos más altos en los sistemas Unix). Los rootkits proporcionan un conjunto de herramientas para crear puertas traseras y ocultar rastros para que los atacantes puedan mantener sus privilegios.
Así es como funcionan los ataques tradicionales de rootkit en Unix
¿Cómo implementan los rootkits puertas traseras? Para comprender la puerta trasera de Rootkits, primero debemos comprender el flujo de trabajo básico de Unix. Cuando accedemos a Unix (ya sea iniciando sesión local o remotamente), se ejecutará el programa /bin/login y el sistema recopilará y verificará la información del usuario. /bin/login. Cuenta y contraseña. Los rootkits reemplazan el /bin/login del sistema con /bin/login con la contraseña de la puerta trasera raíz, lo que permite a un atacante ingresar al sistema ingresando la contraseña de la puerta trasera raíz. Incluso si el administrador cambia o borra la contraseña original del sistema. Aún podemos
iniciar sesión en el sistema como root usando la contraseña de puerta trasera. Después de irrumpir en un sistema Unix, los intrusos suelen llevar a cabo una serie de ataques, como instalar rastreadores para recopilar datos importantes. Hay algunos archivos del sistema en Unix que monitorean estos comportamientos, como ifconfig.
Normalmente, los programas del sistema sustituidos por los rootkits son:
login, ifconfig, du, find, ls, netstart, ps, etc. Debido a limitaciones de espacio, las funciones de estos archivos del sistema no se enumerarán una por una. Los lectores interesados pueden buscar por sí mismos. Hay muchas herramientas de Rootkit, que básicamente contienen algunos archivos de sistema procesados para reemplazar los archivos de sistema originales. son mejores.
Defensa: Los rootkits dan tanto miedo que tendrás que defenderte de ellos. De hecho, la forma más eficaz de defenderse de los rootkits es verificar periódicamente la integridad de los archivos importantes del sistema. Existen muchas herramientas de este tipo, como Tripwire, que es una excelente herramienta de comprobación de la integridad de los archivos. Una vez que te encuentres bajo el ataque de un rootkit, estarás en un aprieto y tendrás que reinstalar completamente todos los componentes y programas del sistema para garantizar tu seguridad.
A estas alturas, la guerra parece haber terminado, pero el rootkit más aterrador aún está por llegar, y ese es el aún más aterrador (no es una exageración) rootkit a nivel de kernel.
En la mayoría de los sistemas operativos (varios Uni x y Windows), el kernel es la parte más fundamental del sistema operativo, controlando el acceso a los dispositivos de red, procesos, memoria del sistema, discos, etc. El kernel es la parte más importante del sistema operativo. Por ejemplo, cuando abre un archivo, se envía una solicitud para abrir el archivo al núcleo, 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 pueden brindarle al atacante un control total sobre el sistema subyacente. Un atacante puede modificar el kernel, y la mayoría de los rootkits a nivel de kernel pueden realizar la redirección, que consiste en interceptar un comando para ejecutar un programa específico, redirigirlo a un programa elegido por el intruso y ejecutar ese programa. Es decir, un usuario o administrador quiere ejecutar el programa A y el kernel modificado pretende ejecutar A, pero en realidad ejecuta el programa B. Ahora, echemos un vistazo a cómo los rootkits a nivel de kernel atacan a los sistemas Unix
A diferencia de los rootkits tradicionales, el bin/login de Unix no se modificará, pero todas las solicitudes para ejecutar /bin/login (generadas al iniciar sesión en el system) Todas las solicitudes para ejecutar /bin/login) serán redirigidas al archivo oculto /bin/backdoorlogin creado por el atacante. De esta manera, cuando el administrador del sistema utiliza métodos tradicionales de detección de rootkits (como el uso de software como tripwire para. verifique la integridad del archivo), no se puede detectar porque el archivo /bin/login no se ha modificado. Del mismo modo, los atacantes reorganizarán otros programas del sistema para que sus operaciones realmente se realicen como pretendía el intruso. En otras palabras, en la superficie, usted está ejecutando el programa A y cree que está ejecutando el programa A, pero en realidad está ejecutando el programa B, ¡que fue configurado por un intruso!
Lo que es aún más aterrador es que los rootkits a nivel de kernel no sólo redirigen la ejecución, sino que muchos de ellos también admiten la ocultación de archivos. Mientras que los rootkits tradicionales reemplazan el programa ls para ocultar archivos, los rootkits a nivel de kernel modifican el kernel para engañar al programa ls, haciéndolos aún más insidiosos. Además, los rootkits a nivel de kernel pueden ocultar procesos y redes, impidiendo que los usuarios obtengan un informe real del estado del sistema.
Ideas de implementación: Dependiendo del tipo de sistema, los atacantes tienen diferentes métodos para modificar el kernel. En los sistemas N Unix, la forma más sencilla de modificar el kernel es explotar las capacidades de los módulos del kernel (LKM) cargados por el propio sistema. Por lo tanto, la mayoría de los rootkits a nivel de kernel actualizan dinámicamente el kernel aprovechando LKM para proporcionar nueva funcionalidad, y los módulos recién agregados amplían el kernel al mismo tiempo que brindan nueva funcionalidad al kernel y a la red.
Como resultado, muchos rootkits a nivel de kernel se implementan a través de LKM. Instalar un rootkit a nivel de kernel implementado mediante LKM es muy sencillo. Por ejemplo, instalar el rootkit de nivel de kernel Knark en Linux es tan simple como que un intruso con privilegios de root escriba el comando: insmod knark.o. Aún mejor, no es necesario reiniciar. Los rootkits instalados mediante LKM son muy populares en Unix. También atacamos frecuentemente a Windows parcheando la plataforma Windows usando LKM.
Algunos ejemplos de rootkits a nivel de kernel
Hay muchos rootkits a nivel de kernel disponibles, por lo que seleccionaré algunos de los rootkits más potentes para discutirlos con usted.
Uno de ellos es un rootkit a nivel de kernel para Linux. Rootkit: Knark
Knark tiene una variedad de capacidades estándar de rootkit a nivel de kernel, que incluyen redirección de ejecución, ocultación de archivos, ocultación de procesos y ocultación de red.
Además, existen algunas funciones más avanzadas, como:
1. Ejecución remota: podemos enviar comandos a la máquina que ejecuta Knark a través de la red y falsificar la dirección de origen.
El comando se envía al puerto UDP 53, haciendo que parezca tráfico DNS.
Luego, podemos usarlo
Actualizar Knark, eliminar archivos del sistema o hacer cualquier otra cosa que queramos
2. en el sistema siempre tiene permisos asociados al UID y al UID efectivo (EUID). Además, los procesos tienen derechos de acceso a archivos y directorios asociados con el UID del sistema de archivos (FSUID). Las capacidades de ataque de misión de Knark pueden cambiar el proceso UID, EUID y FSUID en tiempo real.
3. Modo mixto oculto:
Al igual que RootKit, el intruso también ejecutará un rastreador en la máquina víctima. Podemos ocultar el rastreador ocultando archivos y ocultando procesos. Sin embargo, la tarjeta Ethernet se configurará en modo mixto, los administradores pueden verificar esto
Knark modificó el kernel para ocultar el modo mixto de la tarjeta, lo que hará que el rastreo sea más encubierto.
4. Ocultamiento de procesos en tiempo real:
Knark puede ocultar procesos 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 se está ejecutando un proceso, ni el comando ps ni el lsof pueden mostrar el proceso.
5. El módulo del kernel oculto: el comando lsmod de Linux puede enumerar el LKM actualmente instalado en la máquina. administrador para ver el módulo Knark., por lo que Knark contiene un módulo modhide separado, que Knark
se ocultará. De esta manera, cuando usamos Knark para atacar un sistema, primero creamos un insmod para Knark.o y luego un insmod para modhide.o.
Otro rootkit a nivel de kernel de Linux:
Similar a Knark, Adore también es un rootkit de LKM para Linux. Incluye 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. Estamos hablando de Adore porque también tiene una característica muy poderosa: una puerta trasera de acceso raíz incorporada.
La puerta trasera raíz de Adore nos permite conectarnos al sistema y obtener acceso raíz al shell de comandos. Es muy simple y Adore la ha incluido inteligentemente en el módulo del kernel. Este es un truco difícil de descifrar porque los administradores no ven ninguna señal de que se estén escuchando archivos, procesos o puertos de red.
Defensa: La defensa básica contra los rootkits a nivel de kernel es no darle al atacante acceso a los privilegios de root del sistema de su máquina (root en Unix, admin en Windows), pero esto parece una tontería :) También hay Actualmente no existe una defensa absoluta contra los rootkits a nivel de kernel.
Existen algunas herramientas automáticas de detección de rootkits, pero no son muy fiables. Al mismo tiempo, los rootkits a nivel de kernel también están en constante evolución. Para algunos sistemas, la mejor defensa es utilizar un kernel que no admita LKM, porque el kernel de Linux se puede configurar en un único kernel que no admita LKM.