Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
rootkit-detection-ebpf-time-trace — Rilevamento delle attività di occultamento dei file dei rootkit tramite l'analisi degli spostamenti nei tempi di esecuzione delle funzioni del kernel. | Kitploit
Strumenti/GitHubGitHub/ait-aecid/rootkit-detection-ebpf-time-trace
Machine LearningRilevamento IntrusioniPaper e RicercaApprendimento e FormazioneRilevamento di Anomalie
GitHubait-aecid/rootkit-detection-ebpf-time-trace

rootkit-detection-ebpf-time-trace

Rilevamento delle attività di occultamento dei file dei rootkit tramite l'analisi degli spostamenti nei tempi di esecuzione delle funzioni del kernel.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
293131 mese faRevisionato da Kitploit

Rilevamento di Rootkit con eBPF Time Tracing

Questo repository contiene codice per raccogliere misurazioni temporali di funzioni del kernel manipolate dai rootkit quando nascondono file, nonché un metodo di rilevamento semi-supervisionato che analizza gli spostamenti dei tempi di esecuzione delle funzioni del kernel. Questa implementazione si basa sul rootkit open-source CARAXES, che avvolge la funzione filldir per manipolare i risultati delle enumerazioni di file, ad esempio durante l'esecuzione del comando ls. Le misurazioni temporali vengono effettuate su diverse funzioni della chiamata di sistema getdents (inclusa filldir) utilizzando sonde eBPF. Per il rilevamento applichiamo un semplice modello di machine learning basato su test statistici. Per spiegazioni dettagliate sulla raccolta dati e sui meccanismi di rilevamento delle anomalie, rimandiamo alla seguente pubblicazione. Se utilizzi una qualsiasi delle risorse fornite in questo repository, ti preghiamo di citare la seguente pubblicazione:

  • Landauer, M., Alton, L., Lindorfer, M., Skopik, F., Wurzenberger, M., & Hotwagner, W. (2025). Trace of the Times: Rootkit Detection through Temporal Anomalies in Kernel Activity. Under Review.

Rootkit e sonda eBPF

I passaggi seguenti configurano il rootkit e spiegano come raccogliere misurazioni temporali dalle funzioni del kernel. Se sei interessato solo al rilevamento delle anomalie e vuoi utilizzare i nostri set di dati pubblici, puoi saltare questa sezione.

Configurazione

Il rootkit e la sonda sono stati testati su kernel Linux 5.15-6.11 e Python 3.10. Per eseguire gli strumenti, scarica questo repository e installa le seguenti dipendenze necessarie per eseguire il rootkit e il meccanismo di probing.

ubuntu@ubuntu:~$ git clone https://github.com/ait-aecid/rootkit-detection-ebpf-time-trace.git
ubuntu@ubuntu:~$ cd rootkit-detection-ebpf-time-trace
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo apt update
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo apt install python3-bpfcc make gcc flex bison python3-pip linux-headers-$(uname -r)
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ pip install -r requirements.txt

Alcuni scenari richiedono risorse aggiuntive. In particolare, lo scenario ls-basic richiede la compilazione dello script ls-basic e lo scenario system load richiede l'installazione di stress-ng. Se non vuoi utilizzare questi scenari, puoi saltare le seguenti dipendenze.

ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ gcc -o ls-basic ls-basic.c
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo apt install stress-ng

I seguenti comandi sono obbligatori, perché il rootkit manipola di default la chiamata di sistema getdents, ma attualmente per il probing è supportata solo la manipolazione di filldir. Scarica il rootkit, sostituisci hooks.h con il file fornito in questo repository (questo garantisce che filldir venga agganciato invece di getdents) e compila il rootkit.

ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ cd ..
ubuntu@ubuntu:~$ git clone https://github.com/ait-aecid/caraxes.git
ubuntu@ubuntu:~$ cd caraxes/
ubuntu@ubuntu:~/caraxes$ cp ../rootkit-detection-ebpf-time-trace/hooks.h .
ubuntu@ubuntu:~/caraxes$ sudo make

Se hai problemi nell'installazione del rootkit o vuoi verificare che funzioni come previsto, consulta il ReadMe sulla pagina GitHub di CARAXES.

Successivamente, torna a questo repository e apri linux.py per modificare la variabile KERNEL_OBJECT_PATH in modo che punti alla cartella caraxes appena clonata; il percorso predefinito è "/home/ubuntu/caraxes/".

ubuntu@ubuntu:~/caraxes$ cd ../rootkit-detection-ebpf-time-trace
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ vim linux.py

Misurazione dei tempi delle funzioni del kernel

Ora sei pronto per eseguire il meccanismo di probing che inietterà automaticamente le sonde nel kernel, avvierà il rootkit, salverà i dati di misurazione temporale in un file e fermerà il rootkit. Per attivare le chiamate di sistema, lo script crea una directory con file da nascondere ed esegue ls 100 volte (modificabile con il flag -i) mentre interroga le sonde. Lo script consente di raccogliere misurazioni con il rootkit (flag --rootkit), senza rootkit (flag --normal), o entrambi, e supporta diversi scenari. Esegui lo scenario predefinito con il seguente comando:

ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo python3 probing.py --normal --rootkit
compiling eBPF probes...
probes compiled!

attached bpf probes:
iterate_dir-enter
iterate_dir-return
dcache_readdir-enter
dcache_readdir-return
filldir64-enter
filldir64-return
verify_dirent_name-enter
verify_dirent_name-return
touch_atime-enter
touch_atime-return

Running experiment with ls for 100 times.
Iteration 0...
detection_PID: 70133
Iteration 1...
detection_PID: 70134
...
Iteration 99...
detection_PID: 70338
polled 40 times!
done with the "rootkit version"
Experiment finished, saving output.
Saved data to events/events_2025-01-17T09:59:52.183801_rootkit.json.gz
412K    events/events_2025-01-17T09:59:52.183801_rootkit.json.gz

Le misurazioni sono memorizzate nella directory events. Visita la pagina di aiuto con python3 probing.py -h per conoscere altri parametri che consentono di impostare la raccolta dati in altri scenari (ad esempio usando ls-basic invece di ls o simulando il carico di sistema) e assegnare nomi a diverse esecuzioni (--description). Dai un'occhiata a repeat_seq.sh per alcuni comandi parametrizzati; infatti, abbiamo usato questo script per raccogliere i nostri set di dati pubblici. Nota che consideriamo solo alcune delle funzioni del kernel disponibili dalla chiamata di sistema getdents. Per specificare a quali funzioni il meccanismo di probing deve collegare le sonde, apri probing.py e aggiungi o rimuovi i nomi delle funzioni nella lista probe_points all'inizio del file.

Rilevamento delle anomalie

Eseguire l'algoritmo di rilevamento delle anomalie richiede solo l'installazione delle dipendenze Python. Se non lo hai già fatto nel passaggio precedente, esegui il seguente comando per installare i requisiti con pip.

ubuntu@ubuntu:~$ git clone https://github.com/ait-aecid/rootkit-detection-ebpf-time-trace.git
ubuntu@ubuntu:~$ cd rootkit-detection-ebpf-time-trace
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ pip install -r requirements.txt

Quindi, scarica ed estrai il set di dati che forniamo su Zenodo. Se hai generato i tuoi dati nel passaggio precedente e vuoi utilizzarli, salta questo passaggio.

ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ wget https://zenodo.org/records/14679675/files/events.zip
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ unzip events.zip

Ora sei pronto per eseguire il rilevamento delle anomalie come segue. Specifica la directory contenente i dati di misurazione (-d), la frazione di dati normali usati per l'addestramento (-t), la modalità operativa (-m) e la funzione di raggruppamento (-g). Lo script caricherà tutti i file dalla directory specificata, li dividerà in dati di addestramento e test (riassunti nell'output), calcolerà e stamperà le metriche di rilevamento e traccerà una matrice di confusione.

ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ python3 evaluate.py -d events -t 0.333 -m offline -g fun
100%|█████████████████████████████████████████████| 1250/1250 [02:47<00:00,  7.45it/s]
Processed all files from events
Scarica lo strumento