
Módulo del kernel de Linux que otorga privilegios de root, oculta procesos/archivos y se protege de ser descargado, diseñado con fines educativos para kernels de Ubuntu.
Un rootkit simple para el kernel de Linux, escrito por diversión, no por maldad.
El rootkit puede hacer lo siguiente:
El rootkit fue probado para funcionar en los kernels de Linux 2.6.32-38 y 4.4.0-22 proporcionados por Ubuntu en Ubuntu 10.04.4 LTS y Ubuntu 16.04 LTS respectivamente, pero debería ser muy fácil portarlo a kernels intermedios, así como a los más nuevos.
Hay algo de código específico de arquitectura en el rootkit que está implementado solo para x86 y x86-64. Ese es el código para encontrar la tabla de llamadas al sistema, deshabilitar la memoria protegida contra escritura y uno de los dos métodos de enganche de funciones. Debería ser muy fácil portarlo a una nueva arquitectura, y parte de este código no es estrictamente necesario para que el rootkit funcione, por ejemplo, el método de enganche no portable podría eliminarse, aunque debes ser una persona muy aburrida si estás dispuesto a perderte la diversión del enganche de funciones que sobrescribe el código máquina de la función objetivo del kernel para que llame a nuestra función de enganche en su lugar.
El rootkit fue probado solo con 1 núcleo de CPU, por lo que puede o no funcionar correctamente en un sistema multinúcleo. Probablemente no funcionará muy bien en un sistema multinúcleo, ya que el rootkit fue escrito esperando que solo haya 1 hilo ejecutando cualquier cosa en un momento dado, por lo que carece de escrituras/lecturas atómicas y mutex alrededor de las estructuras de datos de listas.
Prepara tu máquina virtual preferida.
Descarga e instala la imagen de Ubuntu deseada:
Para Ubuntu 10.04, corrige la dirección del repositorio de paquetes:
sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
Instala un compilador, los encabezados de Linux y todo lo demás necesario para compilar el rootkit:
apt-get update
apt-get install build-essential
Asegúrate de no ejecutar apt-get upgrade, ya que actualizaría el kernel, cuando el rootkit fue probado solo en la versión del kernel preinstalada.
make
Cargar el rootkit:
insmod rootkit.ko
Usar el rootkit:
$ ./client --help
Usage: ./client [OPTION]...
Options:
--root-shell Grants you root shell access.
--hide-pid=PID Hides the specified PID.
--unhide-pid=PID Unhides the specified PID.
--hide-file=FILENAME Hides the specified FILENAME globally.
Must be a filename without any path.
--unhide-file=FILENAME Unhides the specified FILENAME.
--hide Hides the rootkit LKM.
--unhide Unhides the rootkit LKM.
--help Print this help message.
--protect Protects the rootkit from rmmod.
--unprotect Disables the rmmod protection.
Descargar el rootkit:
./client --unhide
./client --unprotect
rmmod rootkit.ko
En realidad no, hay muchos artículos en línea sobre cómo escribir un rootkit de Linux con el código fuente completo proporcionado, sin mencionar los innumerables repositorios de GitHub.
Los siguientes materiales se usaron para escribir este rootkit:
Este proyecto está licenciado bajo GPLv2.
| Kernel / arquitectura | x86 | x86-64 |
|---|
| 2.6.32 | Ubuntu 10.04.4 i386 (694M) [torrent] [iso] | Ubuntu 10.04.4 amd64 (681M) [torrent] [iso] |
| 4.4.0 | Ubuntu 16.04 i386 (647M) [torrent] [iso] | Ubuntu 16.04 amd64 (655M) [torrent] [iso] |