CN104850781A - 一种动态多级恶意代码行为分析方法及系统 - Google Patents
一种动态多级恶意代码行为分析方法及系统 Download PDFInfo
- Publication number
- CN104850781A CN104850781A CN201410053457.9A CN201410053457A CN104850781A CN 104850781 A CN104850781 A CN 104850781A CN 201410053457 A CN201410053457 A CN 201410053457A CN 104850781 A CN104850781 A CN 104850781A
- Authority
- CN
- China
- Prior art keywords
- malicious code
- node
- analysis
- behavior
- instruction
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种动态多级恶意代码行为分析方法及系统。该方法包括:在硬件模拟器中运行恶意代码,在运行过程中提取恶意代码执行的指令信息;在恶意代码运行过程中,在硬件模拟器的模拟内存中截获恶意代码执行的关键函数;根据获取的恶意代码指令信息和关键函数信息,构建多级恶意代码行为图;利用多级恶意代码行为图,根据分析需要,从任一节点开始,进行正向或逆向行为分析。该系统包括:硬件模拟器,指令信息提取模块,函数信息提取模块,行为图构建模块,以及行为分析模块。本发明提高了恶意代码的行为机理的分析能力,能够为恶意代码的检测及防范提供充分支撑。
Description
技术领域
本发明属于网络安全技术领域,具体涉及一种动态多级恶意代码行为分析方法及系统。
背景技术
计算机和互联网已经逐步成为社会及生活中重要的组成部分,于此同时,其主要威胁之一的恶意代码的潜在危害日益严峻,成为保障计算机及互联网安全所需要面对的重要问题之一。恶意代码自身技术不断发展,随着计算机及互联网技术的进步不断更新,使其面临的安全问题日益严峻。恶意代码不断产生新的变种甚至新的种类,因此恶意代码分析成为经久不衰、不容忽视的研究主题。如何最有效的分析恶意代码行为,充分分析恶意代码机理,是对其进行检测,从而实施有效防护的重要基础,因此,提高恶意代码分析的准确性和分析能力是需要不断突破的重要问题。
现有的恶意代码分析方法,可分为静态分析和动态分析。静态分析方法的特点是分析代码全面,但一般情况下,分析者无法获取恶意代码的源代码,致使静态分析方法依赖于反汇编技术,受制于恶意代码的混淆技术等对抗手段。动态分析方法通常是分析恶意代码的执行过程,分析的针对性强,可直接分析恶意代码实际执行的行为。其中,动态污点传播技术是近年来流行的一种分析方法。但是,目前应用于恶意代码分析的动态污点分析技术一般关注于被标记为污点的数据的异常情况,由此发出告警,对于这些污点数据在执行过程中的信息未能很好的记录及利用。实际上,污点数据在恶意代码执行过程中的使用及传播中蕴含着大量的信息,对于恶意代码的行为机理分析可以起到至关重要的作用。但是目前没有很好的记录以及组织污点数据的方法,导致效率较低。有研究者在利用执行过程数据方面做出了一定的研究,取得了一定的成果,但是当前的研究基本是局限于指令级的污点传播操作信息,缺乏上层函数语义信息,难以深入理解恶意代码行为机理。
综上所述,目前基于动态污点传播的恶意代码行为分析的主要问题有:对恶意代码执行过程中的污点传播信息利用薄弱,污点数据的记录以及组织方法上有待于进一步提高,从而提高分析效率,单纯的指令级污点操作以及传播数据不便于被理解以及利用,从而为恶意代码机理分析带来了一定的困难。
发明内容
针对当前恶意代码动态污点分析中存在的污点信息组织及利用能力弱,以及局限于指令级数据、缺乏上层信息的问题,本发明的目的在于提供一种动态多层恶意代码行为分析方法及系统,通过提出一种指令级和函数级相结合的污点数据传播图,记录并整合恶意代码动态执行过程中的指令和上层函数操作,从而实现恶意代码执行过程的指令以及函数级行为序列提取及分析,在细粒度指令信息充分的同时,提供具有语义信息的函数信息,从而提高恶意代码行为机理分析能力,为检测及防范提供充分支撑。
本发明的主要内容是:将待分析的恶意代码可执行文件在可控的虚拟环境中运行;然后在恶意代码执行过程中,提取其执行的指令序列,并在虚拟环境中实现恶意代码执行过程的函数信息获取;然后根据恶意代码分析特点,标记相关污点数据并制定相关污点传播规则,在此基础上,结合提取的指令级信息和函数级信息,构建恶意代码污点行为传播流程图,即多级恶意代码行为图,最后根据分析需要,从任意指令或函数节点开始,通过正向或逆向分析算法提取任意行为开始的行为子图实施分析。
具体来说,本发明采用的技术方案如下:
一种动态多级恶意代码行为分析方法,其步骤包括:
1)在硬件模拟器中运行恶意代码,在运行过程中提取恶意代码执行的指令信息;
2)在恶意代码运行过程中,在硬件模拟器的模拟内存中截获恶意代码执行的关键函数;
3)根据获取的恶意代码指令信息和关键函数信息,构建多级恶意代码行为图;
4)利用多级恶意代码行为图,根据分析需要,从任一节点开始,进行正向或逆向行为分析或者提取恶意代码行为。
进一步地,步骤1)所述的恶意代码执行的指令信息的提取方法为:将待分析的恶意代码运行于硬件模拟环境中,通过添加的反汇编引擎,记录恶意代码执行的指令序列;
进一步地,步骤2)所述恶意代码执行的关键函数是指和安全操作相关的函数,该类函数可根据分析需要设定。
进一步地,步骤2)所述恶意代码执行的关键函数的截获方法是:在硬件模拟器中,在其模拟的物理内存中还原操作系统的关键数据结构,从而获取所需要截获的关键函数数据结构地址,在恶意代码执行过程中,当有指令对关键函数的入口地址进行操作的时候即可截获相关的关键函数调用。
进一步地,步骤3)所述的多级恶意代码行为图包含指令级信息和函数级信息,其表示方法为TG={SN,Nins,Napi,Eins,Eapi},其中,TG表示多级恶意代码行为图,SN表示污点源节点,Nins表示指令节点,Napi表示函数节点,Eins表示指令关联边,Eapi表示函数关联边。一个恶意代码运行过程中可能有多个污点源存在,因此可能产生多个子图。
进一步地,步骤4)所述的正向分析是指按照恶意代码执行的顺序向下分析或提取行为过程,逆向分析是指由一个节点开始逆向分析恶意代码的操作。
一种动态多级恶意代码行为分析系统,其包括:
硬件模拟器,用于运行恶意代码;
指令信息提取模块,连接所述硬件模拟器,用于在运行过程中提取恶意代码执行的指令信息;
函数信息提取模块,连接所述硬件模拟器,用于在恶意代码运行过程中,在硬件模拟器的模拟内存中截获恶意代码执行的关键函数;
行为图构建模块,连接所述指令信息提取模块和所述函数信息提取模块,用于根据获取的恶意代码指令信息和关键函数信息构建多级恶意代码行为图;
行为分析模块,连接所述行为图构建模块,用于根据分析需要,从任一节点开始,利用多级恶意代码行为图,进行正向或逆向恶意代码行为分析。
本发明的优点和积极效果如下:
本发明在硬件模拟器的虚拟操作系统中动态运行恶意代码,然后在硬件模拟器中展开分析,提供了对恶意代码高透明低干扰的分析环境;在指令级和函数级展开多级行为分析,在保证指令级细粒度分析的同时,利用关键函数信息提供了上层操作信息,更有助于分析恶意代码行为特性;在此基础上,通过多级行为图的方式,可以进行由任意节点开始实施双向的行为分析,提高了恶意代码的行为分析能力,能够为恶意代码的检测及防范提供充分支撑。
附图说明
图1是本发明的动态多级恶意代码行为分析方法的步骤流程图。
图2是本发明的动态多级恶意代码行为分析系统的结构图。
具体实施方式
下面通过具体实施例和附图,对本发明做进一步说明。
如图1所示,本发明的动态多级恶意代码行为分析方法,其步骤包括:
1、提取恶意代码执行的指令信息。
本发明通过在硬件模拟器虚拟出的操作中运行恶意代码,监控并提取恶意代码执行的指令信息。为了实现高透明度监控,本发明在硬件模拟器的指令翻译层实现指令监控和提取。
具体地,在硬件模拟器中的指令翻译模块中进行修改,使其实现逐条指令翻译,然后通过添加反汇编引擎,对指令翻译模块中的每条指令实施反汇编处理,实现了对指令类型和操作数的识别和对操作数的寄存器或内存地址的获取。解析出指令名称、操作数类型、大小和值等信息。由此记录恶意代码运行过程中执行的所有指令及相关寄存器信息。
2、截获恶意代码执行的关键函数。
恶意代码执行的关键函数截获可以在恶意代码执行所在的虚拟环境中实现,但是在恶意代码的执行环境中实现函数截获可能会被恶意代码察觉而影响其行为,从而影响分析结果。为了避免这一问题,本发明在硬件模拟器中通过模拟的物理内存中的数据结构分析和指令监控来实现函数截获。
具体步骤是:
1)静态分析Windows操作系统内核文件,获取系统服务描述符表中所关注的关键函数的地址偏移数据;
2)系统启动时,在硬件模拟器模拟的物理内存中恢复系统内核的关键数据结构,搜索系统服务描述附表的表头地址;
3)结合步骤1)的偏移地址和步骤2)的表头地址计算出所要截获的关键函数在模拟物理内存中的入口地址;
4)监控恶意代码执行的指令,当指令对相关内存地址进行操作的时候,将内存地址与关键函数的入口地址进行比较,当有指令对需要截获的关键函数的地址进行操作时,记录该函数以及函数的参数和返回值,完成截获操作。
3、构建多级恶意代码行为图。
为了提高行为分析能力,本发明中的多级恶意代码行为图通过分析恶意代码执行过程中的关键数据的指令级操作和函数级操作共同来构建。对关键数据的追踪通过动态污点传播技术实现(动态污点传播技术可参考《Dynamic Taint Analysis for Automatic Detection,Analysis,and Signature Generation of Exploits on Commodity Software》)。
根据恶意代码分析需求,本发明标记两类污点源:文件和网络数据。本发明中的多级恶意代码行为图,包括指令级无线操作信息和函数级信息,表示为TG={SN,Nins,Napi,Eins,Eapi},其中,TG表示多级恶意代码行为图,SN表示污点源节点,Nins表示指令节点,Napi表示函数节点,Eins表示指令关联边,Eapi表示函数关联边。需要注意的是,图中的边均为有向边,其方向按照动态执行的先后顺序确定。进一步,其中指令节点Nins={T,OP},T表示指令类型,OP表示操作数集合,函数节点Eapi={N,Pin,Pout,Ret},N表示函数名,Pin表示输入参数,Pout表示输出参数,Ret表示返回值。
根据恶意代码分析需求,本发明中的污点传播规则设置如下表1所示(表中OP代表操作数)。
表1.污点传播规则
根据上述污点传播规则,在恶意代码执行过程中,记录污点操作的指令序列和关键函数序列,生成指令级和函数级相结合的多级恶意代码行为图。
4、前向和后向恶意代码行为分析。
在得到恶意代码动态执行的行为图之后,可根据需要,从任意一个节点开始,实施正向和逆向的恶意代码行为分析或提取恶意代码行为。具体的,通过正向或逆向的行为追溯方法来实现。为了便于说明,下述算法中将多级恶意代码行为图中,有向边Ea->Eb中的Ea称为上级节点,Eb称为后继节点。
其中,前向分析通过正向行为序列提取实现,具体算法是:
(1)从需要的指令或函数行为节点开始,将其作为分析子图的起始节点,生成分析子图;
(2)遍历和其有连接边的后继节点,将其加入分析子图中;
(3)继续递归遍历新节点的后继节点,直到遍历结束。
后向分析是指从一个行为开始,逆向追溯行为节点到最初的污点源,具体算法是:
(1)将分析起始节点N作为起始节点生成分析子图;
(2)获取N的上级节点列表,直至遍历所有与其相连的上级节点,将这些节点加入N之后并生成关联边,即以图的形式表示;
(3)针对每一个新生成的节点,继续递归遍历其上级节点;
(4)当遍历到污点源节点时,结束递归遍历。
图2是对应上述方法的动态多级恶意代码行为分析系统,其包括:
硬件模拟器,用于运行恶意代码;
指令信息提取模块,连接所述硬件模拟器,用于在运行过程中提取恶意代码执行的指令信息;
函数信息提取模块,连接所述硬件模拟器,用于在恶意代码运行过程中,在硬件模拟器的模拟内存中截获恶意代码执行的关键函数;
行为图构建模块,连接所述指令信息提取模块和所述函数信息提取模块,用于根据获取的恶意代码指令信息和关键函数信息构建多级恶意代码行为图;
行为分析模块,连接所述行为图构建模块,用于根据分析需要,从任一节点开始,利用多级恶意代码行为图,进行正向或逆向恶意代码行为分析。
通过本发明的方法,可以准确、充分地了解恶意代码行为及其攻击原理,从而能更好的对其进行检测并提高防范能力。本发明可详细分析恶意代码的核心行为,得到恶意代码的攻击行为机理,从而帮助研究及工程人员更加准确地获取恶意代码原理及行为,指导恶意代码的检测及防范方法的研究,为提高恶意代码检测及防范能力提供有力支撑。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
Claims (8)
1.一种动态多级恶意代码行为分析方法,其步骤包括:
1)在硬件模拟器中运行恶意代码,在运行过程中提取恶意代码执行的指令信息;
2)在恶意代码运行过程中,在硬件模拟器的模拟内存中截获恶意代码执行的关键函数;
3)根据获取的恶意代码指令信息和关键函数信息,构建多级恶意代码行为图;
4)利用多级恶意代码行为图,根据分析需要,从任一节点开始,进行正向或逆向分析或者提取恶意代码行为。
2.如权利要求1所述的方法,其特征在于,步骤1)中提取指令信息的方法为:将硬件模拟器的翻译块修改为逐条指令翻译,添加的反汇编引擎进行逐条反汇编,然后记录恶意代码实际执行的指令信息。
3.如权利要求1所述的方法,其特征在于,步骤2)中截获关键函数的方法为:
2-1)静态分析Windows操作系统内核文件,获取系统服务描述符表中所关注的关键函数的地址偏移数据;
2-2)系统启动时,在硬件模拟器模拟的物理内存中恢复系统内核的关键数据结构,搜索系统服务描述附表的表头地址;
2-3)结合步骤2-1)的偏移地址和步骤2-2)的表头地址计算出所要截获的关键函数在模拟物理内存中的入口地址;
2-4)监控恶意代码执行的指令,当指令对相关内存地址进行操作的时候,将内存地址与关键函数的入口地址进行比较,当有指令对需要截获的关键函数的地址进行操作时,记录该函数以及函数的参数和返回值,完成截获操作。
4.如权利要求1所述的方法,其特征在于:步骤3)采用动态污点传播的方法构建指令级和函数级相结合的多级恶意代码行为图,其表示为TG={SN,Nins,Napi,Eins,Eapi},其中,SN表示污点源节点,Nins表示指令节点,Napi表示函数节点,Eins表示指令关联边,Eapi表示函数关联边;图中的边均为有向边,其方向按照动态执行的先后顺序确定。
5.如权利要求4所述的方法,其特征在于:所述多级恶意代码行为图中,指令节点Nins={T,OP},T表示指令类型,OP表示操作数集合;函数节点Eapi={N,Pin,Pout,Ret},N表示函数名,Pin表示输入参数,Pout表示输出参数,Ret表示返回值。
6.如权利要求1所述的方法,其特征在于:步骤4)采用的正向分析算法为:
(1)从需要的指令或函数行为节点开始,将其作为分析子图的起始节点,生成分析子图;
(2)遍历和其有连接边的后继节点,将其加入分析子图中;
(3)继续递归遍历新节点的后继节点,直到遍历结束。
7.如权利要求1所述的方法,其特征在于:步骤4)采用的逆向分析算法为:
(1)将分析起始节点N作为起始节点生成分析子图;
(2)获取N的上级节点列表,直至遍历所有与其相连的上级节点,将这些节点加入N之后并生成关联边,即以图的形式表示;
(3)针对每一个新生成的节点,继续递归遍历其上级节点;
(4)当遍历到污点源节点时,结束递归遍历。
8.一种动态多级恶意代码行为分析系统,其特征在于,包括:
硬件模拟器,用于运行恶意代码;
指令信息提取模块,连接所述硬件模拟器,用于在运行过程中提取恶意代码执行的指令信息;
函数信息提取模块,连接所述硬件模拟器,用于在恶意代码运行过程中,在硬件模拟器的模拟内存中截获恶意代码执行的关键函数;
行为图构建模块,连接所述指令信息提取模块和所述函数信息提取模块,用于根据获取的恶意代码指令信息和关键函数信息构建多级恶意代码行为图;
行为分析模块,连接所述行为图构建模块,用于根据分析需要,从任一节点开始,利用多级恶意代码行为图,进行正向或逆向恶意代码行为分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410053457.9A CN104850781A (zh) | 2014-02-17 | 2014-02-17 | 一种动态多级恶意代码行为分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410053457.9A CN104850781A (zh) | 2014-02-17 | 2014-02-17 | 一种动态多级恶意代码行为分析方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104850781A true CN104850781A (zh) | 2015-08-19 |
Family
ID=53850420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410053457.9A Pending CN104850781A (zh) | 2014-02-17 | 2014-02-17 | 一种动态多级恶意代码行为分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104850781A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653956A (zh) * | 2016-03-02 | 2016-06-08 | 中国科学院信息工程研究所 | 基于动态行为依赖图的Android恶意软件分类方法 |
CN105808430A (zh) * | 2016-03-03 | 2016-07-27 | 中国科学院软件研究所 | 一种多语义动态污点分析方法 |
CN107046518A (zh) * | 2016-02-05 | 2017-08-15 | 阿里巴巴集团控股有限公司 | 网络攻击的检测方法及装置 |
CN107180188A (zh) * | 2017-04-12 | 2017-09-19 | 中山大学 | 一种基于动态污点分析对加密应用的明文提取的系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
US20110289586A1 (en) * | 2004-07-15 | 2011-11-24 | Kc Gaurav S | Methods, systems, and media for detecting and preventing malcode execution |
-
2014
- 2014-02-17 CN CN201410053457.9A patent/CN104850781A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110289586A1 (en) * | 2004-07-15 | 2011-11-24 | Kc Gaurav S | Methods, systems, and media for detecting and preventing malcode execution |
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
Non-Patent Citations (1)
Title |
---|
刘豫等: "基于动态污点分析的恶意代码通信协议逆向分析方法", 《电子学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107046518A (zh) * | 2016-02-05 | 2017-08-15 | 阿里巴巴集团控股有限公司 | 网络攻击的检测方法及装置 |
CN105653956A (zh) * | 2016-03-02 | 2016-06-08 | 中国科学院信息工程研究所 | 基于动态行为依赖图的Android恶意软件分类方法 |
CN105653956B (zh) * | 2016-03-02 | 2019-01-25 | 中国科学院信息工程研究所 | 基于动态行为依赖图的Android恶意软件分类方法 |
CN105808430A (zh) * | 2016-03-03 | 2016-07-27 | 中国科学院软件研究所 | 一种多语义动态污点分析方法 |
CN105808430B (zh) * | 2016-03-03 | 2018-07-03 | 中国科学院软件研究所 | 一种多语义动态污点分析方法 |
CN107180188A (zh) * | 2017-04-12 | 2017-09-19 | 中山大学 | 一种基于动态污点分析对加密应用的明文提取的系统 |
CN107180188B (zh) * | 2017-04-12 | 2020-06-09 | 中山大学 | 一种基于动态污点分析对加密应用的明文提取的系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9300682B2 (en) | Composite analysis of executable content across enterprise network | |
Rathnayaka et al. | An efficient approach for advanced malware analysis using memory forensic technique | |
Kholidy et al. | CIDD: A cloud intrusion detection dataset for cloud computing and masquerade attacks | |
CN101883024B (zh) | 一种跨站点伪造请求的动态检测方法 | |
CN104268085B (zh) | 一种基于属性提取的软件漏洞挖掘系统及方法 | |
CN103559235B (zh) | 一种在线社交网络恶意网页检测识别方法 | |
CN113326244B (zh) | 一种基于日志事件图和关联关系挖掘的异常检测方法 | |
CN103780614B (zh) | 一种基于模拟攻击扩展的sql注入漏洞挖掘方法 | |
CN103577323B (zh) | 基于动态关键指令序列胎记的软件抄袭检测方法 | |
Lin et al. | Dimsum: Discovering semantic data of interest from un-mappable memory with confidence | |
CN103701783A (zh) | 一种预处理单元、由其构成的数据处理系统以及处理方法 | |
CN102073825B (zh) | 基于路径驱动的可执行程序安全性检测方法 | |
CN105138916A (zh) | 基于数据挖掘的多轨迹恶意程序特征检测方法 | |
Zhao et al. | Predicting performance anomalies in software systems at run-time | |
CN104850781A (zh) | 一种动态多级恶意代码行为分析方法及系统 | |
CN103366120A (zh) | 基于脚本的漏洞攻击图生成方法 | |
CN103164515A (zh) | 计算机系统涉密文件知识库搜索方法 | |
CN105045715A (zh) | 基于编程模式和模式匹配的漏洞聚类方法 | |
CN109413047A (zh) | 行为模拟的判定方法、系统、服务器及存储介质 | |
CN106650449B (zh) | 一种基于变量名混淆程度的脚本启发式检测方法及系统 | |
CN112148956A (zh) | 一种基于机器学习的暗网威胁情报挖掘系统和方法 | |
CN102193858B (zh) | 一种测试用例集生成方法 | |
Alvi et al. | A security pattern detection framework for building more secure software | |
Pandey et al. | A framework for producing effective and efficient secure code through malware analysis | |
Zhao et al. | Gan-enabled code embedding for reentrant vulnerabilities detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150819 |
|
WD01 | Invention patent application deemed withdrawn after publication |