Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
rootkit-detection-ebpf-time-trace — Détection des activités de dissimulation de fichiers par rootkits via l'analyse des décalages dans les temps d'exécution des fonctions du noyau. | Kitploit
Outils/GitHubGitHub/ait-aecid/rootkit-detection-ebpf-time-trace
Apprentissage AutomatiqueDétection d'IntrusionArticles et RechercheApprentissage et ÉducationDétection d'Anomalies
GitHubait-aecid/rootkit-detection-ebpf-time-trace

rootkit-detection-ebpf-time-trace

Détection des activités de dissimulation de fichiers par rootkits via l'analyse des décalages dans les temps d'exécution des fonctions du noyau.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
293il y a 11 moisVérifié par Kitploit

Détection de rootkits par traçage temporel eBPF

Ce dépôt contient du code pour collecter des mesures de temps des fonctions du noyau qui sont manipulées par les rootkits lorsqu'ils masquent des fichiers, ainsi qu'une méthode de détection semi-supervisée qui analyse les décalages des temps d'exécution des fonctions du noyau. Cette implémentation repose sur le rootkit open source CARAXES, qui enveloppe la fonction filldir pour manipuler les résultats des énumérations de fichiers, par exemple lors de l'exécution de la commande ls. Les mesures de temps sont effectuées sur plusieurs fonctions de l'appel système getdents (y compris filldir) à l'aide de sondes eBPF. Pour la détection, nous appliquons un modèle d'apprentissage automatique simple basé sur des tests statistiques. Nous renvoyons à la publication suivante pour des explications détaillées sur la collecte de données et les mécanismes de détection d'anomalies. Si vous utilisez l'une des ressources fournies dans ce dépôt, veuillez citer la publication suivante :

  • 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 et sondage eBPF

Les étapes suivantes configurent le rootkit et expliquent comment collecter des mesures de temps à partir des fonctions du noyau. Si vous n'êtes intéressé que par la détection d'anomalies et que vous souhaitez utiliser nos ensembles de données publics, vous pouvez ignorer cette section.

Configuration

Le rootkit et le mécanisme de sondage ont été testés sur les noyaux Linux 5.15-6.11 et Python 3.10. Pour exécuter les outils, téléchargez ce dépôt et installez les dépendances suivantes requises pour exécuter le rootkit et le mécanisme de sondage.

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

Certains scénarios nécessitent des ressources supplémentaires. Plus précisément, le scénario ls-basic nécessite de compiler le script ls-basic et le scénario system load nécessite d'installer stress-ng. Si vous ne souhaitez pas utiliser ces scénarios, vous pouvez ignorer les dépendances suivantes.

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

Les commandes suivantes sont obligatoires, car le rootkit manipule l'appel système getdents par défaut ; toutefois, seule la manipulation de filldir est actuellement prise en charge pour le sondage. Téléchargez le rootkit, remplacez hooks.h par le fichier fourni dans ce dépôt (cela garantit que filldir est interceptée plutôt que getdents), puis compilez le rootkit.

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

Si vous rencontrez des difficultés pour installer le rootkit ou si vous souhaitez tester son bon fonctionnement, consultez le ReadMe sur la page GitHub CARAXES.

Ensuite, revenez à ce dépôt et ouvrez linux.py pour modifier la variable KERNEL_OBJECT_PATH afin qu'elle pointe vers le dossier caraxes que vous venez de cloner ; le chemin par défaut est "/home/ubuntu/caraxes/".

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

Mesure des temps des fonctions du noyau

Vous êtes maintenant prêt à exécuter le mécanisme de sondage qui injectera automatiquement des sondes dans le noyau, démarrera le rootkit, stockera les mesures de temps dans un fichier, puis arrêtera le rootkit. Pour déclencher les appels système, le script crée un répertoire contenant des fichiers à masquer et exécute ls 100 fois (modifiable avec l'option -i) tout en interrogeant les sondes. Le script permet de collecter des mesures avec le rootkit (option --rootkit), sans le rootkit (option --normal), ou les deux, et prend en charge plusieurs scénarios. Exécutez le scénario par défaut avec la commande suivante :

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

Les mesures sont stockées dans le répertoire events. Consultez la page d'aide avec python3 probing.py -h pour en savoir plus sur les autres paramètres permettant de configurer la collecte de données dans d'autres scénarios (par exemple, utiliser ls-basic au lieu de ls ou simuler une charge système) et d'attribuer des noms aux différentes exécutions (--description). Consultez repeat_seq.sh pour quelques commandes paramétrées ; en fait, nous avons utilisé ce script pour collecter nos ensembles de données publics. Notez que nous ne considérons que certaines fonctions du noyau disponibles dans l'appel système getdents. Pour spécifier les fonctions auxquelles le mécanisme de sondage doit attacher des sondes, ouvrez probing.py et ajoutez ou supprimez des noms de fonctions dans la liste probe_points au début du fichier.

Détection d'anomalies

L'exécution de l'algorithme de détection d'anomalies nécessite uniquement d'installer les dépendances Python. Si vous ne l'avez pas déjà fait à l'étape précédente, exécutez la commande suivante pour installer les dépendances avec pip.

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

Ensuite, téléchargez et extrayez l'ensemble de données que nous fournissons sur Zenodo. Si vous avez généré vos propres données à l'étape précédente et souhaitez les utiliser, ignorez cette étape.

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

Vous êtes maintenant prêt à exécuter la détection d'anomalies comme suit. Spécifiez le répertoire contenant les données de mesure (-d), la fraction de données normales utilisées pour l'entraînement (-t), le mode de fonctionnement (-m) et la fonction de regroupement (-g). Le script chargera tous les fichiers du répertoire spécifié, les répartira en données d'entraînement et de test (résumé dans la sortie), calculera et affichera les métriques de détection, et tracera une matrice de confusion.

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

Normal batches: 750
  Normal batches for training: 250
    default: 50
    file_count: 50
    system_load: 50
    ls_basic: 50
    filename_length: 50
  Normal batches for testing: 500
    default: 100
    file_count: 100
    system_load: 100
    ls_basic: 100
    filename_length: 100
Anomalous batches: 500
  default: 100
  file_count: 100
  system_load: 100
  ls_basic: 100
  filename_length: 100

Results (Run 1)
 Threshold=3.5111917342151415e-16
 Time=0.0027740001678466797
 TP=499
 FP=9
 TN=491
 FN=1
 TPR=R=0.998
 FPR=0.018
 TNR=0.982
 P=0.9822834645669292
 F1=0.9900793650793651
 ACC=0.99
 MCC=0.9801254640896192

Confusion Matrix (Run 1)
Predicted
default     file_count  system_load ls_basic    filename_length
Pos   Neg   Pos   Neg   Pos   Neg   Pos   Neg   Pos   Neg
100   0     100   0     100   0     100   0     100   0      Pos - Actual default
3     97    100   0     99    1     100   0     2     98     Neg - Actual default
100   0     100   0     100   0     100   0     100   0      Pos - Actual file_count
100   0     0     100   100   0     100   0     100   0      Neg - Actual file_count
100   0     100   0     100   0     100   0     100   0      Pos - Actual system_load
100   0     100   0     4     96    100   0     100   0      Neg - Actual system_load
100   0     100   0     100   0     99    1     100   0      Pos - Actual ls_basic
100   0     100   0     100   0     2     98    100   0      Neg - Actual ls_basic
99    1     100   0     100   0     100   0     100   0      Pos - Actual filename_length
3     97    100   0     99    1     100   0     0     100    Neg - Actual filename_length

Consultez le manuel avec python3 evaluate.py -h pour en savoir plus sur les paramètres disponibles de ce script. Jetez également un œil à demo.sh pour voir les commandes paramétrées que nous avons utilisées pour l'évaluation dans notre article.

Citation

Si vous utilisez l'une des ressources fournies dans ce dépôt, veuillez citer la publication suivante :

  • 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.
Télécharger l’outil