路径条件驱动的混淆恶意代码检测.doc

上传人:gs****r 文档编号:1734251 上传时间:2019-03-13 格式:DOC 页数:10 大小:115KB
下载 相关 举报
路径条件驱动的混淆恶意代码检测.doc_第1页
第1页 / 共10页
路径条件驱动的混淆恶意代码检测.doc_第2页
第2页 / 共10页
路径条件驱动的混淆恶意代码检测.doc_第3页
第3页 / 共10页
路径条件驱动的混淆恶意代码检测.doc_第4页
第4页 / 共10页
路径条件驱动的混淆恶意代码检测.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、1路径条件驱动的混淆恶意代码检测摘要:代码混淆是恶意代码隐藏自身的主要手段之一.本文提出了一种新的动态检测方法,能够有效检测混淆后的恶意代码.该方法能够利用 ISR 进行动态调试.在调试过程中通过对路径条件的约束求解,驱动恶意代码执行不同的路径更深入地检测隐藏恶意代码.此外,对于需要读取外部资源的恶意代码,恶意行为往往需要结合外部资源才能检测.本文方法能够准确定位外部资源并结合原始恶意代码进行检测,提高检测的准确性.在原型系统的测试中,与 12 种杀毒软件的横向测试表明,该方法在对混淆恶意代码检测中能有效地降低漏报率. 关键词:程序调试;恶意代码检测;代码混淆;路径分析;动态测试 中图分类号:

2、TP309 文献标识码:A 经过多年研究,恶意软件检测领域发展出了多种有效的恶意软件检测方法.恶意软件分析方面主要包括静态分析和动态分析两大类方法;恶意软件的归类和检测方面则主要采用基于特征,基于规范以及基于异常1三种方法. 基于特征的恶意软件检测主要将恶意软件中特定的二进制序列、字符串或者程序行为作为恶意软件的主要特征,分析检测对象后与已有的特征库进行匹配,来识别恶意软件2.刘巍伟等人提出综合检测程序行为来作为特征实现恶意软件检测3.基于规范的恶意软件检测方法则首2先整理系统的关键安全属性得到安全规范.建立安全规范后,分析检测对象,如果检测对象的行为不满足规范,则认为检测对象为恶意软件.基于

3、规范的恶意软件检测属于白名单机制,相较于基于特征的恶意软件检测能够更有效地检测未知的恶意软件4,但误报率较高.基于异常的恶意软件检测采用统计的方法得到正常程序的行为集合,检测对象的行为与正常行为集合不同时,认为代码有异常行为从而判定为恶意软件.基于异常的恶意软件检测方法的误报率相对基于规范的方法低,同时漏报率相对基于特征的方法高5. 然而随着恶意攻击者的水平不断提高,恶意代码取代恶意软件成为攻击的主要手段.恶意代码并不是完整的可执行程序,而是二进制代码片段.恶意代码相较于恶意软件,能够更容易地进行代码混淆,更方便地通过网络传输,并能更好地与软件或系统漏洞相结合.恶意攻击者针对原有的安全防护技术

4、,针对性地对恶意代码进行伪装.一方面,使用代码混淆技术使得恶意代码没有固定特征6;另一方面,攻击静态分析中关键的反汇编算法使其得到错误结果.静态恶意软件分析需要首先将二进制恶意软件反汇编为中间表示,才能继续分析.恶意软件保护技术中的预防混淆技术能够有效地针对反汇编算法进行攻击,使得反汇编出错6.除此之外,分析经过控制流混淆的恶意代码,静态分析有着较大的局限性7.另一方面,研究人员提出了一系列新的动态软件分析技术.部分研究人员提出利用纯软件虚拟机来对抗代码混淆8-9.另外一部分研究人员提出利用 CPU 的调试功能的方法,提升了动态分析的效率10-11. 本文在动态分析方法的基础上,提出了一种新的

5、动态恶意代码检测3方法.该方法采用基于 CPU 调试功能的动态检测技术,并利用路径驱动的分析方法提升了恶意代码检测的路径覆盖率,同时对程序 I/O 的检测,使得本文方法能够有效加载外部资源,检测分离式恶意代码.本文按照以下方式组织,第 1 节介绍与本文相关的前人研究,第 2 节具体介 绍本文采用的动态恶意代码检测方法,第 3 节给出并分析原型系统的实验结果,最后第 4 节进行总结. 1 相关工作 在恶意代码检测领域中,研究人员主要采用静态程序分析和动态程序分析两种方法来对恶意代码进行自动化分析.其中静态分析主要包括控制流分析、数据流分析、切片以及抽象解释等多种分析方法. 由于恶意代码一般为二进

6、制机器码,静态分析需要首先通过反汇编技术将其转化为汇编语言再进行深入分析.反汇编主要有线性扫描和递归扫描两种算法12,然而 Linn 等人指出通过在二进制中插入垃圾指令,能够有效地攻击这两种主流反汇编算法,使得反汇编结果错误6.与此同时,结合了代码混淆技术的恶意代码隐藏技术也给静态分析带来了不小的挑战.控制流混淆能够彻底改变恶意代码的执行流程,使得静态恶意代码检测技术无法通过匹配控制流图来实现检测.平展控制流混淆13是控制流混淆中较为常用的一种,平展控制流混淆将顺序结构的控制流图扁平化,加入大量冗余块来保护程序的真实执行流程,如图 1.从图中可以看出,代码经过混淆后各个节点的执行顺序无法直观看

7、出,需要分析派遣变量运行时信息才能获得. 动态分析相较于静态分析来说,由于需要实际执行程序,往往能够4更准确地得到程序的执行流程.Michalis Polychronakis 利用模拟执行环境对恶意代码变种进行动态调试,取得了很好的效果14.在此之后,动态的恶意代码分析技术得到了全面发展,Dawn Song 等人提出了基于该思想的恶意代码分析平台8.这些动态调试方法的共同特点都是通过Bochs/qemu 等软件模拟环境来执行恶意代码,并对其进行分析.恶意攻击者发现软件模拟运行环境无法完全模拟所有真实 CPU 指令,通过某些特定的指令能够绕过模拟环境的检测机制15.为了解决这一问题,Yanick

8、 Fratantonio 利用真实环境中 CPU 的陷阱标志进行单步调试. 动态分析主要存在两个主要问题,一是路径覆盖率低,二是执行效率底.以上提到的动态执行方面采用多种方法提升了执行效率,但是忽略了路径覆盖率.本文在修改 ISR 实现程序跟踪的基础上,通过对执行路径条件的跟踪和约束求解,采用 Concolic 测试的分析思想16,提高恶意代码分析过程的路径覆盖率. 此外,在动态分析过程中通过对系统I/O 函数的检测来更全面地定位获取外部资源.对外部资源的定位与跟踪能够更好地分析一些分离式的恶意代码.木马下载器作为一种典型的分离式恶意代码,只有在能够通过网络下载木马资源的情况下才会运行木马并实

9、施恶意行为.在外部资源无法加载的情况下,恶意代码可以自动退出或者自毁.因此,为了全面分析恶意代码行为,必须能够识别并下载外部资源. 2 恶意代码动态检测方法 本文提出的动态恶意代码分析框架主要包含 3 个主要部分:在 Bochs基础上通过修改中断服务例程实现的 ISR 调试器;实现路径驱动测试的5跟踪模块;恶意代码特征分析模块,如图 2 所示. 在 ISR 调试器中,将 CPU 的 EFLAGS 寄存器中的 TF 标志位置为 1,并修改其中断处理例程 ISR 1 来实现对恶意代码的动态跟踪.跟踪模块则根据 ISR 调试器的输出记录恶意代码执行流程,将汇编语言转化为更加适合分析的中间表示.此外,

10、跟踪模块还具有两个主要功能,一是利用Concolic 思想驱动恶意代码的多次运行,提高分析的路径覆盖率;二是定位包括文件读取,网络下载等系统 I/O 函数来自动加载外部资源.特征分析模块则根据系统调用序列来判断、分类、记录恶意代码行为. 2.1 路径条件驱动的检测 在动态跟踪的基础上,准确地发掘可疑行为是恶意代码检测的关键.传统动态分析技术仅对恶意代码的少数路径进行动态分析,无法保证路径覆盖率.然而恶意攻击者往往通过各种条件跳转来隐藏恶意代码中的攻击行为.比如通过检测自身父进程来判断运行环境,只在特定的环境下实施恶意行为.针对这种手段,跟踪模块采用 Concolic 测试方法驱动分析对象动态执

11、行.首先根据 ISR 调试器的输出得到分析对象当前执行路径的约束条件,并对其进行变换和约束求解得到新的目标路径和输入.然后,跟踪模块驱动分析对象执行新的目标路径,避免重复执行同一路径造成冗余测试.Concolic 分析算法如图 3 所示. 算法中,跟踪模块监控 ISR 调试器逐指令运行分析对象.当发生关键系统 API 调用时,记录 API 调用并分析是否需要加载外部资源.当遇到条件分支语句时,将其加入路径约束条件表达式并调用update_branch_stack 函数将该分支条件及其当前值入栈.当程序执行完6成时,如果分支栈为空,则说明所有分支已经遍历,测试完成;否则取得栈顶未被遍历的分支条件

12、,对该分支条件取反并得到新的路径条件,求解该路径条件并继续 Concolic 测试. 跟踪模块采用基于 Concolic 测试的恶意代码检测方法,能够提高恶意代码分析的路径覆盖率,更深入地挖掘疑似恶意代码中的恶意行为特征,并将特征反馈到特征库用于其他恶意代码样本的检测. 2.2 外部资源定位与跟踪 跟踪模块的另一个重要特点是在发现系统 I/O API 时能检测并加载外部资源.许多恶意代码作者为了方便恶意代码通过网络传播或者捆绑漏洞,采用加载器加外部资源的方式制作恶意代码.加载器体积小,能够自动通过网络或者读取文件的方式加载包含实际恶意行为的外部资源.在恶意代码检测的过程中如果仅仅对加载器进行分

13、析,可能无法发现恶意行为从而漏报.因此,自动检测系统 I/O 加载分析对象的外部资源并进行联合分析能够大大降低恶意代码检测的漏报率.本文的方法通过对文件、网络、注册表读写等多种 I/O 相关系统调用的 HOOK 和参数分析,实现准确地定位、保存外部资源,并将其作为检测的一部分进行深入分析.根据系统调用的不同,外部资源可能以本地文件、网络流、内存数据等不同形式出现.对于这些不同形式的外部资源,加载器会采取不同的加载方式. PE 文件:以 PE 文件形式存在的外部资源,可使用WinExec,CreateProcess 等系统函数直接运行.跟踪模块通过对这些系统调用的参数与外部资源路径匹配,实现外部

14、资源加载和执行检测.随后,跟踪模块会结合原分析对象的行为和外部资源的行为实现检测. 7网络流与内存数据:以这种形式存在的外部资源,加载器可以通过call,jmp 等调用或跳转直接跳入执行.检测系统通过目标地址范围匹配,标识外部资源所在的内存范围,监控跟踪内存执行代码情况,发现跳转到外部资源后,跟踪模块结合原分析对象和外部资源的行为进行分析检测. 外部资源的具体检测流程如下: 步骤 1:通过关键系统函数检测,实现外部资源的定位和标识; 步骤 2:继续运行分析对象,检测进程运行相关系统函数和函数调用、跳转等指令; 步骤 3:如果检测到执行、跳转到外部资源,则结合原分析对象进行综合检测. 通过对外部

15、资源的检测,系统能够更准确地检测出分离式恶意代码,并能够更全面地提取分离式恶意代码的恶意特征. 3 实验与分析 为了证明本文方法的有效性,本节对原型系统进行实验.原型系统在一台 DELL T610 服务器上运行,操作系统为 Win 7 x64 版本.Bochs 中运行 Windows XP,在 Wildlist 中选择了一组样本进行测试.使用多款杀毒软件对一组样本进行一次检测,然后 VX Heavens17提供的多态变形工具对这组样本进行混淆处理,再进行一次检测,对比两次检测的结果如表 1 所示. 在未经过多态变形时,所有杀毒软件几乎都能够完全检测出这些恶意代码样本,原型系统测试也取得了较为理

16、想的结果.然而经过多态变形8工具处理之后,检测情况发生了显著变化.大部分杀毒软件漏报率上升到了 50%左右,甚至小部分漏报率超过了 50%.原型系统的漏报率上升不大,仅上升到了 19.67%.这是由于多态变形后,样本的恶意特征被控制流混淆以及条件混淆隐藏很难被准确检测.因此所有被测试的安全防护软件的检测率都发生了下降.由于原型系统采取了 Concolic 测试方法来分析样本,路径覆盖率更高,同时能够定位并加载外部资源,更有效地实现对变形后的恶意代码的检测. 4 总结与展望 本文提出了一种路径条件驱动的混淆恶意代码检测方法,该方法能够有效地通过路径条件遍历,检测出经过混淆后被隐藏的恶意行为特征.

17、经过分析和实验,该方法有如下特点:一是能够通过路径条件的分析与约束求解,驱动恶意代码执行更多的隐藏路径,从而提高路径覆盖率,减少漏报;二是检测系统 I/O 函数,自动加载外部资源,实现了更全面地定位、检测恶意代码;最终准确地挖掘系统调用序列作为恶意特征,形成特征库供恶意代码检测使用.原型系统的实验证明了该方法的有效性.相较于原有的恶意代码检测方法,本文的方法能够更准确地识别恶意代码特征. 参考文献 1IDIKA N, MATHUR A P. A survey of malware detection techniquesR. Purdue University, 2007: 48. 2王蕊,

18、冯登国, 杨轶,等. 基于语义的恶意代码行为特征提取及检测方法J.软件学报, 2012, 23(2): 378-393. 3刘巍伟, 石勇, 郭煜,等. 一种基于综合行为特征的恶意代码9识别方法J. 电子学报, 2009, 37(4): 696-700. 4MASRI W, PODGURSKI A. Using dynamic information flow analysis to detect attacks against applicationsC/ACM SIGSOFT Software Engineering Notes. 2005, 30: 1-7. 5SEKAR R, BEND

19、RE M, DHURJATI D, et al. A fast automatonbased method for detecting anomalous program behaviorsC/Security and Privacy, 2001. S&P 2001. Proceedings. 2001 IEEE Symposium on. 2001: 144-155. 6LINN C, DEBRAY S. Obfuscation of executable code to improve resistance to static disassemblyC/Proceedings of the

20、 10th ACM conference on Computer and communications security. New York, USA: ACM, 2003: 290-299. 7MOSER A, KRUEGEL C, KIRDA E. Limits of static analysis for malware detectionC/IEEE.2007: 421-430. 8SONG D, BRUMLEY D, YIN H, et al. BitBlaze: A new approach to computer security via binary analysisJ. In

21、formation Systems Security, 2008: 1-25. 9武炳正, 武延军, 贺也平. 基于虚拟机架构的自修改代码监测技术J. 计算机工程与应用, 2011, 47(11): 71-74. 10FRATANTONIO Y, KRUEGEL C, VIGNA G. Shellzer: a tool for the dynamic analysis of malicious shellcodeC/Recent Advances in Intrusion Detection. 2011: 61-80. 1011薛永岭, 黄皓, 张博. 基于函数签名的控制流监控方法J. 计算机

22、工程, 2009, 35(9): 133-135. 12马金鑫, 忽朝俭, 李舟军. 基于控制流精化的反汇编方法J. 清华大学学报: 自然科学版, 2011, 51(10): 1345-1350. 13赵玉洁, 汤战勇, 王妮,等. 代码混淆算法有效性评估J. 软件学报, 2012, 23(3):700-711. 14POLYCHRONAKIS M, ANAGNOSTAKIS K G, MARKATOS E P. Emulationbased detection of nonselfcontained polymorphic shellcodeC/Proceedings of the 10th

23、 International Conference on Recent Advances in Intrusion Detection. Berlin, Heidelberg: SpringerVerlag, 2007: 87-106. 15PALEARI R, MARTIGNONI L, ROGLIA G F, et al. A fistful of redpills: How to automatically generate procedures to detect CPU emulatorsC/Proceedings of the USENIX Workshop on Offensive Technologies (WOOT). 2009:41-86. 16濮方琍, 卢炎生. 基于并行 Java 程序动态切片的 Concolic 测试J. 华中科技大学学报:自然科学版, 2009, 37(10): 21-24. 17VX HeavensEB/OL. http:/lux.org/index.html.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 学科论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。