一种提取函数调用序列特征识别恶意软件自主传播的方法

文档序号:6442843阅读:315来源:国知局
专利名称:一种提取函数调用序列特征识别恶意软件自主传播的方法
技术领域
本发明通过动态分析对恶意软件进行监控,提取恶意软件执行过程中产生的函数调用序列,利用函数调用序列中的特征,分析恶意软件自主传播的行为,可以应用于恶意软件恶意自主传播的提取和分析。
背景技术
恶意软件是计算机安全领域的重要威胁。恶意软件通过自身恶意行为获取受害用户的私密信息,盗取硬盘的重要文件,篡改电脑上的重要数据,甚至造成系统的崩溃。恶意软件时刻威胁着全球经济与社会的安全稳定。恶意软件不仅仅对个人微机造成影响,同时也会造成大量的经济损失。根据统计,2005年由于恶意软件造成的经济损失高达142亿美元。由于经济利益对于不法分子的驱使,恶意软件成为了不法分子非法快速获利的重要渠道。更有甚者为了逃避杀毒软件的追踪和锁定,恶意软件不断推陈出新并且保持了表现的多样性。由于主流杀毒软件的病毒库更新总是滞后于恶意软件的作用时间,往往在恶意软件造成巨大灾难后,杀毒软件才会推出相应的数据库更新。因此,恶意软件的预防和清除对于计算机安全和金融安全而言,重要性不言而喻。为了高效率地对恶意软件的预防和清除,需要了解并掌握恶意代码的目的及行为。基于此,又必须引入恶意软件行为分析技术。如今,恶意软件行为分析成为了分析恶意软件目的和行为的重要方法。恶意软件行为分析的主要方法分为静态分析和动态分析。静态分析主要对恶意软件的源码进行分析而不执行恶意软件本身。现今有许多静态分析技术用于检测不同的恶意代码。虽然静态分析可以全面、快速地分析恶意软件,但是恶意软件会通过一系列混淆技术很好地伪装自己。恶意软件通过混淆技术在维持软件自身语义和功能的同时,让静态分析难以提取和理解代码的结构。恶意软件也可以通过多形态和变异技术, 使得静态分析得出的代码行为同实际运行的代码行为不同。动态分析可以很好的弥补上述静态分析的缺陷。动态分析是在软件运行时实时进行分析。由于分析的实时性,因此动态分析可以免疫恶意软件的混淆技术,并且保持了分析结果同恶意软件执行路径的高度一致。相比于静态分析,动态分析对于一个恶意软件的分析周期比较长,不过在绝大多数情况下这样的时间耗费是允许的。由于动态分析需要执行恶意软件,因此在执行恶意软件的过程中,需要保证恶意软件不会对当前用于分析的计算机以及整个互联网造成影响。基于此,需要一个隔离环境来运行恶意软件并保证整个分析过程的安全和稳定。如何构造一个透明的隔离环境,使其既能确保隔离恶意软件的潜在安全威胁,又能有效运行恶意软件,并且还能监控恶意软件行为,这一问题是个人计算平台分析恶意软件行为的关键。目前,对于恶意软件的行为分析成为了计算机安全领域的研究热点。但是目前对于恶意软件行为的研究还停留在恶意软件的主机行为上,对于恶意软件的网络行为分析较少。通过分析恶意软件的自主传播行为,可以有效对恶意软件的防护和互联网的安全提供有效保障。

发明内容
本发明目的在于利用动态分析和污点传播的技术方法,通过提取恶意软件函数调用序列以及污点数据在内存中的流向情况,识别恶意软件通过网络进行自主传播的行为, 提高对于恶意软件自主传播的分析能力。为实现本发明的目的,采用的技术方案包括以下步骤第一步,设置隔尚分析环境。方法包括I. 1,选择安全、可靠的虚拟环境作为隔离环境,保证恶意软件不会对分析环境造成破坏;同时,利用基于硬件层模拟的虚拟环境,使得恶意软件无法识别自身所处环境,从而诱导恶意软件的具体行为;1. 2,在隔离环境中搭载虚拟操作系统,利用虚拟机监视器对虚拟操作系统中执行的恶意软件的行为进行提取;I. 3,建立同虚拟操作系统进行数据交互的网络环境,保证交互双方的网络通信正常,根据恶意软件的基础类型,在隔离环境和网络环境中进行配置用于触发恶意软件的网络行为,确保恶意软件能够通过该网络叫自身传播出去。第二步,对恶意软件及其副本进行识别。2. 1,利用动态分析,对虚拟操作系统中的恶意软件进行监控,对其函数调用行为进行提取和分析;2. 2,利用提取的恶意软件函数调用行为序列,分析恶意软件的自我复制行为,明确自我复制的识别机制。2. 3. I直接识别通常一些简单的恶意软件会直接调用copyfile函数来完成对于自我的复制。对这类复制方法的识别称为直接识别。直接识别的流程如图I所示,其中恶意软件列表存储着恶意软件的所有副本的路径。在恶意软件刚刚开始执行时,恶意软件列表中仅有一项,即恶意软件源文件的路径。copyfile函数的参数中包括了源文件的路径、文件名以及目标文件的路径、文件名,因此只需要根据这些信息就可以确认恶意软件的复制过程。通过copyfile函数的返回值可以判断函数是否成功执行完毕。如果源文件的路径存在于恶意软件列表中且copyfile函数最后操作成功,则表明恶意软件进行了一次自我复制。2. 3. 2间接识别部分恶意软件通过文件操作序列来完成自我的复制。间接识别机制就是对通过分析文件操作序列来提取恶意软件自我复制过程的。间接识别通过恶意软件的函数调用序列来判断恶意软件是否含有自我复制行为,首先提取createfile函数,判断该函数创建的文件是否属于恶意软件列表,如果属于,则记录该函数对应句柄号。之后分析readfile函数,将readfile函数的句柄号与之前记录的句柄号进行比较,如果相同,贝Ij 将readfile函数中存放文件的内存地址存储出来。将随后执行的writefile函数对应数据地址同记录的内存地址进行匹配。若相同,则进行调用序列回溯,分析在writefile函数执行之前的createfile函数的句柄号是否同writefile函数相同。若存在createfile函数有相同的句柄号,则将createfile函数对应的文件路径记录起来,该文件路径就是恶意软件的一个副本。2. 3,通过识别过程获取恶意软件的副本文件,并将所有的副本文件存储起来,用于动态污点分析。第三步,利用动态污点分析对恶意软件及其副本进行污点分析。3. 1,污点源设置。将所有恶意软件及其副本的可执行文件所在内存区域设置为污点源,利用动态污点分析观察这些污点数据在内存中的流向;3. I. I恶意软件通过调用readfile ()函数将自己写入内存中。所以需要在内存中寻找到用于存储恶意软件可执行文件的区域并将该区域设置为污点源。因此系统监测每一 AcreatefileO函数,利用函数参数中的文件路径,同恶意软件列表匹配,若相同则表明创建的文件句柄指向了恶意软件对应的文件;3. I. 2对readfile ()函数进行扫描,若存在一个readfile ()函数其句柄号同之前发现的createfileO函数的句柄号相同且readfile ()函数成功执行,则记录下 readfile ()函数中对应的数据地址及数据大小。数据地址指向的地址空间存储的就是恶意软件可执行文件本身,将该空间设置为污点源。3. 2,检查发送缓冲区。恶意软件调用sendO函数将消息发送至指定地址。当恶意软件调用该函数时,利用动态监控机制可以发现恶意软件这一行为。利用函数的参数2 和参数3可以定位发送缓冲区。对发送缓冲区的每一个字节进行污点检查,若有字节被污染,则根据污点标识发现对应的污点源,判断污点源就是恶意软件的可执行文件。通过判断污点源,可以得到发送缓冲区的字节是否来源于恶意软件的可执行文件。发送缓冲区的数据的确被这些污点源污染且发送函数最后成功执行,我们就可以断定恶意软件执行了一次自我传播。当然,对于可执行文件较大的恶意软件而言,可能要多次利用sendO来完成整体的发送。与现有技术相比,本发明可以达到的技术效果是本发明通过动态分析对恶意软件的执行过程进行监控,利用恶意软件的函数调用行为明确恶意软件的自我复制行为。在动态分析中,对发送缓冲区中的数据进行动态污点分析,通过动态污点分析,明确恶意软件是否存在自主传播的过程。


图I是恶意软件自我复制行为直接识别过程图;图2是恶意软件自我复制行为间接识别过程图;图3是本发明的恶意软件自主传播的识别过程图。
具体实施例方式图I是恶意软件自我复制行为直接识别过程图。首先利用copyfile函数的参数获取复制的源文件所在路径,将源文件路径同恶意软件列表进行判断,分析该文件是否为恶意软件或恶意软件副本,若是,则进一步判断函数是否成功调用,如果最后copyfile函数调用成功,则将目标路径添入恶意软件列表中。图2是恶意软件自我复制行为间接识别过程图。恶意软件间接识别过程是利用恶意软件执行序列完成的,具体的方法见发明内容的2. 3. 2。图3是恶意软件自主传播的识别过程图。首先利用createfile函数和readfile 函数确认恶意软件或其副本在内存中的位置,将这些位置设置为污点源,通过动态污点分析,判断污点的传播流向。最后通过对发送缓冲区的分析确认恶意软件的自我传播过程。
下面结合附图,更详细地介绍本发明的具体实施方式
。本发明针对恶意软件的自主传播行为进行识别,可对于任意存在潜在网络行为的恶意软件进行分析。本实施以邮件螺虫Email-Worm_Win32_LovGate_w为具体测试用例说明本发明的实现方法。第一步,隔离环境及网络环境的设置。I. I选择安全、可靠的虚拟环境作为隔离环境。隔离环境需要具备硬件层模拟功能,保证恶意软件的封闭性。在隔离环境中,需要虚拟机监视器对隔离环境中的软件进行监控。目前流行的虚拟机监视器有QEMU、TEMU等。本实施安装TEMU虚拟机监视器。TEMU虚拟机监视器安装在Ubuntu宿主操作系统中;I. 2利用虚拟机监视器,开启虚拟操作系统。针对不同的恶意软件可以开启不同的操作系统,本实施针对Windows操作系统下的邮件螺虫病毒进行分析,因此选取WindowsXp sp3操作系统;I. 3在宿主操作系统上安装邮件服务器的服务端。目前提供SMTP邮件发送服务的常用软件有sendmail、Qmail等,本实施在宿主操作系统上安装sendmail. 8. 13. 0软件开启 SMTP邮件服务,域名为@test. com ;I. 4建立宿主操作系统和虚拟操作系统的网络连接,保证网络通畅,在虚拟操作系统中对进行基础配置,保证虚拟操作系统可以成功将邮件提交给服务端。本实施例对虚拟操作系统中的Outlook Express进行配置,确保虚拟操作系统利用Outlook Express进行邮件收发。第二步,恶意软件及其副本的识别。2. I利用虚拟机监视器,对虚拟操作系统中的恶意软件进行监控。当恶意软件执行时,利用动态分析对恶意软件的每一条指令进行提取,分析恶意软件的函数调用行为,对函数调用行为进行提取。TEMU虚拟机监视器提供了基本的动态分析保障,本实施例利用TEMU 提供的变成接口分析恶意软件调用的call指令,通过call指令分析恶意软件的函数调用行为。2. I. I监控恶意软件调用的每一个call指令;2. I. 2将call指令携带的参数同API函数和系统函数的入口地址进行比较,如果相同,则说明恶意软件调用了该函数,将函数记录下来;2. I. 3在函数调用的初始阶段,利用TEMU虚拟机监视器暂停虚拟操作系统,执行监控代码,利用监控代码获取调用函数的输入参数;2. I. 4恢复虚拟操作系统,调用的函数开始执行;2. I. 5在函数执行完毕时,利用TEMU虚拟机监视器再次暂停虚拟操作系统,执行监控代码,利用监控代码获取调用函数的输出参数和返回时。2. 2对恶意软件的自我复制行为进行识别,具体识别机制有直接识别和间接识别。 利用2. I提到的函数监控方法,对恶意软件调用的函数进行提取,将提取的函数用于自我复制的识别。自我复制的直接识别和间接识别的过程见发明内容2. 3及图I和图2。第三步,利用动态污点分析对恶意软件及其副本进行污点分析。3. I图3展示了动态污点分析的整个流程,其中动态污点分析是伴随着动态分析进行的。针对LoVGate_W恶意软件的分析也是通过该流程完成的;3. 2具体分析Email螺虫调用的readfile函数和createfile函数。利用监控代码可以获取readfile函数和createfile函数的参数信息。利用发明内容中的3. I方法确认恶意软件可执行文件在内存中的位置,将这些位置设置为污点源。污点源在内存中的存储位置可以通过readfile函数的参数获取;3. 3Email螺虫调用send()函数将消息发送至指定地址。当LovGate_w调用send 函数时,通过虚拟机监视器可以发现恶意软件这一行为,利用函数的参数2和参数3可以定位发送缓冲区。对发送缓冲区的每一个字节进行污点检查,若有字节被污染,则根据污点标识发现对应的污点源。3. 4当过完成一次完整的发送过程(可能包含多次的发送函数)后, 对在此次发送过程中发出的所有消息进行统计,判断发出去的被污染的字节大小,若字节的大小同LovGate_w的可执行文件本身大小相近,则可以认为LovGate_w执行了一次自主传播。
权利要求
1.一种提取函数调用序列特征识别恶意软件自主传播的方法,其特征在于,该方法包括以下步骤第一步,设置隔离分析环境;(1)选择安全、可靠的虚拟环境作为隔离环境,保证恶意软件不会对分析环境造成破坏;同时,利用基于硬件层模拟的虚拟环境,使得恶意软件无法识别自身所处环境,从而诱导恶意软件的具体行为;(2)在隔离环境中搭载虚拟操作系统,利用虚拟机监视器对虚拟操作系统中执行的恶意软件的行为进行提取;(3)建立同虚拟操作系统进行数据交互的网络环境,保证交互双方的网络通信正常, 根据恶意软件的基础类型,在隔离环境和网络环境中进行配置用于触发恶意软件的网络行为,确保恶意软件能够通过该网络叫自身传播出去;第二步,对恶意软件及其副本进行识别;(1)利用动态分析,对虚拟操作系统中的恶意软件进行监控,对其函数调用行为进行提取和分析;(2)利用提取的恶意软件函数调用行为序列,分析恶意软件的自我复制行为,明确自我复制的识别机制;(3)通过识别过程获取恶意软件的副本文件,并将所有的副本文件存储起来,用于动态污点分析;第三步,利用动态污点分析对恶意软件及其副本进行污点分析;(1)污点源设置将所有恶意软件及其副本的可执行文件所在内存区域设置为污点源, 利用动态污点分析观察这些污点数据在内存中的流向;(2)检查发送缓冲区恶意软件调用sendO函数将消息发送至指定地址,当恶意软件调用该函数时,利用动态监控机制可以发现恶意软件这一行为,对发送缓冲区的每一个字节进行污点检查,若有字节被污染,则根据污点标识发现对应的污点源,判断污点源就是恶意软件的可执行文件,通过判断污点源,可以得到发送缓冲区的字节是否来源于恶意软件的可执行文件。
2.根据权利要求I所述的一种提取函数调用序列特征识别恶意软件自主传播的方法,其特征在于,利用提取的恶意软件函数调用行为序列,分析恶意软件的自我复制行为, 明确自我复制的识别机制的包括(O直接识别=Copyfile函数的参数中包括了源文件的路径、文件名以及目标文件的路径、文件名,只需要根据这些信息就可以确认恶意软件的复制过程;通过copyfile 函数的返回值判断函数是否成功执行完毕;如果源文件的路径存在于恶意软件列表中且 copyfile函数最后操作成功,则表明恶意软件进行了一次自我复制;(2)间接识别首先提取createfile函数,判断该函数创建的文件是否属于恶意软件列表,如果属于,则记录该函数对应句柄号;之后分析readfile函数,将readfile函数的句柄号与之前记录的句柄号进行比较,如果相同,则将readfile函数中存放文件的内存地址存储出来;将随后执行的writefile函数对应数据地址同记录的内存地址进行匹配;若相同,贝1J进行调用序列回溯,分析在writefile函数执行之前的createfile函数的句柄号是否同writefile函数相同;若存在createfile函数有相同的句柄号,则将createfile函数对应的文件路径记录起来,该文件路径就是恶意软件的一个副本。
3.根据权利要求I所述的一种提取函数调用序列特征识别恶意软件自主传播的方法,其特征在于,动态污点分析观察这些污点数据在内存中的流向的方法包括以下步骤(1)系统监测每一个createfileO函数,利用函数参数中的文件路径,同恶意软件列表匹配,若相同则表明创建的文件句柄指向了恶意软件对应的文件;(2)对readfileO函数进行扫描,若存在一个readfileO函数其句柄号同之前发现的 createfile ()函数的句柄号相同且readfile O函数成功执行,则记录下readfile O函数中对应的数据地址及数据大小,数据地址指向的地址空间存储的就是恶意软件可执行文件本身,将该空间设置为污点源。
全文摘要
本发明公开了一种提取函数调用序列特征识别恶意软件自主传播的方法。其步骤包括1)隔离环境及网络环境的设置;2)恶意软件及其副本的识别;3)利用动态污点分析对恶意软件及其副本进行污点分析,识别自主传播。本发明通过动态分析对恶意软件的执行过程进行监控,利用恶意软件的函数调用行为明确恶意软件的自我复制行为。在动态分析中,对发送缓冲区中的数据进行动态污点分析,通过动态污点分析,明确恶意软件是否存在自主传播的过程。
文档编号G06F11/30GK102592078SQ201110436950
公开日2012年7月18日 申请日期2011年12月23日 优先权日2011年12月23日
发明者乔林波, 吴逸伦, 唐勇, 张博锋, 王勇军, 赖志权 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1