一种基于硬件模拟器的处理隐藏进程的方法

文档序号:6471930阅读:347来源:国知局
专利名称:一种基于硬件模拟器的处理隐藏进程的方法
技术领域
本发明属于网络安全技术领域,具体涉及一种基于硬件模拟器的处理隐藏进程的
方法。
背景技术
随着社会的不断发展和进步,计算机在社会各个领域的应用越来越广泛。由于软 件漏洞的广泛存在和用户安全意识的不足,木马的传播速度越来越快,感染范围不断扩大, 造成的破坏日益严重。同时由于底层技术的研究不断深入,越来越多的隐藏进程手段为木 马所利用。传统的安全防护手段由于受分析效率和实现环境的限制,响应周期难以縮短,响 应速度已经逐渐不能适应这种新情况。因此,提高对隐藏进程的检测准确性和分析能力显 得十分必要。 现有的隐藏进程检测工具,如Process Explorer、 IceSword、 GMER等,全部依赖于
内存格式的分析和操作系统底层数据的挖掘。在某些情况下,甚至必须对操作系统进行修 改,如Hook系统函数,或者通过PsSetCreateProcessNotifyRoutine注册回调函数,才能实 现相应的功能。而由于对操作系统做修改,本身会引起完整性问题,因此被修改的数据补丁 或者注册的函数很容易被木马发现,并产生相应的对抗手段。同时由于当前的隐藏进程检 测和分析工具,都是在跟恶意代码同一平台运行,在对系统的控制权上和恶意代码产生竞 争关系,不利于准确而稳定的实现检测与分析。
当前的隐藏进程检测技术,通常使用如下的几种方法
1.遍历EPROCESS表来查找隐藏进程 该方法仅限于检测Ring3级用户模式隐藏的进程,当前的木马一般都会使用断开 EPROCESS链表的方法来隐藏自身。因此通过遍历EPROCESS表的方法在目前几乎等于无效。
2.遍历EPROCESS结构中包含的HandleTable双链表来实现隐藏进程检测。
恶意代码可以将自身的HandleTable从该链表上断开,对运行无影响。
3.遍历CSRSS中的句柄表。 因为CSRSS进程包含其他所有进程的句柄,故通过遍历句柄表的方式可以找到其 他进程的对象结构。 恶意代码可以通过擦除CSRSS进程中指向自身的句柄来实现进程隐藏功能。
4.遍历操作系统调度表。 在XP系统上,存在两个调度表。KiReadyList和KiWaitList,通过遍历这两个链 表,可以查到当前操作系统中都有哪些进程处于执行状态和等待状态。恶意代码可以通过 Hook API的方法将进程调度记录从这两个链表上摘下。
5.遍历PspCidTable内核句柄表。 该句柄表存放着系统中所有的进程和线程的句柄。恶意代码可以将PspCidTable 指向自身的指针清空,这种方法可以实现隐藏,但是会带来系统的不稳定。
6. Hook SwapContext函数。
通过Hook Sw即Context函数,反木马程序可以获得操作系统调用的所有过程,并 在这个过程中实现各种隐藏进程的检测。但是这样存在一个问题,即因为和木马程序同处 在一个平台上。木马可以采用覆盖函数指令的方法来摘除钩子。 目前分析隐藏进程中恶意代码的虚拟机调试分析方法,应用VMware、 VirtualPC 等虚拟机系统实现。虚拟机系统将虚拟指令直接交给本地的真实CPU执行,同时自身存在 后门。隐藏进程中的恶意代码可通过检查代码执行时间,或者调用虚拟机后门功能的方法 判别自己在一个虚拟系统上运行,采取操作隐藏真实功能。 综上,目前检测隐藏进程的主要缺陷在于隐藏进程和恶意代码处于同一层次上, 容易被恶意代码检测并产生相应的对抗手段;过度依赖操作系统内核数据完整性,基于虚 拟化的分析技术虚拟化程度不高,准确率不高。而分析隐藏进程中恶意代码的方法是使用 Hook系统API的方法监控进程,恶意代码通过读取硬盘上系统文件对内存中的代码进行覆 盖即可使之失效;虚拟机调适方法采用的虚拟机,依赖本地CPU,而不能模拟多种CPU。

发明内容
本发明提供一种基于硬件模拟器的处理隐藏进程的方法,通过构建恶意代码运行 环境,操纵和控制模拟CPU指令和各种模拟硬件的访问操作,硬件模拟器中的数据采集模 块收集系统中所有进程的信息,以CR3为标志,检测隐藏进程;监控所有进程的运行过程, 从虚拟内存中直接提取恶意代码镜像,分析监控数据,并以HTML或SQL格式输出。
—种基于硬件模拟器的处理隐藏进程的方法,其步骤如下 1、按照目标文件在硬盘上的数据块排序,将数据块顺次添加到虚拟硬盘,转换为 硬件模拟器识别的操作系统镜像; 2、配置镜像路径、硬件模拟器的模拟内存大小及模拟CPU的类型;硬件模拟器加 载步骤l)中的操作系统镜像,并启动该操作系统; 3、虚拟CPU执行指令时,查找CR3寄存器中是否出现新的CR3值,若出现新CR3值, 则遍历操作系统所有的EPROCESS结构是否包含有该CR3值;若不存在包含有该CR3值的 EPROCESS结构,则将该CR3值对应的隐藏进程检测出来; 4、利用硬件模拟器读取所述隐藏进程的内存,获取隐藏进程加载的动态库;比较 所述动态库的导出表中的名称与API表中的名称,获取所述导出表中所有API的地址,构建 API表; 5、判断所述检测出的隐藏进程的EIP与API表每个函数的第一条指令是否匹配,
若匹配,则读取堆栈和寄存器获取函数参数和返回值,在虚拟内存中监控并读取参数对应
执行的指令,数据采集模块记录该指令及该指令执行的数据,并返回给用户。 进一步,在上述步骤3)前若存在提取代码镜像的请求,则在监控隐藏进程的执行
指令时,读取物理内存中的代码,确定需要读取的文件在内存中的范围;并根据内存页表找
到相应的内存页在虚拟物理内存的位置,依据偏移一次性读出代码镜像。 每个进程有自己4G地址空间,当进程切换时,就需要切换地址空间,也就是切换
页目录页表,所以每个进程都需要保存自己页目录的地址。对于执行地址转换的CPU来说
需要知道页目录所在物理页的物理地址就可以进行地址转换。对于维护进程的页目录和页
表的系统来说,需要把页目录和页表所在的物理页映射到地址空间中。当前x86系列CPU的地址翻译过程,依赖于进程的页表。操作系统为了表示进程的地址空间,为进程创建单独了 页表。当进程执行时,页表的物理地址存放在CPU的CR3寄存器中。由于x86系列CPU页 表读取和使用架构的限制,任意两个进程的页表物理地址都不相同。
本发明的优点和积极效果如下 1.本发明由于数据采集通过硬件模拟技术实现,而不是将恶意代码放在真实的 CPU上执行,恶意代码无法感知自身是否运行在虚拟环境中,也无法分辨自身是否被跟踪, 从而实现对恶意代码完全透明的分析。 2.本发明的模拟硬件设备的所有虚拟CPU的指令和各种硬件操作都在翻译之后 模拟执行,而不是直接使用代码片段在真实机器上执行,可在指令运行过程中精确计算该 条指令运行的时间,从而保证了虚拟环境的透明性。 3.本发明在硬件模拟器的层次比较,不需要对操作系统做任何修改,提高了系统 对于恶意代码的透明度,使监控难以被恶意代码检测。


图1基于硬件模拟器的隐藏进程检测方法示意图。
图2基于硬件模拟器的隐藏进程检测和分析流程图。
具体实施例方式
下面结合附图详细说明本发明的技术方案 如图1所示,一种基于硬件模拟器的处理隐藏进程的方法,包括步骤
1、创建目标文件运行所需的操作系统镜像 本发明采用线性寻址的方法,读取怀疑有恶意代码的目标样本所在磁盘的所有内
容。按照该硬盘分区上所有数据块的排序,分块从硬盘上读出来,然后根据其序号的先后顺
序,将读取的数据顺次添加到一个文件中,该文件作为虚拟的硬盘使用,获得硬件模拟器识
别的数据镜像文件。 2 、配置并启动硬件模拟器 配置镜像路径,获取实际运行的操作系统镜像所在位置;配置硬件模拟器的模拟 内存大小、系统启动时间及模拟CPU的类型。完成虚拟内存的初始化后,硬件模拟器加载上 述操作系统镜像,并启动该操作系统。 其中,本发明的虚拟内存通过在真实机器上直接申请相应大小的内存进行模拟。 配置模拟内存的大小是虚拟操作系统运行的基础,模拟内存设置越大,则虚拟操作系统运 行越快。本实施例给出模拟内存的大小配置在216M 1G之间。 本发明定义当前模拟CPU的类型,是通过硬件模拟器的译码模块获得,使得模拟 CPU的指令转化为本地CPU的指令再运行,在虚拟机上运转的操作系统能够正确的执行指 令,本发明可以模拟多种CPU。例如若当前的镜像是从一台P4的机器上读取出来,则本发 明需要将硬件模拟器模拟CPU的类型配置为P4,而不能是ARM或者MIPS等其他类型CPU, 否则该操作系统无法正确运行。若真实CPU是Intel P4,而本发明硬件模拟器模拟的CPU 是ARM,则需利用译码模块将ARM的指令转化为一条或者多条Intel P4的指令。
对于某些恶意代码在不同的时间会有不同的表现,通过在虚拟的BIOS中写入数据定义系统的启动时间,如黑色星期五病毒,只有在13号同时是星期五的时候才会发作。 通过定义虚拟系统时间的方法,使恶意代码表现出不同的行为,便于检测出隐藏进程中的 恶意代码。 3、虚拟CPU执行指令,并检测隐藏进程 每个进程都由一个EPROCESS块来表示,EPROCESS块中不仅包含了进程相关了很 多信息,还有很多指向其他相关结构数据结构的指针。在实际的执行过程中,对CPU执行状 态的CR3寄存器不断进行检查,若CR3寄存器中出现新的CR3值后,则通过EPROCESS结构中 的ActiveProcessLink双向链表遍历系统所有的EPROCESS结构,查找是否存在包含该CR3 值的EPROCESS结构;若遍历后没有找到包含有该CR3值的EPROCESS结构,则该CR3值对应 的当前进程是隐藏进程,对其进行监控。 4、监控具有上述CR3值的隐藏进程执行的所有指令和系统调用 应用层的程序通过API来访问操作系统。本实施例使用地址比较的方法获取系统
调用。在Windows操作系统中,进程的加载包括如下步骤 1)创建进程的内存地址。 2)映射进程可执行文件。 3)映射进程需要加载的动态库文件。 4)配置进程运行需要的其他操作系统资源。 5)调度进程执行。 在进程被调度执行之前,此时进程的代码还没有执行,但是自身的可执行文件和 进程需要的动态库都已经被映射进内存。故本发明在进程加载之后,代码执行之前,通过虚 拟机,读取进程的内存,并分析进程加载的动态库中的导出表,导出表包括API名称和API 地址,本发明通过采用字符比较的方法,比较导出表中API名称与API表中的名称,获取导 出表中所有API的地址,将所有API地址加入到API表,所述API表包括API名称、API地 址及API参数和返回值。隐藏进程执行中,将隐藏进程的EIP值与API表中函数地址的参 数逐一做匹配比较。 若EIP值与API表中每个函数的第一条指令相匹配,则读取堆栈和寄存器,获取函
数参数和返回值,并在虚拟内存中读取参数对应执行的指令;硬件模拟器中数据采集模块
记录该指令及该指令执行的数据,其中,指令执行的数据包括该指令打开的文件、打开的端
口、通过某端口发送的数据、访问的文件、创建的进程和线程、创建或终止的服务、创建或使
用的操作系统同步/互斥量、网络数据发送操作的内容,文件创建操作的文件名等信息。 5、在上述步骤3)之前,若存在提取代码镜像的请求,则需要提取代码镜像 在分析隐藏进程中恶意代码的过程中,恶意代码通常会使用代码混淆、自修改、加
密、加壳等手段对抗静态分析,使其在磁盘上的存储内容呈现一种加密或混淆后无法分析
的状态,无法对其进行反汇编,更不可能进行分析,无法在静态情况下获取真实代码。然而
在恶意代码执行时,恶意代码会将真实的代码恢复出来。 本发明提供提取代码镜像的功能,在恶意代码执行时,直接读取物理内存中的代 码,确定需要读取的文件在内存中的范围;根据内存页表找到相应的内存页在虚拟物理内 存的位置,依据偏移一次性读出,获取恶意代码的真实内容。 在虚拟CPU执行指令之前,若有提取代码镜像的请求,如用户发现执行某条指令
6之后,在硬盘上以密文形式存在的恶意代码,将自身在内存中解密完成。这时候用户可能需 要提取出恶意代码在内存中的镜像,将其保存为文件进行分析,并发送一个提取内存中代 码镜像的请求给模拟环境。当前存在读取内存镜像的请求,硬件模拟器中的数据采集模块 将用户请求转换为虚拟内存访问操作,读取模拟系统内存并将内存中的代码转存为镜像文 件。 6、采集并分析数据 若存在提取代码镜像的请求,数据采集模块中的数据包括执行隐藏进程的指令运 行数据和内存镜像。数据分析模块接收并存储上述数据采集模块收集的数据,并返回给用 户。用户可以观察恶意代码的动态行为,提取特定时刻虚拟内存中的恶意代码的二进制代 码,并可以HTML或SQL数据库格式输出分析结果。 本发明提出的基于硬件模拟器的隐藏进程检测和分析方法,对于本领域的技术人 员而言,可以根据需要自己配置各种环境信息,设计检测和分析方法,从而全面分析隐藏进 程中的恶意代码。 尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明 的内容并据以实施,但是本领域的技术人员可以理解在不脱离本发明及所附的权利要求 的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例 和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
权利要求
一种基于模拟硬件环境的处理隐藏进程的方法,其步骤如下1)按照目标文件在硬盘上的数据块排序,将数据块顺次添加到虚拟硬盘,转换为硬件模拟器识别的操作系统镜像;2)配置镜像路径、硬件模拟器的模拟内存大小及模拟CPU的类型;硬件模拟器加载步骤1)中的操作系统镜像,并启动该操作系统;3)虚拟CPU执行指令时,查找CR3寄存器中是否出现新的CR3值,若出现新CR3值,则遍历操作系统所有的EPROCESS结构是否包含有该CR3值;若不存在包含有该CR3值的EPROCESS结构,则将该CR3值对应的隐藏进程检测出来;4)利用硬件模拟器读取所述隐藏进程的内存,获取隐藏进程加载的动态库;比较所述动态库的导出表中的名称与API表中的名称,获取所述导出表中所有API的地址,构建API表;5)判断所述检测出的隐藏进程的EIP与所述API表中每个函数的第一条指令是否匹配,若匹配,则读取堆栈和寄存器获取函数参数和返回值,在虚拟内存中监控并读取参数对应执行的指令,数据采集模块记录该指令及该指令执行的数据,并返回给用户。
2. 如权利要求1所述的一种基于模拟硬件环境的处理隐藏进程的方法,其特征在于, 在虚拟CPU执行指令之前,判断是否存在提取代码镜像的请求,若存在,则在监控隐藏进程 的执行指令时,读取物理内存中的代码,找到内存页在虚拟物理内存的位置,依据偏移一次 性读出代码镜像,并记录在数据采集模块中。
3. 如权利要求1或2所述的一种基于模拟硬件环境的处理隐藏进程的方法,其特征在 于,步骤2)中还配置硬件模拟器的系统启动时间。
4. 如权利要求1或2所述的一种基于模拟硬件环境的处理隐藏进程的方法,其特征在 于,步骤2)中所述模拟CPU的类型通过硬件模拟器的译码模块获取,使模拟CPU的指令转 化为本地CPU的指令。
5. 如权利要求1或2所述的一种基于模拟硬件环境的处理隐藏进程的方法,其特征在 于,步骤2)中所述模拟内存的大小为216M 1G之间。
6. 如权利要求1或2所述的一种基于模拟硬件环境的处理隐藏进程的方法,其特征在 于,所述步骤4)中采用字符比较的方法获得API地址。
全文摘要
本发明属于网络安全技术领域,具体涉及一种基于硬件模拟器的处理隐藏进程的方法。本发明通过在模拟硬件环境上构建隐藏代码中恶意代码的运行环境,操纵和控制模拟CPU指令和各种模拟内存的访问操作,以CR3寄存器中CR3值为标志,检测出隐藏进程,监控隐藏进程的运行过程,由数据采集模块记录隐藏进程中恶意代码的运行信息;本发明同时提供从虚拟内存中直接提取恶意代码镜像。本发明的模拟硬件设备的所有虚拟CPU的指令和各种硬件操作都在翻译之后模拟执行,而不是直接使用代码片段在真实机器上执行,可在指令运行过程中精确计算该条指令运行的时间,从而实现对隐藏进程中恶意代码完全透明的分析。
文档编号G06F21/00GK101770551SQ20081024110
公开日2010年7月7日 申请日期2008年12月30日 优先权日2008年12月30日
发明者冯登国, 司端锋, 杨轶, 苏璞睿 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1