基于linux平台下文件隐藏技术的研究

上传人:ldj****22 文档编号:33104895 上传时间:2018-02-13 格式:DOC 页数:4 大小:26.50KB
返回 下载 相关 举报
基于linux平台下文件隐藏技术的研究_第1页
第1页 / 共4页
基于linux平台下文件隐藏技术的研究_第2页
第2页 / 共4页
基于linux平台下文件隐藏技术的研究_第3页
第3页 / 共4页
基于linux平台下文件隐藏技术的研究_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于linux平台下文件隐藏技术的研究》由会员分享,可在线阅读,更多相关《基于linux平台下文件隐藏技术的研究(4页珍藏版)》请在金锄头文库上搜索。

1、基于 linux 平台下文件隐藏技术的研究摘要:本文从应用层用户使用的终端命令出发,跟踪其使用的系统调用,在深入分析与虚拟文件系统相关的系统调用原理上,对在虚拟文件系统层级的文件隐藏方法进行了研究。关键词:文件隐藏 虚拟文件系统 系统调用Linux 操作系统由于其高效,稳定,网络功能强大等特点在当今的服务器及智能手机操作系统(基于 linux 内核)上占据着大部分份额。然而,正是由于其应用广泛,导致其安全问题日益突出。目前大部分后门程序运行在内核层级上,比传统级如应用层级的后门程序更复杂强大,且很难发现,对 Linux 系统安全造成极大的威胁。本文分析了与Linux 虚拟文件系统相关的系统调用

2、实现原理,研究一种通过更改读取目录函数的指针来实现隐藏文件的方法,掌握其实现原理,对提高系统安全有重要意义。1.虚拟文件系统虚拟文件系统是一个内核的软件层,用来处理与unix 标准文件系统相关的所有系统调用,其为各种文件系统提供了一个通用的文件界面。虚拟文件系统对文件系统共有的内核上层及底层部分进行了处理,在上层处理如:文件路径的查找,文件的读写操作从用户控件向下传递到具体文件系统部分;在底层进行各种缓存的处理,如块缓存。VFS 的对象主要有 super_block(超级块对象),inode(索引节点对象),file( 文件对象),dentry。以用户在应用层如终端输入 ls 命令为例,需要列

3、出某个磁盘文件夹中所含具体文件列表。此命令将被分解为系统调用,系统调用通过软中断的形式进入内核空间,遍历虚拟文件系统的 VFS 文件节点(inode),而 VFS 节点指向了具体的文件系统的节点,通过底层块 IO 函数调用 IDE 接口,再通过块驱动程序访问块设备,取得具体文件目录。整个文件系统的流程如图 1:图 1 文件系统运行流程图.原理分析通常用户层会利用 ls,find 等命令来查看某个目录下所有文件。利用 strace 跟踪 ls 命令,发现相关信息如下:open(“.”, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC)

4、=getdents64(3, /*1 entries */,096) = 1696其中=左边是所利用的系统调用,右边是返回值,从中可以看到 ls 调用到了 open 和 getdents64 等重要的系统调用。进一步分析 open 和 getdents64 的内核源码,得到图2 的函数间调用关系。ls 命令可分解为 open()和 getdents64()系统调用,先执行 open()系统调用,其调用 filp_open()函数,然后 filp_open()函数再调用 dentry_open 函数,dentry_open功能是根据查询到的 namEidata 结构填写 file 结构,完成op

5、en 操作。此 file 是当前目录文件的 file,dentry_open 函数中有 f-f_op = fops_get(inode-i_fop)这一项,其功能是将当前目录节点的操作函数集赋值给文件对象中的文件操作函数集。之后再执行 getdents64,调用 vfs_readdir(),其功能是读取当前目录下的文件列表,vfs_readdir 再调用 file-f_op-readdir(),此处的 readdir 实际上调用的是实际文件系统如 ext4 上的 ext4_dir_operations 中的 readdir 函数,即由实际文件系统驱动程序来读取目录下的一个个文件列表。通过替换

6、fop-readdir 函数指针,也就是替换ext4_dir_operations 中的 readdir 函数,就可以达到隐藏文件的目的。.关键代码的实现先定义函数的指针变量 orig_root_readdir,其功能是用来保存原始的 readdir 函数地址,typedef int (*readdir_t)(struct file *, void *, filldir_t)readdir_t orig_root_readdir=NULL同时定义 filldir_t 函数指针变量 root_filldir,目的是保存原先的 filldir 函数地址。filldir_t root_filldir

7、 = NULLpatch_vfs 函数实现的主要功能是将原始的 readdir 函数指针替换成黑客软件的 readdir 函数指针。*orig_readdir = filep-f_op-readdir; *orig_readdir 用来保存原始的“readdir”函数,其目的是当后门程序退出时文件可以恢复可见。filep-f_op-readdir = new_readdir;中用黑客软件的“new_readdir”替换原来系统的readdir。hacked_root_filldir 功能是通过获取文件节点,通过判定 uid 和 gid 是否与黑客设定的值常量相等来判定。若相等则此函数返回 0,表明读取函数失败,否则转向正常文件处理。相关代码如下:if (uid = ELITE_UID & gid = ELITE_GID) r = 0; elser = root_filldir(buf, name, nlen, off, ino, x);return r.结束语本文从应用层用户使用的终端命令出发,跟踪其使用的系统调用,再深入分析相关系统调用原理,在虚拟文件系统层面上通过替换读取文件目录的函数指针,达到了文件隐藏的目的。此方法隐藏文件具有隐蔽性高,不易被查杀的特点,研究其实现原理对保护系统安全具有重大意义。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 社科论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号