针对恶意行为的多层语义标注及检测方法

文档序号:6466072阅读:155来源:国知局
专利名称:针对恶意行为的多层语义标注及检测方法
针对恶意行为的多层语义标注及检测方法
一、 技术领域-
本发明涉及一种针对计算机恶意行为代码的多层标注和检测方法,属于计 算机安全技术领域,特别适用于二进制可执行代码中恶意行为代码的分析与识 别技术。
背景技术
长期以来,计算机病毒一直困扰着计算机专家和用户。计算机病毒的复制 能力、传播能力和破坏能力使它严重威胁计算机的正常使用。最近几年,网络 的飞速发展使计算机病毒的传布更加便捷,计算机病毒程序的数量成爆炸性增 长方式,对计算机系统和信息安全造成了严重的威胁。简单的计算机病毒生成 工具的出现使计算机病毒的编写成为普遍现象,这些都使计算机病毒防御的形 势日益严峻。
代码混淆技术是一种能够有效抵抗代码逆向分析,从而保护软件自身知识 产权的一项技术,但随着该技术应用于恶意软件的编写工作,对目标程序的分 析以及对已知病毒的检测都造成了很大干扰。传统恶意代码分析的手段主要依 赖计算机病毒专家的人工分析,尤其是针对二进制可执行代码的分析工作来说, 工作繁杂冗长,不仅容易出错,而且耗时不菲,不能够满足社会应对计算机病 毒的能力需求。当前恶意代码检测方面使用的技术主要为特征码扫描技术,即 在目标二进制代码中搜寻或匹配特定的特征码序列或正则表达式,从而判定目 标文件中是否包含特定特征码信息。这种方法具有扫描速度快、开销较小等优 点,而且也积累了数量庞大的病毒特征码库。但另一方面,该方法无法有效应 对各种多态和变形病毒产生的变体,也无法有效检测出经过混淆变形的病毒特
征码,对于新的特征码提取工作需要由病毒专家来完成,造成查毒软件总是落 后于病毒出现之后一段较长时间。因此需要推出新型恶意代码分析辅助工具和 检测工具,从而帮助计算机安全专家提高工作效率,并且进一步提升计算机安 全防护类软件的防护能力。
发明内容
本发明针对二进制代码中恶意行为的检测问题,提出 一种基于程序语义分 析的多层软件恶意行为的标注方法,以及在此标注方法上的恶意行为监测系统, 主要用于解决未知计算机病毒的分析效率问题和在更高层面上计算机恶意行为 的检测问题。
技术方案
本发明共分为两个部分程序语义多层标注方法Multilayer Denotation on Program Semantics (MDPS)和基于多层标注的恶意行为检测策略。
标注子模块在每一层针对特定的分析目标对象(分别为二进制代码、线性指 令序列、过程控制流图、文件过程调用图和应用程序文件)进行标注;检测子 模块基于适应不同分析目标对象的分析策略和算法对标注信息在各个层面对恶 意行为进行检测;标注及检测的各层之间利用分析过程中产生的中间检测结果 传递信息,不同层次的分析相对于其他层次来说是独立的。
MDPS在逆向分析并提升的过程中,从五个不同层面对未知二进制程序进 行标注,这五个层面分别为二进制语义层L0、线性指令语义层L1、控制流图 语义层L2、过程调用图语义层L3和应用程序级语义层L4。其中二进制语义层 面LO的分析用于获取二进制文件的文件字段、恶意代码特征码、文件属性等信 息,并进行标注;线性指令语义层面L1对那些指令间存在线性执行顺序关系的 指令序列进行标注,通常为基本块内部的指令序列;控制流图语义层面L2在控
制流图的基础上,重点考虑对过程内基本块之间的联系和特征进行标注;过程 调用图语义层面L3分析当前文件内部存在的调用图信息,其标注的主要对象为 函数过程;应用程序级语义层面L4结合LO层获取的动态链接文件彼此之间的 关联信息,对当前整个应用程序进行全面分析和标注。
在多层标注信息的基础上,基于各个层分别对程序行为进行定义,并结合 该定义构造恶意行为分析库。程序行为Program Behavior (pb)是指一系列有效 语句的序列列表,PB中语句之间的关系运算定义如下
<formula>formula see original document page 7</formula>其中的关系符号解释如下 s 表示空序列行为; a 表示单个语句;
- 表示线性顺序,即不可互换位置,满足左结合规则;满足传递性质;
IS 表示两端的子项可以整体互换位置,满足左结合规则;满足交换和传
递性质;
: 表示两端的子项中选取其中一项,满足左结合规则;满足交换和传递
性质;
表示两端的子项相容,即将两个pb进行混合,在新的pb中保持原子项
中的既有顺序;满足左结合规则;满足交换和传递性质; ()+表示括号内的PB至少重复一次循环,即PB-PB….PBo
至£^~次室复
另外,以上运算之间满足一定的优先级关系,即()+》>)Ji>.,与此同时,还 可以使用()来表示运算优先级。因此,可以将PB表示为一颗树结构,其中中间 节点表示上述关系运算符,叶子节点为程序语句。如对于PB-a 'p.(Y)+.SlK来 说,可以将其表示为如附图2所示。 定义头子行为
给定一个行为序列PB, ct。为包含的所有语句,对于3el,n],定义
及[cti,cg之间满足的行为关联规则一起构成行为序列PB的头子行为。 在此之外,还需要定义三个函数来帮助操作,如下 head : PB X PB — (T,P) tai! : PB X PB — PB mstch ; PB X P3 — {T,F}
其中head函数接收两个PB, 一旦第二个PB是第一个PB的头子行为,则返回T,否 则返回F;
teil函数也接收两个PB,如果第二个PB是第一个PB的头子行为,则返回剩下的部 分,否则返回第一个PB; mateh函数则匹配两个PB, 一旦两个PB相同,则返回T, 否则返回F。
在恶意行为检测过程中,在不同层面结合相关恶意行为库检测目标软件中 是否存在库中定义的内容。整不检测过程依据反编译逆向分析技术为驱动,将 目标二进制文件逆向提升为不同层面的表示形式,从而进一步进行行为分析和 检测。MDPS的优点在于能够充分利用现有的恶意代码检测机制,并且根据不 同层面的特点,简化程序分析任务需求,在各个层面中积累相关分析的结果信 息,最终完成对于整个程序的分析。
针对一段未知代码来说,可以通过分析得出该代码段中是否包含有行为库 中的完整行为或部分行为。为简化操作,仅分析出现头匹配的情况,因此需要 结合程序的控制流走向进行分析。当匹配出一个完整PB时,则在相应的节点上 标注出该陀对应的说明信息;当完成了head匹配,即未知代码中包含行为库中某 行为的头子行为,则将相关的行为tail部分加入临时行为库,以有助于进行进一 步分析,直到匹配出整个行为,或者匹配失败。
在数据流分析结果的基础上,通过切片算法简化程序分析目标代码描述。
结合基本块内数据流分析结果,针对部分匹配的程序行为进行简化,并将简 化后程序行为加入临时行为匹配模板库。
结合过程内部分析结果,利用过程调用参数及返回值分析,连接跨过程的 数据传输链,针对部分匹配的程序行为进行化简,并将简化后的程序行为加入 临时行为匹配模板库。
本发明的有益效果
1、 本发明的针对恶意行为的多层语义标注及检测方法,能够有效地将恶意 行为检测的复杂性分解,充分利用各种不同检测机制具有的优点,避开不同机 制固有的缺陷,从而提高恶意行为检测的适应性和准确性。
2、 本发明的针对恶意行为的多层语义标注及检测方法,提供新型恶意代码 分析辅助工具和检测工具,能帮助计算机安全专家提高工作效率,并且进一步 提升计算机安全防护类软件的防护能力。


图1为恶意行为代码的多层标注和检测系统实现框架图; 图2为PB的树形表示形式示例图; 图3为线性语句检测层实现框架图; 图4为控制结构流图层实现框架图5为过程调用图层实现框架图。 五具体实施例方式
参见图l、图2、图3、图4、图5, 一种在恶意行为检测中,应多层语义标 注技术记录分析中间结果,并在此基础上分层检测标注信息的方法,即针对恶 意行为的多层语义标注及检测方法。包括标注子模块和检测子模块,其中标注 子模块和检测子模块包括对二进制语义层LO、对线性指令语义层L1、控制流图 语义层L2、过程调用图语义层L3和应用程序级语义层L4分别标注和检测;标 注子模块在每一层针对特定的分析目标对象进行标注;检测子模块基于相应的 分析策略和算法对标注信息在各个层面对恶意行为进行检测;标注及检测的各 层之间利用分析中间结果传递信息,不同层次的分析相对于其他层次来说是独 立的。其中二进制语义层面LO的分析用于获取二进制文件的文件字段、恶意代 码特征码、文件属性等信息,并进行标注;线性指令语义层面Ll对那些指令间 存在线性执行顺序关系的指令序列进行标注,通常为基本块内部的指令序列; 控制流图语义层面L2在控制流图的基础上,重点考虑对过程内基本块之间的联 系和特征进行标注;过程调用图语义层面L3分析当前文件内部存在的调用图信 息,其标注的主要对象为函数过程,在调用图基础上针对跨过程恶意行为形式 进行标注,结合过程内部分析结果,利用过程调用参数及返回值分析,连接跨 过程的数据传输链,针对部分匹配的程序行为进行化简,并将简化后的程序行 为加入临时行为匹配模板库;应用程序级语义层面L4结合L0层获取的动态链 接文件彼此之间的关联信息,对当前整个应用程序进行全面分析和标注。
本发明基于反编译逆向分析技术驱动,并且将分析信息转变为更加便于阅 读、理解和检测的标注形式。
L0层面结合目标二进制文件格式进行分析,获取目标文件相关基本信息,
包括文件名、文件大小、主入口点地址、文件段名、段属性信息值、文件导入 表和文件导出表等。
Ll层主要是针对程序中间表示基本块进行分析的,这是因为在基本块内能 够保证语句之间维持线性关系。Ll层面立足与对二进制文件进行正确装载并解 码的基础之上,将原二进制指令流等价替换为由中间表示形式构成的程序语句 流,并且对文件进行正确的基本块划分。通过分析获得每个基本块的定值变量 集合和外部引用变量集合,可以针对该基本块的定值变量集合进行切片操作。 可知,由于基本块内语句之间是线性关系的,因此获得切片的语句也是线性关 系。基本块内分析主要有三种情况完全匹配、不匹配和头匹配,需要涉及的 相关函数为head和mato!i。结合分析内容,需要标注当前基本块完全匹配和头匹 配的行为序列集合,对于头匹配来说,还需要标注出己经检测出的头子行为序 列。
L2层针对过程内控制流图进行分析。当控制流图中的一个基本块BB来说, 如果出现头匹配,则取出相关头子行为和原匹配行为,并使用taU函数在BB后 继的基本块中作L1层检测。当分析完整个过程后,即可在过程中标注出当前过 程内完全匹配和头匹配的行为序列集合,并且标注已经匹配的头子行为序列。
L3层则针对文件内调用图进行分析。根据L0层分析获取的文件导入表获 取文件入口。 一个文件可能存在一个或多个调用入口,因此该文件的调用图则 表现为一个拥有一个或多个起点有向图结构。结合L2层匹配的信息,若出现头 匹配节点,则在该节点后续节点过程中针对相关PB的tail子行为进行L2或Ll层 检测。L3层基本完成PB分析。
L4层分析则针对包含有多个动态载入文件的应用程序系统。通过各个文件的导
入表和导出表信息,建立应用程序文件之间的关联情况,从而载入各个相关的
动态链接文件,以执行L0 L3层的分析操作,并标注分析结果。
如图1所示,整个检测过程表现为一个循环载入相关文件,并按照不同阶 段进行分析的过程。每一层的分析针对不同的分析对象,OOl模块装载目标二进 制文件,并且执行LO层分析标注策略。然后将分析结果提交至006模块,结合 LO层特征库中的内容,最终完成LO层检测,并给出检测结果。经过001模块 的分析,可以将二进制文件进行分解,并提取其中的二进制指令流入口点信息, 从而在002模块即可获得以该入口点为起点的二进制指令流。002模块需要完成 指令解码操作,将二进制指令提升为语义等价的中间表示语句,并且完成基本 块划分与控制流图构建的工作。在002模块结果的基础上,可以在基本块内部 完成相关分析和切片操作,从而将基本块细化为一个个关联语句的序列,并在 此基础上执行L1层行为检测和标注。003模块的输入为各个过程的控制流图, 在模块内部需要对过程控制流图进行分析和简化,识别其中隐含的条件分支结 构和循环结构信息。在此基础上可以执行L2层行为检测和标注。004模块则需 要构建整个程序的调用图,并且分析过程间参数/返回值信息。在004模块的分 析结果之上执行L3层行为检测和标注操作,进一步完成对整个文件的PB分析和 检测过程。005模块的任务是构建整个应用程序的系统级视图,执行该模块之前, 需要提前装载所有主应用程序可执行文件相关的动态链接文件。对于某些已经 经过分析的文件来说,则可以直接读取分析标注信息执行下一步分析。
图3为L2层具体实现框架图,指令编码库用来记录目标机器指令的编码方 式和策略,相关信息可以从该目标机器文档中获取。在解码模块201中,结合 编码库信息对照二进制指令流,对二进制指令进行逐条识别,并且转变为相应
的中间表示语句流。在本发明专利中使用SSA语句作为程序分析所需中间表示 形式。在解码过程中,202模块还要对指令语义进行初步分析。通过分析指令流 中存在的过程调用指令、返回指令、跳转指令和其它改变控制流走向的指令, 划分程序基本块结构,构建整个文件的过程调用图和控制流图,并按照跳转指 令的目标地址开始进一步解码操作。该方法被称为行进递归解码方法。203模块 负责对一个给定基本块中的语句执行数据流分析操作,获得该基本块内部语句 定值或外部引用的变量集合,之后在204模块中针对该基本块定值变量集合进 行程序切片操作。由于基本块内部语句之间的关系是线性的,因此切片内部语 句也保持线性关系。205模块负责对切片内部语句进行数据依赖分析,并将基本 块内部语句转化为PB表示形式,在206模块结合PB行为库中定义的已知恶意行 为模板进行匹配操作,并于207模块中将匹配分析信息标注于表示基本块信息 的数据结构对象。
图4表示L3层分析的具体实现框架图。该模块接受L2层的分析结果,在 控制流图的基础上,301模块识别流图中存在的分支结构和循环结构信息,将使 用跳转语句表示的控制流信息转变为使用高级控制结构(如IF...ELSE、 DO...UNTIL和WHILE...DO结构)表示的控制流信息。在302模块中,遍历流 图信息中存在的路径,303模块在不同路径下,利用基本块间的数据依赖关系将 线性PB拼接为内容更加丰富的PB描述。与此同时,303模块还需要提取基本块内 部标注的部分行为匹配信息,利用tail函数获取后续相关行为,加PB描述库。304 模块利用改变后的行为库信息进行行为匹配,并在305模块将匹配分析结果标 注于表示程序过程的数据结构对象之上。
图5为L4层分析的具体实现框图。其中401模块负责分析过程之间的调用
关系,尤其是针对递归调用信息进行分析,这主要是因为递归调用往往在调用
图中构成环状结构,因此可以通过分析简化调用图的分析难度。402模块则进行 过程间数据流分析,依据数据流分析结果确定过程间传递的参数和返回值变量。 因此,403模块在入口点到出口,点的每一条执行路径之上,便可以利用参数及返 回值信息,对PB进行拼接,并且在404模块中结合PB行为信息库进行匹配检测 分析,在405模块中将分析结果标注于表示整个文件的调用图结构之上。
权利要求
1、一种针对恶意行为的多层语义标注及检测方法,包括标注子模块和检测子模块,其中标注子模块和检测子模块包括对二进制语义层的标注和检测,其特征在于(1)标注子模块和检测子模块还包括对线性指令语义层、控制流图语义层、过程调用图语义层和应用程序级语义层分别标注和检测;(2)标注子模块在每一层针对特定的分析目标对象进行标注,所述分析目标分别为二进制代码、线性指令序列、过程控制流图、文件过程调用图和应用程序文件;(3)检测子模块基于适应不同分析目标对象的分析策略和算法对标注信息在各个层面对恶意行为进行检测;(4)标注及检测的各层之间利用分析过程中产生的中间检测结果传递信息,不同层次的分析相对于其他层次来说是独立的。
2、 根据权利要求1所述的多层语义标注及检测方法,其特征在于在五个 层面对代码语义进行分析,分别为(1) 在二进制层面,对二进制目标文件中恶意行为代码进行分析和标注, 然后将分析结果结合该层特征库中的内容比较,最终完成对该层的检测,并给 出检测结果;(2) 在线性指令层面,对二进制文件分解,提取其中的二进制指令流入口 点信息;对二进制指令流进行解码和语义分析,在机器指令解码块内部执行针 对线性恶意行为进行标注、分析,然后将分析结果结合该层序列库内容进行对 该层的检测,并给出检测结果; (3) 在控制流图层面,结合程序控制流关系,将指令语义层的线性行为分 析结果进行提升与拼接,在线性代码的分析基础上,分析带有分支和循环结构 的恶意行为,并对其进行标注,结合该层序列库内容进行对该层的检测,并给 出检测结果;(4) 在过程调用图层面,从文件整体角度出发,对过程间数据流进行分析, 依据过程内部行为分析结果,在调用图基础上针对跨过程恶意行为形式进行标 注,结合该层行为库内容进行对该层的检测,并给出检测结果;(5) 在应用程序级层面,从整个应用程序角度出发,构建应用程序级文件 视图,依据文件内部行为分析结果,分析并标注出整个目标软件系统中可能存 在的恶意行为,结合该层行为库内容进行对该层的检测,并给出检测结果。
3、 根据权利要求1所述的多层语义标注及检测方法,其特征在于所述分 析策略为基于对反编译逆向分析的目标程序行为进行分析。
4、 根据权利要求1所述的多层语义标注及检测方法,其特征在于所述程 序行为被定义为Backus-Naul范式,并且利用五种语句间的关系运算来刻画程序 行为,以及应用于恶意代码检测的基于Backus-Naul范式的恶意行为信息描述 库。
5、 根据权利要求2所述的多层语义标注及检测方法,其特征在于在线性 指令层面的分析包括获取二进制文件的文件字段、恶意代码特征码、文件属性 信息,并进行标注。
6、 根据权利要求2所述的多层语义标注及检测方法,其特征在于在控制流图语义层面在控制流图的基础上,重点考虑对过程内基本块之间的联系和特征进行标注。
7、 根据权利要求2所述的多层语义标注及检测方法,其特征在于过程调 用图语义层面分析当前文件内部存在的调用图信息,其标注的主要对象为函数 过程,在调用图基础上针对跨过程恶意行为形式进行标注;结合过程内部分析 结果,利用过程调用参数及返回值分析,连接跨过程的数据传输链,针对部分 匹配的程序行为进行化简,并将简化后的程序行为加入临时行为匹配模板库。
8、 根据权利要求2所述的多层语义标注及检测方法,其特征在于从应用 程序角度出发,依据文件内部行为分析结果,应用程序级语义层面结合二进制 语义层面层获取的动态链哮文件彼此之间的关联信息,对当前整个目标软件系 统中可能存在的恶意行为进行全面分析和标注。
9、 根据权利要求6所述的多层语义标注及检测方法,其特征在于在数据 流分析结果的基础上,通过切片算法简化程序分析目标代码描述。
10、 根据权利要求9所述的多层语义标注及检测方法,其特征在于结合 基本块内数据流分析结果,针对部分匹配的程序行为进行简化,并将简化后程 序行为加入临时行为匹配模板库。
全文摘要
本发明涉及一种在恶意行为检测中,应用多层语义标注技术记录分析中间结果,并在此基础上分层检测标注信息的方法。所述模型包括两个部分,标注子模块和检测子模块。其中标注子模块包括二进制语义层、线性指令语义层、控制流图语义层、过程调用图语义层和应用程序级语义层。每一层针对特定的分析目标对象进行标注。检测子模块基于相应的分析策略和算法对标注信息在多个层面对恶意行为进行检测。其优点在于能够有效地将恶意行为检测的复杂性分解,充分利用各种不同检测机制具有的优点,避开不同机制固有的缺陷,从而提高恶意行为检测的适应性和准确性。
文档编号G06F21/00GK101359351SQ20081014145
公开日2009年2月4日 申请日期2008年9月25日 优先权日2008年9月25日
发明者文 付, 刘晓楠, 庞建民, 张靖博, 强 王, 白莉莉, 赵荣彩, 韩小素 申请人:中国人民解放军信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1