前言: 在 Linux 的世界里,Rootkit 就像是潜伏在暗影中的刺客。今天我们要拆解的这位选手——Singularity,正如其名“奇点”,它不是普通的毛贼,而是一个针对现代内核(5.x/6.x)设计的、教科书级别的“最终 BOSS”。
作者开发它的目的很单纯:在不破坏系统稳定性的前提下,实现极致的隐身与权限掌控。准备好你的咖啡,我们要进入 Ring 0 层的深渊了。
第一章:BOSS 的基本修养(项目愿景)
一个优秀的 Rootkit 不能只会“暴力破坏”,它得优雅。Singularity 的核心设计哲学只有三点:
隐匿性(Stealth):让你看不见、摸不着、查不到。
持久化(Persistence):只要你不关机,我就是这里的王。
功能性(Capability):提权、反弹 Shell、监控网络,样样精通。
第二章:VFS 劫持——“你看,这儿真没文件”
在 Linux 里,一切皆文件。想藏住自己的代码,就得在VFS(虚拟文件系统)上动刀子。
技术细节:Singularity 没有去改那个早已被各种安全软件盯死的“系统调用表(Syscall Table)”,它选择去 Hookfilldir64。
第三章:Ftrace 钩子——“我借了官方的梯子”
现在的内核有CR4.WP位保护,强行修改内核代码段会直接导致 kernel panic(原地炸车)。Singularity 玩了一招借刀杀人:利用内核自带的调试工具Ftrace。
第四章:网络隐身——“幽灵数据包”
如果你用tcpdump发现流量异常,那 Rootkit 就暴露了。Singularity 接入了Netfilter(就是 iptables 的内核亲爹)。
第五章:魔法信号提权——“芝麻开门”
这是全书最精彩的部分。如何从一个普通用户瞬间变成 Root?Singularity 不需要复杂的溢出漏洞,它监听信号(Signal)。
操作:作者定义了一个特殊的信号(比如 48 号信号)。当 Rootkit 收到这个信号时,它会检查发送者的“暗号”。
内核炼金术:一旦确认过眼神,Rootkit 会直接在内核态调用prepare_kernel_cred(NULL)创建一个全能的神级凭证,并用commit_creds把它塞给当前进程。
结果:你的 Bash 提示符瞬间从$变成#。没有日志,没有告警,只有纯粹的力量。
第六章:反侦察——“别找了,我不在那儿”
为了防止被rkhunter这种工具扫描,Singularity 会在kallsyms(内核符号表)里玩消失。它会动态地抹去自己的痕迹,让那些试图通过符号表找它的软件集体“抓瞎”。
总结:关于 Singularity 的思考
这篇文章的作者最后提醒我们:内核是操作系统的最后防线,也是最脆弱的乐园。Singularity 展示了当一个开发者足够了解内核结构时,他能拥有多么恐怖的掌控力。
小编(LeisureLinux)感言:看完这篇文章,是不是觉得手里的sudo突然不香了?这种对内核底层的极致追求,正是 Linux 迷人的魅力所在。
想看更多类似的内核黑科技?
原文链接:https://blog.kyntra.io/Singularity-A-final-boss-linux-kernel-rootkit
译者:LeisureLinux(已获得逻辑授权及幽默加持)
互动: 如果你能 Hook 一个内核函数,你最想 Hook 哪个?”来留言说说吧!