基于行为特征相似性的恶意代码同源性分析方法转让专利

申请号 : CN201510296976.2

文献号 : CN104866765B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 康绯舒辉熊小兵肖亚南葛雨玮

申请人 : 康绯

摘要 :

本发明提供一种基于行为特征相似性的恶意代码同源性分析方法,首先基于动态二进制插桩平台提取并量化表示恶意代码的行为特征,在此基础上度量不同恶意代码之间行为特征的相似性,以行为特征的相似度反映了恶意代码的同源性判别结果。利用本发明可以对网络中收集的恶意代码进行同源性分析,并对后续攻击源头的追踪溯源提供有力支撑。该方法能够正确地反映了恶意代码样本之间的同源性,同时正确地区分了不具有同源性的恶意代码样本,对恶意代码的同源性分析工作具有重要的指导和借鉴意义。

权利要求 :

1.一种基于行为特征相似性的恶意代码同源性分析方法,包括指令和数据记录模块、特征提取模块和同源性判别模块,其特征在于,分析过程如下:首先,指令和数据记录模块以动态二进制插桩平台为基础,在一个受保护的虚拟环境中执行恶意代码样本,通过插桩分析关键指令,记录程序在函数入口点、返回点和内存读写点关键位置上的数据,结合API参数格式解析库,得到库中定义的关键API的调用序列和参数信息;

然后,特征提取模块以API调用序列及其参数信息作为输入,结合行为规则库,在构建API关联关系树的基础上提取行为特征;

最后,同源性判别模块将两个恶意代码的行为特征作为输入,通过对行为特征相似性比较来对恶意代码的同源性进行判别最终得到结果分析报告,并将不同样本的特征写入恶意代码特征库中;

所述特征提取模块包括提取API序列、API关联算法和行为提取;提取API序列:定义一个API为一个具有四个属性的向量:首先是API的名称,一个确定的API对应一个唯一的函数名称,调用时可以实现一个具体的功能;其次是API的对象,是API实现功能的目标客体;然后是与API函数有关的数据,是对其实现功能的补充说明;最后是调用时间,在实际的代码运行过程中,调用的多个API有执行的先后顺序。

2.根据权利要求1所述的基于行为特征相似性的恶意代码同源性分析方法,其特征在于,所述指令和数据记录模块以记录为主,通过对call指令进行插桩,获取函数调用前的信息,包括调用点地址及函数的输入参数信息;同时对ret指令进行插桩,获取函数调用后的信息,包括函数返回地址以及函数的输出信息。

3.根据权利要求1所述的基于行为特征相似性的恶意代码同源性分析方法,其特征在于,API关联算法:根据在动态二进制插桩平台下执行恶意代码的记录可以获得一组API序列,行为特征提取的目标,就是从恶意代码执行的API序列中,抽取出对应的行为信息;行为特征提取的过程可以分为两步,首先是利用关联关系对API集合进行划分,划分的目的是将对特定对象操作的API划分到一个集合中,然后根据行为规则对每个子集进行行为提取。

4.根据权利要求3所述的基于行为特征相似性的恶意代码同源性分析方法,其特征在于,将API分为5大类:创建型API是指新建一个对象,该对象会被后续的API引用;引用创建型API是一种过渡创建型API,在引用某个对象的同时,以此为基础新建另一个对象;引用型API是最常见的API,使用对象进行操作,不创建新的对象;结束型API表示当前的对象操作结束;独立型API不涉及对象信息,能够独立完成某项功能;对5种类型的API采取不同的处理方法。

5.根据权利要求3或4所述的基于行为特征相似性的恶意代码同源性分析方法,其特征在于,API关联算法的输入为动态二进制分析平台的API记录文件;API关联算法的输出为行为模式数组;API关联算法的步骤为:步骤一:读取API记录文件,提取API序列及其中包含的对象信息;

步骤二:为API关联树创建一个空的根节点;

步骤三:顺序读取序列中的一个API调用,根据API类型执行对应操作:

若为创建型,则新建一个对象节点添加到根节点下,同时将API作为儿子节点添加到该对象节点下;

若为引用创建型,则API中包含引用对象和新建对象两个对象;首先搜索与引用对象对应的节点,若搜索成功,将API作为儿子节点添加到该引用对象节点下;如果没有搜索到,那么在根节点下添加引用对象节点,然后将API作为儿子节点插入到引用对象节点下;接着将新建对象作为儿子节点添加到该API节点下,同时将API作为儿子节点添加到该新建对象节点下;若为引用型,搜索引用对象节点并判断是否具有结束标记,若搜索到匹配的引用对象节点且引用对象节点没有结束标记,则添加API作为该引用对象节点的儿子节点;若搜索不到引用对象节点的结束标记,则在根节点下添加引用对象节点,同时将API作为儿子节点添加到引用对象节点下;

若为结束型,则搜索引用对象节点,添加API作为该引用对象节点的儿子节点,同时将为该引用对象节点添加结束标记;

若为独立型,则将API直接添加到另外独立API关联树下,单独处理;

步骤四:若API调用数据处理结束,转到下一步,否则转到步骤三;

步骤五:读取行为规则库,将库中现有行为模式存储到一个行为模式的数组中;

步骤六:按照广度优先算法,查找API关联树中的下一个对象节点,读取该对象节点的所有API儿子节点,这些API组成的序列就是API全集中对当前父亲节点代表的特定对象进行操作的一个划分;

步骤七:读取行为模式的数组,并在得到的一组API序列中查找匹配的行为模式,若匹配成功,则将这个行为模式加入到最终输出的结果数组中;

步骤八:若API关联树遍历结束,算法结束,否则转到步骤六。

6.根据权利要求1所述的基于行为特征相似性的恶意代码同源性分析方法,其特征在于,行为提取:在API函数调用序列的基础上,依据预先定义的行为规则库,将符合某一特定模式的序列抽象为一个行为;按照行为的操作对象不同,行为特征分为文件行为、注册表行为、进程行为、网络行为、服务行为、其他行为共六大类。

说明书 :

基于行为特征相似性的恶意代码同源性分析方法

技术领域

[0001] 本发明涉及网络安全技术领域,具体涉及一种基于行为特征相似性的恶意代码同源性分析方法。

背景技术

[0002] 恶意代码是指运行在计算机上,使系统按照攻击者意愿执行任务的一组指令。随着计算机网络的深度应用和恶意代码技术的不断发展,恶意代码带来的危害越来越大,已成为威胁计算机系统安全的一个重要因素。恶意代码在未获得用户授权的前提下,在计算机或其他终端上执行,达到干扰主机正常工作、破坏存储数据的完整性和窃取用户个人隐私等恶意的目的,严重侵犯被攻击者的合法权益。
[0003] 近年来,随着2010年Google极光攻击和2011年的RSA SecurID窃取攻击等事件的曝光,一个新兴的网络攻击手段正在引起越来越多的关注—高级持续性威胁(Advanced Persistent Threat)。相比传统攻击手法,APT攻击具有高级入侵手段和持续性攻击两个特点,危害性极强,且传统的基于特征匹配的检测手段无法发现。
[0004] 由于APT攻击的特殊性,它一般是由组织(特别是政府)或者一些特定的团队发起的,为了适应不同的攻击目标环境或实现不同的攻击目的,恶意代码的编写者会在一个原始恶意代码样本的基础上,通过修改得到不同的恶意代码。在此情况下,这些新生成的恶意代码使用的已经不再是传统恶意代码生存技术中的变形(Metamorphic)和多态(Polymorphic)技术,但这些恶意代码之间通常存在着某种共同特征,例如相似的代码结构,高度一致的代码片段或使用数据手法的相似性等等。这些来自同一编写者或编写团队的、具有相似特征的恶意代码就是具有同源性的恶意代码。同源性分析技术是实现恶意代码追踪溯源的一个重要手段。
[0005] 2011年,知名信息安全厂商卡巴斯基在其分析报告中指出,在近两年相继发现的震网和毒区两个ATP攻击病毒中包括一部分相同的代码,因此推定他们应该来自同一编写者。由此国外针对同源性恶意代码的分析也迅速展开。该分析是建立在大量的人工分析工作的基础上的,分析周期较长,分析效率不高。
[0006] 美国科技公司Charles River Analytics通过综合利用生物演化、计算机程序逆向工程和语言学等多项技术,开发了一套能够快速定位攻击来源的恶意代码分析系统。该分析系统选择了静态分析中提取的指令序列、PE头分析中的头部信息、动态分析中的追踪记录、代码执行过程中的行为序列的语义和函数特征等多种特征作为分析的基础,经过代码演化算法分析最终输出一张代码演化图来表明输入的恶意代码样本之间的同源性关系。该分析方法建立在著名的情报分析平台palantir之上的,不满足一般的应用条件。
[0007] 2013年1月,美国的曼迪昂特公司发布报告“APT1”,在该报告中提出了一种利用恶意代码特征追踪攻击源头的方法,该报告从软件的注释、代码的编写风格、恶意软件的中针对的目标群体、使用的IP地址、维持联系的域名服务等多个方面对不同恶意软件进行了同源性分析,并据此作为确定攻击源头的重要依据。该分析是在对目标长期的跟踪情况下得出,分析周期较长。
[0008] 国内著名安全机构安天实验室也对震网和毒区进行了人工对比分析,他们指出两个病毒在资源嵌入、加密、驱动存在相似的结构和手法,并且都使用了窃取的数字证书来躲避反病毒检测,但这些手法是恶意代码的典型手法并不能证明两者同源。他们判定的依据主要是:相似的代码片段、相似的数据结构和共同的错误。该分析方法需要借助分析人员的逆向分析知识,且分析过程中花费的时间和人力资源的成本较高。
[0009] 2012年,刘星借鉴了生物信息学中的物种系统发生树构建方法,提出了基于恶意代码函数调用图的恶意代码系统发生树构建方法。官强借鉴和利用了生物信息学中同源和进化分析的序列比对和网络比对技术,提出了基于系统函数序列的恶意代码同源分析方法,对一组恶意代码构建其家族演化树。这两种方法基于恶意代码静态特征对同源性自动分析技术进行了深入的研究,但对于加壳恶意代码样本的分析具有一定的局限性。
[0010] 目前国内外针对恶意代码同源性的研究还不是很多,在已有的方法中,卡巴斯基、安天等安全公司都有关于恶意代码同源性的详细的分析报告,但这些成果都是在对捕获的样本进行深入的人工分析之后取得的,分析所需的人力与时间投入较大。美国一家科技公司也有一整套针对同源性的恶意代码分析软件,但相关文献只是介绍了其采用的技术框架而缺少实现的技术细节的介绍。另外国防科技大学的官强等人在同源性分析中对恶意代码特征的选取比较单一,且无法分析加壳的恶意代码,分析方法缺乏通用性。

发明内容

[0011] 针对目前恶意代码同源性分析研究大部分依赖于人工分析,在已有的自动化分析方法中仅把恶意代码的特征码、控制流图等静态特征作为恶意代码分析的依据,无法分析加壳的恶意代码样本,通用性较差的问题。本发明提出了基于行为特征相似性的恶意代码同源性分析方法,对网络中收集的恶意代码进行同源性分析,并对后续攻击源头的追踪溯源提供有力支撑。
[0012] API:全称Application Programming Interface,是windows操作系统提供给用户的实现系统特定功能的函数接口。
[0013] 本发明提出了一种基于行为特征相似性的恶意代码同源性分析方法,包括指令和数据记录模块、特征提取模块和同源性判别模块。分析过程如下:
[0014] 首先,指令和数据记录模块以动态二进制插桩平台为基础,在一个受保护的虚拟环境中执行恶意代码样本,通过插桩分析关键指令,记录程序在函数入口点、返回点、内存读写点等关键位置上的数据,结合API参数格式解析库,得到库中定义的关键API的调用序列和参数信息。
[0015] 然后,特征提取模块以API调用序列及其参数信息作为输入,结合行为规则库,在构建API关联关系树的基础上提取行为特征。
[0016] 最后,同源性判别模块将两个恶意代码的行为特征作为输入,通过对行为特征相似性比较来对恶意代码的同源性进行判别最终得到结果分析报告,并将不同样本的特征写入恶意代码特征库中。
[0017] 所述指令和数据记录模块,以记录为主,对API函数之间的关联分析工作在后面的特征提取模块中进行,从而减少恶意代码在插件环境下运行的系统开销,提高系统的分析效率。通过对call指令进行插桩,获取函数调用前的信息,包括调用点地址(即call指令地址)及函数的输入参数信息。同时对ret指令进行插桩,获取函数调用后的信息,包括函数返回地址(即ret指令指向的目标地址)以及函数的输出信息。
[0018] 所述行为提取模块包括提取API序列、API关联算法和行为提取。
[0019] 提取API序列:恶意代码通过调用一组有序的API函数,改变系统中的某个或多个对象以实现其功能。对大量的API调用进行总结和抽象,我们定义一个API为一个具有四个属性的向量:首先是API的名称,一个确定的API对应一个唯一的函数名称,调用时可以实现一个具体的功能;其次是API的对象,是API实现功能的目标客体;然后是与API函数有关的数据,是对其实现功能的补充说明;最后是调用时间,在实际的代码运行过程中,调用的多个API有执行的先后顺序。
[0020] API关联算法:根据在动态二进制插桩平台下执行恶意代码的记录可以获得一组API序列,行为特征提取的目标,就是从恶意代码执行的API序列中,抽取出对应的行为信息。行为特征提取的过程总体上可以分为两步,首先是利用关联关系对API集合进行划分,划分的目的是将对特定对象操作的API划分到一个集合中,然后根据行为规则对每个子集进行行为提取。
[0021] API关联算法的关键是API之间对象信息的关联性,而不同的API对所包含的对象信息的影响是不同的,根据这种特点我们将API分为5大类:创建型API是指新建一个对象,该对象会被后续的API引用;引用创建型是一种过渡创建型API,在引用某个对象的同时,以此为基础新建另一个的对象;引用型是最常见的API,使用对象进行操作,不创建新的对象;结束型API表示当前的对象操作结束;独立型API不涉及对象信息,能够独立完成某项功能。
在API关联算法中,需要对5种类型的API采取不同的处理方法。
[0022] 输入:动态二进制分析平台的API记录文件
[0023] 输出:行为模式数组
[0024] Step1.读取API记录文件,提取API序列及其中包含的对象信息。
[0025] Step2.为API关联树创建一个空的根节点
[0026] Step3.顺序读取序列中的一个API调用,根据API类型执行对应操作:
[0027] 若为创建型,则新建一个对象节点添加到根节点下,同时将API作为儿子节点添加到该对象节点下。
[0028] 若为引用创建型,则API中包含引用对象和新建对象两个对象。首先搜索与引用对象对应的节点,若搜索成功,将API作为儿子节点添加到该对象节点下;如果没有搜索到,那么在根节点下添加引用对象节点,然后将API作为儿子节点插入到该节点下。接着将新建对象作为儿子节点添加到该API节点下,同时将API作为儿子节点添加到该对象节点下。
[0029] 若为引用型,搜索引用对象节点并判断是否具有结束标记,若搜索到匹配的对象节点且该节点没有结束标记,则添加API作为该对象节点的儿子节点;若搜索不到或者对象有结束标记,则在根节点下添加对象节点,同时将API作为儿子节点添加到该节点下。
[0030] 若为结束型,则搜索引用对象节点,添加API作为该对象节点的儿子节点,同时将为该对象节点添加结束标记。
[0031] 若为独立型,则将API直接添加到另外独立API关联树下,单独处理。
[0032] Step4.若API调用数据处理结束,转到下一步,否则转到Step11。
[0033] Step5.读取行为规则库,将库中现有的行为模式存储到一个行为模式的数组中。
[0034] Step6.按照广度优先算法,查找API关联树中的下一个对象节点,读取该节点的所有API儿子节点,这些API组成的序列就是API全集中对当前父亲节点代表的特定对象进行操作的一个划分。
[0035] Step7.读取行为模式的数组,并在得到的一组API序列中查找匹配的行为模式,若匹配成功,则将这个行为模式加入到最终输出的结果数组中。
[0036] Step8.若API关联树遍历结束,算法结束,否则转到Step14。
[0037] 行为提取:在API函数调用序列的基础上,依据预先定义的行为规则库,将符合某一特定模式的序列抽象为一个行为。按照行为的操作对象不同,行为特征分为文件行为、注册表行为、进程行为、网络行为、服务行为、其他行为共六大类。
[0038] 本发明利用动态二进制插桩的特点,获取恶意代码执行过程中完整的行为特征,通过比较这些行为特征的相似性来判断恶意代码之间的同源性,达到了很好的分析效果。具体来说主要表现在:
[0039] 1.选取了更加全面、合理的恶意代码行为特征作为同源性判别的依据[0040] 当前,大部分的研究仅把恶意代码的静态特征码、控制流图或动态执行的行为序列等较单一的恶意代码特征作为分析的依据,这对同源性分析来说是远远不够的。本发明按照恶意代码行为的操作对象不同,将行为特征归纳为文件行为、注册表行为、进程行为、网络行为、服务行为、其他行为共六大类,这些特征能够很好地反映出恶意代码本质和具有同源性恶意代码之间的相似性,同时对于不同来源的恶意代码样本具有明显的区分。
[0041] 2.实现了一种自动化的恶意代码行为特征提取方法
[0042] 目前很多恶意代码同源性分析方面的研究成果都是人工分析的结果,不能满足恶意代码数量急剧增长的现状。本发明利用动态二进制分析技术的特点,在程序运行过程中,在不影响运行结果的条件下,插入分析代码,由分析程序完成行为特征的提取以及特征之间的相似性分析工作,不需要人工的干预,实现了一种自动化的恶意代码同源性分析方法,提高了同源性分析的效率。
[0043] 3.实现了一种有效、准确地恶意代码同源性分析方法
[0044] 本发明充分考虑了恶意代码在行为特征方面表现的多样性以及它们的抗分析性,实现了一种有效、准确地恶意代码同源性分析方法。该方法能够正确地反映了恶意代码样本之间的同源性,同时正确地区分了不具有同源性的恶意代码样本,对恶意代码的同源性分析工作具有重要的指导和借鉴意义。

附图说明

[0045] 图1是本发明基于行为特征相似性的恶意代码同源性分析的框图。

具体实施方式

[0046] 实施例:一种基于行为特征相似性的恶意代码同源性分析方法,具体步骤如下:
[0047] 首先,指令和数据记录模块以动态二进制插桩平台为基础,在一个受保护的虚拟环境中执行恶意代码样本,通过插桩分析关键指令,记录程序在函数入口点、返回点、内存读写点等关键位置上的数据,结合API参数格式解析库,得到库中定义的关键API的调用序列和参数信息。
[0048] 然后,特征提取模块以API调用序列及其参数信息作为输入,结合行为规则库,在构建API关联关系树的基础上提取行为特征。
[0049] 最后,同源性判别模块将两个恶意代码的行为特征作为输入,通过对行为特征相似性比较来对恶意代码的同源性进行判别最终得到结果分析报告,并将不同样本的特征写入恶意代码特征库中。
[0050] 整个过程如图1所示。
[0051] 1.指令和数据记录模块
[0052] 本模块的工作以记录为主,对API函数之间的关联分析工作在后面的特征提取模块中进行,从而减少恶意代码在插件环境下运行的系统开销,提高系统的分析效率。
[0053] 通过对call指令进行插桩,获取函数调用前的信息,包括调用点地址(即call指令地址)及函数的输入参数信息。同时对ret指令进行插桩,获取函数调用后的信息,包括函数返回地址(即ret指令指向的目标地址)以及函数的输出信息。
[0054] 2.行为提取模块
[0055] 1)提取API序列
[0056] 恶意代码通过调用一组有序的API函数,改变系统中的某个或多个对象以实现其功能。对大量的API调用进行总结和抽象,我们定义一个API为一个具有四个属性的向量:首先是API的名称,一个确定的API对应一个唯一的函数名称,调用时可以实现一个具体的功能;其次是API的对象,是API实现功能的目标客体;然后是与API函数有关的数据,是对其实现功能的补充说明;最后是调用时间,在实际的代码运行过程中,调用的多个API有执行的先后顺序。
[0057] 定义1API调用:api_call=(name,object,data,time).
[0058] 恶意代码的执行序列可以表示为多个API调用的集合,在这个集合中,两个元素(即两个API调用)之间可能会有相等的属性,但不存在两个完全相等的元素。例如当同一个API函数被先后两次调用时(用api_call1,api_call2表示),显然name1=name2,若两次操作针对的是同一个对象,那么有object1=object2且data1=data2,但调用时间不相等,即time1≠time2。
[0059] 定义2恶意代码一次运行的API执行序列:
[0060] 其中n为执行序列的长度。
[0061] API间并不是相互孤立的,一般而言,为了针对某个对象实现一个具体的功能,恶意代码需要一组连续的API调用配合实现。这组API通过特定的核心数据结构传递信息,该核心数据结构即为API的对象信息,对象信息在形式上表现为句柄、字符串以及上下文数据结构等等,API之间存在逻辑联系就是API间的关联性。
[0062] 定义3API关联关系:
[0063]
[0064] 对于API集合API_Sequence,从关联关系的定义可知,关联性关系R满足:
[0065] 自反性
[0066] 对称性
[0067] 传递性
[0068]
[0069] 因此关联关系R为等价关系。依据等价关系的性质,我们可以将API集合API_Sequence完全划分为S1,S2,...,Sn,即S=S1∪S2…∪Sn且 在此基础上,我们定义一个将一组满足一定的API调用序列映射到一个具体行为的行为规则库,利用这个库从S1,S2,...,Snn个划分中提取出的多个行为,作为恶意代码的特征行为。
[0070] 2)API关联算法
[0071] 根据在动态二进制插桩平台下执行恶意代码的记录可以获得一组API序列,行为特征提取的目标,就是从恶意代码执行的API序列中,抽取出对应的行为信息。行为特征提取的过程总体上可以分为两步,首先是利用关联关系对API集合进行划分,划分的目的是将对特定对象操作的API划分到一个集合中,然后根据行为规则对每个子集进行行为提取。
[0072] API关联算法的关键是API之间对象信息的关联性,而不同的API对所包含的对象信息的影响是不同的,根据这种特点我们将API分为5大类:创建型API是指新建一个对象,该对象会被后续的API引用;引用创建型是一种过渡创建型API,在引用某个对象的同时,以此为基础新建另一个的对象;引用型是最常见的API,使用对象进行操作,不创建新的对象;结束型API表示当前的对象操作结束;独立型API不涉及对象信息,能够独立完成某项功能。
在API关联算法中,需要对5种类型的API采取不同的处理方法。
[0073] 输入:动态二进制分析平台的API记录文件
[0074] 输出:行为模式数组
[0075] Step9.读取API记录文件,提取API序列及其中包含的对象信息。
[0076] Step10.为API关联树创建一个空的根节点
[0077] Step11.顺序读取序列中的一个API调用,根据API类型执行对应操作:
[0078] 若为创建型,则新建一个对象节点添加到根节点下,同时将API作为儿子节点添加到该对象节点下。
[0079] 若为引用创建型,则API中包含引用对象和新建对象两个对象。首先搜索与引用对象对应的节点,若搜索成功,将API作为儿子节点添加到该对象节点下;如果没有搜索到,那么在根节点下添加引用对象节点,然后将API作为儿子节点插入到该节点下。接着将新建对象作为儿子节点添加到该API节点下,同时将API作为儿子节点添加到该对象节点下。
[0080] 若为引用型,搜索引用对象节点并判断是否具有结束标记,若搜索到匹配的对象节点且该节点没有结束标记,则添加API作为该对象节点的儿子节点;若搜索不到或者对象有结束标记,则在根节点下添加对象节点,同时将API作为儿子节点添加到该节点下。
[0081] 若为结束型,则搜索引用对象节点,添加API作为该对象节点的儿子节点,同时将为该对象节点添加结束标记。
[0082] 若为独立型,则将API直接添加到另外独立API关联树下,单独处理。
[0083] Step12.若API调用数据处理结束,转到下一步,否则转到Step11。
[0084] Step13.读取行为规则库,将库中现有的行为模式存储到一个行为模式的数组中。
[0085] Step14.按照广度优先算法,查找API关联树中的下一个对象节点,读取该节点的所有API儿子节点,这些API组成的序列就是API全集中对当前父亲节点代表的特定对象进行操作的一个划分。
[0086] Step15.读取行为模式的数组,并在得到的一组API序列中查找匹配的行为模式,若匹配成功,则将这个行为模式加入到最终输出的结果数组中。
[0087] Step16.若API关联树遍历结束,算法结束,否则转到Step14。
[0088] 3)行为提取
[0089] 在API函数调用序列的基础上,依据预先定义的行为规则库,将符合某一特定模式的序列抽象为一个行为。按照行为的操作对象不同,行为特征分为文件行为、注册表行为、进程行为、网络行为、服务行为、其他行为共六大类。
[0090] 一、文件行为
[0091] 操作系统将实际的物理存储地址抽象为文件和树形目录的逻辑概念来组织和存储计算机中的数据,用户只需要记住文件的所属目录和文件名就能对其进行查找和访问。我们将这样一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型称为文件系统。正是因为文件系统对程序运行的重要性,因此大量恶意代码在执行时都会对文件系统产生影响,比如新建文件、查找文件、修改或删除已有文件等等。
[0092] 表3.1恶意代码中常见的文件行为
[0093]
[0094]
[0095] 二、注册表行为
[0096] 注册表是Windows系统下管理和配置系统运行参数和应用程序的初始化信息的一个核心数据库,其中存储的信息包括硬件设备的说明、应用程序的运行参数、网络连接等等。恶意代码可以通过读取注册表中关键子键的键值获取与硬件、软件或网络设置相关的信息,另外大部分的恶意代码还利用新建或篡改注册表键值的方式影响系统正常的运行。
[0097] 表3.2恶意代码中常见的注册表行为
[0098]
[0099]
[0100] 三、网络行为
[0101] 网络通信是恶意代码的一大特性,在入侵主机之后,木马需要与攻击者进行通信,同时利用该主机的网络资源感染网络上其他主机系统,另外木马在成功盗窃游戏账号或者银行账号密码等数据或者系统中的其他敏感的重要文件后,也要通过网络发送给病毒制造者,这些功能的实现都需要网络操作。由此可见绝大多数的恶意程序都包含网络行为。
[0102] 表3.3恶意代码中常见的网络行为
[0103]
[0104] 四、进程行为
[0105] 程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例,因此恶意代码在入侵主机系统后通常是以进程的形式驻留在系统中的。恶意代码常见的进程行为有创建并启动一个新的进程、远程注入到其他进程、跨进程读写内存、结束进程等等。比如一些盗号木马经常会强制结束正在运行的游戏进程,迫使玩家重新登录,然后通过监控键盘等方法达到偷窃玩家账号密码的目的。
[0106] 表3.4恶意代码中常见的进程行为
[0107]
[0108] 五、服务行为
[0109] 服务是微软公司Windows操作系统下一种特殊的机制,它使得用户能够创建在自己的Windows会话中可长时间运行的可执行应用程序。服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务能够在不影响在同一台计算机上工作的其他用户的功能的同时运行,因此常在恶意代码中被用于隐藏其恶意行为。另外,相比于常见的文件和注册表操作,用户不太熟悉这一类型的操作,因此恶意代码中使用服务来实现恶意行为的操作常常能收到更好的效果。恶意代码可以通过创建一个新的服务来实现自身代码的功能,也可以通过修改系统中的其他服务的属性或者直接暂停或删除某个服务来干扰系统的正常运行。
[0110] 表3.5恶意代码中常见的网络行为
[0111]
[0112] 六、其他行为
[0113] 其他行为是指恶意代码的行为对象不属于上面提到五类对象中的任何一种,但是这些行为也对恶意代码的实现起到了关键作用,例如创建互斥体、窗口操作、设置消息钩子等等。例如有的恶意代码在运行时会创建GUI窗口,这些窗口没有标题栏和文本框,是一个简单的错误消息提示框,使已经运行了恶意代码的用户误以为程序由于某种错误并没有真正执行。
[0114] 表3.6恶意代码中常见的其他行为
[0115]