一种基于特权特征和污点特征的机器学习恶意软件检测方法

文档序号:29614882发布日期:2022-04-13 11:07阅读:142来源:国知局
一种基于特权特征和污点特征的机器学习恶意软件检测方法

1.本发明涉及一种基于特权特征和污点特征的机器学习恶意软件检测方法,属于信息安全技术领域。


背景技术:

2.随着移动设备的快速发展,应用软件的安全问题也越来越突出。即使是从官方应用商店下载的应用程序,也会存在许多问题,这些应用会访问一些敏感信息,例如设备的位置、联系人、通话记录和imei(国际移动设备标识)。此外,社交相关应用程序和银行相关应用程序还会收集和存储大量敏感数据和私人信息,例如社交软件中的聊天记录、银行相关应用程序中的银行密码等。这些行为的后果,无论是有意的还是无意的,都是不可预测的。流行应用程序的敏感数据泄漏已经得到广泛承认。
3.移动操作系统,例如android,使用权限系统来限制应用程序的权限,以确保获取的android应用程序的完整性以及其他一些相关的安全机制,例如访问和过滤敏感数据,但现有系统仍然没有解决android应用程序引入的安全威胁。
4.对于恶意软件检测,许多研究人员将其分为静态分析和动态分析,静态污点分析首先根据字节码文件构建函数调用图;然后提取元数据识别敏感信息;最后,通过调用图传播污染分析来识别可能的泄漏路径。但是由于上下文分析不足,存在较高的误报率。动态分析是在模拟环境或真实环境中,在程序的运行过程中进行检测观察,或基于行为分析,或基于污点分析,来判断应用程序在运行过程中是否存在恶意的行为倾向。但是,动态分析作为服务运行必然会占用系统额外的内存和资源,降低手机的性能,并且当动态监控程序受到攻击时,会暴露敏感信息并泄漏更高级别的权限。因此,针对动态污点分析耗时、内存密集以及静态污点分析特征不足的问题,本发明提出了一种基于权限特征和污点特征的恶意软件检测方案,并且使用深度学习算法,有效地提升了恶意软件检测分类的结果。


技术实现要素:

5.本发明所要解决的技术问题是:提供一种基于特权特征和污点特征的机器学习恶意软件检测方法,结合了权限特征和污点特征,对用户的隐私信息进行保护。
6.本发明为解决上述技术问题采用以下技术方案:本发明的一种基于特权特征和污点特征的机器学习恶意软件检测方法,是一种轻量级的基于上下文的android恶意软件检测方案,扩展特征值的多维计算,构建基于特权特征、污点源特征和污点汇特征的特征值表,其中,特征提取阶段包括以下步骤:
7.步骤1,解压apk文件,获取androidmainfest.xml文件;
8.步骤2,反编译androidmainfest.xml文件,从中提取权限信息;
9.步骤3,使用flowdroid提取sink特征、source特征和path特征;
10.特征预处理与计算阶段包括以下步骤:
11.步骤4,计算每种权限出现的频率,得到单个权限的特征值表;
12.步骤5,根据步骤4,计算单个程序整体权限特征值;
13.步骤6,计算sink特征、source特征和path特征的特征值,若泄露路径为0时,source特征和sink特征的特征值计算与权限的特征值计算相同;若泄漏路径不为0时source和sink的特征值受path特征值的影响,每增加一条path,则对应的source和sink的特征值按比例p增加。
14.步骤7,使用深度学习算法进行检测和分类。
15.作为本发明的一种优选方案,步骤6所述的比例p为10%。
16.作为本发明的一种优选方案,步骤4中计算每种权限出现的频率,得到单个权限的特征值表;具体过程如下:
17.先从n个android恶意软件中提取出现频率最高的m种权限;计算每种权限出现的频率,将该频率乘以100作为每一个权限的特征值,得到单个权限的特征值表,将特征值记为:
[0018][0019]
作为本发明的一种优选方案,步骤5中计算单个程序整体权限特征值,具体过程如下:
[0020]
根据单个android应用程序本身所提取的权限,按照特征值表所赋予的特征值进行计算,进而得出android应用程序的权限特征值,计算公式如下:
[0021][0022]
其中所指的是第i个特征权限的存在情况,0表示不存在该权限特征,1表示存在该权限特征,则表示第i个特征权限的特征值。
[0023]
作为本发明的一种优选方案,步骤6中source特征,sink特征和path特征是有着非常重要的联系,当出现一个path时,意味存在数据的泄露的可能,它会将该android应用程序的危险性提高一个等级,而每增加一条可能泄露的路径,数据泄露的可能性就越大,程序的危险性也越高,故v
permission
和v
source
值受到v
path
的影响;将所发现的泄漏的路径数作为path特征的特征值。
[0024]
source特征是根据污点分析得到的所有source的集合,它是引入的不受信任数据的接口和app访问危险权限时调用的api等,我们会根据提取到的source特征进行量化,得到被测安卓应用程序的source特征值。
[0025]
sink特征是根据污点分析得到的所有sink的集合,它是可能导致隐私泄漏的敏感api的调用等,我们会根据提取到的sink特征进行量化,得到被测安卓应用程序的sink特征值。
[0026]
path特征是从source集合到sink集合中所有可达路径的集合,存在这样一条或多条路径说明被测安卓应用程序存在数据泄漏的可能,我们会将提取到的path特征进行量化。
[0027]
计算sink特征和source特征特征值,具体过程如下:
[0028]
当v
path
=0时,即在没有发现泄露的前提下,source特征和sink特征的特征值计算
与权限的特征值计算相同,从source特征和sink特征的提取中发现,sink特征的数量要比source多,source特征选取的是n
source
个特征,而sink特征则是选取n
sink
个特征,其中n
sink
大于等于2n
source

[0029]
当v
path
=0时,source特征值计算公式如下:
[0030][0031]
其中表示第i个source特征值的存在情况,0表示不存在该source特征,1表示存在该source特征,则表示第i个source特征的特征值。
[0032]
sink特征值计算与source特征值计算相同,公式如下:
[0033][0034]
其中表示第i个sink特征值的存在情况,0表示不存在该sink特征,1表示存在该sink特征,则表示第i个sink特征的特征值。
[0035]
当v
path
≠0时,即出现可能泄露的路径时,source和sink的特征值受path特征值的影响,将当path特征值为0时,所计算的source特征值记为v

source
,sink特征值记v

sink
,每增加一条path,在对应的特征值上增加比例p。此时source特征值计算如下:
[0036]vsource
=v

source
*(1+p*v
path
)
[0037]
sink特征值的计算与source特征值计算相同,公式如下:
[0038]vsink
=v

sink
*(1+p*v
path
)
[0039]
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0040]
1、本发明从权限特征、污点源特征和污点收敛点特征进行多维计算,弥补了因特征维数不足而导致误报率高的缺点。
[0041]
2、本发明使用深度学习算法,可以并行处理代码上下文,不仅有效提升了恶意软件检测的分类结果,还大大减少了数据集的体积。
附图说明
[0042]
图1是本发明一种基于特权特征和污点特征的机器学习恶意软件检测方法的流程图。
具体实施方式
[0043]
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0044]
如图1所示,本发明提供一种基于特权特征和污点特征的机器学习恶意软件检测方法,具体包括以下步骤:
[0045]
步骤1,解压apk文件,获取androidmainfest.xml文件;
[0046]
步骤2,反编译androidmainfest.xml文件,从中提取权限信息;
[0047]
步骤3,使用flowdroid提取sink特征、source特征和path特征;
[0048]
步骤4,计算每种权限出现的频率,得到单个权限的特征值表;
[0049]
先从n个android恶意软件中提取出现频率最高的m种权限,本实施例中选取n=100,m=30;并计算每种权限出现的频率,将该频率乘以100作为每一个权限的特征值,得到单个权限的特征值表,将特征值记为:
[0050][0051]
步骤5,根据步骤4,计算单个程序整体权限特征值;
[0052]
根据单个android应用程序本身所提取的权限,按照特征值表所赋予的特征值进行计算,进而得出android应用程序的权限特征值,计算公式如下:
[0053][0054]
其中所指的是第i个特征权限的存在情况,0表示不存在该权限特征,1表示存在该权限特征,则表示第i个特征权限的特征值。
[0055]
步骤6,计算sink特征、source特征和path特征的特征值,若泄露路径为0时,source特征和sink特征的特征值计算与权限的特征值计算相同;若泄漏路径不为0时source和sink的特征值受path特征值的影响,每增加一条path,在对应的特征值上增加10%。
[0056]
source特征、sink特征和path特征是有着非常重要的联系,当出现一个path时,意味存在数据的泄露的可能,它会将该android应用程序的危险性提高一个等级,而每增加一条可能泄露的路径,数据泄露的可能性就越大,程序的危险性也越高,故特征值v
sink
和v
source
值受到v
path
的影响,将所发现的泄漏的路径数作为path特征的特征值。所述步骤6的具体过程如下:
[0057]
当v
path
=0时,即在没有发现泄露的前提下,source特征和sink特征的特征值计算与权限的特征值计算相同。从source特征和sink特征的提取中发现,sink特征的数量要比source多,所以source特征选取的是n
source
个特征,而sink特征则是选取n
sink
个特征,其中n
sink
大于等于2n
source
。本实施例中,source特征选取的是50个特征,而sink特征则是选取100个特征值,当v
path
=0时,source特征值计算公式如下:
[0058][0059]
其中表示第i个source特征值的存在情况,0表示不存在该source特征,1表示存在该source特征,则表示第i个source特征的特征值。
[0060]
sink特征值计算与source特征值计算相同,公式如下:
[0061][0062]
其中表示第i个sink特征值的存在情况,0表示不存在该sink特征,1表示存
在该sink特征,则表示第i个sink特征的特征值。
[0063]
当v
path
≠0时,即出现可能泄露的路径时,source和sink的特征值受path特征值的影响,将当path特征值为0时,所计算的source特征值记为v

source
,sink特征值记v

sink
,每增加一条path,在对应的特征值上增加10%。此时source特征值计算如下:
[0064]vsource
=v

source
*(1+10%*v
path
)
[0065]
sink特征值的计算与source特征值计算相同,公式如下:
[0066]vsink
=v

sink
*(1+10%*v
path
)
[0067]
步骤7,使用深度学习算法进行检测和分类。
[0068]
采用深度学习算法,可以并行处理代码,不仅有效地提高了恶意软件检测的分类结果,也大大减少了数据集的体积。
[0069]
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1