
Un rootkit Linux eBPF con backdoor, C2, iniezione di librerie, hijacking dell'esecuzione, funzionalità di persistenza e furtività.
TripleCross è un rootkit eBPF per Linux che dimostra le capacità offensive della tecnologia eBPF.
TripleCross è ispirato a precedenti progetti di implant in questo ambito, in particolare i lavori di Jeff Dileo al DEFCON 271, Pat Hogan al DEFCON 292, Guillaume Fournier e Sylvain Afchain sempre al DEFCON 293, e il Boopkit di Kris Nóva4. Riutilizziamo ed estendiamo alcune delle tecniche pionieristiche di queste precedenti esplorazioni delle capacità offensive della tecnologia eBPF.
Questo rootkit è stato creato per la mia tesi di laurea triennale presso UC3M. Maggiori dettagli sul suo progetto sono forniti nel documento della tesi.
Questo rootkit è puramente per scopi educativi e accademici. Il software è fornito "così com'è" e gli autori non sono responsabili per eventuali danni o incidenti che possano verificarsi durante il suo utilizzo.
Non tentare di utilizzare TripleCross per violare la legge. L'uso improprio del software e delle informazioni fornite può comportare accuse penali.
La figura seguente mostra l'architettura di TripleCross e i suoi moduli.
La libreria di socket raw RawTCP_Lib utilizzata per le trasmissioni del rootkit è di mia creazione e ha il proprio repository.
La tabella seguente descrive i principali file sorgente e directory per facilitarne la navigazione:
| DIRECTORY | COMANDO |
|---|---|
| docs | Documento originale della tesi |
| src/client | Codice sorgente del client rootkit |
| src/client/lib | Libreria condivisa RawTCP_Lib |
| src/common | Costanti e configurazione per il rootkit. Include anche l'implementazione di elementi comuni al lato eBPF e allo spazio utente del rootkit, come il ring buffer |
| src/ebpf | Codice sorgente dei programmi eBPF utilizzati dal rootkit |
| src/helpers | Include programmi per testare la funzionalità di diversi moduli del rootkit, e anche il programma malevolo e la libreria utilizzati rispettivamente nei moduli di hijacking dell'esecuzione e di injection di librerie |
| src/libbpf | Contiene la libreria libbpf integrata con il rootkit |
| src/user | Codice sorgente dei programmi in spazio utente utilizzati dal rootkit |
| src/vmlinux | Header contenenti la definizione delle strutture dati del kernel (questo è il metodo consigliato quando si utilizza libbpf) |
Questo progetto di ricerca è stato testato nei seguenti ambienti:
| DISTRIBUZIONE | KERNEL | GCC | CLANG | GLIBC | |
|---|---|---|---|---|---|
| VERSIONE | Ubuntu 21.04 | 5.11.0 | 10.3.0 | 12.0.0 | 2.33 |
Raccomandiamo l'uso di Ubuntu 21.04, che per impostazione predefinita includerà le versioni del software qui mostrate. Altrimenti, alcuni dei problemi che potresti incontrare sono descritti qui.
Il codice sorgente del rootkit viene compilato utilizzando due Makefile.```
cd src make all
cd client make
La seguente tabella descrive in dettaglio lo scopo di ciascun Makefile:
| MAKEFILE | COMANDO | DESCRIZIONE | FILE RISULTANTI |
| ------------- | ------------- | ------------- | ------------- |
| src/client/Makefile | make | Compilazione del client rootkit | src/client/injector |
| src/Makefile | make help | Compilazione dei programmi per testare le capacità del rootkit, e il programma malevolo e la libreria dei moduli di hijacking dell'esecuzione e di iniezione di librerie, rispettivamente | 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 | Compilazione del rootkit utilizzando la libreria libbpf | src/bin/kit |
| src/Makefile | make tckit | Compilazione del programma TC egress del rootkit | src/bin/tc.o |
### Installazione
Una volta generati i file del rootkit in src/bin/, i programmi *tc.o* e *kit* devono essere caricati in ordine. Nell'esempio seguente, la backdoor del rootkit opererà nell'interfaccia di rete *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
Ci sono due script, packager.sh e deployer.sh, che compilano e installano il rootkit automaticamente, proprio come farebbe un attaccante in uno scenario reale.
L'esecuzione di packager.sh genererà tutti i file del rootkit nella directory apps/.
L'esecuzione di deployer.sh installerà il rootkit e creerà i file di persistenza.