Rust 编写的隐秘 Linux rootkit

admin 2025年4月24日21:15:09评论0 views字数 1754阅读5分50秒阅读模式

特征

该rootkit由多个模块组成(这里指的是Rust模块,而不是内核模块):

  • 防御规避:隐藏文件、进程、网络连接等。
  • 钩子:钩住系统调用和 IDT
  • 虚拟机管理程序:创建虚拟机来执行恶意代码
  • 持久性:使 rootkit 在重启后持久存在,并且能够抵御抑制
  • utils:各种实用程序
Rust 编写的隐秘 Linux rootkit
恶意代码从 C2 到 VM guest 虚拟机的执行过程:
Rust 编写的隐秘 Linux rootkit

C2 将精心设计的 x86_64 助记符发送给 rootkit,rootkit 随后将其发送到虚拟机客户机执行。虚拟机客户机与主机隔离,可用于执行恶意代码。

内核看不到传入的恶意数据包,因为它们被 eBPF XDP 程序过滤并发送到 LKM 模块,而传出的数据包被 eBPF TC 程序修改。

钩子

钩子是rootkit的一项基本功能,kprobes 在Linux内核中实现。该技术拦截并重定向系统函数的执行,以监视或修改其行为。在此rootkit中,钩子 kprobes 提供了一种强大的机制,可以在不直接修改源代码的情况下与内核函数进行交互。

防御规避

为了确保隐蔽性,rootkit 采用了两种主要的反检测机制:

  1. 从内核模块列表中移除模块:当一个内核模块被加载时,它会被添加到内核的模块列表中,可以通过 lsmod 或 等 工具查看/proc/modules。为了防止被检测到:

    • 该 rootkit 会手动将自己从该列表中删除。
    • 尽管从列表中删除,该模块仍可运行,并能够继续执行其功能。
  2. 钩住 filldir64 函数以隐藏特定目录为了隐藏rootkit使用的文件,需要钩住函数 filldir64 。当进程读取目录内容(例如通过 getdents 或 readdir 系统调用)时,会调用此函数。

    • 该 rootkit filldir64 使用 来拦截该函数 kprobes
    • 在执行期间,处理程序会检查返回给用户的目录条目。
    • 如果某个条目与 /BLACKPILL-BLACKPILL 目录(用于存储关键的 rootkit 文件)匹配,则会将其过滤掉并且不会返回给用户。
    • 所有其他目录条目均正常返回,确保用户空间工具的透明度。
  3. 使用 eBPF XDP 和 TC 程序修改入口和出口网络流量。 为了规范我们的恶意网络通信,我们使用 eBPF XDP(eXpress 数据路径)和 TC(流量控制)程序。这样,我们可以:

    • 通过匹配来自我们 C2 的精心设计的 TCP 有效负载签名,使用 XDP 程序在最低网络级别拦截特定的传入(入口)数据包,然后我们将其重定向到自定义 BPF 映射以进行 VM/LKM 处理。
    • 使用 TC 程序拦截特定的传出(出口)数据包,方法是匹配 VM/LKM 生成的 TCP 数据包,然后我们用 C2 响应数据覆盖其有效负载,从而对其进行修改。原始数据包会自动由 TCP 重新传输,从而保持合法流量的表象。

虚拟机管理程序

我们的简单虚拟机管理程序是按照以下步骤实现的:

  1. 初始系统配置

    • 在 BIOS/UEFI 中启用硬件虚拟化扩展(Intel VT-x 或 AMD-V)(rootkit 不会执行此操作,必须事先启用)。
    • 配置控制寄存器(CR0、CR4 和 IA32_EFER)以切换到 VMX(虚拟机扩展(Intel))或 SVM(安全虚拟机(AMD))模式。
  2. 进入 VMX 或 SVM 模式

    • 初始化虚拟化特定的数据结构(Intel 的 VMCS 或 AMD 的 VMCB)。
    • 对处理器功能(例如 VM 退出)进行编程,以处理客户机和主机之间的交互。
  3. 管理主机和客户机之间的转换

    • 配置虚拟机的入口和出口点(VM entry/exit)。
    • 实现逻辑以拦截客户机发出的敏感系统调用并分析其影响。
  4. 访客系统创建

    • 为客户机分配内存并初始化其资源(寄存器、堆栈等)。
  5. 沟通

    • 使用 rootkit 和虚拟机管理程序之间的通信通道来传输命令或数据。

持久性

持久性是任何 rootkit 的关键功能,使其即使在重新启动后也能保持对目标系统的控制。

在当前的实现中,持久化机制通过使用 /bin/touch 命令在文件系统中创建测试文件来演示其功能。此占位操作展示了rootkit执行特权操作的能力,并且可以扩展以实现更高级的持久化策略。

下载地址:

https://github.com/DualHorizon/blackpill?tab=readme-ov-file#setup-development-environment

原文始发于微信公众号(TtTeam):Rust 编写的隐秘 Linux rootkit

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月24日21:15:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Rust 编写的隐秘 Linux rootkithttps://cn-sec.com/archives/3993159.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息