基于硬件虚拟化的内核竞态漏洞监测方法_第1页
基于硬件虚拟化的内核竞态漏洞监测方法_第2页
基于硬件虚拟化的内核竞态漏洞监测方法_第3页
基于硬件虚拟化的内核竞态漏洞监测方法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于硬件虚拟化的内核竞态漏洞监测方法

0监控程序的实现近年来,利用内核漏洞进行本地或远程攻击的情况日益严重。根据赛门铁克2014年发布的互联网安全报告对漏洞的动态监测技术主要有:(1)监测程序运行在用户态。利用APIHook等技术对不安全函数挂钩,实现对敏感数据的访问、敏感函数的调用进行监控(2)监控程序运行在内核态。利用内核级APIHook等技术对不安全函数进行挂钩,以实现对内核程序漏洞的监控(3)监测程序在内核态利用内核级Rootkit等技术对内核程序进行修改,通过对驱动设备的各类IRP派遣函数参数进行Fuzzing来触发漏洞,以实现对内核漏洞的监测本文提出一种在硬件抽象层采用硬件辅助虚拟化技术对内核竞态漏洞进行监测的方法。该方法在保证内核程序不被修改且独立运行的前提下,通过对操作系统所能触控的最底层硬件接口———硬件抽象层虚拟化,构建一个虚拟监视器来实现对内核程序的监控;再利用底层硬件信息对上层数据进行重构,利用内核竞态漏洞发生模型进行匹配,实现对该类漏洞的准确监控和定位。1内核竞争漏洞分析1.1函数调用的影响内核竞态漏洞是一种TOCTTOU(Time-of-checkTime-of-use)在x86或x64体系结构中,正常情况下,用户态程序传递参数后,会一直等待内核程序返回后再继续运行。但是在恶意程序竞争时,当函数调用进入内核时,恶意程序会通过多线程或多进程并发对参数进行修改。内核程序优先级最高且其运行有最高权限,正常情况下恶意程序竞争很难成功,但是当恶意程序利用对内核程序访问的中间参数进行攻击(例如利用系统分页机制,导致中间内存访问发生缺页等),操作系统调度程序会从内核程序切换到其它运行单位,恶意程序正好利用该段时间差进行竞态攻击,如图1所示。1.2时间窗口的控制如上分析,恶意程序要赢得竞争,必须确保内核程序对传入内核的指针指向的数据第一次访问时正常,且其竞争程序必须在第一次和第二次之间能成功修改关键用户数据。其中,内核程序两次对于传入的指针访问的时间差,即时间窗口,对恶意程序竞争成功具有关键作用。恶意程序只有控制好时间窗口的大小,才能够竞争成功。时间窗口的大小受窗口内程序、系统线程调度等影响。若时间窗口内存在可控元素,恶意程序就利用窗口内程序可控元素加大窗口长度;若窗口内程序不存在可控变量,恶意程序则通过提升优先级等方式来实现竞争。特别是现代多核、多CPU环境使得恶意程序的竞态攻击拥有硬件级支持,加上其对系统机制等的恶意利用以扩大时间窗口,使竞态成功概率提高,竞态漏洞攻击对内核安全造成了致命威胁。1.3恶意程序攻击机制若恶意程序竞态成功,会改变内核敏感数据,利用内核程序实施定向攻击。一般来说,根据具体内核形态,恶意程序首先通过修改CR0寄存器等方法来修改内核内存保护机制,然后通过内核内存访问形式来修改HalDispatchTable等系统函数表,植入并运行Shellcode,进而实现内核攻击。2监控系统的配置2.1基于栈回转技术的漏洞监测系统内核竞态漏洞主要原因是系统函数调用ring3向ring0切换时,传递的参数包含指向用户态内存指针,由于恶意程序感染,内核程序利用该指针多次进行数据不一致的访问。因此,要实现监控,在程序系统函数调用从ring3切换到ring0时,通过对栈上数据分析,对切换时用户态向内核态传递的参数进行检测,当存在指向用户态内存的指针时,首先把当前参数栈、将调用的系统函数号保存下来,再对该段内存的读、写、执行进行监控,当发现存在两次对该段内存的访问、且访问存在一定时间差时,判定可能存在竞态漏洞;基于栈回溯技术,结合符号分析技术对当前函数调用栈进行分析,恢复漏洞发生时内核态函数调用情况,并继续恢复到用户态调用位置,实现对漏洞的定位。为了保证内核程序不被修改,监测系统将采用硬件辅助虚拟化技术,在硬件抽象层进行虚拟化,实现一个轻量级VMM(虚拟机监视器),通过配置监视器参数,实现对内核漏洞的监控。目前用于x86体系结构的硬件辅助虚拟化技术主要有IntelVT和AMD-V,本文以IntelVT作为研究对象。IntelVT技术是Intel于2006年推出的基于IA-32/IA-64处理器扩展而来的虚拟技术。其中IntelVT-x对IA-32处理器提供硬件级支持,分为虚拟化监控器(VMM)和客户端软件(GuestSoftware)两个层次。VMM作为宿主控制系统所有硬件资源,每一个虚拟机作为客户端软件运行在VMM上层。VMX的操作分为两种:VMXnon-root模式和VMXroot模式,两种模式都提供了ring0-ring3指令权限级别。VMM运行在VMXroot模式,客户端软件运行在VMXnon-root模式。从客户端软件到VMM,称为VMX-Exit;从VMM返回到客户端软件,称为VMX-Entry,转换关系如图2。两种模式的转换由VMCS控制,硬件为每个客户端维护一个VMCS,VMCS保存了VMExit客户端数据和虚拟机控制域等数据2.2事件分析模块根据选择的监控方法和监控技术,监测系统设计如图3所示。监测系统动态虚拟化原有系统,让原有系统作为客户机,运行在VMXnon-root模式;监控模块作为VMM,运行在VMM-root模式,实现对系统的监测。当客户机执行了敏感操作,将触发VMExit进入VMM,检测模块处理具体事件,最后VMEntry恢复客户机执行。在VMM中,事件分析模块最先接收到陷入原因后,根据底层信息对陷入原因分析,然后结合客户机当前CPU硬件状态读取客户机内核信息,重构出上层具体事件信息,并传给事件处理模块。当事件处理模块发现上层事件是系统调用信息时,通过策略判断模块对用户态调用参数进行分析,如果发现存在参数为用户态内存数据指针,则加入内存监测;如发现是事件对可疑内存的访问,则将其访问方式、访问长度、访问时间记录下来;若其访问是第二次以上,且两次符合判定规则,则可能存在内核竞态漏洞。当判断可能存在漏洞时,信息收集模块通过对当前内核栈进行回溯,分析调用情况,然后将收集的信息通过通信模块传递到分析程序,用户态利用符号分析技术分析出调用具体信息,记录到日志。2.2.1监控系统的动态迁移控制模块初始化主要依靠监测系统加载一个初始化内核驱动程序,该内核驱动模块首先激活VMX模式,创建虚拟机监控器,并配置VMX相关数据,将当前系统动态迁移进虚拟化环境。此外,还需要对每个CPU配置VMCS,当监控事件发生时客户机能陷入VMroot模式。2.2.2异常调用的处理VMM通过监控中断来监视系统调用,对于Sysenter等快速调用,将SYSENTER_EIP_MSR寄存器设为异常值,VMM通过监控陷入异常即可调用。为了监控对该段关键内存的访问,系统标记该段内存所在范围的页面为缺页,当对该段内存进行访问时,就会产生缺页。2.2.3栈上保存父地址的传递当判定存在漏洞后,系统需要调用函数进行定位。调用函数时,通过将参数和返回地址保存在栈上,传递给子函数,子函数执行完成后,会通过栈上保存的父地址返回父函数继续执行。因此,当判断到漏洞存在时,利用栈回溯技术,对栈进行分析,结合当前模块符号文件的分析,定位函数名和代码偏移,实现漏洞位置的定位。3算法的合法性判断测试机器配备了支持IntelVT-x的处理器Intel(R)Core(TM)i7-3720QMCPU@2.60GHz,内存为4GB,硬盘512GB。将CVE-2013-1254作为测试标准,对用户态传来的CALLBACK_OUTPUT结构参数pOutput先进行合法性判断,再对复制两次操作存在时间差、可能导致竞态漏洞进行测试通过观察可以发现,监控系统监测到win32k!ClientGetMessageMP+0x84这个位置可能存在竞态漏洞,如图4所示。为了验证系统的准确性,利用IDA对win32k.sys进行反汇编,对应到win32k!ClientGetMessageMPH函数,在偏移为0x84附近发现了存在内核竞态漏洞代码,见图5。首先,程序在1处取得比较变量,在2处对用户态传来的结构体中偏移为8的变量进行了合法性判断,判断合法后,在3中对该变量进行保存,可见2、3操作存在明显竞态漏洞。因此,监测系统监测正确,定位准确。4硬件辅助辅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论