1. 项目定位与用途
Diamorphine 是一个 LKM(可加载内核模块)形式的 rootkit,专门设计用于 Linux 内核环境。其核心定位是提供内核级的隐蔽操作能力,包括进程、文件的隐藏以及用户权限的提升。该项目主要面向安全研究领域,用于分析攻击者如何在系统中隐藏恶意活动,或用于红队演练中模拟高级持久化威胁。它并非通用安全工具,而是专注于演示内核层的隐藏技术,帮助理解操作系统底层安全机制。
Diamorphine 是一个支持多版本Linux内核的LKM rootkit,通过信号控制实现进程隐藏、文件隐身和用户提权。本页提供项目定位、安装编译步骤、信号使用方式及卸载方法,适用于安全研究与红队演练。
Diamorphine 是一个针对 Linux 内核的 LKM rootkit,支持 2.6.x 至 6.x 版本及 x86/x86_64/ARM64 架构,通过信号控制实现进程与文件隐藏、用户权限提升,主要用于内核级隐蔽操作研究。
Diamorphine 是一个 LKM(可加载内核模块)形式的 rootkit,专门设计用于 Linux 内核环境。其核心定位是提供内核级的隐蔽操作能力,包括进程、文件的隐藏以及用户权限的提升。该项目主要面向安全研究领域,用于分析攻击者如何在系统中隐藏恶意活动,或用于红队演练中模拟高级持久化威胁。它并非通用安全工具,而是专注于演示内核层的隐藏技术,帮助理解操作系统底层安全机制。
Diamorphine 解决了在入侵系统中实现深度隐蔽和权限持久化的问题。具体而言,它允许攻击者或研究人员:1)隐藏特定进程,使其不显示在进程列表中;2)隐藏文件或目录,避免被常规文件系统浏览发现;3)将普通用户提升为 root,绕过用户权限限制;4)使 rootkit 自身模块在加载后不可见,增加检测难度。这些功能共同实现了内核层的“隐身”与“权限维持”,模拟了真实高级威胁的行为模式。
该项目的适用场景主要集中在安全研究与红队演练。对于安全研究人员,Diamorphine 可用于分析 rootkit 的工作原理、测试内核安全监控工具的检测能力,或作为教学示例展示内核挂钩技术。对于红队成员,它可在授权演练中用于模拟攻击者获取持久化、隐蔽访问的战术,评估防御体系对内核级威胁的响应。需要注意的是,该项目仅限在合法授权的测试环境中使用,任何未经授权的使用均违反法律与伦理准则。
安装 Diamorphine 需要 root 权限并遵循以下步骤:首先验证内核版本是否在支持范围(2.6.x/3.x/4.x/5.x/6.x)内,使用命令 `uname -r`;然后克隆仓库 `git clone https://github.com/m0nad/Diamorphine` 并进入目录 `cd Diamorphine`;接着执行 `make` 编译生成 diamorphine.ko 模块;最后以 root 身份加载模块 `insmod diamorphine.ko`。安装过程依赖标准内核头文件与构建工具,如 gcc、make 及对应内核版本的开发包。仓库中未明确给出依赖列表,但通常需要内核头文件匹配当前运行内核。
模块加载后自动进入隐藏状态,无法通过常规命令(如 lsmod)查看。其功能通过向任意进程发送特定 Unix 信号触发:发送信号 31(kill -31 <pid>)可隐藏或取消隐藏目标进程;发送信号 63(kill -63 <pid>)切换模块自身的可见性;发送信号 64(kill -64 <pid>)使目标用户获得 root 权限。此外,创建以 MAGIC_PREFIX(定义于 diamorphine.h)开头的文件或目录将自动隐藏。卸载模块前必须先发送 `kill -63 0` 使模块可见,然后执行 `rmmod diamorphine`。所有操作均需 root 权限。
Diamorphine 的实现基于 LKM 技术,通过挂钩内核关键函数(如进程列表遍历、文件系统查询)实现隐藏。其特点包括:默认加载即隐身,增加检测难度;使用信号作为控制通道,避免创建额外可见实体;支持多架构(x86/x86_64/ARM64)与多内核版本,体现较好的兼容性设计。文件隐藏依赖于 MAGIC_PREFIX 前缀匹配,具体值在源码中定义。项目参考了多篇经典内核 hacking 文献,如 THC 的 LKM HACKING 和 Phrack 论文。需要注意的是,此类工具可能触发安全软件告警,且内核版本不匹配时可能导致系统不稳定。
由于模块默认隐藏,需先发送 kill -63 0 使其可见,然后以 root 身份执行 rmmod diamorphine 完成卸载。
向目标进程的 PID 发送信号 31(例如 kill -31 <pid>),每次发送会切换该进程的隐藏状态。
向任意 PID 发送信号 64(kill -64 <pid>),该用户将获得 root 权限。具体生效用户与发送信号时的上下文相关。
文件名或目录名以 MAGIC_PREFIX 开头时会自动隐藏,该前缀常量定义在 diamorphine.h 头文件中,仓库未明确给出具体值。
根据 README,它支持 Linux 内核 2.6.x、3.x、4.x、5.x、6.x 版本,以及 x86、x86_64 和 ARM64 架构。实际兼容性可能受具体内核配置影响。