考试网 >> IT认证 >> Linux >> Linux指导 >> Linux环境下的高级隐藏技术(安全)

Linux环境下的高级隐藏技术(安全)

发布时间:2006-06-28 10:57     点击:
分页:上一页  1 2 [3] 4 5  下一页

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

   4)重复3),直到处理处理完所有的名字,正确返回。

   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文件系统}

   通过上面的分析,给出隐藏特定进程的伪代码表示:

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

   {

   调用原来的系统调用;

   得到fd所对应的节点;

   if(该文件属于proc文件系统&&该文件名需要隐藏)

     {从dirp中去掉该文件相关信息}

}

  2.4 修改系统调用的方法

   现在已经解决了如何修改系统调用来达到隐藏的目的,那么如何用修改后的系统调用来替换原来的呢?这个问题在实际应用中往往是最关键的,下面将讨论在不同的情况下如何做到这一点。

   (1)当系统导出sys_call_table,并且支持动态的插入模块的情况下:

   在Linux内核2.4.18版以前,这种内核配置是非常普遍的。这种情况下修改系统调用非常容易,只需要修改相应的sys_call_table表项,使其指向新的系统调用即可。下面是相应的代码:

   int orig_getdents(unsigned int fd, struct dirent *dirp, unsigned int count)
分页:上一页  1 2 [3] 4 5  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有