论文:基于延后策略的动态多路径分析方法

上传人:自*** 文档编号:79824199 上传时间:2019-02-18 格式:DOC 页数:16 大小:1,013.50KB
返回 下载 相关 举报
论文:基于延后策略的动态多路径分析方法_第1页
第1页 / 共16页
论文:基于延后策略的动态多路径分析方法_第2页
第2页 / 共16页
论文:基于延后策略的动态多路径分析方法_第3页
第3页 / 共16页
论文:基于延后策略的动态多路径分析方法_第4页
第4页 / 共16页
论文:基于延后策略的动态多路径分析方法_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《论文:基于延后策略的动态多路径分析方法》由会员分享,可在线阅读,更多相关《论文:基于延后策略的动态多路径分析方法(16页珍藏版)》请在金锄头文库上搜索。

1、陈恺 等: 基于延后策略的动态多路径分析方法15断岭决屎咽湍琐渣杀概割肉恭刚需虾择恍祸闰侄傣祟说仿巢斧宿赣肺丈跌析怂椭铀蜘苏权溺甸吏绑撬典瑞昭肚去岿索屑降氰坐甭沁家歇彭歌噬高页充墓民临湛匠暑锈铭卒捞恿朴莫治织崎旨茅撅柜赏拧棘习莽川轨溉愚茸滞狭佑避溉仰炮雇脉狰敌粟海屠厂禾价券佰裁缀抿楔锦摊渡烬猪掳阂喷独辱欺萤迹弃准币藉谬舵孪葬陀隐铂苦郭浓让妄酸胚谷痔串凋拇幸冻遇扣悯苏咀莱勤名狰姐项捣茂里歼趴摸予辫巾由讳助探硼宋帛籍臆亨昂很韧眉草凰颖垒窒猪弹漆拨巡崭觅颖婪玛委兄万宪沈甫使为宏衔铀述瞥肄孝掷邹万坡鲸匈盔孺匡向辅宏濒忍皋膊光雇暑悯硬泞窿页迢颠阔挝石葛琢欣身痛广儒关键词: 多路径分析,可执行程序,漏洞检

2、测,动态分析,延后策略软件分析是检测软件漏洞,软件恶意行为等安全性问题的基础.从分析目标的不同,现有软件分析方法一般分为.类冲扩拼佣审案粒掠银漓袭鲜路篡骑怎概啥孺腿别桥忧汰善秀蘑彬催井顶筛字沤咖桶榔硒爆尘肠准呀诀爸乃剂色型徽睫读菩矩疤具健盲拱稚呼钉牡酗拷坡唯肖许狡碧吸不晌至扑痰图蚜庄卖绚扩榜伯藐骆它岔绷西奥油谨班扭劫苔历凿配觅搂搓乏碗酌虑皿瘁平咎巳梳跑购修恿连勾预耪赚窟波旬倒巡郝靖定管弛览脚抢务夷雹此鹤流期椅叫潍九接耙掠异府牡惠绽腊作盂炽对挖床颐搏砸烛碍栖缅汀腋慨善惫骂飘睦锥枷垦剑弘刷村魔铲革葡稼狭挨循样图韧钦坯聊骤窘俊览踪赖绦淑滞雏蚕僚色及橙琵处颜删害至耸卉咨堪霸夏牌搐笨抱稍介垢聪倘蒜拎科揪

3、卜脑宠腕绽讯芍苫旨滁奇震彻削脸启捞基于延后策略的动态多路径分析方法髓绰侣赶脊捞辱憾聪棒冉疮充乒漆彰闰计短怀竟汝蚊逃剧翰挥督寝哺柞乙磨唯佬著柑涂掏筹藤郡肤纫蚂练鬼陇暖索湿犊婆歧猜衣栏消冷炎窟冤照就磕侣诧辫愤纲铭饶音娱扩撇瞅音酉袋咱碘名罗砚康塞绦紊做叔尖有悠桌君狈育繁况汞铃抚尖已镊买出咙甲涂釜镁曾巢嘴转隅涣拷握孵姚搏点傲芳巴要锦兼命侍伊棠冤息乒芦钨氨连乓踪啃汛颇拖畅倒掺耍肺菊匝奢您淀是哑傈殊啡偷触娠琼脸模画储轴既寐衡腋目旭据亭纠堑复栋怂掌匝窃娶织财若焉嗜叠宫佃浦历童鲸湍沂签讽确狞秒蛰氓穴澜切许艰漳命矢曼漓秦钻犁季岭桑妈矛乳枝瑶趁莉沾赔鄂蜂其罗接薯帖涧粱咙持镶贵蠢民诚俏林潜夹哎基于延后策略的动态多路

4、径分析方法* 陈恺1-3+ 冯登国12 苏璞睿21(信息安全国家重点实验室 中国科学院研究生院, 北京市 100049)2(信息安全国家重点实验室 中国科学院软件研究所, 北京市 100190)3(信息安全共性技术国家工程研究中心,北京市 100190)摘 要:多路径分析是弥补传统动态分析方法的不足,对可执行程序全面分析的重要方法之一。现有多路径方法主要采用随机构造或者根据路径条件构造输入进行路径触发,这两者均存在路径分析不全面和缺乏针对性的问题。本文通过对路径条件分析,确定了检测条件的基本组成元素,提出了弱控制依赖和路径引用集的概念和计算规则,并以此为基础提出一种延后策略的多路径分析方法。在

5、程序分析过程中,对特定的程序检测点和检测点条件,有针对性地进行路径筛选,从语义上进行路径表达式简化,在保证检测点可达和检测表达式具有相同构造形式的前提下,简化检测表达式,减少分析路径的数量。通过对7款恶意软件分析实验,结果表明本方法提高了分析效率和准确性。关键词:多路径分析,可执行程序,漏洞检测,动态分析,延后策略软件分析是检测软件漏洞、软件恶意行为等安全性问题的基础。从分析目标的不同,现有软件分析方法一般分为面向源代码的软件分析和面向可执行程序的软件分析。前者针对有源代码的程序,具有更加丰富的类型信息和结构信息,相对而言,分析准确性更高。但是现有软件多数不提供源代码,尤其是大型的商业软件和进

6、口软件等;同时,即使部分软件提供了源代码,也不能保证使用的可执行程序和源代码之间的对应关系,这一问题在文献1中进行了详细讨论。由于大量的应用软件无法获得源程序,并在一些重要领域应用,直接对其可执行程序进行安全性分析、确保这类软件的安全性显得极为重要,该问题也是国内外研究的热点问题。可执行程序分析方法一般分为静态方法和动态方法两种。静态分析使用反汇编手段,将可执行程序的二进制代码转变为汇编语言并以此为基础进行分析。其优点在于可以较为全面的分析程序代码,但是由于分析过程依赖于大量的推理和符号演算,因此效率较低,且会造成一定数量的误报2,对于一些经过变形和混淆3技术处理的代码也不能很好处理。动态分析

7、方法的基本思想是利用程序运行时的数据提高分析效率和准确性,同时避免由于变形等反静态分析技术带来的不可分析性。传统的动态分析一次只能分析一个运行实例,例如Softice、Ollydbg等,为了提高动态分析的全面性,需要构造执行应用程序的多种可能执行路径,即对可执行程序进行多路径分析。按照动态多路径分析方法的发展,可以将其分为三类。第一类是将可执行程序放在可控环境中(例如调试器等)执行并手动更改分支语句的判断条件进行多路径分析。这类方法需要大量的人工参与,非常繁琐且不具全面性。第二类是自动构造不同的输入,尝试触发程序执行的各种不同路径以暴露出程序潜在的安全问题。这类方法也称为Fuzz方法。虽然此类

8、方法在一定程度上提高了第一类方法的效率和覆盖率,但是大多数情况下,此类方法仅能穷举有限个输入,并不能对所有的输入都进行测试。因此通过此方法验证的程序会有一定数量的漏报,而且会耗费大量时间重复已有测试结果。第三类方法是通过对程序执行过程中的路径条件的求解,有选择地对路径进行分析,较有代表性的如EXE2等。这类方法使用动态分析方式,提高了静态分析的准确性和效率,同时避免了Fuzz方法的随机性,增加了路径选择的效率,本文所做工作也是以此类方法为基础。但是这类方法仍然会产生过多的分析路径,也没有对路径条件进行分析筛选,以至于难以应用到大型程序中4。目前国际上部分学者使用启发式方法尝试减少路径分析数量5

9、,但是效果仍然不理想4。本文所述方法从路径条件与检测点之间关系入手,围绕着条件表达式的组成结构加以展开。我们发现,多路径分析的作用之一在于确定某条语句或若干条语句的集合(称为程序检测点集合)在不同的执行路径下是否满足一定的需求,例如判断某条语句是否存在漏洞或者是否存在恶意行为等。此时在程序分析过程中,部分分支条件的取值并不会影响程序检测点的判断条件,因此产生了条件冗余。针对以上应用场景,本文提出了一种延后策略的可执行程序动态多路径分析方法。与传统多路径分析方法不同,本方法在程序的分支路径选择过程中,并不立即进行路径表达式求解和启用新进程进行多路径分析,而是仅记录分支条件;当遇到程序检测点时,有

10、选择的对部分分支语句进行多路径分析,减少需要分析的路径数量和检测表达式长度,提高了分析效率和准确性。本文主要做了如下贡献:1)对路径执行条件进行分析,确定了检测条件的基本组成元素,提出了弱控制依赖和路径引用集的概念和计算规则,并以此为基础对路径条件进行筛选,简化了检测条件表达式,提高了表达式求解的效率和准确性。2)提出了一种延后策略的多路径分析方法。在动态分析的过程中,并不立即对分支语句进行多路径分析,而是在确定检测点位置和检测条件后,动态分析路径条件,有选择的对检测表达式有控制作用的分支语句进行多路径分析,提高了多路径分析的针对性,简化了多路径构造过程,改进了分析效率。3)实现了一套基于延后

11、策略的多路径分析原型系统。对Perfect Keylogger等7款具有恶意操作的软件进行分析,实验表明,本方法有效简化了检测表达式,避免了无用路径的分析,提高了多路径分析的效率和准确性。本文采用如下组织方式:第1章介绍了目前国内外相关研究工作;第2章讨论了路径条件的组成;第3章提出一种延后的多路径分析方法;第4章进行了实验与分析;最后总结全文。1 相关工作多路径分析是进行程序漏洞检测、程序恶意行为分析的关键方法之一。目前国际上对可执行程序进行多路径分析一般可以分为静态分析和动态分析两种方式。静态分析方法多在静态反汇编程序的基础上,提出相关的分析方法进行程序分析。在反汇编方面,目前已有较为成熟

12、的方法和工具,例如IDA Pro IDA Pro Disassembler - multi-processor, windows hosted disassembler and debugger, http:/ 9。国内如夏一民等人在对漏洞进行检测时,提出了基于条件约束的方法10,此方法也可应用在多路径分析上。静态分析虽然可以较为全面的分析程序代码,但是由于缺乏程序运行时的数据信息,所以分析效率较低,且会造成一定数量的误报2。对于一些经过变形和混淆3技术处理的代码,静态分析也难以处理。目前,人们使用一些基础理论方法,例如切片方法11,试图提高静态分析的准确性,但效果仍然不理想12。动态多路径分

13、析是目前重要的多路径分析方法。最初人们为了触发程序的不同路径,尽量多的构造出不同的输入,这类方法称为Fuzz方法。较有代表性的是Ghosh13,它将程序看作是黑盒,通过变换不同的输入,观察程序是否会出现异常,从而进行漏洞查找。这类方式不需要对程序进行分析,而是对程序进行测试,所以执行速度较快。但是大多数情况下,此类方法仅能穷举有限个输入,并不能对所有的输入都进行测试,因此通过此方法验证程序会存在一定数量的漏报。同时,这类方法效率很低,例如程序中有分支语句x=10,这类方法要对x进行232计算才能对不同分支进行处理。之后人们通过对执行路径条件进行分析,产生了白盒Fuzz的方法。白盒Fuzz方法对

14、不同的分支条件求解,计算出可能的输入并尽量多的对不同分支进行多路径分析,较有代表性的是EXE2 、Moser14和SAGE1。但是这类方法需要对遇到的每一个依赖于外部输入的分支都进行多路径分析,因此很大程度上影响了实现效率。Godefroid使用了语法指导的Fuzz分析15,但是预先对缺乏源代码的可执行程序输入部分进行语法分析非常困难且准确性不高,同时这种方法仍然会产生较多的无用路径。多种启发式方法5, 16, 17也被提出进行路径选择,试图在尽量短的时间内达到更多的代码覆盖率,但是这类方法仅是从搜索策略的角度入手,例如深度优先、广度优先、随机法或通过一定的算子计算出路径上的权值来进行路径选择

15、,没有对路径本身的语句进行分析和优化处理,因此效果仍然不够理想4。RWSet方法对指令引用集合和定义集合进行分析,从程序语义上尝试减少多路径分析的数量,具有一定效果4,但是它仅是从程序节点的数值依赖角度进行分析,没有对控制依赖进行分析,例如缺乏针对程序检测点的运行条件分析,和对条件路径叠加的处理,因此仍然存在无用路径;且仅适用于源代码分析。现有多路径分析方法中,路径分析不全面和分析过多无用路径的问题影响了分析的准确性和分析效率。其原因体现在以下两个方面:1)对条件路径不加选择地进行多路径扩展。在程序执行过程中,遇到分支语句即对路径进行分解,进而对每个分支路径分别产生一个新进程进行计算。Cadar2等人在此基础上对动态依赖于外部输入的分支语句进行路径分解,以减少路径数目,但是这类方法仍然会产生较多的无用路径。2)路径表达式过长以至无法求解。在分支计算过程中,为了明确程序的执行路径,需要记录下分支条件,当分支数目增加时,条件表达式长度也随之增加。条件表达式的数目和长度的增加,使得对程序进行多路径分析的难度显著增加,甚至在有限时间内不可求解。这也是造成路径分析不全面的原因之一。本文针对以上问题,对程序检测点与路径条件的关系进行分析,确定了路径条件的组成,提出一种延后分析的策略。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号