基于函数调用和条件特征识别安卓逃逸软件的方法及系统技术方案

技术编号:35566829 阅读:21 留言:0更新日期:2022-11-12 15:50
本发明专利技术公开了一种基于函数调用和条件特征识别安卓逃逸软件的方法及系统,解决了现有安卓恶意软件检测系统无法识别逃逸软件,使得系统遗漏一部分具有逃逸行为的恶意安卓软件的问题。本发明专利技术对测试Android APK文件进行反编译获取被测试Android APK中所调用的API,结合一些人工提取的逃逸软件特征和敏感API特征,形成和这些特征有关的API之间的调用关系,其次将与API调用点相关的条件语句进行提取,由此一个APK可以由调用图和条件特征两种类型的数据进行表示,进一步利用图嵌入算法和文本嵌入算法将其进行向量化表示,从而可以结合机器学习进行逃逸软件检测。本发明专利技术用于识别Android逃逸软件。Android逃逸软件。Android逃逸软件。

【技术实现步骤摘要】
基于函数调用和条件特征识别安卓逃逸软件的方法及系统


[0001]本专利技术涉及计算机
,特别涉及软件分析中的Android逃逸软件识别方法。具体一种基于函数调用图和函数条件特征识别Android逃逸软件的方法及系统,通过静态分析获取被测试Android APK中API的调用关系和条件判断信息,综合特征表示和特征融合将APK信息进行向量化表示,最终结合机器学习算法来实现被测试Android APK的逃逸检测。

技术介绍

[0002]Android操作系统在全球已得到广泛普及,目前被25亿台移动设备广泛使用,到2021年第二季度,Android的全球市场份额已经达到了83.8%。随着Android在全球范围的市场急速扩张,它也成为不法分子植入恶意软件的主要目标。CIC通过捕获Android恶意软件,估算出每天有近12000个新的Android恶意软件实例。随着科研人员的深入研究,已经有了非常多的自动化检测Android恶意软件的方法,但是恶意软件逃避静态检测和动态检测的技术也在不断进步,一种可以根据运行环境调整自身运行策略的逃逸恶意软件出现,这使得以往传统的恶意软件检测手段失效,无法及时的阻断其传播,严重侵犯用户的合法权益,甚至给用户和社会带来巨大的利益损失。因此,针对具有逃逸行为的Android软件的检测与分类已成为急需解决的问题。
[0003]在Android逃逸软件的检测与分类中,学者通常采用动态分析与静态分析两种分析方式。动态分析能捕获程序运行时的动态信息,例如系统调用,敏感API调用等,但是因为逃逸软件具有检测运行环境的能力,因此如果逃逸软件检测到了处于动态分析环境下,它就会隐藏自身恶意行为,执行正常软件功能或者直接崩溃退出,这使得动态分析必须将自己运行环境尽可能地与真机一致,才能尽可能的发现软件是否存在恶意行为。静态分析通过反汇编等方式对程序代码进行分析,不需要程序运行就能提取程序的整体特征进行分析。而传统的静态分析逃逸软件主要是基于特征匹配的方式,即人工提取一些字段信息,如果APK中有涉及并使用了这些字段,即判断其为逃逸软件,这种方式会导致大量的良性软件误报,因为很多软件处于安全策略也会调用一些敏感特征,也会导致部分具有对抗静态检测的恶意软件漏报。因此这些类似的方法普遍存在如下技术问题:
[0004]1.过于依赖人工提取的特征,如果特征收集过少,则会导致大量APK逃过检测,而如果特征过多,又会导致大量良性的APK被检测为具有逃逸行为;
[0005]2.使用静态混淆等某些技术,可以使得大量特征或者字符信息被替换掉,使得特征匹配时无法找到这些信息,从而导致检测失败。

技术实现思路

[0006]本专利技术的目的在于提供一种基于函数调用图和函数条件特征识别Android逃逸软件的方法及系统,解决现有技术无法对逃逸软件进行精确检测或者检测过于依赖人工提取特征并进行特征匹配的问题。
[0007]为了实现上述目的,本专利技术采用的技术方案为:
[0008]一种基于函数调用图和函数条件特征识别Android逃逸软件的方法,包括如下步骤:
[0009]步骤1:对被测试Android APK文件进行反编译来获取被测试Android APK中所调用的API,提取特征API列表匹配测试APK中包含的体征,并对其生成函数调用图,其中,Android APK表示安卓安装包,API表示应用程序编程接口,特征API列表表示Android代码中涉及敏感权限的API和人工提取的逃逸特征其中可能包括字符串或者函数名;
[0010]步骤2:提取调用图中每一个API调用点周围且与API相关的条件信息;
[0011]步骤3:分别根据调用图的信息和条件语句的信息生成每个特征API节点的特征向量;
[0012]步骤4:将所涉及到的特征API的信息进行压缩,合并成APK的特征向量;
[0013]步骤5:将每个APK特征向量和逃逸信息,输入到机器学习分类模型中进行训练,实现逃逸APK检测。
[0014]进一步,所述步骤1的具体步骤为:
[0015]步骤1.1:首先根据Android官方提供的敏感API信息和人工分析样本提取的有关逃逸行为的一些字段和方法特征作为特征API集合;
[0016]步骤1.2:通过Androguard工具反编译测试APK,得到APK中的所有方法,与步骤1.1筛选的特征API集合进行匹配,得到测试APK使用了的特征API,然后对这些特征API进行调用链追溯。
[0017]进一步,所述步骤2的具体步骤为:
[0018]对于步骤1中生成的特征API调用链,使用Androguard反编译调用链中所涉到每个API,得到和调用点有关的条件语句。
[0019]进一步,所述步骤3的具体步骤为:
[0020]使用文本嵌入BERT算法对每个特征API的所有条件语句进行嵌入,生成一个768维的向量;其次利用图嵌入算法GNN对函数调用图的图结构信息将进行嵌入,生成一个包含图结构信息300维向量,这样得到了两段特征向量,将这两段特征向量拼接成一个1068维的向量用于一个特征API的表示。
[0021]进一步,所述步骤4的具体步骤为:
[0022]将匹配到的每个特征API节点的特征向量进行聚合,本专利使用平均的方式进行聚合,得到APK的向量表示。
[0023]进一步,所述步骤5的具体步骤为:
[0024]利用APK的向量表示输入到机器学习算法中进行训练,得到一个逃逸检测模型,最终此模型可用于测试新的APK是否具有逃逸行为。
[0025]一种基于函数调用图和函数条件特征识别Android逃逸软件的系统,包括:
[0026]特征API选择模块:对被测试Android APK文件进行反编译来获取被测试Android APK中所调用的所有API,根据Android系统中的敏感API和人工筛选出的API或者特征字符串,对测试APK中的信息进行匹配,得到此APK中所涉及到的特征,称为特征API,其中可能包含敏感API和特征字符串两种类型;
[0027]函数调用链模块:对筛选出的特征API分析其被哪个API调用,从而生成函数调用
链;
[0028]条件语句特征模块:对API进行反编译之后,提取调用图中所有和调用点有关的if,elseif语句的条件信息;
[0029]嵌入模块:对特征API生成的调用图进行图嵌入和对条件语句利用BERT预训练模型进行文本嵌入,拼接两组嵌入信息形成一个特征向量,用于表示一个特征API的信息;
[0030]特征压缩模块:将所有有关的特征API的向量压缩为一个统一的向量,本专利使用平均的计算方式;
[0031]分类模块:基于Android APK对特征API调用构建调用图和条件特征语句,使用机器学习对打标签的Android APK进行检测、训练和分类。
[0032]进一步,所述特征API选择模块的具体实现为:
[0033]首先有一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于函数调用图和函数条件特征识别安卓逃逸软件的方法,其特征在于,包括如下步骤:步骤1:对被测试Android APK文件进行反编译来获取被测试Android APK中所调用的API,提取特征API列表匹配测试APK中包含的特征,并对测试APK使用了的特征API生成函数调用图,其中,Android APK表示安卓安装包,API表示应用程序编程接口,特征API列表表示Android代码中涉及敏感权限的API和人工提取的逃逸特征其中可能包括字符串或者函数名;步骤2:提取调用图中每一个API调用点周围且与API相关的条件信息;步骤3:分别根据调用图的信息和条件语句的信息生成每个特征API节点的特征向量;步骤4:将所涉及到的特征API的信息进行压缩,合并成APK的特征向量;步骤5:将每个APK特征向量和逃逸信息,输入到机器学习分类模型中进行训练,实现逃逸APK检测。2.根据权利要求1所述的一种基于函数调用图和函数条件特征识别安卓逃逸软件的方法,其特征在于,所述步骤1的具体步骤为:步骤1.1:首先根据Android官方提供的敏感API信息和人工分析样本提取的有关逃逸行为的一些字段和方法特征作为特征API集合;步骤1.2:通过Androguard工具反编译测试APK,得到APK中的所有方法,与步骤1.1筛选的特征API集合进行匹配,得到测试APK使用了的特征API,然后对这些测试APK使用了的特征API进行调用链追溯。3.根据权利要求2所述的一种基于函数调用图和函数条件特征识别安卓逃逸软件的方法,其特征在于,所述步骤2的具体步骤为:对于步骤1中生成的特征API调用链,使用Androguard反编译调用链中所涉到每个API,得到和调用点有关的条件语句。4.根据权利要求3所述的一种基于函数调用图和函数条件特征识别安卓逃逸软件的方法,其特征在于,所述步骤3的具体步骤为:使用文本嵌入算法对每个特征API的所有条件控制语句进行嵌入,其次利用图嵌入算法对函数调用图的图结构信息将进行嵌入,分别生成了两段向量特征,将这两段特征向量拼接用于一个特征API的表示。5.根据权利要求4所述的一种基于函数调用图和函数条件特征识别安卓逃逸软件的方法,其特征在于,所述步骤4的具体步骤为:将匹配到的每个特征API节点的特征向量使用平均的方式进行聚合,得到APK的向量表示。6.根据权利要求5所述的一种基于函数调用图和函数条件特征识别安卓逃逸软件的方法,其特征在于,所述步骤5的具体步骤为:利用APK的向量表示输入到机器学习算法中进行训练,得到一个逃逸检测模型,最终此模型可用于测试新的APK是否具有逃逸行为。7.一种基于函数调用图和...

【专利技术属性】
技术研发人员:牛伟纳刘星宇张小松任熙璇汪义航严然张然
申请(专利权)人:电子科技大学
类型:发明
国别省市:

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

1