-sden.png) 
            Rust 编写的隐秘 Linux rootkit
特征
该rootkit由多个模块组成(这里指的是Rust模块,而不是内核模块):
- 防御规避:隐藏文件、进程、网络连接等。 
- 钩子:钩住系统调用和 IDT 
- 虚拟机管理程序:创建虚拟机来执行恶意代码 
- 持久性:使 rootkit 在重启后持久存在,并且能够抵御抑制 
- utils:各种实用程序 
-sden.png)
恶意代码从 C2 到 VM guest 虚拟机的执行过程:
-ccqp.png)
C2 将精心设计的 x86_64 助记符发送给 rootkit,rootkit 随后将其发送到虚拟机客户机执行。虚拟机客户机与主机隔离,可用于执行恶意代码。
内核看不到传入的恶意数据包,因为它们被 eBPF XDP 程序过滤并发送到 LKM 模块,而传出的数据包被 eBPF TC 程序修改。
钩子
钩子是rootkit的一项基本功能,kprobes 在Linux内核中实现。该技术拦截并重定向系统函数的执行,以监视或修改其行为。在此rootkit中,钩子 kprobes 提供了一种强大的机制,可以在不直接修改源代码的情况下与内核函数进行交互。
防御规避
为了确保隐蔽性,rootkit 采用了两种主要的反检测机制:
- 从内核模块列表中移除模块 
 :当一个内核模块被加载时,它会被添加到内核的模块列表中,可以通过- lsmod或 等 工具查看- /proc/modules。为了防止被检测到:
- 该 rootkit 会手动将自己从该列表中删除。 
- 尽管从列表中删除,该模块仍可运行,并能够继续执行其功能。 
- 钩住 - filldir64函数以隐藏特定目录
 为了隐藏rootkit使用的文件,需要钩住函数- filldir64。当进程读取目录内容(例如通过- getdents或- readdir系统调用)时,会调用此函数。
- 该 rootkit - filldir64使用 来拦截该函数- kprobes。
- 在执行期间,处理程序会检查返回给用户的目录条目。 
- 如果某个条目与 - /BLACKPILL-BLACKPILL目录(用于存储关键的 rootkit 文件)匹配,则会将其过滤掉并且不会返回给用户。
- 所有其他目录条目均正常返回,确保用户空间工具的透明度。 
- 使用 eBPF XDP 和 TC 程序修改入口和出口网络流量。 为了规范我们的恶意网络通信,我们使用 eBPF XDP(eXpress 数据路径)和 TC(流量控制)程序。这样,我们可以: 
- 通过匹配来自我们 C2 的精心设计的 TCP 有效负载签名,使用 XDP 程序在最低网络级别拦截特定的传入(入口)数据包,然后我们将其重定向到自定义 BPF 映射以进行 VM/LKM 处理。 
- 使用 TC 程序拦截特定的传出(出口)数据包,方法是匹配 VM/LKM 生成的 TCP 数据包,然后我们用 C2 响应数据覆盖其有效负载,从而对其进行修改。原始数据包会自动由 TCP 重新传输,从而保持合法流量的表象。 
虚拟机管理程序
我们的简单虚拟机管理程序是按照以下步骤实现的:
- 初始系统配置 
- 在 BIOS/UEFI 中启用硬件虚拟化扩展(Intel VT-x 或 AMD-V)(rootkit 不会执行此操作,必须事先启用)。 
- 配置控制寄存器(CR0、CR4 和 IA32_EFER)以切换到 VMX(虚拟机扩展(Intel))或 SVM(安全虚拟机(AMD))模式。 
- 进入 VMX 或 SVM 模式 - 初始化虚拟化特定的数据结构(Intel 的 VMCS 或 AMD 的 VMCB)。 
- 对处理器功能(例如 VM 退出)进行编程,以处理客户机和主机之间的交互。 
 
- 管理主机和客户机之间的转换 - 配置虚拟机的入口和出口点(VM entry/exit)。 
- 实现逻辑以拦截客户机发出的敏感系统调用并分析其影响。 
 
- 访客系统创建 - 为客户机分配内存并初始化其资源(寄存器、堆栈等)。 
 
- 沟通 - 使用 rootkit 和虚拟机管理程序之间的通信通道来传输命令或数据。 
 
持久性
持久性是任何 rootkit 的关键功能,使其即使在重新启动后也能保持对目标系统的控制。
在当前的实现中,持久化机制通过使用 /bin/touch 命令在文件系统中创建测试文件来演示其功能。此占位操作展示了rootkit执行特权操作的能力,并且可以扩展以实现更高级的持久化策略。
直链下载地址
https://lp.lmboke.com/blackpill-main.zip免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。
 
            
        