是否可以在现代内核上从 ps 或 top 隐藏进程?

是否可以在现代内核上从 ps 或 top 隐藏进程?

我正在寻找一种构建内核模块的方法,该模块可以隐藏 ps 和 top 命令的进程。我正在使用的内核是3.13.0。我不确定我应该弄乱什么样的内核数据结构。我并不是在寻找功能齐全、无法追踪或难以检测的 Rootkit,我只是想开始隐藏一个我硬编码的进程,但最终我希望能够构建一个 Rootkit 来攻击在此期间创建的所有进程。加载的模组。

我开始跟踪 ps 命令,并发现我试图隐藏的进程类似这样:

stat64("/proc/11914", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/11914/stat", O_RDONLY)      = 6
read(6, "11914 (dummy) S 3184 11914 3184 "..., 1024) = 279
close(6)                                = 0
open("/proc/11914/status", O_RDONLY)    = 6
read(6, "Name:\tdummy\nState:\tS (sleeping)\n"..., 1024) = 807
close(6) 

我看到它正在尝试打开,/proc所以我尝试隐藏/proc/<pid>文件夹。我设法劫持ls系统调用以不显示此文件夹,但显然这不起作用。

我不太确定接下来会发生什么,我检查了然后open()系统调用发现我是否尝试过滤我的进程的字符串匹配,这将是一个非常糟糕的方法。

也许在我的内核版本中,有一个更容易搞乱的结构。因为它是一个现代内核,所以我task_struct没有next_task,并且prev_task我在网页上读到可以使执行此操作“相当容易”

有什么建议吗?

相关内容