Linux内核模块:重新劫持虚拟文件系统的迭代功能

时间:2015-01-17 12:23:01

标签: c linux kernel rootkit

从用户隐藏进程的一种流行方法是劫持/ proc目录的iterate函数。这可以按如下方式完成:

struct file *filep = filp_open("/proc", O_RDONLY, 0));
filep->f_op->iterate = p // We swap the pointer with our hacked iterate

我正在研究一种检测方法,我希望恢复原始的迭代功能(假设它已经被劫持)。有没有办法找到用于/ proc目录的原始迭代函数?

2 个答案:

答案 0 :(得分:1)

您可以尝试启发式方法。原始函数的地址将与其他proc函数位于同一区域,而劫持函数的地址将明显不同。然后解析劫持器功能的机器代码。劫持者函数必须在返回之前转移到原始函数,因此您查看所有分支指令并检查哪一个适合其他原始地址。

答案 1 :(得分:0)

我假设你知道你正在使用哪个版本的内核?

只需将该版本的函数复制到您的模块中,并使用您的副本地址覆盖迭代指针。

这应该在功能上是等效的,尽管没有人知道胭脂模块可能释放出来的其他邪恶。