The invention discloses a Android malicious code detection method based on an API dependency diagram, which is used for examining the Android application software submitted by a software developer and detecting whether the software has malicious behavior. The method comprises the following steps: S1, according to the analysis of the semantic of application software, generate API dependency graph API DRG; S2, using index method based on API polymerization DRG database to match the most similar dependency graph; S3, through the normal code database NormalDB and MalwareDB database to complete the query of malicious code anomaly detection and signature detection respectively. The invention realizes the automatic operation of the Android malicious code analysis and detection through the above innovation method, and effectively improves the accuracy of the detection and classification of the malicious code.
【技术实现步骤摘要】
基于API依赖关系图的安卓恶意代码检测方法
本专利技术涉及移动安全的研究领域,特别涉及安卓恶意代码检测方法,利用语义认知的加权API依赖关系图对安卓恶意代码进行安全检测。
技术介绍
苹果、谷歌移动应用市场的App数量超过250万,下载量远超过800亿次。正是移动应用市场发展太迅速,暴露出诸多安全问题。卡巴斯基实验室(Kaspersky)表示,98.05%的恶意软件将目标瞄准了Android。这样需要我们投入越来越多的成本去对新型恶意软件进行人工分析。因此研发自动分析恶意代码的方法具有非常巨大的吸引力。现有恶意代码自动检测和分类方法分为两大类:基于签名和基于机器学习。基于签名的方法要在字节码和API调用中找到特定模式,这样很容易被字节码级别的转换攻击所逃避。基于机器学习的方法从应用程序行为(例如许可请求和关键API调用)中提取特性和使用标准机器学习算法去执行二进制分类。因为所提取的特性是基于程序语法而不是程序语义,所以这种检测也容易被逃避。为了解决恶意代码逃避自动检测问题,目前技术是将程序语义提炼成图形来表示,例如控制流图、数据依赖图和权限事件图。根据人工制作的规格说明去检查软件的相应图形,从而实现恶意代码检测。然而这些检测软件趋向于根据给定的规格说明去寻找精确的匹配代码,因此可能被恶意代码的多态性所逃避。因此本领域致力开发一种能有效对抗字节码转换攻击和零日攻击的恶意代码检测方法,并应用在安卓应用市场上。
技术实现思路
本专利技术的主要目的在于克服现有技术的缺点与不足,提供一种基于API依赖关系图的安卓恶意代码检测方法。根据本专利技术的一个方面,提供了一种基于A ...
【技术保护点】
一种基于API依赖关系图的安卓恶意代码检测方法,用于审核软件开发者提交的安卓应用软件,检测软件是否带有恶意行为,其特征在于,该方法包括下述步骤:S1、对应用软件的语义进行分析,生成API依赖关系图;S2、在数据库中使用基于聚合的索引方法对给定的API依赖关系图进行相似度查询,存在正常代码和恶意代码的API依赖关系图API‑DRG数据库,在API‑DRG数据库中查询与给定的图最相似的依赖关系图,使用基于聚合的索引方法去提高查询效率和可扩展性,每个聚合由与API‑DRG数据库中API相关联的位矢量组成,位矢量表示该API所在的软件包是否出现在该依赖关系图中,将给定软件的位矢量和聚合里的矢量相比较,找到相应的索引,从而查询到与给定软件相匹配的依赖关系图;S3、通过数据库NormalDB和MalwareDB分别完成异常检测和签名检测,然后完成恶意代码检测与分类,利用异常检测去探测该软件是否是恶意软件;如果该软件是恶意软件,使用签名检测去确定该恶意软件的病毒类型。
【技术特征摘要】
1.一种基于API依赖关系图的安卓恶意代码检测方法,用于审核软件开发者提交的安卓应用软件,检测软件是否带有恶意行为,其特征在于,该方法包括下述步骤:S1、对应用软件的语义进行分析,生成API依赖关系图;S2、在数据库中使用基于聚合的索引方法对给定的API依赖关系图进行相似度查询,存在正常代码和恶意代码的API依赖关系图API-DRG数据库,在API-DRG数据库中查询与给定的图最相似的依赖关系图,使用基于聚合的索引方法去提高查询效率和可扩展性,每个聚合由与API-DRG数据库中API相关联的位矢量组成,位矢量表示该API所在的软件包是否出现在该依赖关系图中,将给定软件的位矢量和聚合里的矢量相比较,找到相应的索引,从而查询到与给定软件相匹配的依赖关系图;S3、通过数据库NormalDB和MalwareDB分别完成异常检测和签名检测,然后完成恶意代码检测与分类,利用异常检测去探测该软件是否是恶意软件;如果该软件是恶意软件,使用签名检测去确定该恶意软件的病毒类型。2.根据权利要求1所述基于API依赖关系图的安卓恶意代码检测方法,其特征在于,步骤S1中,对应用软件的语义进行分析的具体方法为:结合JAVA分析工具Soot框架,使用静态分析方法,执行图形生成程序,将安卓软件的字节码转换为相应的API依赖关系图API-DRG,该分析过程包括分析API的调用,利用上下文感知、数据流感知和模块间的数据流的分析方法,获得API调用引用参数和调用返回值,提取常量参数,确定API调用之间的数据依赖关系。3.根据权利要求2所述基于API依赖关系图的安卓恶意代码检测方法,其特征在于,还包括基类的调用入口发现步骤,通过递归回溯的算法确定基类的调用入口,具体过程如下:任意选择一个调用,递归回溯分析它与前一个调用存在的依赖关系,直至发现一个不被其它API调用的入口,这即是唯一一个该类的入口。4.根据权利要求2所述基于API依赖关系图的安卓恶意代码检测方法,其特征在于,所述API依赖关系图由一些拥有依赖关系的API组成,在依赖关系图中,API作为点、API之间的依赖关系为边,而对于边的标记分为两类,一种是由API原型、入口点、常量系统组成;第二种是涉及安卓安全级别的权重。5.根据权利要求1所述基于API依赖关系图的安卓恶意代码检测方法,其特征在于,步骤S2中,还包括将两个依赖关系图的相似度进行量化,计算图形相似度,图形相似度是这个图形转变另外一个图形的成本,即为了变成另外一个图形,删除旧的点和新建点的成本,而这个成本被称为带权重图形的编辑距离,以下有两个公式得出两张图之间转变成:公式一:公式一中,wgdist(G,G',α)为图形G转变至图形G’的最小成本,α是统一计算权重的函数,V和V’分别是两个图形的顶点,VI和VD分别是在图形G新增的边和在图形G删除的边;公式二:
【专利技术属性】
技术研发人员:官全龙,罗伟其,张焕明,张凌燕,
申请(专利权)人:暨南大学,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。