
Ein Linux eBPF-Rootkit mit Backdoor, C2, Bibliotheksinjektion, Ausführungshijacking, Persistenz und Tarnfähigkeiten.
TripleCross ist ein Linux-eBPF-Rootkit, das die offensiven Fähigkeiten der eBPF-Technologie demonstriert.
TripleCross ist von früheren Implantat-Designs in diesem Bereich inspiriert, insbesondere von den Arbeiten von Jeff Dileo auf der DEFCON 271, Pat Hogan auf der DEFCON 292, Guillaume Fournier und Sylvain Afchain ebenfalls auf der DEFCON 293 und Kris Nóvas Boopkit4. Wir verwenden einige der Techniken wieder und erweitern sie, die in diesen früheren Erkundungen der offensiven Fähigkeiten der eBPF-Technologie entwickelt wurden.
Dieses Rootkit wurde für meine Bachelorarbeit an der UC3M erstellt. Weitere Details zum Design finden sich im Thesis-Dokument.
Dieses Rootkit ist ausschließlich für Bildungs- und akademische Zwecke gedacht. Die Software wird "wie sie ist" bereitgestellt, und die Autoren übernehmen keine Verantwortung für Schäden oder Zwischenfälle, die bei ihrer Nutzung auftreten könnten.
Versuchen Sie nicht, TripleCross zur Verletzung von Gesetzen zu nutzen. Missbrauch der bereitgestellten Software und Informationen kann zu strafrechtlichen Konsequenzen führen.
Die folgende Abbildung zeigt die Architektur von TripleCross und seiner Module.
Die für Rootkit-Übertragungen verwendete Raw-Sockets-Bibliothek RawTCP_Lib stammt von mir und hat ein eigenes Repository.
Die folgende Tabelle beschreibt die wichtigsten Quellcodedateien und -verzeichnisse zur einfacheren Navigation:
| VERZEICHNIS | BESCHREIBUNG |
|---|---|
| docs | Originaler Thesis-Test |
| src/client | Quellcode des Rootkit-Clients |
| src/client/lib | RawTCP_Lib-Common-Bibliothek |
| src/common | Konstanten und Konfiguration für das Rootkit. Enthält auch die Implementierung von Elementen, die beiden Seiten des Rootkits (eBPF und Benutzerbereich) gemeinsam sind, wie den Ringpuffer |
| src/ebpf | Quellcode der vom Rootkit verwendeten eBPF-Programme |
| src/helpers | Enthält Programme zum Testen der Funktionalität mehrerer Rootkit-Module sowie das schädliche Programm und die Bibliothek, die im Execution-Hijacking- bzw. Library-Injection-Modul verwendet werden |
| src/libbpf | Enthält die in das Rootkit integrierte libbpf-Bibliothek |
| src/user | Quellcode der vom Rootkit verwendeten Benutzerraum-Programme |
| src/vmlinux | Header mit der Definition von Kernel-Datenstrukturen (dies ist die empfohlene Methode bei Verwendung von libbpf) |
Dieses Forschungsprojekt wurde unter folgenden Umgebungen getestet:
| DISTRIBUTION | KERNEL | GCC | CLANG | GLIBC | |
|---|---|---|---|---|---|
| VERSION | Ubuntu 21.04 | 5.11.0 | 10.3.0 | 12.0.0 | 2.33 |
Wir empfehlen die Verwendung von Ubuntu 21.04, das standardmäßig die hier gezeigten Softwareversionen beinhaltet. Andernfalls sind einige der möglicherweise auftretenden Probleme hier beschrieben.
Der Quellcode des Rootkits wird mit zwei Makefiles kompiliert.```
cd src make all
cd client make
The following table describes the purpose of each Makefile in detail:
| MAKEFILE | BEFEHL | BESCHREIBUNG | ERZEUGTE DATEIEN |
| ------------- | ------------- | ------------- | ------------- |
| src/client/Makefile | make | Kompilierung des Rootkit-Clients | src/client/injector |
| src/Makefile | make help | Kompilierung von Programmen zum Testen der Rootkit-Funktionen sowie das bösartige Programm und die Bibliothek der Module für Ausführungshijacking und Bibliotheksinjektion | src/helpers/simple_timer, src/helpers/simple_open, src/helpers/simple_execve, src/helpers/lib_injection.so, src/helpers/execve_hijack |
| src/Makefile | make kit | Kompilierung des Rootkits unter Verwendung der libbpf-Bibliothek | src/bin/kit |
| src/Makefile | make tckit | Kompilierung des TC-Egress-Programms des Rootkits | src/bin/tc.o |
### Installation
Sobald die Rootkit-Dateien unter src/bin/ generiert wurden, müssen die Programme *tc.o* und *kit* der Reihe nach geladen werden. Im folgenden Beispiel wird die Rootkit-Hintertür auf der Netzwerkschnittstelle *enp0s3* operieren:```
// TC egress program
sudo tc qdisc add dev enp0s3 clsact
sudo tc filter add dev enp0s3 egress bpf direct-action obj bin/tc.o sec classifier/egress
// Libbpf-powered rootkit
sudo ./bin/kit -t enp0s3
Es gibt zwei Skripte, packager.sh und deployer.sh, die das Rootkit automatisch kompilieren und installieren, so wie es ein Angreifer in einem realen Angriffsszenario tun würde.
Die Ausführung von packager.sh erzeugt alle Rootkit-Dateien im Verzeichnis apps/.
Die Ausführung von deployer.sh installiert das Rootkit und erstellt die Persistenzdateien.