CN102012987B - 自动二进制恶意代码行为分析系统 - Google Patents

自动二进制恶意代码行为分析系统 Download PDF

Info

Publication number
CN102012987B
CN102012987B CN2010105702996A CN201010570299A CN102012987B CN 102012987 B CN102012987 B CN 102012987B CN 2010105702996 A CN2010105702996 A CN 2010105702996A CN 201010570299 A CN201010570299 A CN 201010570299A CN 102012987 B CN102012987 B CN 102012987B
Authority
CN
China
Prior art keywords
path
module
malicious
input
symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2010105702996A
Other languages
English (en)
Other versions
CN102012987A (zh
Inventor
李清宝
张平
曾光裕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN2010105702996A priority Critical patent/CN102012987B/zh
Publication of CN102012987A publication Critical patent/CN102012987A/zh
Application granted granted Critical
Publication of CN102012987B publication Critical patent/CN102012987B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种自动二进制恶意代码行为分析系统;该系统含有全系统模拟器、符号执行模块、路径解析模块、路径选择模块、恶意行为分析模块、控制流分析模块和有效输入集分析模块,符号执行模块发现二进制恶意代码中依赖于符号变量的分支后产生路径判定谓词逻辑;路径解析模块对路径判定谓词逻辑进行解析,并产生新的执行路径加入到路径存储池中;路径选择模块对路径存储池中的路径进行优先级设置;控制流分析模块生成并连续更新控制流图CFG;恶意行为分析模块提取关联代码段实现的恶意行为特征和结构特征;有效输入集分析模块找出使恶意行为程序按照特定路径执行的输入值集;本发明提供了一种高效的自动二进制恶意代码行为分析系统。

Description

自动二进制恶意代码行为分析系统
(一)、技术领域:本发明涉及一种恶意代码行为分析系统,特别是涉及一种自动二进制恶意代码行为分析系统。
(二)、背景技术:恶意代码是威胁计算机系统和网络安全的重要因素之一。恶意代码是对在不被用户所知的情况下渗透或破坏计算机系统的具有恶意行为的软件的总称,是各种攻击、入侵、破坏软件或代码的泛指,包括计算机病毒、蠕虫、特洛伊木马、Rootkits、间谍软件等。恶意代码分析用于提取恶意代码的特征信息,是恶意代码检测和发现的基础和前提,近年来,由于恶意代码发展迅猛,自动分析二进制恶意代码显得十分必要,分析结果不仅在设计防御系统方面很有用,还有助于了解攻击者的攻击能力。
目前,恶意代码分析的方法之一是人工使用调试器,并且对代码执行行为进行推理。然而,人工分析的效率很低,还比较容易出错,无法与大量涌现的恶意代码进行对抗。二进制恶意分析的另一种方法就是在一个有条件限制的环境(比如虚拟机环境)中运行一段二进制代码程序观察并记录其行为。然而,此类方法提供的信息十分有限,日志信息只记录了在具体设置下运行的恶意代码的表象行为。二进制恶意代码某些功能,只在某些特定的环境或是条件下(比如当收到一个正确的命令或是设置了一个特定的register key)才会被触发。如果用于测试的环境设置没有满足所需条件,相关的恶意功能不会被激活。人们可以在各种不同的环境设置下对程序示例进行测试,并且随意给定网络输入。然而,设置不同的环境,并在这个环境下测试程序的花费较大,并且效率较低,猜测满足条件的正确环境的可能性非常小。因此,这种方法不能完全有效地对二进制恶意代码进行分析。为了研究有效的恶意代码防御技术,自动分析恶意代码就显得尤为重要了。
(三)、发明内容:
本发明要解决的技术问题是:克服现有技术的缺陷,提供一种自动二进制恶意代码行为分析系统,该系统基于全系统模拟技术,采用动态符号执行探查可执行程序中所有可能的执行路径,发现其中恶意代码的操作行为,分析恶意行为与输入的关联关系,并可以有效分析出恶意代码执行行为的控制结构关系,建立相应的控制流图,提取出恶意行为执行的触发输入条件,给出恶意行为执行与输入的关联关系;该系统可以有效提高恶意代码分析的效率。
本发明的技术方案:
一种自动二进制恶意代码行为分析系统,含有全系统模拟器、符号执行模块、路径解析模块、路径选择模块、恶意行为分析模块、控制流分析模块和有效输入集分析模块,符号执行模块为全系统模拟器的插件,符号执行模块为输入源引入符号变量的输入,符号执行模块发现二进制恶意代码中依赖于符号变量的分支后,为每一条分支构建一个路径判定谓词逻辑;路径解析模块对符号执行模块生成的路径判定谓词逻辑进行解析,并对分支进行排序,如果路径判定谓词逻辑是可满足的,路径解析模块返回的是使路径判定谓词逻辑满足的输入实例集,并且路径解析模块产生一条新的执行路径加入到路径存储池中;路径选择模块对路径存储池中的路径进行优先级设置,选择当前最优路径反馈给符号执行模块,作为符号执行模块下一步的执行路径;控制流分析模块为符号执行模块的插件,控制流分析模块在二进制恶意代码动态符号执行过程中动态生成并连续更新控制流图CFG(Control Flow Graph);恶意行为分析模块依据恶意行为列表分析符号执行模块中是否调用相关Windows API函数实现的相应恶意行为,并分析和这些相关Windows API函数相关联的关联代码段,提取关联代码段实现的恶意行为特征和结构特征;有效输入集分析模块可根据恶意行为分析模块的结果找出使恶意行为程序按照特定路径执行的输入值集。
全系统模拟器用于对二进制恶意代码执行的系统环境进行模拟,它能够对寄存器和内存的状态、外设的执行情况等各种硬件组件进行模拟,还能够对操作系统内核里的操作以及在多种进程之间的交互进行模拟,并提供相应的开发接口,因此全系统模拟器可以搭建一个全系统模拟环境。全系统模拟器采用动态插桩技术对系统执行进行细粒度监视,提取程序执行、系统内核操作和进程间交互信息。
符号执行模块通过动态插桩技术提取被检测软件的执行状态信息,并分析被检测软件的指令来自于哪一个进程或模块;如果所述全系统模拟器正在执行的指令为输入指令,符号执行模块则将输入变量的值定义为符号值,在后续指令中该输入变量以符号值形式参加执行,使得任何依赖于输入的指令都一定会被符号地执行,执行结果为符号表达式,例如,指令add x,y(x,y是由输入得来的,被设为符号)产生了符号表达式x=x+y,并且它不会被x,y的具体值所限制;在指令被符号地执行的过程中条件跳转真分支的成立条件是:当前的符号公式的值必须为非零;在指令被符号地执行的过程中条件跳转假分支的成立条件是:当前的符号公式的值为零;符号执行模块根据当前的符号公式的值得出不同的程序路径,从而在不同的条件下观察恶意代码的执行行为;所述输入源为网络输入,或为文件描述符,或为库;每一个路径判定谓词逻辑描述了符号输入需要满足程序执行规定路径的条件约束,新的路径判定谓词逻辑是当前分支的路径约束条件和当前分支之前的路径约束条件的并;所述路径判定谓词逻辑是一个布尔函数,要么满足,要么不满足。
符号执行模块采用hook方式截取全系统模拟器的windows API函数调用,当全系统模拟器的模拟CPU到达第一hook函数的入口点处时,模拟CPU将执行第一hook函数,第一hook函数执行结束后,模拟CPU执行windows API函数或跳过windows API函数,如果windows API函数被调用了,那么当windowsAPI函数返回时,第二hook函数就能被动态地添加从而被调用,第二hook函数将Windows API函数调用时的返回值或返回的缓冲区标记为符号变量。
符号执行模块用于以符号而非具体值的形式为二进制恶意代码的执行提供输入,为分支跳转语句生成路径判定谓词逻辑,使得探查的代码执行路径不受具体输入的限制,和传统方法相比,可以探查到更多的程序片段,获取更多的程序信息,为进一步的分析奠定基础。
一个能满足的路径判定谓词逻辑意味着路径谓词中的符号变量有一个赋值,该赋值使得路径判定谓词为真。由于路径判定谓词逻辑中的符号变量是输入变量,因此,能满足的路径判定谓词逻辑说明存在一个输入集,该输入集能使代码执行该路径。相反,一个不能满足的路径判定谓词逻辑说明不存在输入集使代码执行该路径。路径判定谓词逻辑可以采用多种方法来解析,如判定过程(decision procedure)方法和定理证明(theory prove)方法等,以检查路径判定谓词逻辑是否是可满足的。
路径解析模块检查每一个生成的路径判定谓词逻辑是否是可满足的,有以下三种情况:1.路径判定谓词逻辑是可满足的,则意味着路径是可行的,在这种情况下,路径解析模块将可行路径添加至待进一步探索的路径池中。同时,返回使程序执行该路径的输入例集,也就是说,使得程序按照可行路径执行的输入值。2.路径判定谓词逻辑是不可满足的,则意味着路径不可行,也就是说,没有执行特定路径的输入。3.解析耗费太多的时间和内存,就不再进一步考虑这条路径,选择一些其他的方法,比如增加超时时间。路径解析模块可以采用已有的定理证明和过程判定工具以插件的形式实现,充分利用最先进的技术。
路径存储池中的路径第一次出现的时候,路径选择模块将该路径的优先级设为最高,该路径每执行一次之后,路径选择模块就将其优先级降低一级;路径选择模块还采用全系统模拟器的用户交互功能,对于用户感兴趣的路径设置高级别的优先级。
路径选择模块的总目标是解决路径的选择问题,在代码实际执行过程中,路径分支的数量是非常巨大的,尤其是在程序的循环执行过程中。因此,需要算法区分这些路径的优先次序,从而在一个合理的时间内找到感兴趣的路径。解决这个问题的一个有效办法是为每条已发掘的路径设置优先级,并在代码执行过程中动态修改优先级。
由于不同的方法在不同的情况下的运行效果是不同的,路径选择模块是一种模型,可以允许不同算法,比如,广度优先算法、纵向优先算法等。路径选择模块通过相应的算法可以有效解决重复路径的选择问题。路径选择模块将已发现的待进一步探查的可行路径集作为输入,输出下一条待探查的路径。
广度优先算法使用的策略是尽可能多地探查出依赖于符号输入的条件跳转,它将试图探查一个重访循环主体前从未见过的依赖于符号输入的分支。首先,它将试图探查出循环头部(循环头部是条件跳转,一条分支执行循环主体,另外的分支离开循环)的分支。这模仿了执行循环,附加的循环将被反复添加至路径选择队列的队尾。
当符号执行模块发现并执行新代码路径时,控制流分析模块把该新代码路径添加至控制流图CFG;控制流分析模块通过执行不同的代码路径来绘制控制流图CFG,当该代码路径被动态解压、解密、生成时,控制流分析模块将转储内存映像并且执行静态全程序控制流分析以将新代码路径添加至控制流图CFG。
如果被分析的二进制恶意代码可以预先进行静态反汇编,控制流分析模块的分析可以建立在静态反汇编生成的控制流的基础之上。
控制流分析模块用于在动态符号执行过程中生成二进制代码控制流图CFG,用于解决诸如二进制使用的是什么样的系统或是库的调用,调用顺序如何等问题。控制流为后续分析提供了一个重要的依据,并且给出了一个关于不同代码段是如何关联的描述图。控制流分析模块通过静态分析生成了尽可能多的控制流图CFG,然后根据二进制代码的动态符号执行连续更新CFG。
在符号执行模块的工作过程中,恶意行为分析模块始终监视每条指令的执行,如果符号执行模块执行了恶意行为列表中的Windows API函数,恶意行为分析模块就对与Windows API函数相关联的关联代码段采用反向切片的方法进行分析。
恶意行为分析模块分析恶意代码的行为类型,通过符号执行探查到依赖于特定Windows API调用的控制流结构,通过解析符号执行过程中建立的谓词逻辑约束条件,就能探索所有依赖于这些API调用的代码。与只简单运行可执行代码相比,利用该方法能观察到更多的结果。除此之外,还在上述动作运行期间,对恶意软件的行为进行记录。
通常我们需要了解一段二进制恶意代码执行了那些恶意行为,如是否执行了删除文件或是发送网络数据包的操作,这些行为通过各种Windows API函数调用来实现,因此恶意行为分析模块基于一个指定的感兴趣的恶意行为API函数调用列表,通常系统包含一个默认的常用的典型API函数列表,用户还可以根据需要增加新的感兴趣的API调用对列表实现扩展。
有效输入集分析模块还可根据恶意行为分析模块的结果生成目标导向的输入,找出能使恶意行为程序朝着特定目标执行的输入,并利用控制流图CFG提取恶意行为模块,跟踪记录在恶意行为分析模块中已经探索过的恶意行为程序中的路径;如果恶意代码被加密,有效输入集分析模块仍然能通过将分支对象制定为目标对象来探索先前未执行的分支。
有效输入集分析模块通过生成只包含从恶意行为程序入口到目标节点的路径的控制流图CFG分片,把能达到目标节点的路径单独区分出来,然后选取了从源到目的的最短路径,称为目标路径;目标路径包括一系列待执行的条件跳转目标,有效输入集分析模块根据条件跳转目标所在执行路径上的路径谓词,求解出使条件跳转目标满足的符号变量的输入值集,该输入值集为触发恶意代码执行的输入值集,依据确定的符号变量的输入值集,全系统模拟器可以对恶意代码模拟执行,在受控环境下记录恶意代码的执行行为。
全系统模拟器为Bochs全系统模拟器,或为Vmware全系统模拟器,或为QEMU全系统模拟器。
QEMU全系统模拟器是一个使用动态翻译技术的模拟器,客户系统中的指令块被翻译为主机中的一段代码然后被执行,使得能在客户系统中对任何代码实现动态插桩,为符号执行提供了基础。
本发明的有益效果:
1、本发明可以发现恶意代码执行了什么动作、恶意代码潜藏行为之间的控制流(如:恶意软件是否对文件进行写或删除操作、是否发出网络数据包、是否接受远程命令等问题),利用本发明还可以得出使得恶意行为执行的触发输入集、恶意行为和输入之间的关联关系。本发明为发现和检测恶意代码提供有力的支持,其分析的结果不仅在设计防御系统方面很有用,还有助于了解攻击者的攻击能力。
(四)、附图说明:
图1为自动二进制恶意代码行为分析系统的工作原理框图示意图。
(五)、具体实施方式:
实施例一:参见图1,图中,自动二进制恶意代码行为分析系统含有全系统模拟器、符号执行模块、路径解析模块、路径选择模块、恶意行为分析模块、控制流分析模块和有效输入集分析模块,符号执行模块为全系统模拟器的插件,符号执行模块为输入源引入符号变量的输入,符号执行模块发现二进制恶意代码中依赖于符号变量的分支后,为每一条分支构建一个路径判定谓词逻辑;路径解析模块对符号执行模块生成的路径判定谓词逻辑进行解析,并对分支进行排序,如果路径判定谓词逻辑是可满足的,路径解析模块返回的是使路径判定谓词逻辑满足的输入实例集,并且路径解析模块产生一条新的执行路径加入到路径存储池中;路径选择模块对路径存储池中的路径进行优先级设置,选择当前最优路径反馈给符号执行模块,作为符号执行模块下一步的执行路径;控制流分析模块为符号执行模块的插件,控制流分析模块在二进制恶意代码动态符号执行过程中动态生成并连续更新控制流图CFG(Control Flow Graph);恶意行为分析模块依据恶意行为列表分析符号执行模块中是否调用相关Windows API函数实现的相应恶意行为,并分析和这些相关Windows API函数相关联的关联代码段,提取关联代码段实现的恶意行为特征和结构特征;有效输入集分析模块可根据恶意行为分析模块的结果找出使恶意行为程序按照特定路径执行的输入值集。
全系统模拟器用于对二进制恶意代码执行的系统环境进行模拟,它能够对寄存器和内存的状态、外设的执行情况等各种硬件组件进行模拟,还能够对操作系统内核里的操作以及在多种进程之间的交互进行模拟,并提供相应的开发接口,因此全系统模拟器可以搭建一个全系统模拟环境。全系统模拟器采用动态插桩技术对系统执行进行细粒度监视,提取程序执行、系统内核操作和进程间交互信息。
符号执行模块通过动态插桩技术提取被检测软件的执行状态信息,并分析被检测软件的指令来自于哪一个进程或模块;如果所述全系统模拟器正在执行的指令为输入指令,符号执行模块则将输入变量的值定义为符号值,在后续指令中该输入变量以符号值形式参加执行,使得任何依赖于输入的指令都一定会被符号地执行,执行结果为符号表达式,例如,指令add x,y(x,y是由输入得来的,被设为符号)产生了符号表达式x=x+y,并且它不会被x,y的具体值所限制;在指令被符号地执行的过程中条件跳转真分支的成立条件是:当前的符号公式的值必须为非零;在指令被符号地执行的过程中条件跳转假分支的成立条件是:当前的符号公式的值为零;符号执行模块根据当前的符号公式的值得出不同的程序路径,从而在不同的条件下观察恶意代码的执行行为;所述输入源为网络输入,或为文件描述符,或为库;每一个路径判定谓词逻辑描述了符号输入需要满足程序执行规定路径的条件约束,新的路径判定谓词逻辑是当前分支的路径约束条件和当前分支之前的路径约束条件的并;所述路径判定谓词逻辑是一个布尔函数,要么满足,要么不满足。
符号执行模块采用hook方式截取全系统模拟器的windows API函数调用,当全系统模拟器的模拟CPU到达第一hook函数的入口点处时,模拟CPU将执行第一hook函数,第一hook函数执行结束后,模拟CPU执行windows API函数或跳过windows API函数,如果windows API函数被调用了,那么当windowsAPI函数返回时,第二hook函数就能被动态地添加从而被调用,第二hook函数将Windows API函数调用时的返回值或返回的缓冲区标记为符号变量。
符号执行模块用于以符号而非具体值的形式为二进制恶意代码的执行提供输入,为分支跳转语句生成路径判定谓词逻辑,使得探查的代码执行路径不受具体输入的限制,和传统方法相比,可以探查到更多的程序片段,获取更多的程序信息,为进一步的分析奠定基础。
一个能满足的路径判定谓词逻辑意味着路径谓词中的符号变量有一个赋值,该赋值使得路径判定谓词为真。由于路径判定谓词逻辑中的符号变量是输入变量,因此,能满足的路径判定谓词逻辑说明存在一个输入集,该输入集能使代码执行该路径。相反,一个不能满足的路径判定谓词逻辑说明不存在输入集使代码执行该路径。路径判定谓词逻辑可以采用多种方法来解析,如判定过程(decision procedure)方法和定理证明(theory prove)方法等,以检查路径判定谓词逻辑是否是可满足的。
路径解析模块检查每一个生成的路径判定谓词逻辑是否是可满足的,有以下三种情况:1.路径判定谓词逻辑是可满足的,则意味着路径是可行的,在这种情况下,路径解析模块将可行路径添加至待进一步探索的路径池中。同时,返回使程序执行该路径的输入例集,也就是说,使得程序按照可行路径执行的输入值。2.路径判定谓词逻辑是不可满足的,则意味着路径不可行,也就是说,没有执行特定路径的输入。3.解析耗费太多的时间和内存,就不再进一步考虑这条路径,选择一些其他的方法,比如增加超时时间。路径解析模块可以采用已有的定理证明和过程判定工具以插件的形式实现,充分利用最先进的技术。
路径存储池中的路径第一次出现的时候,路径选择模块将该路径的优先级设为最高,该路径每执行一次之后,路径选择模块就将其优先级降低一级;路径选择模块还采用全系统模拟器的用户交互功能,对于用户感兴趣的路径设置高级别的优先级。
路径选择模块的总目标是解决路径的选择问题,在代码实际执行过程中,路径分支的数量是非常巨大的,尤其是在程序的循环执行过程中。因此,需要算法区分这些路径的优先次序,从而在一个合理的时间内找到感兴趣的路径。解决这个问题的一个有效办法是为每条已发掘的路径设置优先级,并在代码执行过程中动态修改优先级。
由于不同的方法在不同的情况下的运行效果是不同的,路径选择模块是一种模型,可以允许不同算法,比如,广度优先算法、纵向优先算法等。路径选择模块通过相应的算法可以有效解决重复路径的选择问题。路径选择模块将已发现的待进一步探查的可行路径集作为输入,输出下一条待探查的路径。
广度优先算法使用的策略是尽可能多地探查出依赖于符号输入的条件跳转,它将试图探查一个重访循环主体前从未见过的依赖于符号输入的分支。首先,它将试图探查出循环头部(循环头部是条件跳转,一条分支执行循环主体,另外的分支离开循环)的分支。这模仿了执行循环,附加的循环将被反复添加至路径选择队列的队尾。
当符号执行模块发现并执行新代码路径时,控制流分析模块把该新代码路径添加至控制流图CFG;控制流分析模块通过执行不同的代码路径来绘制控制流图CFG,当该代码路径被动态解压、解密、生成时,控制流分析模块将转储内存映像并且执行静态全程序控制流分析以将新代码路径添加至控制流图CFG。
如果被分析的二进制恶意代码可以预先进行静态反汇编,控制流分析模块的分析可以建立在静态反汇编生成的控制流的基础之上。
控制流分析模块用于在动态符号执行过程中生成二进制代码控制流图CFG,用于解决诸如二进制使用的是什么样的系统或是库的调用,调用顺序如何等问题。控制流为后续分析提供了一个重要的依据,并且给出了一个关于不同代码段是如何关联的描述图。控制流分析模块通过静态分析生成了尽可能多的控制流图CFG,然后根据二进制代码的动态符号执行连续更新CFG。
在符号执行模块的工作过程中,恶意行为分析模块始终监视每条指令的执行,如果符号执行模块执行了恶意行为列表中的Windows API函数,恶意行为分析模块就对与Windows API函数相关联的关联代码段采用反向切片的方法进行分析。
恶意行为分析模块分析恶意代码的行为类型,通过符号执行探查到依赖于特定Windows API调用的控制流结构,通过解析符号执行过程中建立的谓词逻辑约束条件,就能探索所有依赖于这些API调用的代码。与只简单运行可执行代码相比,利用该方法能观察到更多的结果。除此之外,还在上述动作运行期间,对恶意软件的行为进行记录。
通常我们需要了解一段二进制恶意代码执行了那些恶意行为,如是否执行了删除文件或是发送网络数据包的操作,这些行为通过各种Windows API函数调用来实现,因此恶意行为分析模块基于一个指定的感兴趣的恶意行为API函数调用列表,通常系统包含一个默认的常用的典型API函数列表,用户还可以根据需要增加新的感兴趣的API调用对列表实现扩展。
有效输入集分析模块还可根据恶意行为分析模块的结果生成目标导向的输入,找出能使恶意行为程序朝着特定目标执行的输入,并利用控制流图CFG提取恶意行为模块,跟踪记录在恶意行为分析模块中已经探索过的恶意行为程序中的路径;如果恶意代码被加密,有效输入集分析模块仍然能通过将分支对象制定为目标对象来探索先前未执行的分支。
有效输入集分析模块通过生成只包含从恶意行为程序入口到目标节点的路径的控制流图CFG分片,把能达到目标节点的路径单独区分出来,然后选取了从源到目的的最短路径,称为目标路径;目标路径包括一系列待执行的条件跳转目标,有效输入集分析模块根据条件跳转目标所在执行路径上的路径谓词,求解出使条件跳转目标满足的符号变量的输入值集,该输入值集为触发恶意代码执行的输入值集,依据确定的符号变量的输入值集,全系统模拟器可以对恶意代码模拟执行,在受控环境下记录恶意代码的执行行为。
全系统模拟器为Bochs全系统模拟器,或为Vmware全系统模拟器,或为QEMU全系统模拟器。
QEMU全系统模拟器是一个使用动态翻译技术的模拟器,客户系统中的指令块被翻译为主机中的一段代码然后被执行,使得能在客户系统中对任何代码实现动态插桩,为符号执行提供了基础。

Claims (10)

1.一种自动二进制恶意代码行为分析系统,其特征是:含有全系统模拟器、符号执行模块、路径解析模块、路径选择模块、恶意行为分析模块、控制流分析模块和有效输入集分析模块,符号执行模块为全系统模拟器的插件,符号执行模块为输入源引入符号变量的输入,符号执行模块发现二进制恶意代码中依赖于符号变量的分支后,为每一条分支构建一个路径判定谓词逻辑;路径解析模块对符号执行模块生成的路径判定谓词逻辑进行解析,并对分支进行排序,如果路径判定谓词逻辑是可满足的,路径解析模块返回的是使路径判定谓词逻辑满足的输入实例集,并且路径解析模块产生一条新的执行路径加入到路径存储池中;路径选择模块对路径存储池中的路径进行优先级设置,选择当前最优路径反馈给符号执行模块,作为符号执行模块下一步的执行路径;控制流分析模块为符号执行模块的插件,控制流分析模块在二进制恶意代码动态符号执行过程中动态生成并连续更新控制流图CFG;恶意行为分析模块依据恶意行为列表分析符号执行模块中是否调用相关Windows API函数实现的相应恶意行为,并分析和这些相关Windows API函数相关联的关联代码段,提取关联代码段实现的恶意行为特征和结构特征;有效输入集分析模块可根据恶意行为分析模块的结果找出使恶意行为程序按照特定路径执行的输入值集。
2.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:所述符号执行模块通过动态插桩技术提取被检测软件的执行状态信息,并分析被检测软件的指令来自于哪一个进程或模块;如果所述全系统模拟器正在执行的指令为输入指令,符号执行模块则将输入变量的值定义为符号值,在后续指令中该输入变量以符号值形式参加执行,使得任何依赖于输入的指令都一定会被符号地执行,执行结果为符号表达式;在指令被符号地执行的过程中条件跳转真分支的成立条件是:当前的符号公式的值必须为非零;在指令被符号地执行的过程中条件跳转假分支的成立条件是:当前的符号公式的值为零;符号执行模块根据当前的符号公式的值得出不同的程序路径,从而在不同的条件下观察恶意代码的执行行为;所述输入源为网络输入,或为文件描述符,或为库;每一个路径判定谓词逻辑描述了符号输入需要满足程序执行规定路径的条件约束,新的路径判定谓词逻辑是当前分支的路径约束条件和当前分支之前的路径约束条件的并;所述路径判定谓词逻辑是一个布尔函数。
3.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:所述符号执行模块采用hook方式截取全系统模拟器的windows API函数调用,当全系统模拟器的模拟CPU到达第一hook函数的入口点处时,模拟CPU将执行第一hook函数,第一hook函数执行结束后,模拟CPU执行windows API函数或跳过windows API函数,如果windows API函数被调用了,那么当windowsAPI函数返回时,第二hook函数就能被动态地添加从而被调用,第二hook函数将Windows API函数调用时的返回值或返回的缓冲区标记为符号变量。
4.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:所述路径存储池中的路径第一次出现的时候,路径选择模块将该路径的优先级设为最高,该路径每执行一次之后,路径选择模块就将其优先级降低一级;路径选择模块还采用全系统模拟器的用户交互功能,对于用户感兴趣的路径设置高级别的优先级。
5.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:当所述符号执行模块发现并执行新代码路径时,所述控制流分析模块把该新代码路径添加至控制流图CFG;控制流分析模块通过执行不同的代码路径来绘制控制流图CFG,当该代码路径被动态解压、解密、生成时,控制流分析模块将转储内存映像并且执行静态全程序控制流分析以将新代码路径添加至控制流图CFG。
6.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:如果被分析的二进制恶意代码可以预先进行静态反汇编,控制流分析模块的分析可以建立在静态反汇编生成的控制流的基础之上。
7.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:如果所述符号执行模块执行了恶意行为列表中的Windows API函数,恶意行为分析模块就对与Windows API函数相关联的关联代码段采用反向切片的方法进行分析。
8.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:所述有效输入集分析模块还可根据恶意行为分析模块的结果生成目标导向的输入,找出能使恶意行为程序朝着特定目标执行的输入,并利用控制流图CFG提取恶意行为模块,跟踪记录在恶意行为分析模块中已经探索过的恶意行为程序中的路径;如果恶意代码被加密,有效输入集分析模块仍然能通过将分支对象制定为目标对象来探索先前未执行的分支。
9.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:所述有效输入集分析模块通过生成只包含从恶意行为程序入口到目标节点的路径的控制流图CFG分片,把能达到目标节点的路径单独区分出来,然后选取了从源到目的的最短路径,称为目标路径;目标路径包括一系列待执行的条件跳转目标,有效输入集分析模块根据条件跳转目标所在执行路径上的路径谓词,求解出使条件跳转目标满足的符号变量的输入值集,该输入值集为触发恶意代码执行的输入值集,依据确定的符号变量的输入值集,全系统模拟器可以对恶意代码模拟执行,在受控环境下记录恶意代码的执行行为。
10.根据权利要求1所述的自动二进制恶意代码行为分析系统,其特征是:所述全系统模拟器为Bochs全系统模拟器,或为Vmware全系统模拟器,或为QEMU全系统模拟器。
CN2010105702996A 2010-12-02 2010-12-02 自动二进制恶意代码行为分析系统 Expired - Fee Related CN102012987B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105702996A CN102012987B (zh) 2010-12-02 2010-12-02 自动二进制恶意代码行为分析系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105702996A CN102012987B (zh) 2010-12-02 2010-12-02 自动二进制恶意代码行为分析系统

Publications (2)

Publication Number Publication Date
CN102012987A CN102012987A (zh) 2011-04-13
CN102012987B true CN102012987B (zh) 2013-03-13

Family

ID=43843160

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105702996A Expired - Fee Related CN102012987B (zh) 2010-12-02 2010-12-02 自动二进制恶意代码行为分析系统

Country Status (1)

Country Link
CN (1) CN102012987B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
CN102256242B (zh) * 2011-04-14 2015-06-03 中兴通讯股份有限公司 一种处理业务应用的系统和方法
CN102222035A (zh) * 2011-07-25 2011-10-19 公安部第三研究所 基于符号执行技术的软件行为检测系统及检测方法
CN103377341A (zh) * 2012-04-28 2013-10-30 北京网秦天下科技有限公司 一种安全检测的方法和系统
CN103677882A (zh) * 2012-09-18 2014-03-26 珠海市君天电子科技有限公司 一种手机程序的虚拟安装装置和方法
JP2016534479A (ja) 2013-09-12 2016-11-04 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. マルウェアのランタイム中の自動検出
CN103927484B (zh) * 2014-04-21 2017-03-08 西安电子科技大学宁波信息技术研究院 基于Qemu模拟器的恶意程序行为捕获方法
AU2015279923B9 (en) 2014-06-24 2018-01-25 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
AU2015279920B2 (en) * 2014-06-24 2018-03-29 Virsec Systems, Inc. Automated root cause analysis of single or N-TIERED applications
JP6407311B2 (ja) * 2015-02-06 2018-10-17 三菱電機株式会社 暗号ブロック特定装置、暗号ブロック特定方法、及び暗号ブロック特定プログラム
CN104834837B (zh) * 2015-04-03 2017-10-31 西北大学 一种基于语义的二进制代码反混淆方法
CN104834859B (zh) * 2015-04-24 2018-04-10 南京邮电大学 一种Android应用中恶意行为的动态检测方法
CN105260659B (zh) * 2015-09-10 2018-03-30 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法
CN106557396A (zh) * 2015-09-25 2017-04-05 北京计算机技术及应用研究所 基于qemu的虚拟机程序运行状态监控方法
WO2017218872A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
CN108182362B (zh) * 2016-12-08 2022-01-07 武汉安天信息技术有限责任公司 一种多dex文件分析方法及系统
CN108228239B (zh) * 2016-12-13 2021-04-20 龙芯中科技术股份有限公司 基于快速模拟器qemu的分支指令抓取方法和装置
CN108040064A (zh) * 2017-12-22 2018-05-15 北京知道创宇信息技术有限公司 数据传输方法、装置、电子设备及存储介质
CN111865910A (zh) * 2020-06-09 2020-10-30 北京邮电大学 一种针对应用恶意代码检测与定位的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN101162485A (zh) * 2006-10-11 2008-04-16 飞塔信息科技(北京)有限公司 一种计算机恶意代码处理方法和系统
CN101266550A (zh) * 2007-12-21 2008-09-17 北京大学 一种恶意代码检测方法
US7739737B2 (en) * 2003-07-29 2010-06-15 Wisconsin Alumni Research Foundation Method and apparatus to detect malicious software

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321840B2 (en) * 2007-12-27 2012-11-27 Intel Corporation Software flow tracking using multiple threads

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739737B2 (en) * 2003-07-29 2010-06-15 Wisconsin Alumni Research Foundation Method and apparatus to detect malicious software
CN101162485A (zh) * 2006-10-11 2008-04-16 飞塔信息科技(北京)有限公司 一种计算机恶意代码处理方法和系统
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN101266550A (zh) * 2007-12-21 2008-09-17 北京大学 一种恶意代码检测方法

Also Published As

Publication number Publication date
CN102012987A (zh) 2011-04-13

Similar Documents

Publication Publication Date Title
CN102012987B (zh) 自动二进制恶意代码行为分析系统
US10417424B2 (en) Method of remediating operations performed by a program and system thereof
CN106326737B (zh) 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法
US20190132355A1 (en) Malicious script detection
CN103886252B (zh) 受信进程地址空间中执行的软件代码的恶意性的选择评估
CN102012988B (zh) 自动二进制恶意代码行为分析方法
US8117660B2 (en) Secure control flows by monitoring control transfers
US20190243964A1 (en) System and method for exploiting attack detection by validating application stack at runtime
Ho et al. PREC: practical root exploit containment for android devices
CN103500308A (zh) 用于对抗由恶意软件对仿真的检测的系统和方法
CN105247532A (zh) 使用硬件特征的无监督的基于异常的恶意软件检测
CN101964026A (zh) 网页挂马检测方法和系统
Lin et al. Dimsum: Discovering semantic data of interest from un-mappable memory with confidence
CN109840416A (zh) 恶意代码行为自动分析系统
WO2017039136A1 (ko) 소스코드기반 소프트웨어 취약점 공격행위 분석시스템
Eskandari et al. To incorporate sequential dynamic features in malware detection engines
CN107194246A (zh) 一种用于实现动态指令集随机化的cpu
Yuste et al. Optimization of code caves in malware binaries to evade machine learning detectors
Jodavi et al. Dbdhunter: an ensemble-based anomaly detection approach to detect drive-by download attacks
Choi et al. All‐in‐One Framework for Detection, Unpacking, and Verification for Malware Analysis
Jacob et al. Malware behavioral detection by attribute-automata using abstraction from platform and language
Zhu et al. Detecting privilege escalation attacks through instrumenting web application source code
CN103677746B (zh) 指令重组方法及装置
Hu et al. File parsing vulnerability detection with symbolic execution
Sartea et al. Active Android malware analysis: an approach based on stochastic games

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130313

Termination date: 20131202