
Singularity 是一个针对现代 6.x 系列 Linux 内核设计的高级内核模块(LKM)Rootkit。其核心能力建立在 ftrace 基础设施之上,通过精巧的系统调用挂钩技术实现深度的系统隐身,为研究内核安全与对抗提供了新的视角。
该 Rootkit 在内核层运行,能够提供一系列复杂的隐藏与规避功能:
- 进程隐藏:使目标进程对系统监控工具完全不可见。
- 文件与目录隐藏:支持基于模式匹配的文件系统对象隐藏。
- 网络隐形:隐藏 TCP/UDP 连接与监听端口。
- 权限提升:提供多种方式即时获取 root 权限。
- 日志净化:实时过滤内核日志 (
dmesg) 与系统日志 (journalctl) 中的敏感信息。
- 自我隐藏:从内核模块列表 (
lsmod) 和 /sys/module 目录中移除自身。
- 远程访问:支持通过 ICMP 协议触发的反向 Shell,并具备自动隐藏功能。
- 反探测:拦截 eBPF 系统调用以对抗基于 eBPF 的检测工具,并使用 io_uring 机制进行 I/O 操作,同时能阻止新的内核模块加载。
- 审计规避:在网络链路层对源自隐藏进程的审计消息进行过滤。
核心特性详解
Singularity 集成了多项先进技术以实现其强大的隐身与规避能力:
- 环境触发的权限提升:可通过预定义的信号或环境变量触发,实现权限提升。
- 完整的进程隐藏:不仅从
/proc 文件系统隐藏,还能规避绝大多数系统监控工具的扫描。
- 模式化文件隐藏:基于通配符模式,灵活隐藏文件系统中的文件与目录。
- 网络连接隐蔽:对
netstat、ss 等网络状态工具以及底层数据包分析器隐藏连接。
- 内核日志实时过滤:动态清理
dmesg 和 journalctl 中的 Rootkit 活动痕迹。
- 自动清理内核污染标志:在触发内核污染标志后,自动将其恢复正常状态。
- eBPF 检测绕过:通过挂钩 BPF 系统调用来阻止基于 eBPF 的安全检测工具加载和运行。
- io_uring 保护:利用异步 I/O 接口
io_uring 执行操作,避免同步 I/O 路径上的监控。
- 模块加载防护:防止系统中加载新的内核模块,巩固自身地位。
- 日志掩蔽:全方位过滤内核消息与系统日志。
- 规避传统检测工具:能够绕过
unhide、chkrootkit、rkhunter 等经典 Rootkit 检测器的扫描。
- 自动化子进程追踪与隐藏:通过内核追踪点(tracepoint)挂钩,自动隐藏由被隐藏进程创建的所有子进程。
- 多架构支持:支持 x86_64 (x64) 和 IA-32 (ia32) 架构。
- 网络层过滤:实现网络数据包级别的过滤,并提供原始套接字(raw socket)保护。
- 全面的文件I/O防护:防止通过所有变体的文件读写操作(如
read、write、sendfile 等)暴露隐藏文件。
- 审计消息过滤:在网络链路上过滤审计消息,规避基于审计子系统的检测机制。
|