
Linux-Kernelmodul, das Root-Rechte gewährt, Prozesse/Dateien verbirgt und sich selbst vor dem Entladen schützt – konzipiert für Bildungszwecke auf Ubuntu-Kerneln.
Ein einfaches Linux-Kernel-Rootkit, das zum Spaß geschrieben wurde, nicht für böse Zwecke.
Das Rootkit kann Folgendes tun:
Das Rootkit wurde getestet und funktioniert mit den Linux-Kerneln 2.6.32-38 und 4.4.0-22, wie sie von Ubuntu in Ubuntu 10.04.4 LTS bzw. Ubuntu 16.04 LTS bereitgestellt werden. Es sollte jedoch sehr einfach sein, es auf Kernel dazwischen sowie auf neuere zu portieren.
Es gibt architekturspezifischen Code im Rootkit, der nur für x86- und x86-64-Architekturen implementiert ist. Das ist der Code zum Auffinden der System-Call-Tabelle, zum Deaktivieren von schreibgeschütztem Speicher und eine der beiden Funktions-Hooking-Methoden. Es sollte sehr einfach sein, ihn auf eine neue Architektur zu portieren, und ein Teil dieses Codes ist für die Funktion des Rootkits nicht unbedingt erforderlich, z. B. könnte die nicht portable Hooking-Methode entfernt werden, obwohl man eine sehr langweilige Person sein muss, wenn man auf den Spaß am Funktions-Hooking verzichten möchte, das den Maschinencode der Ziel-Kernel-Funktion überschreibt, sodass diese stattdessen unsere Hook-Funktion aufruft.
Das Rootkit wurde nur mit 1 CPU-Kern getestet, daher kann es auf einem Mehrkernsystem funktionieren oder auch nicht. Es wird wahrscheinlich nicht sehr gut auf einem Mehrkernsystem laufen, da das Rootkit in der Erwartung geschrieben wurde, dass zu jedem Zeitpunkt nur 1 Thread etwas ausführt. Daher fehlen ihm atomare Schreib-/Lesevorgänge und Mutexe um die Listen-Datenstrukturen.
Wärmen Sie Ihre bevorzugte VM auf.
Holen Sie sich das gewünschte Ubuntu-Image und installieren Sie es:
Für Ubuntu 10.04 die Paket-Repository-Adresse patchen:
sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
Einen Compiler, Linux-Header und alles andere installieren, was wir zum Bauen des Rootkits benötigen:
apt-get update
apt-get install build-essential
Stellen Sie sicher, dass Sie nicht apt-get upgrade aufrufen, da dies den Kernel aktualisieren würde, während das Rootkit nur mit der vorinstallierten Kernel-Version getestet wurde.
make
Rootkit laden:
insmod rootkit.ko
Rootkit verwenden:
$ ./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.
Rootkit entladen:
./client --unhide
./client --unprotect
rmmod rootkit.ko
Nicht wirklich, es gibt viele Artikel online darüber, wie man ein Linux-Rootkit mit vollständigem Quellcode schreibt, ganz zu schweigen von den unzähligen GitHub-Repositories.
Die folgenden Materialien wurden beim Schreiben dieses Rootkits verwendet:
Dieses Projekt ist unter GPLv2 lizenziert.
| Kernel / Arch | 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] |