论文部分内容阅读
为了防止信息泄露,机密信息都是加密后存放在外部介质中的,然而在将机密信息读取到内存之后,应用程序会将机密信息解密出来,在处理这些信息期间,应用程序的运行时内存内容有可能被其他恶意程序窃取。因此,研究应用程序的运行时内存的安全具有重要的意义。本文通过对Windows操作系统内存管理机制的研究,结合目前硬件提供虚拟化辅助技术,提出一个应用程序内存防护系统,从而可以保护应用程序的内存安全。本文的主要贡献和创新如下:1.分析了Windows的内存管理机制,并提出了应用程序运行时内存安全的核心威胁:即来自进程外部的攻击和进程内部的攻击两类。来自进程外部的攻击又分为修改CR3寄存器,和修改页表两类。而来自进程内部的攻击又包括内核Rootkits和用户模式代码注入两类。2.分析了目前存在的一些解决方案,包括游戏保护中使用的内存保护机制,NICKLE在防护内核Rootkits的研究,以及SP3系统在应用程序内存保护的研究,在介绍了这些解决方案的机制后并给出了优缺点分析。3.提出了一个基于Hypervisor的应用程序内存防护系统,通过对CR3和页表的访问增加访问控制有效地防护了来自进程外的攻击,通过物理页帧加密技术有效地防止内核Rootkits的攻击,最后利用数据不可执行功能有效地防止了用户模式恶意代码注入的攻击。4.应用程序内存防护的难点在于来自进程内部的攻击,即内核Rootkits的攻击和用户模式代码注入的攻击。本文通过拦截受保护进程的模式切换,从而实现了内核模式和用户模式不同的地址映射,即让内核模式Rootkits只能访问到受保护内存的加密拷贝。同时利用可执行内存加密和数据执行保护技术有效地防范了用户模式的代码注入攻击。