资源描述:
《windows+rootkit+技术分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WindowsRootkit技术分析List:一,前言二,简介三,rootkit的一些以公开的隐藏技术四,一些隐藏技术的应对方法五,aboutring0rootkit六,rootkit的检测七,参考资料,推荐:)二.简单的说说rootkit.Rootkit的历史已经很悠久了。存在于windows,unix,linux等操作系统中,不只局限在windows,此文我只以windows平台为例来说rootkit。Root在英语中是根,扎根的意思,kit是包的意思。rootkit我们可以把它理解成一个利用很多技术来潜伏在你系统中的一个后门,并且包含了一个功能比较
2、多的程序包,例如有、清除日志,添加用户,b7cmdshell,添加删除启动服务等功能。当然它的设计者也要用一些技术来隐藏自己,确保不被发现。隐藏包括隐藏进程,隐藏文件,端口,或句柄,注册表的项,键值等等。总之,写rootkit的人是狡尽乳汁利用很多办法不被发现。现在人们最熟悉的windowsrootkit就是hackerdefender和ntrootkit了,还有使用了baiyuanfan在XCON提出的ring3rootkit新思路的byshell,呵呵。而linux下就是knark了。*************************三.rootki
3、t的一些以公开的隐藏技术以及检测技术。1.删除进程双项链上的进程对象。ps:用的似乎很多,连现在的一些盗号的程序也利用上了现在所有人查看进程一般都是通过任务管理器(taskmgr.exe)来查看。了解一些编程知识的人都知道,任务管理器枚举进程信息是靠的NtQuerySystemInformation也就是ZwQuerySystemInformation函数。众所周知,这个NativeApi(本机API)枚举进程是要通过进程活动链表的。我们就来看看这个结构。typedefstruct_OBJECT_ATTRIBUTES{ULONGLength;HANDLE
4、RootDirectory;PUNICODE_STRINGObjectName;ULONGAttributes;PVOIDSecurityDescriptor;PVOIDSecurityQualityOfService;}OBJECT_ATTRIBDTES,*POBJECT_ATTRIBUTES;typedefstruct_IO_STATUS_BLOCK{NTSTATDSStatus;ULONGInformation;}IO_STATUS_BLOCK,*PIO_STATUS_BLOCK;typedefstruct_LIST_ENTRY{Struct_LI
5、ST_ENTRY*Flink;Struct_LIST_ENTRY*Blink;}LIST_ENTRY,*PLIST_ENTRY;双向链表的典型例子就是进程和线程链。内部变量PsActiveProcessHead是一个LIST_ENTRY结构,在ntoskrnl.exe的数据段中,指定了系统进程列表的第一个成员。仔细想想,如果我们将进程对象从进程双向链表中移除,那么调用NtQuerySystemInformation来枚举进程的任务管理器taskmgr.exe中就不会看到我们的进程了。那么就有人会担心了。如果进程从链表中删除,那还会被运行么?答案是,会。因
6、为windows的ds,也就是线程分派器,也叫任务调度分配器(dispatcherscheduler)使用的是另一个数据结构,也就是说,进线程是否被调度处理与进程双向活动链表无关,不会被CPU忽略,不必担心。2003年pjf在安全焦点上提出的就是这个方法且给出了这个方法的实现代码。文章结尾处的参考资料中我会给出这个文章的URL。2.修改系统调用表(sst)rootkit可以通过在系统调用表中添加添加自己的服务然后运行想要执行的任务。He4HookInv就是这样。He4HookInv也是一个比较有名的windowsrootkit。下面我们来看看He4Hoo
7、kInv具体的实现过程。在以前人们不知道它是如何实现的这些,一些介绍rootkit的文章也是提到一点,不过只知道是修改的SST,细节也没有过多描述。直到phrack杂志公布了He4HookInv的一些细节。He4Hook在不同版本所使用的方法是有所不同的。公布的方法中有两种。这里只说说第一种方法。如果想了解第二种方法和原版就看文章结尾的参考资料吧(phrack的连接)。ZwCreateFile,ZwOpenFile,IoCreateFile,ZwQueryDirectoryFile,ZwClose这些函数在Ntdll.dll中是这样实现的。moveax,
8、NumberFunctionleaedx,[esp+04h]int2eh;Sys