快速业务通道

Linux操作系统下的高级隐藏技术详解

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20


  Linux系统中用来查询文件信息的系统调用是sys_getdents,这一点可以通过strace来观察到,例如strace ls 将列出命令ls用到的系统调用,从中可以发现ls是通过sys_getedents来执行操作的.当查询文件或者目录的相关信息时,Linux系统用sys_getedents来执行相应的查询操作,并把得到的信息传递给用户空间运行的程序,如果修改该系统调用,去掉结果中与某些特定文件的相关信息,那么所有利用该系统调用的程序将看不见该文件,从而达到了隐藏的目的.介绍一下原来的系统调用,其原型为:
Empire CMS,phome.net


  int sys_getdents(unsigned int fd, struct dirent *dirp,unsigned int count)

  其中fd为指向目录文件的文件描述符,该函数根据fd所指向的目录文件读取相应dirent结构,并放入dirp中,其中count为dirp中返回的数据量,正确时该函数返回值为填充到dirp的字节数.下图是修改后的系统调用hacked_getdents执行流程.

  hacked_getdents函数实际上就是先调用原来的系统调用,然后从得到的dirent结构中去除与特定文件名相关的文件信息,从而应用程序从该系统调用返回后将看不到该文件的存在.

  应该注意的是,一些较新的版本中是通过sys_getdents64来查询文件信息的,但其实现原理与sys_getdents基本相同,在这些版本中仍然可以用与上面类似的方法来修改该系统调用,隐藏文件.

  2.2 隐藏模块

  上面分析了如何修改系统调用以隐藏特定名字的文件,在实际的处理中,经常会用模块来达到修改系统调用的目的,但是当插入一个模块时,若不采取任何隐藏措施,很容易被对方发现,一旦对方发现并卸载了所插入的模块,那么所有利用该模块来隐藏的文件就暴露了,应继续分析如何来隐藏特定名字的模块.Linux中用来查询模块信息的系统调用是sys_query_module,可以通过修改该系统调用达到隐藏特定模块的目的.解释一下原来的系统调用,原来系统调用的原型为:

  int sys_query_module(const char *name, int which, void *buf, size_t bufsize , size_t *ret)

  如果参数name不空,则访问特定的模块,否则访问的是内核模块,参数which说明查询的类型,当which=QM_MODULES时,返回所有当前已插入的模块名称,存入buff, 并且在ret中存放模块的个数,buffsize是buf缓冲区的大小.在模块隐藏的过程中只需要对which=QM_MODULES的情况进行处理就可以达到目的.修改后的系统调用工作过程如下:

  1)调用原来的系统调用,出错则返回错误代码;

  2)如果which不等于QM_MODULES,则不需要处理,直接返回.

  3)从buf的开始位置进行处理,如果存在特定的名字,则将后面的模块名称向前覆盖该名字.

  4)重复3),直到处理处理完所有的名字,正确返回.
Empire CMS,phome.net


  2.3 隐藏进程

  在Linux中不存在直接查询进程信息的系统调用,类似于ps这样查询进程信息的命令是通过查询proc文件系统来实现的,在背景知识中已经介绍过proc文件系统,它应用文件系统的接口实现,因此同样可以用隐藏文件的方法来隐藏proc文件系统中的文件,只需要在上面的hacked_getdents中加入对于proc文件系统的判断即可.proc是特殊的文件系统,只存在于内存之中,不存在于任何实际设备之上,Linux内核分配给它一个特定的主设备号0以及一个特定的次设备号1,除此之外,在外存上没有与之对应的i节点,系统也分配给它一个特殊的节点号PROC_ROOT_INO(值为1),而设备上的1号索引节点是保留不用的.通过上面的分析,可以得出判断一个文件是否属于proc文件系统的方法:

  1)得到该文件对应的inode结构dinode;

  2)if (dinode->i_ino == PROC_ROOT_INO && !MAJOR(dinode->i_dev) && MINOR(dinode->i _dev) == 1) {该文件属于proc文件系统}

  通过上面的分析,给出隐藏特定进程

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号