一种基于smali中间语言的静态检测系统及方法技术方案

技术编号:15241256 阅读:70 留言:0更新日期:2017-05-01 01:28
本发明专利技术提供了一种基于smali中间语言的静态检测系统及方法,其中所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。本发明专利技术提供的基于smali的检测系统能够在完整的保留Android应用软件中的信息再进行行为分析,将应用软件中存在的敏感行为准确的检测出来。

Static detection system and method based on SmalI intermediate language

The invention provides a static detection system and method of SmalI based on interlingua, wherein the preprocessing module used for preliminary screening analysis simple and fast to the mobile application software, determine the current mobile application software is sensitive to possible behavior, and determine the need for subsequent static analysis program behavior; the rule base module as a rule the pretreatment module in sensitive behavior analysis; the sensitive behavior detection module for the preprocessing module to judge the existence of sensitive behavior of mobile application software detailed behavior detection; the result generation module of mobile application software for basic information and sensitive information report and output. The SmalI based detection system can be used to analyze the behavior of the information in the Android software, and then detect the sensitive behavior in the application software.

【技术实现步骤摘要】

本专利技术涉及到移动应用软件的分析
,特别是一种基于smali中间语言的静态检测系统及方法。
技术介绍
一般情况下,移动应用软件静态分析技术是反编译到源代码,因为Android代码本身的问题,并不能完全匹配Java语法并且在反编译到源代码的过程中会有信息缺失或反编译失败,无法进行完整的信息分析,因此设计并实现了一种基于smali中间语言的静态检测系统,对比基于源代码的静态检测系统有较好的检测精确度和较低的误报率,并在检测效率上有极大的提高。目前,国内外对应用软件的静态检测技术做了大量的研究,对Android应用软件的静态检测技术主要分为基于特征的检测技术和基于行为的检测技术两大类,基于特征的检测技术是根据由已知类别的恶意软件类别中提取的通用特征码进行检测;而基于行为的检测方法则是将应用软件反编译到源代码或中间代码。基于特征代码的检测技术,是将恶意软件中的代码或自身信息等进行提取处理为特征码,再通过检测文件中是否存在特征码来判断其是否为恶意软件。这种检测技术是现状病毒检测最常用及核心的技术之一。Thomas等人将Android应用程序反编译到源代码,再对源代码中的模型特征进行匹配检测。吴俊昌等人将Android移动应用使用的权限作为特征,进而设计了一种基于权限特征的静态检测方法。Desnos等人从应用程序中提取方法特征再进行距离压缩和相似度比较来对应用软件的相似度和恶意软件进行检测。童正飞将从动态链接表中提出的Android程序调用关系作为特征,对恶意软件进行分类检测。然而基于特征的检测技术只能通过特征代码进行检测,无法对未知病毒或已知病毒的变种进行检测。基于敏感行为的检测技术依靠监视程序的行为,与已知的恶意行为模式进行匹配,来判断目标文件是否具备恶意趋向。这种检测技术一般通过逆向手段,分析应用软件中的函数调用序列等,即一般会将应用软件进行反编译,得到中间文件代码或者源代码,针对得到的文件提取控制流和数据流,根据命中的敏感API进行流追踪,判断是否为后台行为以及参数是否为敏感数据。然而由于Android应用软件的特殊性,其在反编译到源代码的过程中有部分信息丢失,从而无法完全匹配Java语言的语法规则,进行中间抽象模型构建时也无法构造出完整准确的抽象语法树。由于检验所针对的检查对象不是程序本身而是构建出的的模型,程序在向模型转化的过程中有稍微一点点偏差以至于获得的模型具有偏差,都会造成最终的检查结果与程序中实际存在的敏感行为存在误差。
技术实现思路
为解决上述技术问题,本专利技术提供了一种基于smali中间语言的静态检测系统,其包括预处理模块、规则库模块、敏感行为检测模块、结果生成模块,所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。较佳地,所述规则库模块包括一类规则:敏感行为API、二类规则:参数规则以及三类规则:用户行为规则,所述参数规则为确定所述敏感行为API的参数是否为符合条件的类型,所述用户行为规则用于确定命中的符合条件的敏感行为API是后台行为还是用户行为。较佳地,所述预处理模块用于实现快速从资源文件和dex文件中获取当前应用软件中所有使用的字符串,即获取常量池中的数据;对于从资源文件的分解,可以使用SAXBuilder对xml文件进行解析,按照格式获取AndroidManifest.xml中的信息;从dex文件中获取常量表则通过文件格式,进行编码对dex文件中的字符串列表进行提取,在通过dex文件格式获取字符串偏移地址后,第一个字节即为当前字符串的大小,当前字符串长度大于预设阈值时,表明该字符串为无意义字符,将该字符串从常量池中剔除;在获取了整个应用软件的常量池后,需要进行常量对比,对比的对象为一类规则和常量池中的数据,如果两者有重合的则表明当前应用软件中可能存在敏感行为需要进行进一步的行为检测,若没有则表明当前软件中不含有敏感行为。较佳地,所述敏感行为检测模块通过三类规则在控制流和数据流中进行回溯比对确定敏感行为:首先是一类规则的触发行为,其次在数据流中对二类规则中的参数进行比对触发,最后进行三类规则的行为定性,若连续触发一类、二类规则同时三类规则定性为非用户行为即为后台行为则是敏感行为;具体执行行为检测的步骤为:首先利用apktool将待检测移动应用软件反编译为smali文件,apktool的中间模块中baksmali部分会将smali文件生成为smali语法树,依据此语法树相关结构,进行信息抽取,获取控制流和数据流变化数据,与维护的规则库进行匹配检测,进行控制流与数据流分析,获取敏感行为出现的位置与参数信息;所述smali语法树是通过分析smali文件的语法、词法,将smali文件按照语法结构生成为树状结构,根据smali本身的语法树结构体系,可以将语句之间的跳转关系,寄存器间的数据变化信息抽取出来形成新的控制流图、数据流图,以及根据smali中invoke指令的相关信息获取函数依赖图,根据上述三种图,进行流追踪。较佳地,所述结果生成模块最终得到的结果报告包括基本信息、权限声明、明文字符串以及存在的敏感行为;若信息中含有明文存储的网址、电话号码信息表明该移动应用软件没有隐藏程序资源使用信息,则这些信息容易泄露,被攻击者盗用、篡改,生成盗版或钓鱼应用软件。本专利技术还提供了一种基于smali中间语言的静态检测方法,其包括以下步骤:S1:首先使用apktool将Android应用软件反编译为smali文件,然后使用baksmali将smali文件生成为smali语法树,smali语法树作为流分析的输入;S2:以smali语法树为基础,进行控制流和数据流分析;控制流通过语句间的跳转分支和执行顺序构成控制依赖图,同时根据invoke指令来生成函数依赖图;S3:在smali语言中,数据流的变化为语句间的寄存器数值变化,对语句间寄存器的变化进行记录,对每个敏感语句节点寄存器中的数据进行定值计算,最后形成当前语句节点的定值集合;S4:对规则库中的安全规则进行解析。1类规则定义了敏感行为API、命名空间和类名等关键信息,2类规则定义了参数满足的信息和格式,3类规则定义了用户行为;S5:进行敏感行为检测,根据规则库中的规则进行敏感行为分析,确定移动应用软件中存在的敏感行为;S6:生成报告:将应用软件的基本信息和存在的敏感行为生成报告,方便阅读和后续分析。本专利技术具有以下有益效果:检测的准确率上升:本专利技术提供的基于smali的检测系统能够在完整的保留Android应用软件中的信息再进行行为分析,将应用软件中存在的敏感行为准确的检测出来;在正常样本和恶意样本中准确率较高的同时误报率都有一定的降低,存在敏感行为而未检测出的数量会明显下降,表明之前因为信息缺失而无法检测出的敏感行为在基于中间语言smali的静态检测系统中可以被成功检测出;并且通过本专利技术提供的基于smali的检测系统平均检测时间大本文档来自技高网
...

【技术保护点】
一种基于smali中间语言的静态检测系统,其特征在于,包括预处理模块、规则库模块、敏感行为检测模块、结果生成模块,所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。

【技术特征摘要】
1.一种基于smali中间语言的静态检测系统,其特征在于,包括预处理模块、规则库模块、敏感行为检测模块、结果生成模块,所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。2.如权利要求1所述的基于smali中间语言的静态检测系统,其特征在于,所述规则库模块包括一类规则:敏感行为API、二类规则:参数规则以及三类规则:用户行为规则,所述参数规则为确定所述敏感行为API的参数是否为符合条件的类型,所述用户行为规则用于确定命中的符合条件的敏感行为API是后台行为还是用户行为。3.如权利要求2所述的基于smali中间语言的静态检测系统,其特征在于,所述预处理模块用于实现快速从资源文件和dex文件中获取当前应用软件中所有使用的字符串,即获取常量池中的数据;对于从资源文件的分解,可以使用SAXBuilder对xml文件进行解析,按照格式获取AndroidManifest.xml中的信息;从dex文件中获取常量表则通过文件格式,进行编码对dex文件中的字符串列表进行提取,在通过dex文件格式获取字符串偏移地址后,第一个字节即为当前字符串的大小,当前字符串长度大于预设阈值时,表明该字符串为无意义字符,将该字符串从常量池中剔除;在获取了整个应用软件的常量池后,需要进行常量对比,对比的对象为一类规则和常量池中的数据,如果两者有重合的则表明当前应用软件中可能存在敏感行为需要进行进一步的行为检测,若没有则表明当前软件中不含有敏感行为。4.如权利要求3所述的基于smali中间语言的静态检测系统,其特征在于,所述敏感行为检测模块通过三类规则在控制流和数据流中进行回溯比对确定敏感行为:首先是一类规则的触发行为,其次在数据流中对二类规则中的参数进行比对触发,最后进行三类规则的行为定性,若连续触发一类、二类规则同时三类规则定性为非用户行为即为后台行为则...

【专利技术属性】
技术研发人员:王鑫
申请(专利权)人:合肥国信车联网研究院有限公司
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1