一种Linux下隐藏文件的新方法
一. 概述 目前通用的隐藏文件方法还是hooksys_getdents64系统调用, 大致流程就是先调用原始的sys_getdents64系统调用,然后在在buf中做过滤.修改sys_call_table是比较原始的rk技术了,碰到好点的管理员, 基本上gdb一下vmlinux就能检测出来. 如何想做到更加隐蔽的话,就要寻找新的技术. inline hook也是目前比较流行的做法,不容易检测.本文通过讲解一种利用inline hook内核中某函数, 来达到隐藏文件的方法. 二. 剖析sys_getdnts64系统调用 想隐藏文件, 还是要从sys_dents64系统调用下手. 去看下它在内核中是如何实现的. asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count) error = -EFAULT; error = -EBADF; buf.current_dir = dirent; error = vfs_readdir(file, filldir64, &buf); out_putf:
源代码在同一文件中: int vfs_readdir(struct file *file, filldir_t filler, void *buf)
int res = -ENOTDIR; if (!file->f_op || !file->f_op->readdir) goto out; res = security_file_permission(file, MAY_READ); res = mutex_lock_killable(&inode->i_mutex); res = -ENOENT; EXPORT_SYMBOL(vfs_readdir);它有3个参数,第一个是通过fget得到的file结构指针, 第2个通过结合上下文可得知,这是一个回调函数用来填充第3个参数开始的用户空间的指针. 接着看看它具体是怎么实现的. 到这里我们可以断定通过hook vfs_readdir函数对buf做过滤还是可以完成隐藏文件的功能.vfs_readdir的地址是导出的, 这样就不用复杂的方法找它的地址了. 但是还有没有 |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |