论文部分内容阅读
Rootkit是能持久的存在于计算机上而难以被检测的一组程序或代码,是恶意软件用来隐藏自己的踪迹和保留计算机超级用户权限的工具。Rootkit的严重危害性表现在它拥有目标计算机的超级用户权限,可以在用户不知道的情况下对目标计算机进行随心所欲的操控。不断发展的Rootkit技术甚至能攻破Rootkit检测软件,并通过修改Rootkit检测软件的执行逻辑使Rootkit检测软件失效。本文首先对Rootkit采用的技术和发展趋势进行了分析,对Rootkit检测工具的现状进行了总结;对与Rootkit紧密相关的windows操作系统进行了研究,包括访问控制机制、内存分页和寻址方式、进程和线程、可加载内核模块(驱动)、系统服务调度表、中断描述符表、PE文件的结构和加载方式、操作系统信息查询函数等。在对Rootkit新技术、Rootkit检测工具缺陷性和windows操作系统脆弱性三个方面进行分析的基础上,设计了一个自检子系统和Rootkit检测子系统相互独立的Rootkit检测系统。本文对Rootkit检测子系统进行了详细设计。对文件完整性检测,提出基于待检测模块可重复随机组合求取MD5信息摘要的检测算法和具体的文件完整性检测流程;通过对钩子函数采用的不同技术进行分析后,提出基于函数地址可接受范围和函数起始64字节一致性检测钩子;通过对注册表文件和注册表查询的分析,提出基于HIVE文件的隐藏注册表检测;通过对Rootkit隐藏文件技术和磁盘文件存储方式的研究,提出基于直接磁盘文件读取检测隐藏文件;通过对Rootkit的系统消息钩子和直接内核对象操作技术研究,提出基于内核对象句柄和线程调度队列检测隐藏进程。在Rootkit检测子系统自保护方面,隐藏了与Rootkit检测子系统相关的文件、进程和驱动,并设计了提前启动方式,在降低系统的误检率方面,通过专门的数据分析模块对各检测模块上报的疑似Rootkit进行再分析。本文将自检子系统和Rootkit检测子系统设计成没有直接依赖和调用关系的两个独立子系统,并详细研究了两个子系统之间的通信、认证过程和自检子系统对Rootkit检测子系统的检测、恢复过程。对自检子系统的设计包括密钥的生成算法、信息的加密和解密过程、保护数据的内容和认证的流程等。本文对文件完整性检测算法的可靠性进行了实验分析;还对自检子系统和Rootkit检测子系统之间的通信、认证过程进行了实验;并从理论上分析了Rootkit检测系统对Rootkit的检测效果。