一种基于虚拟硬件环境的恶意代码自动分析方法及系统的制作方法

文档序号:6464667阅读:299来源:国知局
专利名称:一种基于虚拟硬件环境的恶意代码自动分析方法及系统的制作方法
技术领域
本发明属于网络安全技术领域,尤其涉及一种恶意代码分析的方法及系统。
背景技术
随着社会的不断发展和进步,计算机在社会各个领域的应用越来越广泛。由于软件漏 洞的广泛存在和用户安全意识的不足,恶意代码的传播速度越来越快,感染范围不断扩大, 造成的破坏日益严重,传统的安全防护手段由于受分析效率限制,响应周期难以縮短,响 应速度已经逐渐不能适应这种新情况。因此,提高恶意代码分析速度和分析效率显得十分 必要。
现有的恶意代码分析方法主要依赖于传统的软件分析和调试工具,主要包括静态反编 译,动态跟踪调试和人工分析。
利用静态反编译技术分析恶意代码,主要是利用静态反编译工具如IDA Pro,对恶意 代码的二进制文件进行静态分析,反编译出汇编指令,通过分析指令的执行流程,检查其 中包含的各种操作。这种方式的主要缺陷是,无法反编译自修改代码、动态生成代码、加 壳代码,同时难以消除花指令,代码混淆等技术造成的影响,极大的影响了分析效率和有 效性。
利用动态跟踪调试技术分析恶意代码可以在一定程度上解决静态反编译无法解决的 问题。借助软件和硬件提供的调试功能,SoftICE, OllyDbg等工具可以动态跟踪恶意代码 的运行过程,观察恶意代码运行过程中的各种行为。动态跟踪调试通常还借助VMWare, Virtual PC等操作系统虚拟工具实现。这种方式的主要问题在于,调试器与恶意代码运行 在同一个操作系统平台上,依赖于平台自身提供的调试功能,从而使得恶意代码可以检测 到调试器的存在。并且,由于操作系统虚拟工具都存在明显的特征,也很容易被恶意代码 检测到,恶意代码往往通过反跟踪,反调试,虚拟机检测技术,阻止对自身的调试,退出 运行甚至隐藏特定行为等,造成动态跟踪分析难以有效开展。
利用辅助工具进行人工分析,主要指通过观察恶意代码对文件系统,网络,进程线程 等运行环境资源的访问操作,推断恶意代码的行为特征。由于恶意代码的行为往往依赖于 外部环境,使得这种方式难以全面覆盖恶意代码可能的所有行为。同时,这种分析方法自 身特性也决定了其分析能力存在跟动态跟踪类似的同一平台竞争问题,大量的人工操作也极大地限制了其分析效率。在恶意代码数量不断膨胀的今天,人工分析的缺陷更加明显。

发明内容
本发明提供一种基于虚拟硬件环境的恶意代码自动分析方法及系统。通过在虚拟硬件 环境之上构建恶意代码所需的运行环境,并通过操纵和控制虚拟CPU指令和各种虚拟硬件
的访问操作,收集恶意代码各种操作信息,控制恶意代码的运行过程。由于数据采集通过 虚拟硬件实现,恶意代码无法感知自身是否运行在虚拟环境中,也无法分辨自身是否被跟 踪,从而实现对恶意代码完全透明的分析。
为实现以上目的,本发明的构思是分析人员通过用户控制模块配置分析环境和分析 目标的参数,启动硬件虚拟模块,加载恶意代码运行所需的操作系统镜像,启动该操作系 统,并运行待分析的恶意代码。数据采集模块根据分析目标,拦截特定的虚拟CPU指令, 收集并记录相关的访问数据,并可根据需要,更改恶意代码指令的执行流程。数据采集模 块还拦截各种虚拟硬件的访问操作,收集并记录相关操作的数据,并根据需要提供特定的 输入数据。数据分析模块综合数据采集模块收集的各种数据,通过用户控制模块实时显示 最新的恶意代码运行信息,并在分析过程终止后,关联分析所有的搜集到的数据,自动输 出分析结果。
基于以上构思,本发明的技术方案为
一种基于虚拟硬件环境的恶意代码自动分析方法,包括步骤
1) 搭建恶意代码运行环境,包括根据恶意代码运行环境的要求,虚拟所需的硬件设 备,准备相关的操作系统镜像;
2) 配置分析环境和分析参数,包括恶意代码运行所需的操作系统镜像所在位置,虚 拟硬件的各种参数,如虚拟内存大小,虚拟系统时间等,以及需要收集的恶意代码运行数 据和需要监控的恶意代码操作,如网络收发数据,文件读写操作等;
3) 完成各种虚拟设备的初始化后,加载恶意代码运行所需的操作系统镜像,启动该 操作系统,同时拦截加载操作,并将所有支持拦截的系统调用操作转换为虚拟系统对应的 系统调用的指令起始地址;
4) 运行待分析的恶意代码,虚拟CPU执行任何指令之前,判断即将执行的指令是否 为转换过来的指令起始地址,当匹配时,则暂停虚拟系统的运行,记录当前匹配操作,并 收集该操作相关的数据,如网络数据发送操作的内容,文件创建操作的文件名等信息,然 后再恢复虚拟系统的运行;同时,对于读取操作,还可根据需要提供特定的输入数据,改变恶意代码的执行流程;
5)分析所有的收集到的数据,动态显示虚拟系统状态信息和恶意代码运行信息,恶 意代码退出,分析自动终止;用户终止恶意代码的运行过程,提取某一时刻虚拟内存中的 恶意代码的二进制代码,关联分析搜集到的所有数据,输出分析结果。
一种基于虚拟硬件环境的恶意代码自动分析系统,其特征在于,包括一硬件虚拟模块, 一数据采集模块, 一数据分析模块和一用户控制模块,硬件虚拟模块和数据采集模块通过 网络连接与数据分析模块和用户控制模块进行通讯和数据交互,其中-
硬件虚拟模块虚拟实现物理计算机所需的硬件设备,加载恶意代码运行所需的操作系 统镜像;
数据采集模块拦截各种虚拟系统调用和虚拟硬件的访问操作,收集并记录相关操作的 数据;
数据分析模块关联分析所有的搜集到的数据;
用户控制模块配置分析环境和分析目标的参数,动态显示虚拟系统状态信息和恶意代 码运行信息。
根据恶意代码运行所需操作系统的不同,可以包含多个不同的数据采集模块,如图2 所示。
本发明的配置信息,可以XML结构化方式组织并存储。
进一步配置信息的分析环境信息可包括虚拟软盘镜像文件,虚拟硬盘镜像文件,虚 拟CDROM镜像文件,启动顺序,虚拟内存大小,虚拟CPU数量,虚拟时间,虚拟键盘类 型,虚拟USB设备,虚拟网卡MAC地址,虛拟网络端口到物理主机端口的重定向。
进一步配置信息的分析参数信息可包括要监控的系统调用名称,参数和返回值的结 构,以及可选的待分析的恶意代码文件名。
本发明的硬件虚拟模块和数据采集模块,与数据分析模块和用户控制模块可以运行在 不同的体系结构和操作系统上,可以通过网络通信实现交互。
本发明的优点在于,整个分析过程对恶意代码完全透明,恶意代码无法识别是否运行 在虚拟环境中还是真实环境中,也无法察觉指令执行过程是否被监控,从而能够观察到真 实环境中的恶意代码的所有可能行为。并且,由于监控操作在指令在虚拟CPU上执行前展 开,监控不会受到恶意代码中花指令,代码动态生成等各种保护技术的干扰。此外,由于 能够控制所有虚拟硬件,本发明还能够在恶意代码运行过程中,从虚拟内存中转储当前正 在执行的恶意代码的二进制代码用于静态分析,从而解决代码加壳,自修改等动态行为造成的静态分析的困难。


图1为本发明的系统工作过程流程图
图2为本发明的系统组成与模块间详细关系示意图
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步详细描述
分析人员搭建恶意代码运行环境,配置分析环境和分析目标等参数,启动硬件虚拟模 块,加载并启动恶意代码运行所需的操作系统镜像,并运行待分析的恶意代码。数据采集 模块根据分析目标,拦截特定的虚拟CPU指令和虚拟硬件的访问操作,收集并记录相关的 访问数据。数据分析模块综合数据采集模块收集的各种数据,通过用户控制模块实时显示 恶意代码运行信息,并在分析过程终止后,关联分析所有的搜集到的数据,输出分析结果。
参考附图l,下面给出详细过程。
第一步搭建恶意代码运行环境
利用硬件虚拟模块,虚拟实现物理计算机所需的CPU,内存,硬盘等核心部件以及
CDROM,网卡,软驱,USB设备等外设。由于本发明的硬件虚拟模块上运行的虚拟系统, 其所有硬盘数据以虚拟系统镜像文件的形式存在。根据恶意代码针对的运行平台和操作系 统要求,利用已有的虚拟系统镜像文件,或是运行硬件虚拟模块,安装相应的操作系统, 制作新的虚拟系统镜像文件。如x86平台上的Windows系统上的恶意代码,则可以通过硬 件虚拟模块的虚拟光驱,利用光盘安装操作系统,制作Windows系统镜像文件。 第二步配置分析环境和分析目标参数
进一步配置信息的分析环境信息可包括虚拟软盘镜像文件,虚拟硬盘镜像文件,虚 拟CDROM镜像文件,启动顺序,虚拟内存大小,虚拟CPU数量,虚拟时间,虚拟键盘类 型,虚拟USB设备,虚拟网卡MAC地址,虚拟网络端口到物理主机端口的重定向。
进一步配置信息的分析参数信息可包括要监控的系统调用名称,参数和返回值的结 构,以及可选的待分析的恶意代码文件名。
本发明的参数配置通过XML形式存储的配置文件,以及用户控制模块的图形用户界面 完成。
XML配置文件包含数据采集模块支持拦截和监控的操作,各个操作对应的参数和结果的数据结构和含义。如对Windows系统,配置文件的主要内容包括数据采集模块支持监控
的进程线程操作,网络操作,注册表操作,文件系统操作和系统服务操作API,形式如下
〈Entry〉
〈ID〉0103〈/ID〉
<Name〉NtTerminateProcess</Name> 〈Monitor〉false</Monitor〉 〈Catalog〉process〈/Catalog> 〈Detail〉
〈Signature>
NTSYSAPI
NTSTATUS
NTAPI
NtTerminateProcess(
IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus
)
</Signature〉 〈Alias〉〈/Alias〉
〈Remark〉在内核模式下结束一个进程。〈/Remark〉 〈Return〉NTSTATUS,零表示成功,其他值表示失败。〈/Return〉 〈Parameter〉
ProcessHandle, HANDLE, OPTIONAL,进程的句柄 ExitStatus, NTSTATUS,进程退出的状态 〈/Parameter> </Detail> </Entry〉
对于变动性较大的其他参数,通过用户控制模块的图形用户界面完成(也可以用命令 行),具体包括硬件虚拟模块参数,数据分析模块参数和用户控制模块参数。
硬件虚拟模块参数包括虚拟硬盘对应的虚拟系统镜像文件路径及名称,虚拟内存大 小,虚拟系统时间设置,虚拟网卡MAC地址,虚拟光驱对应的虚拟光盘文件路径及名称等。
数据分析模块参数包括分析历史数据保存控制,分析结果输出形式选择等。
用户控制模块参数包括虚拟系统实时运行状态信息显示控制,分析日志记录和操作
监控项目选择等。
第三步运行虚拟系统,分析恶意代码
完成相关配置后,用户启动硬件虚拟模块,硬件虚拟模块完成相关的初始化之后,自 动加载指定的虚拟系统镜像文件,之后开始操作系统的正常启动过程。当系统启动完成后, 对于非包含在虚拟系统里的恶意代码,还需要运行恶意代码可执行文件样本。
在虚拟系统启动的同时,数据采集模块拦截操作系统内核模块的加载过程,并将所有支持拦截的内核系统调用操作转换为虚拟系统对应的系统调用的指令起始地址。并且,在 恶意代码启动和运行过程中,数据采集模块还拦截操作系统的动态链接库加载操作,将恶 意代码运行所需的所有动态链接库中,数据采集模块支持拦截的系统调用操作也转换为虚 拟系统对应的系统调用的指令起始地址。数据采集模块指示虚拟CPU在执行指令之前,比 较和判断即将执行的指令是否在监控范围之内。当指令满足监控条件时(就是指上面的拦 截操作转换过来的系统调用的指令起始地址,在当前执行的指令的地址等于这些要监控的 指令地址时),数据采集模块指示虚拟CPU暂停,从而暂停虚拟系统的运行,提取并保存
相关的数据之后再恢复虚拟系统的运行。
例如针对Windows系统,监控恶意代码的NtTerminateProcess操作,则每当虚拟CPU 执行下一条指令之前,判断当前CR3是否与恶意代码的CR3相同,EIP是否与 NtTerminateProcess指令起始地址相等,从而决定是否中断当前执行流程。当满足条件时, 数据采集模块指示虚拟CPU暂停,将返回地址对应的指令加入指令监控列表,并根据 NtTerminateProcess声明的参数个数和结构,从虚拟系统运行栈中获取参数 ProcessHandle和ExitStatus的值,然后指示虚拟CPU恢复。当虚拟系统从 NtTerminateProcess系统调用中返回时,由于当前CR3与恶意代码的CR3相同,EIP与先 前保存的返回地址对应的指令相等,数据采集模块再次指示虚拟CPU暂停,从指令监控列 表中删除原先保存的返回地址对应的指令,并从虚拟系统运行栈中获取 NtTerminateProcess的返回值,最后再指示虚拟CPU恢复运行。通过这种方式,实现了不 利用任何操作系统和硬件调试功能的同时,完成对一个完整的系统调用的截获以及所有参 数以及返回值的收集。
对于获取数据的系统调用,如获取系统时间,操作系统信息的系统调用,数据采集模 块还可以根据配置的指示,通过修改调用堆栈并填充相关数据,同时更改EIP等相关寄存 器控制虚拟系统执行流程,为恶意代码提供执行所需的输入数据。 第四步数据关联分析
数据分析模块接收并存储数据采集模块收集到的数据,并通过用户控制模块实时显示 最新的虚拟系统状态和恶意代码运行信息。动态显示的虚拟系统状态信息,主要包括虚拟 系统内部正运行的进程的详细信息,具体包括进程名称,进程ID,可执行文件名,当前 调度状态,进程环境信息,内存使用平均值,内存使用峰值。动态显的示恶意代码运行信 息,包括恶意代码的进程详细信息,具体包括进程名称,进程ID,可执行文件名,当前
调度状态,进程环境信息,内存使用平均值,内存使用峰值。恶意代码的线程详细信息,具体包括线程ID,线程环境信息,函数地址,线程是否己经结束,线程是否将被删除。 恶意代码加载的模块的详细信息,具体包括模块的文件名,所在进程,模块是否被隐藏, 模块在内存中的加载地址,模块的大小。恶意代码的系统调用信息,具体包括系统调用 发生的时间,执行系统调用的进程名字,执行系统调用的进程标识符,系统调用类型,系 统调用名,系统调用结果,系统调用参数内容,系统调用的安全级别,以及其他能够提供 额外帮助的系统调用信息。
当恶意代码退出,分析自动终止,或是用户手动终止分析过程时,数据分析模块通过 时序关系,控制依赖关系,数据依赖关系,逻辑依赖关系对各种数据进行综合分析,根据 模块间的加载调用关系,不同进程间的父子关系,进程的线程创建终止关系,输入数据的 传播关系,不同系统调用的先后关系,在所有关联数据之间创建超链接。
如根据进程ID, CR3和进程间父子关系,数据分析模块中的分析引擎可以标识出所有 恶意代码启动的进程,终止的进程以及恶意代码打开过的进程。再如,通过不同进程对同 一个目标数据的访问操作之间的时序关系,可以识别出目标数据的传播依赖路径。
数据分析模块完成分析后,输出自动分析结果。用户可以很容易地通过各种数据项目 之间的超链接,找到并分析恶意代码不同行为之间的关系,从而了解恶意代码的真实行为 和实现机制。
对于专业人士,如果需要对恶意代码某以运行状态进行进一步的进行分析,还可以在 第三步分析过程中,通过用户控制模块,转储虚拟内存中该时刻的恶意代码内存镜像。对 于加壳代码,自修改代码以及动态产生代码,该功能能够帮助用户获取恶意代码的静态化 快照,从而可利用传统的静态分析工具进行分析,从而全面分析恶意代码可能的行为。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内 容并据以实施,但是本领域的技术人员可以理解在不脱离本发明及所附的权利要求的精 神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和 附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
权利要求
1、一种基于虚拟硬件环境的恶意代码自动分析方法,其步骤包括1)虚拟实现物理计算机所需的硬件设备,准备恶意代码运行环境相关的操作系统镜像;2)配置恶意代码分析环境和分析目标的参数;3)加载恶意代码运行所需的虚拟操作系统镜像,同时拦截操作系统内核模块的加载,将所有支持拦截的系统调用操作转换为虚拟系统对应的系统调用的指令起始地址;4)运行待分析的恶意代码,虚拟CPU在执行指令之前,判断即将执行的指令是否为转换过来的指令起始地址,是则暂停虚拟系统的运行,收集并记录该操作相关的访问数据后,再恢复虚拟系统的运行;5)分析所有的收集到的数据,动态显示虚拟系统状态信息和恶意代码运行信息,恶意代码退出,分析自动终止。
2、 如权利要求l所述的方法,其特征在于,所述步骤l)完全虚拟物理计算机的核心 部件以及常用外设,包括CPU,内存,硬盘,CDROM,网卡,软驱,键盘,鼠标以及其 他USB设备。
3、 如权利要求l所述的方法,其特征在于,所述步骤2)分析环境包括虚拟软盘镜像 文件,虚拟硬盘镜像文件,虚拟CDROM镜像文件,启动顺序,虚拟内存大小,虚拟CPU 数量,虚拟时间,虚拟键盘类型,虚拟USB设备,虚拟网卡MAC地址,虚拟网络端口到 物理主机端口的重定向。
4、 如权利要求l所述的方法,其特征在于,所述步骤2)分析目标包括要监控的系统 调用名称,参数和返回值的结构,以及可选的待分析的恶意代码文件名。
5、 如权利要求l所述的方法,其特征在于,所述步骤2)参数的配置通过XML形式存 储的配置文件,以及图形用户界面完成。
6、 如权利要求5所述的方法,其特征在于,所述XML配置文件包含支持拦截和监控 的操作,各个操作对应的参数和结果的数据结构及含义。
7、 如权利要求l所述的方法,其特征在于,所述步骤4)对于读取操作,通过修改调 用堆栈并填充相关数据,更改相关寄存器,为恶意代码提供执行所需的输入数据,控制虚 拟系统执行流程。
8、 如权利要求l所述的方法,其特征在于,所述步骤4)恶意代码运行时,拦截操作 系统的动态链接库的加载,并将所有支持拦截的系统调用操作转换为虚拟系统对应的系统 调用的指令起始地址。
9、 如权利要求l所述的方法,其特征在于,所述步骤4)从虚拟内存中转储当前时刻 的恶意代码内存镜像,获取恶意代码的静态化快照,利用传统的静态分析工具进行分析。
10、 如权利要求l所述的方法,其特征在于,所述步骤5)用户手动终止分析过程时, 通过数据的时序关系,控制依赖关系,数据依赖关系,逻辑依赖关系对收集到的数据进行 分析,根据恶意代码加载的模块间的加载顺序以及调用关系,不同进程间的父子关系,进 程的线程创建终止关系,输入数据的传播关系,不同系统调用的先后关系,在所有关联数 据之间创建超链接。
11、 一种基于虚拟硬件环境的恶意代码自动分析系统,其特征在于,包括一硬件虚拟 模块, 一数据采集模块, 一数据分析模块和一用户控制模块,硬件虚拟模块和数据采集模 块通过网络连接与数据分析模块和用户控制模块进行通讯和数据交互,其中硬件虚拟模块虚拟实现物理计算机所需的硬件设备,加载恶意代码运行所需的操作系 统镜像;数据采集模块拦截各种虚拟系统调用和虚拟硬件的访问操作,收集并记录相关操作的 数据;数据分析模块关联分析所有的搜集到的数据;用户控制模块配置分析环境和分析目标的参数,动态显示虚拟系统状态信息和恶意代 码运行信息。
12、 如权利要求11所述的系统,其特征在于,根据恶意代码运行所需操作系统的不 同,可以包含多个不同的数据采集模块。
13、 如权利要求ll所述的系统,其特征在于,所述用户控制模块采用图形用户界面, 用来动态显示虚拟系统状态信息和恶意代码运行信息。
全文摘要
本发明公开了一种基于虚拟硬件环境的恶意代码自动分析方法及系统,属于网络安全技术领域,本发明通过在虚拟硬件环境之上构建恶意代码所需的运行环境,并通过操纵和控制虚拟CPU指令和各种虚拟硬件的访问操作,收集恶意代码各种操作信息,控制恶意代码的运行过程,分析所有的收集到的数据,动态显示虚拟系统状态信息和恶意代码运行信息。由于数据采集通过虚拟硬件实现,恶意代码无法感知自身是否运行在虚拟环境中,也无法分辨自身是否被跟踪,从而实现对恶意代码完全透明的分析。
文档编号G06F21/00GK101645119SQ200810117899
公开日2010年2月10日 申请日期2008年8月7日 优先权日2008年8月7日
发明者冯登国, 应凌云, 苏璞睿 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1