论文部分内容阅读
传统的操作系统安全技术可以较好地防范用户级的攻击,却难以有效抵御内核级别的攻击。因为以内核特权级运行的恶意代码有能力颠覆整个操作系统,使得操作系统内核不再可靠,而且各种依赖于操作系统完整性的安全工具也无法正常工作。针对这个难题,本文提出并实现了一个基于虚拟机监视器的操作系统运行时行为监控框架——RMC(Runtime Monitoring and Controlling mechanism),其通过虚拟机监视器在带外监视虚拟机状态变化和事件行为,并根据相应安全策略控制虚拟机的执行流程。由于该监控系统工作在操作系统之外的虚拟硬件层,与应用程序隔离,难以被直接攻击,甚至在操作系统被颠覆后仍能如实地记录虚拟机的运行信息,因此具有较高的可靠性和可信性。但是,由于单纯的带外监控无法监视到不陷入虚拟机监视器的操作系统行为,再者带外监控因缺乏语义信息难以进行复杂操作。因此,在虚拟机内部进行带内监控,充分利用带内监控的丰富语义,再通过带外监控保证带内监控的正常运行,二者结合实现操作系统运行时监控系统。传统的操作系统监控通常采用的是面向行为的监控技术,针对行为监控容易被攻击欺骗的弱点,本文提出了面向状态的监控思想,并从监控的角度将操作系统的状态分为CPU状态,内存状态和外部设备状态三个部分。文章分析各部分状态集中的异常情况,特别注重内核级攻击造成的如内存写保护等操作系统异常状态。接着利用虚拟机监视器的优势提出了较为简单的监控实现方法,利用虚拟机监视器用软件模拟硬件的优势,通过监测虚拟机监视器的模拟函数完成相应的状态监控,降低了实现难度。接下来,论文描述了基于KVM虚拟机监视器的RMC的一个原型实现,该原型是在x86平台上针对Linux虚拟机操作系统做各种带外监控,通过监控虚拟CPU的访问,记录进程运行历史和获取可信运行进程链表;通过监视虚拟内存访问,抵御对操作系统内核完整性的攻击;通过监视虚拟网卡设备访问,监控虚拟机操作系统的网络通信行为。接着用流行的内核级攻击工具和系统性能测试工具对该原型系统做了功能和性能测试,结果表明该系统能够有效地检测和防范rootkit等内核级攻击方式的入侵,能够发现隐藏的恶意进程和网络连接,而且性能影响也较小。