我正在寻找一种构建内核模块的方法,该模块可以隐藏 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
我在网页上读到可以使执行此操作“相当容易”
有什么建议吗?