Rootkit隐形技术入门
在安全界,rootkit已越来越引起人们的关注,而rootkit技术的过人之处就在于它的隐形技术,本文旨在向读者打开一扇通向rootkit隐形技术的大门。
经过一番努力,我们以经可以通过编程的方式,实现了对rookit的操控,如加载、卸载、启动和终止。现在,我们要对各种操作进行检验,看看它们是否工作正常。
在进行第一项测试之时,需要使用某个系统管工具来列出当前运行在系统上的所有活动的设备驱动程序,我们这里使用的是常见的drivers.exe。大多数Microsoft操作系统的资源包和驱动程序开发包都带有该工具。运行该程序无需参数,运行后会列出所有正在运行的设备驱动程序。加载并启动MyDeviceDriver后,在当前运行的设备驱动程序列表中找不到comint16.sys项,说明它已经成功的隐藏起来了。
第二项测试是验证添加到C:\Windows\Resources文件上的交换数据流。为此,删除C:\config16,然后终止并重新启动MyDeviceDriver。因为config16已不复存在,所以rootkit必须从交换数据流检索配置信息,我们可以借助DebugView工具进行验证。调试输出将表明初始的GetFile()失败,因为它试图读取C:\config16,而此时该文件已被删除。之后的调试输出表明“Reading config from hidden file.”。然后显示从ADS读取的IP与端口信息。
七、总结
好了,忙活了半天,我们终于鼓捣出了一个初步的rootkit。看看我们的成果,我们的rootkit采用内核驱动程序作为框架,所以它运行于内核级——目前的绝大部分内核级rootkit都采用这种结构;它实现了设备驱动程序入口及其配置文件的隐形。俗话说的好,头三脚难踢,但我们的第一脚已经踢出去了。
但话又说回来,与一些高级的rootkit相比,我们的rootkit确实显得嫩了些,比如它的功能仅限于对操作系统隐藏其配置文件和设备驱动程序入口;要实现真正的隐形,要藏的东西还很多,如文件、目录、驱动程序、进程与注册表项等等。此外,我们的藏身手法也算不得高明,例如:使用服务控制管理器注册该rootkit时,会创建一个注册表项,要紧的是,只要是个注册表编辑器就能找到该注册表项;Invisible使用“comint16”这个具有迷惑性的名称来隐瞒其真实身份,但是这种伎俩太小儿科,我们需要更高级的技术。为了实现真正的隐形,还有许多事情要做,我们将在后续文章中陆续加以介绍。
- 本文关键词:

