基于虚拟机架构的恶意行为跟踪系统和方法

文档序号:6367713阅读:138来源:国知局
专利名称:基于虚拟机架构的恶意行为跟踪系统和方法
技术领域
本发明属于虚拟化技术和计算机系统安全领域,更具体地,涉及ー种基于虚拟机架构的恶意行为跟踪系统和方法。
背景技术
随着计算机技术的飞速发展,信息网络已经成为社会发展的重要保障,随之而来的安全问题也成为人们面临的最为严峻的问题之一。现有的恶意行为检测和分析技术或者具有较高的误报率,或者不能实时进行检测。且随着虚拟化技术的快速发展,对虚拟化环境的安全要求也日益迫切。基于特征码的检测手段是目前比较主流的检测方式提取已发现病毒的特征码,构建病毒特征数据库,通过对应用程序和数据库数据匹配来检测恶意行为。基于特征码的 检测手段对于未知病毒和多态变形病毒则无效,因此会出现很高的漏报率。动态污点跟踪分析技术能准确地分析出恶意行为,是近几年提出的ー种有效检测方式,应用范围很广,检测过程分为污点标记、污点传播跟踪以及非法操作检测。现有的动态污点跟踪分析技术主要依靠QEMU等模拟器,模拟操作系统运行,并将可疑样本文件放入模拟器中执行,跟踪发现可疑行为。此种检测手段跟踪指令流的运行过程,记录污点的传播路径及相关的操作系统状态,性能开销很大,不能对恶意行为进行实时检測。且部分恶意代码会检测自身的运行环境,当发现其运行在模拟器环境下时,其恶意行为不会被触发,检测失效。虚拟化技术出现之后,得到了用户的广泛应用,其安全性问题也是用户日益关心的话题。虚拟化平台提供多个客户操作系统供用户使用,用户隐私信息集中,更加容易吸引恶意行为的攻击;另外,由于环境复杂,同一物理结点上存在有多种不同的客户操作系统,安全需求也不一样,単独配置安全软件会导致资源浪费,管理复杂。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于虚拟机架构的恶意行为跟踪方法,其针对虚拟机上的多种操作系统,跟踪操作系统内部的污点传播过程,并从中发现恶意行为,实时准确地检测虚拟化平台上的操作系统内的恶意行为。为实现上述目的,本发明提供了一种基于虚拟机架构的恶意行为跟踪方法,包括(I)接收污点数据,将污点数据存储于客户操作系统的虚拟内存中,并在实际内存中分配一块内存区域存储该污点信息;(2)在Xen中将客户操作系统内存中污点数据所处地方的对应影子页表处内存状态修改为不存在;(3)客户操作系统进入处理污点数据的状态,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行;
(4)对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中;(5)跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程;(6)根据污点数据的传播过程生成传播图;(7)对传播图进行检测,以判断是否存在有分支,若存在有分支,则说明有恶意行为发生,并进入步骤(8),否则说明没有恶意行为发生,并进入步骤(10);(8)将传播图中分支处的进程信息通知给用户;(9)返回步骤(8),直到传播图中所有的分支均已检测完毕为止;(10)还原虚拟机控制结构域,以使客户操作系统能够正常执行。步骤(5)包括如下子步骤(5-1)检查客户操作系统的指令流中的指令,以判断该指令是数据移动指令或DMA操作指令、算木指令、数据索引指令还是常量函数指令及其它指令,如果是数据移动指令或DMA操作指令,则转入步骤(5-2),如果是算木指令,则进入步骤(5-3),如果是数据索引指令,则进入步骤(5-4),如果是常量函数指令及其它指令,则不做处理直接进入步骤(5-5);(5-2)判断该指令的源操作数是否被污染,若是,则在该指令的目的操作数对应的影子页表中对该目的操作数进行标记,并转入步骤(5-5),否则直接转入步骤(5-5);(5-3)判断该指令的操作数的每一位是否都被污染,若是,则在该指令的结果操作数对应的影子页表中对该操作数进行标记,并转入步骤(5-5),否则直接转入步骤(5-5);(5-4)判断该指令中作为索引的数据是否被污染,若是,则在以该索引作为内存地址读取的数据对应的影子页表中对该数据进行标记,并转入步骤(5-5),否则直接转入步骤(5-5);(5-5)判断指令流是否执行完毕,若是则结束,否则对下一条指令重复执行步骤(5-1)。污点数据是来自用户通过键盘输入的数据,或者是网络下发的数据。通过本发明所构思的以上技术方案,与现有技术相比,本发明能够取得以下的技术效果I)恶意行为检测的准确性由于采用了跟踪污点数据的传播过程,并生成了污点传播图,很容易看清信息的走向,只要发生信息获取的恶意行为,不论是已知病毒还是未知病毒或者多太变形病毒,都能从病毒所产生的恶意行为根本处进行判断。因此检测的准确率比较高,漏报率比较少。2)基于污点的实时跟踪由于使用影子页表将污点数据处内存标记为不存在,修改客户操作系统的虚拟机控制结构域,只在客户操作系统处理污点数据时才陷入到Xen虚拟机管理器层做客户操作系统指令流的单步跟踪,跟踪处理污点数据的传播过程,減少了 QEMU等模拟器做污点跟踪吋,整个系统运行过程无论是否处理污点数据都做指令流单步跟踪的系统开销。使得污点跟踪技术可以实时运行,而不用进行离线分析。同时也消除了病毒在模拟器环境下不触发自身恶意行为的弊端。 3)虚拟机恶意行为跟踪的透明性
通过对客户操作系统做影子页表,客户操作系统陷入虚拟机管理器层执行,获得客户操作系统的高级语意信息,并跟踪监控Xen上所有客户操作系统的污点数据传播过程,从而实现了统一检测。本发明的另一目的在于提供一种基于虚拟机架构的恶意行为跟踪系统,其针对虚拟机上的多种操作系统,跟踪操作系统内部的污点传播过程,并从中发现恶意行为,实时准确地检测虚拟化平台上的操作系统内的恶意行为。为实现上述目的, 本发明提供了一种基于虚拟机架构的恶意行为跟踪系统,包括接收模块、标记模块、修改模块、翻译模块、跟踪模块、传播图生成模块和检测模块,接收模块用于接收污点数据,并将污点数据存储于客户操作系统的内存中,标记模块部署于虚拟机管理器层,用于在Xen中将客户操作系统内存中污点数据所处地方的对应影子页表处内存状态修改为不存在,修改模块部署于虚拟机管理器层,用于在客户操作系统进入处理污点数据的状态时,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行,翻译模块部署于虚拟机管理器层,用于对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中,跟踪模块部署于虚拟机管理器层,用于跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程,传播图生成模块部署于虚拟机管理器层,用于根据污点数据的传播过程生成传播图,检测模块部署于特权虚拟机内,用于对传播图进行检测,以判断是否存在有分支,若存在有分支,则说明有恶意行为发生,并将传播图中分支处的进程信息通知给用户,否则说明没有恶意行为发生,并还原客户操作系统的虚拟机控制结构位,以使客户操作系统能够正常执行。跟踪模块包括第一判断子模块、第二判断子模块、第三判断子模块、第四判断子模块、第五判断子模块、第一标记子模块、第二标记子模块和第三标记子模块,第一判断子模块用于检查客户操作系统的指令流中的指令,以判断该指令是数据移动指令或DMA操作指令、算木指令、数据索引指令还是常量函数指令及其它指令,第二判断子模块用于在该指令是数据移动指令或DMA操作指令时判断该指令的源操作数是否被污染,第三判断子模块用于在该指令是算术指令时判断该指令的操作数的每一位是否都被污染,第四判断子模块用于在该指令是数据索引时判断该指令中作为索引的数据是否被污染,第五判断子模块用于判断指令流是否执行完毕,第一标记子模块用于在第二判断子模块判断该指令的源操作数被污染时在该指令的目的操作数对应的影子页表中对该目的操作数进行标记,第二标记子模块用于在第三判断子模块判断该指令的操作数的每一位都被污染时在该指令的结果操作数对应的影子页表中对该操作数进行标记,第三标记子模块用于在第四判断子模块判断该指令中作为索引的数据被污染时在以该索引作为内存地址读取的数据对应的影子页表中对该数据进行标记。通过本发明所构思的以上技术方案,与现有技术相比,本发明能够取得以下的技术效果I)本系统准确率高由于采用了跟踪模块跟踪污点信息的传播过程,并在传播结束后由污点生成模块生成污点传播图以供检测模块检測。只要发生信息获取的恶意行为,不论是已知病毒还是未知病毒或者多太变形病毒,都能从病毒所产生的恶意行为根本处进行判断。因此检测的准确率比较高,漏报率比较少,
2)本系统开销较QEMU等模拟器少由于采用了标记模块和修改模块,使用影子页表将污点数据处内存标记为不存在,修改客户操作系统的虚拟机控制结构域,只在客户操作系统处理污点数据时才陷入到Xen虚拟机管理器层做客户操作系统指令流的单步跟踪,減少了 QEMU等模拟器做污点跟踪时,整个系统运行过程无论是否处理污点数据都做指令流单步跟踪的系统开销。


图I是本发明中采用的虚拟机Xen的架构图。图2是本发明基于虚拟机架构的恶意行为跟踪方法的流程图。图3是采用本发明方法所获取的污点数据。图4是本发明方法中步骤(5)的细化流程图。 图5是本发明基于虚拟机架构的恶意行为跟踪系统的示意框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进ー步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图I所示,在本发明中,虚拟机架构采用Xen架构。在Xen的架构图上看,Xen虚拟机管理器是ー层位于计算机硬件和操作系统之间的软件层,它运行在特权模式,负责管理和隔离上层运行的多个虚拟机,为这些虚拟机提供独立的运行环境。同时也为每个虚拟机虚拟ー套与真实硬件无关的虚拟硬件环境,如显示器、硬盘、CPU、内存、网卡等。虚拟机内部运行的即是用户所使用的客户操作系统。Xen虚拟机管理器将可以将多个虚拟机合并到ー个物理平台上。虚拟机0 (Domain 0,简称Dom 0)是ー个特权虚拟域,用来辅助Xen管理其它虚拟域,提供相应的虚拟资源服务,特别是其它虚拟域对I/O设备的访问。DomO拥有真实的设备驱动(Native Device Driver,即原生设备驱动),能够直接访问物理硬件,负责启动和停止其他的虚拟机,并通过控制接ロ控制其他虚拟域的CPU调度、内存分配以及设备访问,如物理磁盘存储和网络接ロ等。其它虚拟机则被统称为虚拟机U (Domain U,简称DomU)。在虚拟机中运行的操作系统亦被称作客户操作系统(Guest Operation System)。Xen的虚拟化分为半虚拟化和全虚拟化,在半虚拟化中客户操作系统内核做了相应修改,全虚拟化下可以安装毫无修改的操作系统,如Windows。本发明使用的是全虚拟化。如图2所示,本发明基于虚拟机架构的恶意行为跟踪方法包括如下步骤(I)接收污点数据,将污点数据存储于客户操作系统的虚拟内存中,并在实际内存中分配一块内存区域存储该污点信息;污点数据是来自用户通过键盘输入的数据,或者是网络下发的数据,如图3所示,污点数据为用户从键盘输入的密码。对每个客户操作系统都使用一个页表式污点信息存储结构,初始时该页表式存储结构中只存在一个空页表,当ー个污点数据信息要存储时,传入其对应的地址及污点信息,根据地址搜索并创建页表,将污点信息存入对应的ニ级页表指向的数据结构中。
(2)在Xen中将客户操作系统内存中污点数据所处地方的对应影子页表处内存状态修改为不存在;由于Xen上存在有多个操作系统,姆个操作系统自认为自己拥有完整的内存,而ー个物理内存实际是多个虚拟机共用的,Xen监控程序必须把客户机线性地址到客户机物理地址的转换修正为客户机线性地址到宿主机物理地址的转换,这就要使用影子页表。影子页表修改的是物理内存存入的数据状态。(3)客户操作系统进入处理污点数据的状态,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行;将影子页表内存处状态修改为不存在后,处理污点数据时会产生缺页中断,修改了虚拟机控制结构域之后,缺页中断会交给虚拟机管理器处理,客户操作系统退出。(4)对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中;通过对内存中某些数据结构的反向翻译,可以获取与污点数据相关的进程、文件等高级语义信息,这些信息作为之后分析的数据ー并存入污点信息存储结构中。(5)跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程;从开始处理污点数据时,对操作系统指令流进行单步跟踪,多少条指令不涉及污点数据时结束对指令流的跟踪取决于实验测试結果,阈值定小了可能会频繁切換操作系统和虚拟机管理器,做污点跟踪系统开销很大。阈值定大了也会造成对不必要指令跟踪的系统开销。(6)根据污点数据的传播过程生成传播图;从污点信息存储结构中获取污点数据的进程信息,在污点传播过程中发生污点数据跨越了进程进行传播时,记录进程的流向以及文件信息;如图3所示,密码污点数据首先传递给Winlogon. ex进程,接着污点数据传播给了另外两个进程lsass. ex及Winlogon.exe ! mscad. dll,最后通过进程Winlogon. exe ! mscad. dll 传递到文件C \ginalog. log。(7)对传播图进行检测,以判断是否存在有分支,若存在有分支,则说明有恶意行为发生,并进入步骤(8),否则说明没有恶意行为发生,并进入步骤(10);(8)将传播图中分支处的进程信息通知给用户;(9)返回步骤(8),直到传播图中所有的分支均已检测完毕为止;(10)还原虚拟机控制结构域,以使客户操作系统能够正常执行。如图4所示,步骤(5)包括如下子步骤(5-1)检查客户操作系统的指令流中的指令,以判断该指令是数据移动指令或DMA操作指令、算木指令、数据索引指令还是常量函数指令及其它指令,如果是数据移动指令或DMA操作指令,则转入步骤(5-2),如果是算木指令,则进入步骤(5-3),如果是数据索引指令,则进入步骤(5-4),如果是常量函数指令及其它指令,则不做处理直接进入步骤(5-5);(5-2)判断该指令的源操作数是否被污染,若是,则在该指令的目的操作数对应的 影子页表中对该目的操作数进行标记,并转入步骤(5-5),否则直接转入步骤(5-5);(5-3)判断该指令的操作数的每一位是否都被污染,若是,则在该指令的结果操作数对应的影子页表中对该操作数进行标记,并转入步骤(5-5),否则直接转入步骤(5-5);
(5-4)判断该指令中作为索引的数据是否被污染,若是,则在以该索引作为内存地址读取的数据对应的影子页表中对该数据进行标记,并转入步骤(5-5),否则直接转入步骤(5-5);(5-5)判断指令流是否执行完毕,若是则结束,否则对下一条指令重复执行步骤(5-1)。如图5所示,本发明基于虚拟机架构的恶意行为跟踪系统包括接收模块I、标记模块2、修改模块3、翻译模块4、跟踪模块5、传播图生成模块6和检测模块7。接收模块I用于接收污点数据,并将污点数据存储于客户操作系统的内存中,污点数据源是来自用户通过键盘输入的数据,或者是网络下发的数据。标记模块2部署于虚拟机管理器层,用于在Xen中将客户操作系统内存中污点数 据所处地方的对应影子页表处内存状态修改为不存在。修改模块3部署于虚拟机管理器层,用于在客户操作系统进入处理污点数据的状态时,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行。翻译模块4部署于虚拟机管理器层,用于对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中。跟踪模块5部署于虚拟机管理器层,用于跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程,跟踪模块5包括第一判断子模块51、第二判断子模块52、第三判断子模块53、第四判断子模块54、第五判断子模块55、第一标记子模块56、第二标记子模块57和第三标记子模块58。第一判断子模块51用于检查客户操作系统的指令流中的指令,以判断该指令是数据移动指令或DMA操作指令、算木指令、数据索引指令还是常量函数指令及其它指令。第二判断子模块52用于在该指令是数据移动指令或DMA操作指令时判断该指令的源操作数是否被污染。第三判断子模块53用于在该指令是算术指令时判断该指令的操作数的每一位是否都被污染。第四判断子模块54用于在该指令是数据索引时判断该指令中作为索引的数据是否被污染。第五判断子模块55用于判断指令流是否执行完毕。第一标记子模块56用于在第二判断子模块52判断该指令的源操作数被污染时在该指令的目的操作数对应的影子页表中对该目的操作数进行标记。第二标记子模块57用于在第三判断子模块53判断该指令的操作数的每一位都被污染时在该指令的结果操作数对应的影子页表中对该操作数进行标记。第三标记子模块58用于在第四判断子模块54判断该指令中作为索引的数据被污染时在以该索引作为内存地址读取的数据对应的影子页表中对该数据进行标记。传播图生成模块6部署于虚拟机管理器层,用于根据污点数据的传播过程生成传播图。检测模块7部署于特权虚拟机0 (Dom 0)内,用于对传播图进行检测,以判断是否存在有分支,若存在有分支,则说明有恶意行为发生,并将传播图中分支处的进程信息通知给用户,否则说明没有恶意行为发生,并还原客户操作系统的虚拟机控制结构位,以使客户操作系统能够正常执行。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于虚拟机架构的恶意行为跟踪方法,其特征在于,包括 (1)接收污点数据,将污点数据存储于客户操作系统的虚拟内存中,并在实际内存中分配一块内存区域存储该污点信息; (2)在Xen中将客户操作系统内存中污点数据所处地方的对应影子页表处内存状态修改为不存在; (3)客户操作系统进入处理污点数据的状态,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行; (4)对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中; (5)跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程; (6)根据污点数据的传播过程生成传播图; (7)对传播图进行检测,以判断是否存在有分支,若存在有分支,则说明有恶意行为发生,并进入步骤(8),否则说明没有恶意行为发生,并进入步骤(10); (8)将传播图中分支处的进程信息通知给用户; (9)返回步骤(8),直到传播图中所有的分支均已检测完毕为止; (10)还原虚拟机控制结构域,以使客户操作系统能够正常执行。
2.根据权利要求I所述的恶意行为跟踪方法,其特征在于,步骤(5)包括如下子步骤 (5-1)检查客户操作系统的指令流中的指令,以判断该指令是数据移动指令或DMA操作指令、算术指令、数据索引指令还是常量函数指令及其它指令,如果是数据移动指令或DMA操作指令,则转入步骤(5-2),如果是算术指令,则进入步骤(5-3),如果是数据索引指令,则进入步骤(5-4),如果是常量函数指令及其它指令,则不做处理直接进入步骤(5-5); (5-2)判断该指令的源操作数是否被污染,若是,则在该指令的目的操作数对应的影子页表中对该目的操作数进行标记,并转入步骤(5-5),否则直接转入步骤(5-5); (5-3)判断该指令的操作数的每一位是否都被污染,若是,则在该指令的结果操作数对应的影子页表中对该操作数进行标记,并转入步骤(5-5),否则直接转入步骤(5-5); (5-4)判断该指令中作为索引的数据是否被污染,若是,则在以该索引作为内存地址读取的数据对应的影子页表中对该数据进行标记,并转入步骤(5-5),否则直接转入步骤(5-5); (5-5)判断指令流是否执行完毕,若是则结束,否则对下一条指令重复执行步骤(5-1)。
3.根据权利要求I所述的恶意行为跟踪方法,其特征在于,污点数据是来自用户通过键盘输入的数据,或者是网络下发的数据。
4.一种基于虚拟机架构的恶意行为跟踪系统,包括接收模块、标记模块、修改模块、翻译模块、跟踪模块、传播图生成模块和检测模块,其特征在于, 接收模块用于接收污点数据,并将污点数据存储于客户操作系统的内存中; 标记模块部署于虚拟机管理器层,用于在Xen中将客户操作系统内存中污点数据所处地方的对应影子页表处内存状态修改为不存在; 修改模块部署于虚拟机管理器层,用于在客户操作系统进入处理污点数据的状态时,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行;翻译模块部署于虚拟机管理器层,用于对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中; 跟踪模块部署于虚拟机管理器层,用于跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程; 传播图生成模块部署于虚拟机管理器层,用于根据污点数据的传播过程生成传播图; 检测模块部署于特权虚拟机内,用于对传播图进行检测,以判断是否存在有分支,若存在有分支,则说明有恶意行为发生,并将传播图中分支处的进程信息通知给用户,否则说明没有恶意行为发生,并还原客户操作系统的虚拟机控制结构位,以使客户操作系统能够正常执行。
5.根据权利要求4所述的恶意行为跟踪系统,其特征在于, 跟踪模块包括第一判断子模块、第二判断子模块、第三判断子模块、第四判断子模块、第五判断子模块、第一标记子模块、第二标记子模块和第三标记子模块; 第一判断子模块用于检查客户操作系统的指令流中的指令,以判断该指令是数据移动指令或DMA操作指令、算术指令、数据索引指令还是常量函数指令及其它指令; 第二判断子模块用于在该指令是数据移动指令或DMA操作指令时判断该指令的源操作数是否被污染; 第三判断子模块用于在该指令是算术指令时判断该指令的操作数的每一位是否都被污染; 第四判断子模块用于在该指令是数据索引时判断该指令中作为索引的数据是否被污染; 第五判断子模块用于判断指令流是否执行完毕; 第一标记子模块用于在第二判断子模块判断该指令的源操作数被污染时在该指令的目的操作数对应的影子页表中对该目的操作数进行标记; 第二标记子模块用于在第三判断子模块判断该指令的操作数的每一位都被污染时在该指令的结果操作数对应的影子页表中对该操作数进行标记; 第三标记子模块用于在第四判断子模块判断该指令中作为索引的数据被污染时在以该索引作为内存地址读取的数据对应的影子页表中对该数据进行标记。
6.根据权利要求4所述的恶意行为跟踪系统,其特征在于,污点数据是来自用户通过键盘输入的数据,或者是网络下发的数据。
全文摘要
本发明公开了一种基于虚拟机架构的恶意行为跟踪方法,包括接收污点数据,将污点数据存储于客户操作系统的虚拟内存中,并在实际内存中分配一块内存区域存储该污点信息,在Xen中将客户操作系统内存中污点数据所处地方的对应影子页表处内存状态修改为不存在,修改虚拟机控制结构域,并且客户操作系统陷入虚拟机管理器层执行,对操作系统状态进行语义翻译,以获取高级语义信息,并将高级语义信息记录在污点数据结构中,跟踪客户操作系统的指令流的单步执行以及污点数据的传播过程,根据污点数据的传播过程生成传播图,对传播图进行检测,以判断是否存在有分支。本发明可实时准确地检测虚拟化平台上的操作系统内的恶意行为。
文档编号G06F9/455GK102651062SQ201210100509
公开日2012年8月29日 申请日期2012年4月9日 优先权日2012年4月9日
发明者王晓娣, 羌卫中, 袁劲枫, 邹德清, 金海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1