软件行为分析方法和装置与流程

文档序号:14686170发布日期:2018-06-14 23:39

本发明涉及通信技术领域,具体涉及一种软件行为分析方法和一种软件行为分析装置。



背景技术:

近几年来以来,随着移动互联网技术的快速发展以及智能手机的普及,移动互联和智能手机给人们的生活带来了很大方便。智能手机除了具有传统非智能手机的通话功能及短信功能的特点外,还具有上网,支付(SP计费及NFC)等特点。由于能够联网,使得智能手机不可避免地会遭受到恶意软件的攻击。

由于AndroidOS占据着移动操作系统一半以上的市场份额,使得AndroidOS更受病毒软件开发者的“青睐”。自从2010年6月某移动安全厂商截获了全球首款Android病毒以来,已经累积查杀到数万款恶意软件。由此可见,Android系统面临的安全问题越来越严重,使得应用Android系统的智能手机与传统的非智能手机相比,面临的安全问题更为严峻。

一般地,软件的恶意行为主要表现为联网、获取系统通讯录、删除短信,以及获取地理位置等信息。随着移动互联网的发展,软件种类越来越多,部分软件开发商会在软件文件中植入恶意代码以从中非法获利,因此需要针对这些软件的恶意行为进行快速、有效地分析。

现有技术中,大都采用分析二进制文件或在源代码中分析特征码的方式来找到代码恶意区,再对代码恶意区进行静态分析,从而找出软件的恶意行为,进而可以为其划分恶意等级(危险等级)。但是,这种方法效率低,覆盖性不高。



技术实现要素:

本发明所要解决的技术问题是针对现有技术中所存在的上述缺陷,提供一种软件行为分析方法和一种软件行为分析装置,能够高效、全面地识别出软件的恶意行为,并准确、细致地划分其安全等级。

解决本发明技术问题所采用的技术方案是:

本发明提供一种软件行为分析方法,包括如下步骤:

静态分析软件文件的结构;

基于软件文件的结构分析结果采用轮询的方式捕获软件应用程序在运行过程中与预设敏感行为对应的函数调用序列;

将与预设敏感行为对应的函数调用序列和与预设恶意行为对应的函数调用序列进行对比,识别出软件的恶意行为,所述恶意行为包括至少两个特定敏感行为的组合,根据预设的安全等级列表确定软件恶意行为的安全等级,并依据所述安全等级下发安全等级预警。

本发明还提供一种软件行为分析装置,包括:

静态分析模块,用于静态分析软件文件的结构;

动态分析模块,用于基于软件文件的结构分析结果采用轮询的方式捕获软件应用程序在运行过程中与预设敏感行为对应的函数调用序列;

行为分析模块,用于将与预设敏感行为对应的函数调用序列和与预设恶意行为对应的函数调用序列进行对比,识别出软件的恶意行为,所述恶意行为包括至少两个特定敏感行为的组合,根据预设的安全等级列表确定软件恶意行为的安全等级,并依据所述安全等级下发安全等级预警。

有益效果:

本发明通过对软件文件进行静态分析和动态分析,得出软件应用程序在运行过程中与预设敏感行为对应的函数调用序列,再对比与预设恶意行为对应的函数调用序列,从而识别出软件的恶意行为,本发明与现有技术采用分析二进制文件或在源代码中分析特征码的方式相比,能快速、高效、全面地识别出软件的恶意行为,并能提高软件行为分析的准确率。

此外,本发明还通过安全等级预警机制划分软件恶意行为的安全等级(恶意等级),其中,软件恶意行为并不是单个的敏感行为,而是至少两个特定敏感行为的组合,从而能更加准确、细致地划分软件恶意行为的安全等级。

附图说明

图1为本发明实施例1提供的一种软件行为分析方法的流程示意图;

图2为本发明实施例1提供的另一种软件行为分析方法的流程示意图;

图3为本发明实施例2提供的一种软件行为分析装置的结构示意图;

图4为本发明实施例2提供的静态分析模块的结构示意图;

图5为本发明实施例2提供的动态分析模块的结构示意图;

图6为本发明实施例2提供的行为分析模块的结构示意图;以及,

图7为本发明实施例2提供的另一种软件行为分析装置的结构示意图。

图中:100-静态分析模块;101-软件文件格式分析子模块;102-函数调用序列分析子模块;103-逻辑分析子模块;104-验证子模块;200-动态分析模块;201-动态库加载子模块;202-捕捉子模块;203-指令触发引擎;300-行为分析模块;301-数据库加载子模块;302-恶意行为分析子模块;303-安全等级预警子模块;400-日志生成模块。

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和实施例对本发明作进一步详细描述。

实施例1:

图1为本发明实施例1提供的一种软件行为分析方法的流程示意图。如图1所示,所述方法包括如下步骤:

步骤101.静态分析软件文件的结构。

本步骤主要是对软件文件进行静态分析,其实就是分析软件的安装文件,通过解压安装文件,分析其核心文件(可执行文件)的子元素,得出函数之间的调用关系,软件应用程序的应用逻辑和内容,从而得知软件文件的结构,也就得知了调用系统的API函数序列。

本步骤具体包括:

步骤1011.静态分析软件文件的格式。

例如Android系统文件的格式为APK,通过查看文件的十六进制的头几个字节可知APK其实是一个ZIP安装包,通过ZIP解压工具可以获取到DEX文件,DEX文件是Android虚拟机的执行程序,包含了可被Dalvik虚拟机(DVM)解释执行的Dalvik字节码。一个APK可包含META-INF文件夹(包括manifest.mf和cert.rsa文件、cert.sf文件)、res文件夹(包含开发者使用的图片、音乐和文字等资源信息及其配置文件)、AndroidManifest.xml(布局文件)、clas.dex(运行于虚拟机上的代码部分)以及resource.arsc(资源文件)等。

只有获取到软件文件的格式,才能得知其源代码文件的位置,通过对软件代码部分进行分析可得到函数调用关系,进而能够实现对软件行为的静态分析,因此,分析软件文件的格式是分析软件行为的前提。

步骤1012.基于软件文件的格式分析结果对软件文件的源代码进行静态分析,得出软件应用程序的子元素,以及子元素之间的调用关系。

从宏观上来说,软件文件由可执行文件、配置文件和资源文件等文件组成。而从微观上来说,可执行文件由函数、对象和字符串等子元素组成,同时,函数之间存在调用关系(通过对代码进行分析得出)。只有分析出函数以及函数之间的调用关系,才能进一步地对软件行为进行静态分析。

因此,所述软件应用程序的子元素包括函数、对象和字符串,所述子元素之间的调用关系包括函数之间的调用关系。

步骤1013.静态分析软件应用程序的应用逻辑和内容。

其中,应用逻辑指的是应用程序中相应文件的执行顺序和调用关系,比如一个应用程序中不同JAVA文件的或者EXE文件的执行顺序和调用关系。由于不同文件之间有接口相互调用,故内容指的是应用程序中相应文件的调用关系表和接口调用逻辑。

此外,如果软件是从安全性未知的网站下载的,可以通过验证其MD5值合法性的方式来验证该软件是否安全。

MD5(Message-DigestAlgorithm5,信息-摘要算法5)用于确保信息传输的完整性和一致性,是一种不可逆的加密算法,更是计算机领域广泛使用的杂凑算法之一。MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。具体地,MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生唯一的MD5信息摘要,因此,MD5就可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”,如果任何人对该文件做了任何改动,其MD5值(也就是对应的“数字指纹”)都会发生变化。换言之,一个软件对应唯一的MD5值。

如果对下载的软件进行MD5校验而得到的MD5值与该软件提供商给出的MD5值相同,则说明下载的软件未被篡改,是安全的,否则是不安全的。

因此,步骤101还包括:

步骤1010.验证软件MD5值的合法性。

步骤102.基于软件文件的结构分析结果采用轮询的方式捕获软件应用程序在运行过程中与预设敏感行为对应的函数调用序列。

本步骤主要是基于软件文件的结构分析结果(具体是函数之间的调用关系),以及软件应用程序的应用逻辑和内容,通过自定义的脚本和数据,在软件应用程序的运行过程中捕获与预设敏感行为对应的函数调用序列,从而识别出软件的敏感行为。

其中,敏感行为指的是对于用户而言,具有可能的或者潜在威胁的行为。敏感行为可由本领域技术人员根据实际经验来设定,例如,联网、发送短信/彩信、屏蔽短信/彩信、获取手机号、获取位置、监听手机状态等。

本步骤具体包括:

步骤1021.运用自动化脚本技术(例如,可通过脚本语言和ADB工具实现)完成软件应用程序的安装、开启和关闭操作。

步骤1022.加载自定义动态库,其中包括与预设敏感行为对应的函数调用序列。

步骤1023.遍历进程池中软件应用程序的执行逻辑(因为有的行为需要其他函数触发或者调用而产生),并捕获软件应用程序在运行过程中符合自定义动态库的函数调用序列,从而捕获与预设敏感行为对应的函数调用序列。

其中,执行逻辑指的是文件或者函数的执行条件和内容。例如,对于文件A和B来说,文件A和B共同实现某一功能,但文件A和B之间需要用户的某些行为才能触发,比如用户通过软件点击查看系统通讯录A文件,那么B文件就会被触发,然后自动上传系统通讯录资料到后台服务器;或者,对于函数A和函数B来说,函数A能够实现某一个功能,函数B能够实现另一个功能,但是需要调用某个接口才能将函数A和B关联起来,这就是执行逻辑。

步骤103.将与预设敏感行为对应的函数调用序列和与预设恶意行为对应的函数调用序列进行对比,识别出软件的恶意行为,所述恶意行为包括至少两个特定敏感行为的组合,根据预设的安全等级列表确定软件恶意行为的安全等级,并依据所述安全等级下发安全等级预警。

本步骤具体包括:

步骤1031.加载自定义数据库,其中包括与预设恶意行为对应的函数调用序列。

步骤1032.将捕获到的符合自定义动态库的函数调用序列与符合自定义数据库的函数调用序列进行对比,换言之,将捕获到的与预设敏感行为对应的函数调用序列和与预设恶意行为对应的函数调用序列进行对比,从而识别出软件的恶意行为。

其中,恶意行为指的是对于用户而言,具有一定威胁性的行为。恶意行为可由本领域技术人员根据对软件进行动态分析过程中得到的软件应用程序的执行逻辑并结合实际经验来设定,具体地,本领域技术人员可对已知的大量爬虫样本进行海量、全面、精准地分析而得出恶意行为列表。本发明中,将恶意行为设定为至少两个特定敏感行为的组合。这里,“至少两个特定敏感行为”指的是该至少两个敏感行为同时发生时会给用户带来一定威胁,进而引发损坏用户利益的不良后果。由于预设的敏感行为包括很多种,并不是将其中任意两个以上的敏感行为进行组合就能得到一种恶意行为。例如,捕获到的敏感行为包括敏感行为A、敏感行为B、敏感行为C和敏感行为D,其中,敏感行为A和B同时发生时,会给用户带来一定威胁,而敏感行为C和D同时发生时,也会给用户带来一定威胁,但是,敏感行为A和C,或者敏感行为A和D,或者敏感行为B和C,或者敏感行为B和D同时发生时,均不会给用户带来威胁,因此,敏感行为A和B、敏感行为C和D就是“特定”的敏感行为,相应地,敏感行为A和B的组合构成一种恶意行为,敏感行为C和D的组合构成另一种恶意行为。

步骤1033.预先制定安全等级列表,其中包括软件恶意行为与安全等级的映射关系,根据预设的安全等级列表可确定软件恶意行为的安全等级,然后依据所述安全等级下发安全等级预警。

表1为安全等级列表的实例。

表1

需要说明的是,表1中示出的安全等级1对应的多种行为中,至少两种行为的组合即为恶意行为。

图2为本发明实施例1提供的另一种软件行为分析方法的流程示意图。与图1所示软件行为分析方法相比,图2所示软件行为分析方法还包括如下步骤:

步骤204.生成XML格式的软件行为分析报告,记录系统运行日志和加载日志。

其中,软件行为分析报告包括识别出的软件恶意行为,以及软件恶意行为的安全等级。

如图1和图2所示,步骤201至步骤203依次与步骤101至步骤103相同,此处不再赘述。

本实施例中,通过对软件文件进行静态分析和动态分析,得出软件应用程序在运行过程中与预设敏感行为对应的函数调用序列,再对比与预设恶意行为对应的函数调用序列,从而识别出软件的恶意行为,与现有技术相比,能快速、高效、全面地识别出软件的恶意行为,并能提高软件行为分析的准确率。此外,本实施例还通过安全等级预警机制划分软件恶意行为的安全等级(恶意等级),其中,软件恶意行为并不是单个的敏感行为,而是至少两个特定敏感行为的组合,从而能更加准确、细致地划分软件恶意行为的安全等级。

实施例2:

图3为本发明实施例2提供的一种软件行为分析装置的结构示意图。如图3所示,所述装置包括:静态分析模块100、动态分析模块200和行为分析模块300。

静态分析模块100用于静态分析软件文件的结构。主要是对软件文件进行静态分析,其实就是分析软件的安装文件,通过解压安装文件,分析其核心文件(可执行文件)的子元素,得出函数之间的调用关系,软件应用程序的应用逻辑和内容,从而得知软件文件的结构,也就得知了调用系统的API函数序列。

如图4所示,静态分析模块100具体包括:软件文件格式分析子模块101、函数调用序列分析子模块102和逻辑分析子模块103。

软件文件格式分析子模块101用于静态分析软件文件的格式。

只有获取到软件文件的格式,才能得知其源代码文件的位置,通过对软件代码部分进行分析可得到函数调用关系,进而能够实现对软件行为的静态分析,因此,分析软件文件的格式是分析软件行为的前提。

函数调用序列分析子模块102用于基于软件文件的格式分析结果对软件文件的源代码进行静态分析,得出软件应用程序的子元素,以及子元素之间的调用关系。

其中,所述软件应用程序的子元素包括函数、对象和字符串,所述子元素之间的调用关系包括函数之间的调用关系。只有分析出函数以及函数之间的调用关系,才能进一步地对软件行为进行静态分析。

逻辑分析子模块103用于静态分析软件应用程序的应用逻辑和内容。

其中,应用逻辑指的是应用程序中相应文件的执行顺序和调用关系,比如一个应用程序中不同JAVA文件的或者EXE文件的执行顺序和调用关系。由于不同文件之间有接口相互调用,故内容指的是应用程序中相应文件的调用关系表和接口调用逻辑。

此外,如果软件是从安全性未知的网站下载的,可以通过验证其MD5值合法性的方式来验证该软件是否安全。具体地,如果对下载的软件进行MD5校验而得到的MD5值与该软件提供商给出的MD5值相同,则说明下载的软件未被篡改,是安全的,否则是不安全的。

因此,静态分析模块100还可包括:

验证子模块104,用于验证软件MD5值的合法性。

动态分析模块200用于基于软件文件的结构分析结果采用轮询的方式捕获软件应用程序在运行过程中与预设敏感行为对应的函数调用序列。

动态分析模块200主要是基于软件文件的结构分析结果(具体是函数之间的调用关系),以及软件应用程序的应用逻辑和内容,通过自定义的脚本和数据,在软件应用程序的运行过程中捕获与预设敏感行为对应的函数调用序列,从而识别出软件的敏感行为。

其中,敏感行为指的是对于用户而言,具有可能的或者潜在威胁的行为。敏感行为可由本领域技术人员根据实际经验来设定,例如,联网、发送短信/彩信、屏蔽短信/彩信、获取手机号、获取位置、监听手机状态等。

如图5所示,动态分析模块200具体包括:动态库加载子模块201、捕捉子模块202和指令触发引擎203。

动态库加载子模块201用于加载自定义动态库,其中包括与预设敏感行为对应的函数调用序列。

捕捉子模块202用于遍历进程池中软件应用程序的执行逻辑(因为有的行为需要其他函数触发或者调用而产生),并捕获软件应用程序在运行过程中符合自定义动态库的函数调用序列,从而捕获与预设敏感行为对应的函数调用序列。

其中,执行逻辑指的是文件或者函数的执行条件和内容。例如,对于文件A和B来说,文件A和B共同实现某一功能,但文件A和B之间需要用户的某些行为才能触发,比如用户通过软件点击查看系统通讯录A文件,那么B文件就会被触发,然后自动上传系统通讯录资料到后台服务器;或者,对于函数A和函数B来说,函数A能够实现某一个功能,函数B能够实现另一个功能,但是需要调用某个接口才能将函数A和B关联起来,这就是执行逻辑。

指令触发引擎203用于运用自动化脚本技术(例如,可通过脚本语言和ADB工具实现)完成软件应用程序的安装、开启和关闭操作。

行为分析模块300用于将与预设敏感行为对应的函数调用序列和与预设恶意行为对应的函数调用序列进行对比,识别出软件的恶意行为,所述恶意行为包括至少两个特定敏感行为的组合,根据预设的安全等级列表确定软件恶意行为的安全等级,并依据所述安全等级下发安全等级预警。

如图6所示,行为分析模块300具体包括:数据库加载子模块301、恶意行为分析子模块302和安全等级预警子模块303。

数据库加载子模块301用于加载自定义数据库,其中包括与预设恶意行为对应的函数调用序列。

恶意行为分析子模块302用于将捕获到的符合自定义动态库的函数调用序列与符合自定义数据库的函数调用序列进行对比,换言之,将捕获到的与预设敏感行为对应的函数调用序列和与预设恶意行为对应的函数调用序列进行对比,从而识别出软件的恶意行为。

其中,恶意行为指的是对于用户而言,具有一定威胁性的行为。恶意行为可由本领域技术人员根据对软件进行动态分析过程中得到的软件应用程序的执行逻辑并结合实际经验来设定,具体地,本领域技术人员可对已知的大量爬虫样本进行海量、全面、精准地分析而得出恶意行为列表。本发明中,将恶意行为设定为至少两个特定敏感行为的组合。这里,“至少两个特定敏感行为”指的是该至少两个敏感行为同时发生时会给用户带来一定威胁,进而引发损坏用户利益的不良后果。

安全等级预警子模块303用于预先制定安全等级列表,其中包括软件恶意行为与安全等级的映射关系,根据预设的安全等级列表可确定软件恶意行为的安全等级,然后依据所述安全等级下发安全等级预警。

图7为本发明实施例2提供的另一种软件行为分析装置的结构示意图。与图3所示软件行为分析装置相比,图7所示软件行为分析装置还包括:

日志生成模块400,用于生成XML格式的软件行为分析报告,记录系统运行日志和加载日志。

其中,软件行为分析报告包括识别出的软件恶意行为,以及软件恶意行为的安全等级。

本实施例中,将静态分析模块100、动态分析模块200、行为分析模块、日志生成模块400(可选)构成一个软件行为分析装置,所述装置通过对软件文件进行静态分析和动态分析,得出软件应用程序在运行过程中与预设敏感行为对应的函数调用序列,再对比与预设恶意行为对应的函数调用序列,从而识别出软件的恶意行为,与现有技术相比,能快速、高效、全面地识别出软件的恶意行为,并能提高软件行为分析的准确率。此外,本实施例还通过全等级预警模块划分软件恶意行为的安全等级(恶意等级),其中,软件恶意行为并不是单个的敏感行为,而是至少两个特定敏感行为的组合,从而能更加准确、细致地划分软件恶意行为的安全等级。

可以理解的是,上述方法及装置中的相关特征和效果可以相互参考,故相关内容在实施例2中不再重复描述。而且,上述实施例的编号(即实施例1实施例2)是用于区分各实施例的,并不代表各实施例的优劣。

此外,本领域普通技术人员可以理解的是,实现上述方法实施例的全部或者部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应当说明的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1