
Un rootkit Linux eBPF avec une backdoor, C2, injection de bibliothèques, détournement d'exécution, persistance et capacités de furtivité.
TripleCross est un rootkit Linux eBPF qui démontre les capacités offensives de la technologie eBPF.
TripleCross s'inspire de conceptions d'implantations antérieures dans ce domaine, notamment les travaux de Jeff Dileo à DEFCON 271, Pat Hogan à DEFCON 292, Guillaume Fournier et Sylvain Afchain également à DEFCON 293, et le Boopkit de Kris Nóva4. Nous réutilisons et étendons certaines des techniques pionnières de ces précédentes explorations des capacités offensives de la technologie eBPF.
Ce rootkit a été créé pour mon mémoire de licence à l'UC3M. Plus de détails sur sa conception sont fournis dans le document de mémoire.
Ce rootkit est purement à des fins éducatives et académiques. Le logiciel est fourni « en l'état » et les auteurs ne sont pas responsables des dommages ou incidents qui pourraient survenir lors de son utilisation.
N'essayez pas d'utiliser TripleCross pour enfreindre la loi. Une mauvaise utilisation du logiciel et des informations fournies peut entraîner des poursuites pénales.
La figure suivante montre l'architecture de TripleCross et de ses modules.
La bibliothèque de sockets brutes RawTCP_Lib utilisée pour les transmissions du rootkit est de ma paternité et possède son propre dépôt.
Le tableau suivant décrit les principaux fichiers et répertoires du code source pour faciliter la navigation :
| RÉPERTOIRE | COMMANDE |
|---|---|
| docs | Document original du mémoire |
| src/client | Code source du client rootkit |
| src/client/lib | Bibliothèque partagée RawTCP_Lib |
| src/common | Constantes et configuration du rootkit. Inclut également l'implémentation d'éléments communs au côté eBPF et espace utilisateur du rootkit, tels que le tampon annulaire |
| src/ebpf | Code source des programmes eBPF utilisés par le rootkit |
| src/helpers | Inclut des programmes pour tester la fonctionnalité de plusieurs modules du rootkit, ainsi que le programme malveillant et la bibliothèque utilisés respectivement dans les modules de détournement d'exécution et d'injection de bibliothèque |
| src/libbpf | Contient la bibliothèque libbpf intégrée au rootkit |
| src/user | Code source des programmes espace utilisateur utilisés par les rootkits |
| src/vmlinux | En-têtes contenant la définition des structures de données du noyau (c'est la méthode recommandée lors de l'utilisation de libbpf) |
Ce projet de recherche a été testé dans les environnements suivants :
| DISTRIBUTION | KERNEL | GCC | CLANG | GLIBC | |
|---|---|---|---|---|---|
| VERSION | Ubuntu 21.04 | 5.11.0 | 10.3.0 | 12.0.0 | 2.33 |
Nous recommandons d'utiliser Ubuntu 21.04, qui inclura par défaut les versions logicielles indiquées ici. Sinon, certains des problèmes que vous pourriez rencontrer sont décrits ici.
Le code source du rootkit est compilé à l'aide de deux Makefiles.```
cd src make all
cd client make
Le tableau suivant décrit en détail l'objectif de chaque Makefile :
| MAKEFILE | COMMANDE | DESCRIPTION | FICHIERS RÉSULTANTS |
| ------------- | ------------- | ------------- | ------------- |
| src/client/Makefile | make | Compilation du client du rootkit | src/client/injector |
| src/Makefile | make help | Compilation des programmes de test des capacités du rootkit, ainsi que du programme malveillant et de la bibliothèque des modules de détournement d'exécution et d'injection de bibliothèque, respectivement | 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 | Compilation du rootkit à l'aide de la bibliothèque libbpf | src/bin/kit |
| src/Makefile | make tckit | Compilation du programme de sortie TC du rootkit | src/bin/tc.o |
### Installation
Une fois les fichiers du rootkit générés dans src/bin/, les programmes *tc.o* et *kit* doivent être chargés dans l'ordre. Dans l'exemple suivant, la porte dérobée du rootkit fonctionnera sur l'interface réseau *enp0s3* :```
// 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
Il y a deux scripts, packager.sh et deployer.sh, qui compilent et installent le rootkit automatiquement, comme le ferait un attaquant dans un scénario d'attaque réel.
L'exécution de packager.sh génère tous les fichiers du rootkit dans le répertoire apps/.
L'exécution de deployer.sh installe le rootkit et crée les fichiers de persistance.
J. Dileo. Evil eBPF: Practical Abuses of an In-Kernel Bytecode Runtime. DEFCON 27. diapositives ↩
P. Hogan. Warping Reality: Creating and Countering the Next Generation of Linux Rootkits using eBPF. DEFCON 27. présentation ↩
G. Fournier and S. Afchain. eBPF, I thought we were friends! DEFCON 29. diapositives ↩