论文部分内容阅读
Rootkit是能够长久且难以检测地存在于计算机系统中的一套程序和代码。由于Windows操作系统的普及性,针对Windows系统的Rootkit逐渐流行起来。Windows:Rootldt能够对操作系统中的对象(比如文件、进程、端口,等)进行隐藏,因此恶意软件利用Rootkit来隐藏攻击痕迹、躲避监控软件的探测,使系统管理员很难发现系统中己存在着异常。这样,计算机系统就具有了很大的安全隐患。为此,对可能存在于Windows操作系统中的Rootld进行检测,将有助于实现计算机系统的安全、可靠运行。
本文首先介绍了与Windows Rootkit及其检测技术相关的Windows操作系统运行机制,主要包括x86处理器的Ring0和Ring3权限、Windows系统的体系结构及其地址空间、Windows系统中虚拟地址到物理地址的转换机制以及进程和线程的相关概念。接着给出了Rootldt的定义及其分类,并且着重分析了Windows Rootkit主要使用的两类隐藏技术,即修改程序执行路径技术和直接内核对象操作技术。在修改程序执行路径技术中,主要分析了导入地址表钩子、系统服务调度表钩子、内联函数钩子、中断描述符表钩子以及I/O请求报文主函数表钩子的实现原理;而在直接内核对象操作技术中,则主要分析了Rootkit如何利用该技术实现进程和设备驱动程序的隐藏。然后深入分析和研究了目前Windows Rootldt的主要检测技术,即特征码检测法、地址分析检测法、交叉视图检测法、执行路径检测法以及完整性检测法,并分别指出了它们的优点及存在的不足。在对Windows操作系统运行机制、Windows Rootkit隐藏技术及其检测技术分析与研究的基础上,本文设计并实现了一个Windows Rootkit检测程序。该检测程序主要由Rootkit检测模块、主控制模块以及自我保护模块三部分组成。其中,Rootkit检测模块主要负责对用户空间和内核空间中的Rootkit隐藏行为进行检测,利用基于地址分析的检测思想实现对导入地址表钩子、系统服务调度表钩子、内联函数钩子以及I/O请求报文主函数表钩子的检测;利用基于交叉视图的检测思想实现对隐藏系统运行进程和隐藏设备驱动程序的检测。主控制模块则主要负责Rootkit检测模块中驱动程序的加载与卸载、检测模块应用程序部分与驱动程序部分的通信以及检测结果的汇总与显示。而自我保护模块则主要利用SHA-1算法对Rootkit检测模块和主控制模块进行完整性保护,并对受到破坏的模块进行恢复操作。此外,在Rootldt检测程序的具体实现过程中,对检测算法进行了部分改进。
最后选取了几种典型的Windows Rootkit,对所实现的Rootldt检测程序进行了测试。测试结果表明,对于采用了修改程序执行路径技术或者是直接内核对象操作技术的Windows:Rootkit,该检测程序能够有效地检测出其隐藏行为。