论文部分内容阅读
互联网和嵌入式产业的快速发展,给人类社会、经济、文化带来了无限的机遇的同时,也给网络和操作系统安全带来了严峻的挑战。当黑客利用计算机系统中存在的漏洞获取主机的控制权后,通常会采用一种称为rootkit的技术保持对目标主机的超级用户权限。近年来rootkit已引起了安全领域许多专家的关注,现有的大多数rootkit可以分为三类:应用级rootkit、内核级rootkit和设备级rootkit。本文主要研究内核级rootkit的检测方法,所做工作可归纳如下:本文首先介绍了rootkit的功能、分类、攻击过程等概念,并详细分析了rootkit的工作原理和实现技术,包括应用层程序挂钩的方法、系统调用劫持技术、可加载内核模块的隐藏技术以及攻击虚拟文件系统层的方法。本文还学习分析了现有rootkit检测方法和检测工具的原理,并对它们的优缺点进行概括。其次,通过研究可以发现目前存在的大多数方法只能检测出应用层rootkit的踪迹,只有少数一部分能检测出特定的几种内核级rootkit,且具有一定的局限性。针对现有方法无法检测通过堆栈溢出攻击直接修改系统调用的内核级rootkit的缺陷,本文提出了一种基于内核栈分析的rootkit检测算法。该算法的思想是通过对系统调用进行静态源码分析,结合系统调用运行时的内核栈信息,为每个内核系统调用建立执行路径模型(System Call Execution Path,SCPath)作为检测的基准,文中同时给出了SCPath模型的构建和挖掘算法。实验结果表明用本算法实现的检测程序能够检测出渗透到系统调用中的rootkit。最后,本文在分析现有检测工具缺陷的基础上,归纳出内核级rootkit的内核特征,提出一种基于差异分析的rootkit检测方法,同时给出了遭受rootkit攻击后的系统恢复机制。最后还设计并实现了基于该方法的rootkit检测和恢复系统,测试数据表明该系统能成功捕获大多数重定向系统调用表和修改系统调用表的rootkit。