Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
TripleCross — Ein Linux eBPF-Rootkit mit Backdoor, C2, Bibliotheksinjektion, Ausführungshijacking, Persistenz und Tarnfähigkeiten. | Kitploit
Tools/GitHubGitHub/h3xduck/triplecross
Privilege EscalationPersistenzmechanismenCommand and ControlLernen & Bildung
GitHubh3xduck/triplecross

TripleCross

Ein Linux eBPF-Rootkit mit Backdoor, C2, Bibliotheksinjektion, Ausführungshijacking, Persistenz und Tarnfähigkeiten.

Repository anzeigen
2.0k243vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

TripleCross

Lizenz GitHub-Version (neuste inkl. Vorabversionen) Wartbarkeit Letzter Commit auf GitHub

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.

Haftungsausschluss

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.

Inhaltsverzeichnis

  1. Funktionen
  2. TripleCross-Übersicht
  3. Erstellen und Installieren
  4. Library-Injection-Modul
  5. Backdoor und C2
  6. Ausführungs-Hijacking-Modul
  7. Rootkit-Persistenz
  8. Rootkit-Tarnung
  9. Lizenz

Funktionen

  1. Ein Library-Injection-Modul zur Ausführung von schädlichem Code durch Schreiben in den virtuellen Speicher eines Prozesses.
  2. Ein Ausführungs-Hijacking-Modul, das an den Kernel übergebene Daten modifiziert, um schädliche Programme auszuführen.
  3. Ein Lokales Privilegien-Eskalations-Modul, das die Ausführung schädlicher Programme mit Root-Rechten ermöglicht.
  4. Eine Backdoor mit C2-Fähigkeiten, die das Netzwerk überwachen und von einem entfernten Rootkit-Client gesendete Befehle ausführen kann. Es integriert mehrere Auslöser, um diese Aktionen verdeckt zu übertragen.
  5. Ein Rootkit-Client, der einem Angreifer ermöglicht, 3 verschiedene Arten von shell-ähnlichen Verbindungen herzustellen, um Befehle und Aktionen zu senden, die den Rootkit-Zustand fernsteuern.
  6. Ein Persistenz-Modul, das sicherstellt, dass das Rootkit auch nach einem Neustall installiert bleibt und alle Privilegien behält.
  7. Ein Tarnungs-Modul, das rootkitbezogene Dateien und Verzeichnisse vor dem Benutzer versteckt.

TripleCross-Übersicht

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:

Erstellen und Installieren

Voraussetzungen

Dieses Forschungsprojekt wurde unter folgenden Umgebungen getestet:

DISTRIBUTIONKERNELGCCCLANGGLIBC
VERSIONUbuntu 21.045.11.010.3.012.0.02.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.

Kompilierung

Der Quellcode des Rootkits wird mit zwei Makefiles kompiliert.```

Build rootkit

cd src make all

Build rootkit client

cd client make

root@kitploit:~
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

Angriffsszenario-Skripte

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.

Diese Skripte müssen zunächst mit den folgenden Parametern konfiguriert werden, damit das Persistenzmodul ordnungsgemäß funktioniert:

SCRIPTCONSTANTBESCHREIBUNG
src/helpers/deployer.shCRON_PERSISTCron-Job, der nach dem Neustart ausgeführt wird
src/helpers/deployer.shSUDO_PERSISTSudo-Eintrag zur Gewährung von passwortlosen Berechtigungen

Bibliotheksinjektionsmodul

Das Rootkit kann die Ausführung von Prozessen kapern, die die Systemaufrufe sys_timerfd_settime oder sys_openat aufrufen. Dies wird erreicht, indem der Global Offset Table (GOT)-Abschnitt im virtuellen Speicher des aufrufenden Prozesses überschrieben wird. Dies führt zur Ausführung einer bösartigen Bibliothek (src/helpers/injection_lib.c). Die Bibliothek erstellt eine Reverse Shell zur Angreifer-Maschine und gibt dann den Ausführungsfluss an die ursprüngliche Funktion zurück, ohne den Prozess zum Absturz zu bringen.

TripleCross ist darauf vorbereitet, gängige ELF-Härtungstechniken zu umgehen, darunter:

  • ASLR
  • Stack canaries
  • DEP/NX
  • PIE
  • Full RELRO

Es ist auch darauf vorbereitet, mit Intel CET-kompatiblem Code zu arbeiten.

Die Funktionalität des Moduls kann mit zwei Testprogrammen überprüft werden: src/helpers/simple_timer.c und src/helpers/simple_open.c. Alternativ können Sie versuchen, einen beliebigen Systemprozess zu kapern (getestet und funktioniert mit systemd).

Die Modulkonfiguration wird über die folgenden Konstanten festgelegt:

Das Empfangen einer Reverse Shell von der Angreifer-Maschine kann mit netcat erfolgen:``` nc -nlvp <ATTACKER_PORT>

root@kitploit:~
### Bibliotheksinjektion mittels GOT-Hijacking-Technik
Die in TripleCross integrierte Technik besteht aus 5 Stufen:

#### Lokalisieren der GOT und der Rücksprungadresse
Das Rootkit hookt den Systemaufruf mithilfe eines Tracepoint-Programms. Von dort aus lokalisiert es die Adresse im GOT-Abschnitt, die der PLT-Stub verwendet hat, um den Aufruf an die für den Syscall zuständige glibc-Funktion zu tätigen. 

Um zum GOT-Abschnitt zu gelangen, verwendet das eBPF-Programm die auf dem Stack gespeicherte Rücksprungadresse. Beachten Sie:
* Der .text führt einen *call* zum .plt aus, daher wird *rip* als *ret* auf dem Stack gespeichert.
* Der .plt führt einen *jump* zu glibc über .got aus, daher wird kein weiteres *rip* gespeichert. Es modifiziert oder speichert auch nicht den Wert von *rbp*.
* glibc führt einen *syscall* aus, der *rip* nicht im Stack, sondern in *rcx* speichert. 

<img src="https://assets.kitploit.com/production/public/readmes/5614/d216fa5b7b656bb52587027db28f3e3902fa8389d0b2944a1f7e870d6d2e6bee.jpg" float="left">

Um also von eBPF aus zu überprüfen, ob eine Adresse im Stack die Rücksprungadresse ist, die uns zum korrekten GOT führt, müssen wir prüfen, dass es sich um die Rücksprungadresse des PLT-Stubs handelt, der die GOT-Adresse verwendet, die zu der glibc-Funktion springt, die den von uns aus eBPF gehookten Systemaufruf ausführt.

Zwei Techniken zum Auffinden der Rücksprungadresse wurden integriert:
* Mit sys_timerfd_settime durchsucht das eBPF-Programm vorwärts im Scan unter Verwendung der Syscall-Argumente.
* Mit sys_openat verwendet das eBPF-Programm die Daten in der *pt_regs*-Struktur der Tracepoints, um die Rücksprungadresse zu scannen.

<img src="https://assets.kitploit.com/production/public/readmes/5614/61217fb3fd84bec65cbbee906dd27860e5e1c211912cfe450ea4cf9051fa480b.png" float="left">


#### Lokalisieren der Schlüsselfunktionen für den Shellcode
Der Shellcode muss dynamisch generiert werden, um ASLR und PIE zu umgehen, die die Adresse von Funktionen wie dlopen() bei jeder Programmausführung ändern.

<img src="https://assets.kitploit.com/production/public/readmes/5614/6cbb620495d8cb9711e499fd5b1ae9ea845c03d0c33019cf008b456a95d5ddd6.png" float="left">


#### Injizieren von Shellcode in eine Code Cave
Eine Code Cave kann durch Reverse Engineering einer ELF-Datei gefunden werden, wenn ASLR und PIE deaktiviert sind, aber normalerweise ist das nicht der Fall. Das eBPF-Programm sendet eine Anfrage an ein Userspace-Rootkit-Programm, das das /proc-Dateisystem verwendet, um eine Code Cave im .text (ausführbaren) Abschnitt zu lokalisieren und zu beschreiben.

<img src="https://assets.kitploit.com/production/public/readmes/5614/c7daea0eed684437b5c7d971d0f69f5aac9138861d44da36c5368be9f97666d1.png" float="left">

#### Überschreiben des GOT-Abschnitts
Abhängig davon, ob Partial oder Full RELRO auf der ausführbaren Datei aktiv sind, überschreibt das eBPF-Programm den GOT-Abschnitt direkt oder mit dem /proc-Dateisystem.

<img src="https://assets.kitploit.com/production/public/readmes/5614/7e69ec2982ee8c77c39b42f364ab25e52c40d96890f7413b3afe04dde1b825c3.png" float="left">

#### Warten auf den nächsten Systemaufruf
Wenn der nächste Syscall im gekaperten Programm ausgeführt wird, verwendet der PLT-Abschnitt den modifizierten GOT-Abschnitt, kapert den Ausführungsfluss und leitet ihn zum Shellcode in der Code Cave um. Der Shellcode ist darauf vorbereitet, das Programm vor einem Absturz zu bewahren, und ruft die schädliche Bibliothek (*src/helpers/lib_injection.so*) auf. Diese Bibliothek führt einen fork() aus und startet eine Reverse Shell mit dem Angreifer-Rechner. Danach wird der Ausführungsfluss wiederhergestellt.

<img src="https://assets.kitploit.com/production/public/readmes/5614/4e780cbcba855fe11a55f6a34709d83d855a4235960b15b69470233147f04318.png" float="left">



## Backdoor und C2
Die Backdoor funktioniert sofort ohne erforderliche Konfiguration. Die Backdoor kann mit dem Rootkit-Client-Programm ferngesteuert werden:

| CLIENT-ARGUMENTE | AKTIONSBESCHREIBUNG |
| ------------- | ------------- |
| ./injector -c \<Opfer-IP\> | Startet eine Klartext-Pseudo-Shell durch Verwendung des Ausführungshijacking-Moduls |
| ./injector -e \<Opfer-IP\> | Startet eine verschlüsselte Pseudo-Shell durch Befehlen der Backdoor mit einem muster-basierten Trigger |
./injector -s \<Opfer-IP\> | Startet eine verschlüsselte Pseudo-Shell durch Befehlen der Backdoor mit einem Multi-Packet-Trigger (beider Typen) |
./injector -p \<Opfer-IP\> | Startet eine Phantom-Shell durch Befehlen der Backdoor mit einem muster-basierten Trigger |
./injector -a \<Opfer-IP\> | Befiehlt dem Rootkit, alle eBPF-Programme zu aktivieren |
./injector -u \<Opfer-IP\> | Befiehlt dem Rootkit, alle seine eBPF-Programme zu trennen |
./injector -S \<Opfer-IP\> | Zeigt, wie die Backdoor eine Nachricht vor dem Kernel verstecken kann (Einfacher PoC) |
| ./injector -h | Zeigt Hilfe an |

### Backdoor-Trigger

Aktionen werden an die Backdoor mittels Backdoor-Triggern gesendet, die der Backdoor die auszuführende Aktion abhängig vom Wert des Attributs **K3** anzeigen:

| K3-WERT | AKTION |
| ------------- | ------------- |
| 0x1F29 | Anforderung zum Starten einer verschlüsselten Pseudo-Shell-Verbindung |
| 0x4E14 | Anforderung zum Starten einer Phantom-Shell-Verbindung |
| 0x1D25 | Anforderung zum Laden und Anhängen aller Rootkit-eBPF-Programme |
| 0x1D24 | Anforderung zum Trennen aller Rootkit-eBPF-Programme (außer denen der Backdoor) |


#### Muster-basierter Trigger
Dieser Trigger verbirgt den Befehl und die Client-Informationen, sodass sie von der Backdoor erkannt werden können, aber gleichzeitig für einen externen Netzwerk-Supervisor zufällig genug erscheinen. Er basiert auf dem Trigger, der von dem kürzlich entdeckten NSA-Rootkit [Bvp47](https://www.pangulab.cn/files/The_Bvp47_a_top-tier_backdoor_of_us_nsa_equation_group.en.pdf) verwendet wird.

<img src="https://assets.kitploit.com/production/public/readmes/5614/58cec7ee2dbd89b6c7d71d60c006a1a98d7b9165b20bdbe006467a82d5dc30ab.png" float="left">

#### Multi-Packet-Trigger
Dieser Trigger besteht aus mehreren TCP-Paketen, bei denen die Backdoor-Nutzlast in den Paket-Headern versteckt ist. Dieses Design basiert auf dem CIA-Implant [Hive](https://wikileaks.org/vault7/document/hive-DevelopersGuide/hive-DevelopersGuide.pdf), das im Vault-7-Leak beschrieben wurde. Die folgende Nutzlast wird verwendet:

<img src="https://assets.kitploit.com/production/public/readmes/5614/45a8348c3d366af4941d9cca845c281fc8c5a565353fc8fe3fb91350f39dd5f8.png" float="left">

Über die obige Nutzlast wird dann ein rollierendes XOR berechnet und je nach dem vom Rootkit-Client gewählten Modus in mehrere Teile aufgeteilt. TripleCross unterstützt Nutzlasten, die in der TCP-Sequenznummer versteckt sind:

<img src="https://assets.kitploit.com/production/public/readmes/5614/2b9d7fd46f7133e3eeda694e0b4791fbed2a51616b7d2f14e989a9e0e56af9e2.png" float="left">

Und im TCP-Quellport:

<img src="https://assets.kitploit.com/production/public/readmes/5614/1a6ea6da628a9902eaf55cc3c1549a2ecf26cba211275acdce6bc5491b34140c.png" float="left">

### Backdoor-Pseudo-Shells
Der Client kann Rootkit-Pseudo-Shells einrichten, eine spezielle Rootkit-zu-Rootkit-Client-Verbindung, die ein Shell-Programm simuliert und es dem Angreifer ermöglicht, Linux-Befehle remote auszuführen und die Ergebnisse zu erhalten, als würde er sie direkt auf der infizierten Maschine ausführen. In unserem Rootkit sind mehrere Pseudo-Shells integriert:

#### Klartext-Pseudo-Shell
Diese Shell wird nach einem erfolgreichen Lauf des Ausführungshijacking-Moduls erzeugt, das eine schädliche Datei ausführt, die wie folgt eine Verbindung mit dem Rootkit-Client herstellt:

<img src="https://assets.kitploit.com/production/public/readmes/5614/6495b5b62c33ae136b8c965658d9c5f501e609029bde7fcefe7266966f8effbb.png" float="left">
<img src="https://assets.kitploit.com/production/public/readmes/5614/5301e208d9853760eabdc14772c57a3639f28d71d050ee82d151bff93a76cedf.png" float="right">

#### Verschlüsselte Pseudo-Shell
Eine verschlüsselte Pseudo-Shell kann jederzeit vom Rootkit-Client angefordert werden und besteht aus einer TLS-Verbindung zwischen dem Rootkit und dem Rootkit-Client. Innerhalb der verschlüsselten Verbindung wird ein Übertragungsprotokoll zur Kommunikation von Befehlen und Informationen befolgt, ähnlich wie bei Klartext-Pseudo-Shells.

Das Starten einer verschlüsselten Pseudo-Shell erfordert, dass die Backdoor auf Trigger lauscht, die entweder muster-basierte Trigger oder beide Arten von Multi-Packet-Triggern akzeptiert:

<img src="https://assets.kitploit.com/production/public/readmes/5614/d4929247af8895f78522f28c4ac8087e74d76b91320c67e0b37ea841cd8869d0.png" float="left">
<img src="https://assets.kitploit.com/production/public/readmes/5614/6e2a72d04028212a4917397b75b052a4bdf3c0529fb6c5e336b7fc0a06571728.png" float="right">

#### Phantom-Shell
Eine Phantom-Shell verwendet eine Kombination von XDP- und TC-Programmen, um eBPF-Einschränkungen im Netzwerk zu überwinden, insbesondere dass es keine neuen Pakete generieren kann. Dazu modifiziert die Backdoor vorhandenen Datenverkehr, indem sie die Nutzlast mit den Daten der C2-Übertragung überschreibt. Die ursprünglichen Pakete gehen nicht verloren, da TCP-Retransmissionen das ursprüngliche Paket (ohne Änderungen) nach kurzer Zeit erneut senden.

Das folgende Protokoll veranschaulicht den Datenverkehr während der Ausführung eines Befehls mit einer Phantom-Shell:
<img src="https://assets.kitploit.com/production/public/readmes/5614/0aafe6b672757e4e9d37402c72ce14893a8a7f198030b2f2386df631c345d16b.png" float="left">

Eine Phantom-Shell wird vom Rootkit-Client angefordert, der einen von der Backdoor auszuführenden Befehl ausgibt:

<img src="https://assets.kitploit.com/production/public/readmes/5614/e07dec48ff6a22e708b6d4b0d762473cc6483f065011cd6cdccdac49f12f916b.png" float="left">

Nachdem die infizierte Maschine ein beliebiges TCP-Paket sendet, überschreibt die Backdoor es und der Client zeigt die Antwort an:

<img src="https://assets.kitploit.com/production/public/readmes/5614/19bea585b78a0bb1d52aa7c63ff05a0111551a0cc767732775491641e1dec021.png" float="left">


## Ausführungshijacking-Modul
Grundsätzlich kann ein eBPF-Programm nicht selbst die Ausführung eines Programms starten. Dieses Modul zeigt, wie ein bösartiges Rootkit harmlose Programme ausnutzen kann, um im Userspace bösartigen Code auszuführen. Dieses Modul erreicht zwei Ziele:
* Ausführen eines bösartigen Benutzerprogramms unter Ausnutzung der Ausführung eines anderen Programms.
* Für den Userspace transparent sein, d.h., wenn wir die Ausführung eines Programms so kapern, dass ein anderes ausgeführt wird, sollte das ursprüngliche Programm ebenfalls mit möglichst geringer Verzögerung ausgeführt werden.

Dieses Modul funktioniert, indem es den Syscall sys_execve() kapert und seine Argumente so modifiziert, dass stattdessen ein bösartiges Programm (*src/helpers/execve_hijack.c*) ausgeführt wird. Diese Modifikation wird so vorgenommen, dass das bösartige Programm dann das ursprüngliche Programm mit den ursprünglichen Argumenten ausführen kann, um im Userspace keinen Verdacht zu erregen. Das folgende Diagramm fasst die Gesamtfunktionalität zusammen:

<img src="https://assets.kitploit.com/production/public/readmes/5614/601610696506e303f91a7957ec2a3d61f73f7d0e036430a9f67bd80a6f19b2d3.png" float="left">

Die Argumente des ursprünglichen sys_execve()-Aufrufs werden so modifiziert, dass die ursprünglichen Argumente nicht verloren gehen (unter Verwendung von argv[0]), sodass das ursprüngliche Programm nach dem bösartigen ausgeführt werden kann:

<img src="https://assets.kitploit.com/production/public/readmes/5614/e483317a3bdac422cdfc49ca92acdcefe624ddceb5b2ed036ccec141c8d1e5e6.png" float="left">

Wir haben ein Beispieltestprogramm (*src/helpers/simple_execve.c*) zum Testen des Ausführungshijacking-Moduls integriert. Das Modul kann je nach Konfiguration auch jeden Aufruf im System kapern:

| DATEINAME | KONSTANTE | BESCHREIBUNG |
| ------------- | ------------- | ------------- |
| src/common/constants.h | PATH_EXECUTION_HIJACK_PROGRAM | Speicherort des bösartigen Programms, das bei erfolgreicher Ausführung eines sys_execve-Aufrufs ausgeführt werden soll |
| src/common/constants.h | EXEC_HIJACK_ACTIVE | Deaktivieren (0) oder Aktivieren (1) des Ausführungshijacking-Moduls |
| src/common/constants.h | TASK_COMM_RESTRICT_HIJACK_ACTIVE | Jeden sys_execve-Aufruf kapern (0) oder nur die in TASK_COMM_NAME_RESTRICT_HIJACK angegebenen (1) |
| src/common/constants.h | TASK_COMM_NAME_RESTRICT_HIJACK | Name des Programms, von dem aus sys_execve-Aufrufe gekapert werden sollen |

Nach einem erfolgreichen Hijack stoppt sich das Modul selbst. Das bösartige Programm *execve_hijack* lauscht auf Anfragen einer Klartext-Pseudo-Shell vom Rootkit-Client.

## Rootkit-Persistenz
Nach einem Neustart der infizierten Maschine werden alle eBPF-Programme aus dem Kernel entladen und das Userspace-Rootkit-Programm wird beendet. Selbst wenn das Rootkit automatisch erneut gestartet werden könnte, würde es nicht mehr über die Root-Rechte verfügen, die zum erneuten Anhängen der eBPF-Programme erforderlich sind. Das Rootkit-Persistenzmodul zielt darauf ab, diese beiden Herausforderungen zu bewältigen:
* Das Rootkit nach einem Neustart der Maschine automatisch und ohne Benutzereingriff ausführen.
* Sobald das Rootkit beim ersten Ausführen auf der Maschine Root-Rechte erlangt hat, muss es diese auch nach einem Neustart behalten.

TripleCross verwendet zwei geheime Dateien, die unter *cron.d* und *sudoers.d* erstellt werden, um diese Funktionalität zu implementieren. Diese Einträge stellen sicher, dass das Rootkit nach einem Neustart automatisch und mit vollen Rechten geladen wird. Diese Dateien werden vom Skript *deployer&#46;sh* erstellt und verwaltet:

<img src="https://assets.kitploit.com/production/public/readmes/5614/88500b779b9ad5ba771803900a8abfffd08f3a6be59518e690534779a4134cf8.png" float="left">
<img src="https://assets.kitploit.com/production/public/readmes/5614/5ae61ed98af6d7c8aa9448fed3de553712ffb5c63e95d98a6f4300ff407bce23.png" float="right">

Das Skript enthält zwei Konstanten, die für den zu infizierenden Benutzer auf dem Zielsystem konfiguriert werden müssen:

| SKRIPT | KONSTANTE | BESCHREIBUNG |
| ------------- | ------------- | ------------- |
| src/helpers/deployer.sh | CRON_PERSIST | Cron-Job zur Ausführung nach dem Neustart |
| src/helpers/deployer.sh | SUDO_PERSIST | Sudo-Eintrag zur Gewährung von passwortlosen Rechten |

## Rootkit-Tarnung
Das Persistenzmodul basiert auf dem Erstellen zusätzlicher Dateien, diese könnten jedoch irgendwann vom Systembesitzer oder von einem Software-Tool gefunden werden, sodass ein Risiko besteht, sie im System zu belassen. Zusätzlich müssen die Rootkit-Dateien an einem Ort gespeichert werden, an dem sie entdeckt werden könnten.

Unter Berücksichtigung des oben Gesagten bietet das Tarnungsmodul die folgende Funktionalität:
* Ein Verzeichnis vollständig vor dem Benutzer verstecken (damit wir alle Rootkit-Dateien darin verstecken können).
* Bestimmte Dateien in einem Verzeichnis verstecken (wir müssen die Persistenzdateien verstecken, können aber die Verzeichnisse *sudoers.d* oder *cron.d* nicht vollständig verstecken, da sie zum normalen Systembetrieb gehören).

Die vom Rootkit versteckten Dateien und Verzeichnisse können durch die folgenden Konfigurationskonstanten angepasst werden:

| DATEINAME | KONSTANTE | BESCHREIBUNG |
| ------------- | ------------- | ------------- |
| src/common/constants.h | SECRET_DIRECTORY_NAME_HIDE | Name des zu versteckenden Verzeichnisses |
| src/common/constants.h | SECRET_FILE_PERSISTENCE_NAME | Name der zu versteckenden Datei |

Standardmäßig versteckt TripleCross alle Dateien namens "*ebpfbackdoor*" und ein Verzeichnis namens "*SECRETDIR*". Dieses Modul wird automatisch nach der Rootkit-Installation aktiviert.

Die zur Erreichung dieser Funktionalität verwendete Technik besteht im Manipulieren der Argumente des Systemaufrufs sys_getdents():

<img src="https://assets.kitploit.com/production/public/readmes/5614/7f928351c1c07e7b6a534846c5374788449e03455191cddf8c7f02af2c885852.png" float="left">



## Lizenz
Das TripleCross-Rootkit und der Rootkit-Client sind unter der GPLv3-Lizenz lizenziert. Siehe [LICENSE](https://github.com/h3xduck/TripleCross/blob/master/LICENSE).

Die Bibliothek [RawTCP_Lib](https://github.com/h3xduck/RawTCP_Lib) ist unter der MIT-Lizenz lizenziert.

Das ursprüngliche Thesendokument und die enthaltenen Abbildungen werden unter [Creative Commons BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/) veröffentlicht.

Footnotes

  1. J. Dileo. Evil eBPF: Practical Abuses of an In-Kernel Bytecode Runtime. DEFCON 27. Folien ↩

  2. P. Hogan. Warping Reality: Creating and Countering the Next Generation of Linux Rootkits using eBPF. DEFCON 27. Präsentation ↩

  3. G. Fournier and S. Afchain. eBPF, I thought we were friends! DEFCON 29. Folien ↩

  4. Kris Nóva. Boopkit. github ↩

Tool herunterladen
VERZEICHNISBESCHREIBUNG
docsOriginaler Thesis-Test
src/clientQuellcode des Rootkit-Clients
src/client/libRawTCP_Lib-Common-Bibliothek
src/commonKonstanten 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/ebpfQuellcode der vom Rootkit verwendeten eBPF-Programme
src/helpersEnthä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/libbpfEnthält die in das Rootkit integrierte libbpf-Bibliothek
src/userQuellcode der vom Rootkit verwendeten Benutzerraum-Programme
src/vmlinuxHeader mit der Definition von Kernel-Datenstrukturen (dies ist die empfohlene Methode bei Verwendung von libbpf)
DATEINAMECONSTANTBESCHREIBUNG
src/common/constants.hTASK_COMM_NAME_INJECTION_
TARGET_TIMERFD_SETTIME
Name des Prozesses, der beim Systemaufruf sys_timerfd_settime gekapert werden soll
src/common/constants.hTASK_COMM_NAME_INJECTION_
TARGET_OPEN
Name des Prozesses, der beim Systemaufruf sys_openat gekapert werden soll
src/helpers/injection_lib.cATTACKER_IP & ATTACKER_PORTIP-Adresse und Port der Angreifer-Maschine