本发明涉及人工智能技术领域,尤其涉及一种安卓系统恶意应用检测方法及系统。
背景技术:
由于安卓手机操作系统的开源特性,吸引了越来越多的开发人员,导致其应用种类以及数量都呈现出爆发式的增长,但是同时也成了恶意应用的聚集区。恶意应用通过盗取用户隐私信息或者植入恶意代码等方式攻击用户,造成用户隐私泄露以及财产损失。
当前对安卓恶意代码的检测方式主要包括基于特征码匹配的方式以及基于行为的方式。其中,基于特征码的检测方式需要将待测应用的特征码去匹配恶意应用特征码库,根据匹配的情况来判断是否是恶意应用。该种方式需要维护一个巨大的特征库,维护成本高,且不能检测未知的恶意应用,360等安全企业一般通过恶意特征库来鉴别一个应用是否为恶意应用。基于行为的检测方式又分为静态检测方式与动态检测方式,依靠学习恶意应用的静态特性与动态行为来判断待检应用是否为恶意应用。这种方式可以检测未知恶意应用,并且不需要维护特征库。静态检测方式可以通过解析源码获取特征来检测应用,无需运行应用,效率极高。而动态检测则通过检测应用运行时的行为特征来判断应用类别,该种方式检测效率较低且行为特征获取的难度较大。目前的检测算法在检测恶意应用时存在动态检测速度慢、代价高的问题。
技术实现要素:
为解决上述技术问题,本发明提供一种安卓系统恶意应用检测方法及系统。
本发明提供的一种安卓系统恶意应用检测方法,所述方法包括:
获取多个恶意应用样本和多个良性应用样本;
分别对所述多个恶意应用样本和所述多个良性应用样本进行处理,得到所述恶意应用样本的特征集合和所述良性应用样本的特征集合;
将所述恶意应用样本的特征集合和所述良性应用样本的特征集合进行随机混合,得到第一特征集合;
基于所述第一特征集合,构建所有应用样本的特征集合,所述所有应用样本包括所述恶意应用样本和所述良性应用样本;
建立人工智能网络,利用从所有应用样本的特征集合中随机挑选出的预设数量训练应用样本的特征集合对所述人工智能网络进行训练;
获取待测应用样本的特征集合,利用训练过的人工智能网络对待测应用样本进行检测,检测所述待测应用样本是否为恶意应用样本。
进一步地,分别对所述多个恶意应用样本和所述多个良性应用样本进行处理,得到所述恶意应用样本的特征集合和所述良性应用样本的特征集合具体为::
将每个恶意应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个恶意应用样本的权限组,所述权限组包括至少一个权限,所述恶意应用样本的所有权限构成了所述恶意应用样本的特征集合;
将每个良性应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个良性应用样本的权限组,所述权限组包括至少一个权限,所述良性应用样本的所有权限构成了所述良性应用样本的特征集合。
进一步地,将所述恶意应用样本的特征集合和所述良性应用样本的特征集合进行随机混合,得到第一特征集合的具体公式为:
建立s={f1,f2,…,fn},其中s为第一特征集合,fn为第n个权限,所述f1至所述fn为恶意应用样本的所有权限和良性应用样本的所有权限。
进一步地,基于所述第一特征集合,构建所有应用样本的特征集合,所述所有应用样本包括所述恶意应用样本和所述良性应用样本的具体公式为:
建立s={(s1,y1),(s2,y2),…,(si,yi)},其中s为所有应用样本的特征集合,si为第i个应用样本的特征集合;
若第i个应用样本具有s={f1,f2,…,fn}的权限,将si对应s的特征值置为1;
若第i个应用样本不具有s={f1,f2,…,fn}的权限,将si对应s的特征值置为0;
若第i个应用样本为良性应用样本,则所述yi=1;若第i个应用样本为恶意应用样本,则所述yi=-1。
进一步地,建立人工智能网络,利用从所有应用样本的特征集合中随机挑选出的预设数量训练应用样本的特征集合对所述人工智能网络进行训练采用随机森林算法进行。
进一步地,所述方法还包括:
挑选剩余测试应用样本的特征集合对人工智能网络的训练效果进行验证。
本发明提供的一种安卓系统恶意应用检测系统,所述系统包括:
获取单元,用于获取多个恶意应用样本和多个良性应用样本;
处理单元,用于分别对所述多个恶意应用样本和所述多个良性应用样本进行处理,得到所述恶意应用样本的特征集合和所述良性应用样本的特征集合;
第一运算单元,用于将所述恶意应用样本的特征集合和所述良性应用样本的特征集合进行随机混合,得到第一特征集合;
第二运算单元,用于基于所述第一特征集合,构建所有应用样本的特征集合,所述所有应用样本包括所述恶意应用样本和所述良性应用样本;
创建单元,用于建立人工智能网络,利用从所有应用样本的特征集合中随机挑选出的预设数量训练应用样本的特征集合对所述人工智能网络进行训练;
检测单元,获取待测应用样本的特征集合,用于利用训练过的人工智能网络对待测应用样本进行检测,检测所述待测应用样本是否为恶意应用样本。
进一步地,所述处理单元具体用于:
将每个恶意应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个恶意应用样本的权限组,所述权限组包括至少一个权限,所述恶意应用样本的所有权限构成了所述恶意应用样本的特征集合;
将每个良性应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取良性应用样本的权限组,所述权限组包括至少一个权限,所述良性应用样本的所有权限构成了所述良性应用样本的特征集合。
进一步地,所述第一运算单元具体用于:
建立s={f1,f2,…,fn},其中s为第一特征集合,fn为第n个权限,所述f1至所述fn为恶意应用样本的所有权限和良性应用样本的所有权限。
进一步地,所述所述第二运算单元具体用于:
建立s={(s1,y1),(s2,y2),…,(si,yi)},其中s为所有应用样本的特征集合,si为第i个应用样本的特征集合;
若第i个应用样本具有s={f1,f2,…,fn}的特征,将si对应s的特征值置为1;
若第i个应用样本不具有s={f1,f2,…,fn}的特征,将si对应s的特征值置为0;
若第i个应用样本为良性应用样本,则所述yi=1;若第i个应用样本为恶意应用样本,则所述yi=-1。
实施本发明,具有如下有益效果:
本发明通过获取良性应用样本的权限和恶性应用样本的权限,对良性应用样本的权限和恶性应用样本的权限对人工智能网络进行训练,使用训练后的人工智能网络识别恶意应用样本,解决了现有技术识别速度慢、代价高的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的安卓系统恶意应用检测方法的流程图。
图2是本发明实施例提供的随机森林算法的应用方法的流程图。
图3是本发明实施例提供的安卓系统恶意应用检测系统的结构图。
具体实施方式
本专利核心内容为获取恶意应用和良性应用的权限组,将每个应用的权限组数据化,并通过人工智能的方式学习每个应用的权限组,将训练的人工智能网络用于判断恶意应用和良性应用,以下结合附图和实施例对该方法具体实施方式做进一步说明。
下面将详细描述本发明提供的安卓系统恶意应用检测方法及系统的实施例。
如图1所示,本发明提供一种安卓系统恶意应用检测方法,所述方法包括:
步骤s11、获取多个恶意应用样本和多个良性应用样本。
需要说明的是,可以通过预设恶意应用网站的地址下载多个恶意应用样本,预设360安全网站的地址下载多个良性应用样本;此处样本越多,相对地后面检测结果就越准确。
步骤s12、分别对所述多个恶意应用样本和所述多个良性应用样本进行处理,得到所述恶意应用样本的特征集合和所述良性应用样本的特征集合。
需要说明的是,步骤s12具体为:
将每个恶意应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个恶意应用样本的权限组,所述权限组包括至少一个权限,所述恶意应用样本的所有权限构成了所述恶意应用样本的特征集合;
将每个良性应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个良性应用样本的权限组,所述权限组包括至少一个权限,所述良性应用样本的所有权限构成了所述良性应用样本的特征集合。
需要说明的是,这里权限组可以只包括一个权限,也可以包括多个权限。
通常,安卓系统权限安全级别为四级,分别为正常、危险、签名以及系统,安卓操作系统对上述四种权限进行了不同的认证方式,在应用的manifest.xml文件中进行配置声明。“正常”权限只需要声明即可使用,“危险”权限则需要用户人工确认,“签名”以及“系统”权限则需要系统的root管理员权限。为了有效保护系统安全以及用户隐私等,良性应用不会主动申请“危险”、“系统”权限,而恶意应用为达到入侵用户隐私等目的,则需要上述权限,例如下面表1为安卓系统危险权限表。
表1安卓系统的危险权限表
恶意应用使用此类权限则极容易被发现,恶意应用为了规避系统自身检测很少去直接申请这类危险权限。因此,恶意应用通过申请大量的常规权限,那么通过组合这些权限,调用危险应用程序接口的可能性就越高,形成对安卓系统的攻击。通过来自某移动应用安全平台的数据[9],分析了几组的多个权限危险组合,如下表2所示。
表2android系统多个权限的危险组合示例表
需要说明的是,依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个恶意应用样本的权限组,获取的每个恶意应用样本的权限组是恶意应用样本实际在使用的权限组,有效地避免了过度申明权限对恶意应用样本判定产生的影响。同理依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个良性应用样本的权限组也是良性应用样本实际在使用的权限组。
步骤s13、将所述恶意应用样本的特征集合和所述良性应用样本的特征集合进行随机混合,得到第一特征集合。
需要说明的是,第一特征结合包括恶意应用样本的权限组,也包括良性应用样本的权限组。
具体地,建立s={f1,f2,…,fn},其中s为第一特征集合,fn为第n个权限,所述f1至所述fn为恶意应用样本的所有权限和良性应用样本的所有权限。
需要说明的是,这里f1至fn是恶意应用样本的特征集合中所有权限加上良性应用样本的特征集合中所有权限;恶意应用样本的权限和良性应用样本的权限有可能会重复,在f1…..fn中对相同的权限并不合并,会出现多个相同的权限。
步骤s14、基于所述第一特征集合,构建所有应用样本的特征集合,所述所有应用样本包括所述恶意应用样本和所述良性应用样本。
实施步骤s14具体公式为:
建立s={(s1,y1),(s2,y2),…,(si,yi)},其中s为所有应用样本的特征集合,si为第i个应用样本的特征集合;
若第i个应用样本具有s={f1,f2,…,fn}的权限,将si对应s的特征值置为1;
若第i个应用样本不具有s={f1,f2,…,fn}的权限,将si对应s的特征值置为0;
若第i个应用样本为良性应用样本,则所述yi=1;若第i个应用样本为恶意应用样本,则所述yi=-1。
表3是经过上述处理后的数据格式。
表3安卓应用样本特征格式
需要说明的是,表3中标号表示应用的编号,用于区分不同应用,具有某个特征处,或者说具有某个权限时,特征值设置为1,类别为+1对应良性应用样本,类别为-1对应恶意应用样本,以标号1的样本为例,该样本不具有特征1,因此该特征值置为0,该样本具有特征2和特征3,因此该特征值置为1。
步骤s15、建立人工智能网络,利用从所有应用样本的特征集合中随机挑选出的预设数量训练应用样本的特征集合对所述人工智能网络进行训练。
需要说明的是,步骤s15具体采用随机森林算法训练人工智能网络,关于随机森林算法的具体在其他实施例中进行,利用随机森林算法训练的人工智能网络进行测试时准确率较利用朴素贝叶斯算法要高;训练的过程实际上是建立应用样本与权限的函数关系。随机挑选的目的是为了防止人为对样本干预,破坏样本的规律;预设数量是指训练应用样本的数量是预设确定的。
进一步地,所述方法还包括:
利用步骤s15挑选剩余测试应用样本的特征集合对人工智能网络的训练效果进行验证。
需要说明的是,挑选剩余测试应用样本的特征集合对人工智能网络训练效果进行验证,可以为后续对人工智能网络进行调整,以及选择不同算法来进行人工智能网络训练提供数据依据;挑选剩余测试应用样本的特征集合是指所有应用样本的特征集合挑选预设数量训练应用样本的特征集合后剩余下来的测试应用样本的特征集合。
步骤s16、获取待测应用样本的特征集合,利用训练过的人工智能网络对待测应用样本进行检测,检测所述待测应用样本是否为恶意应用样本。
本步骤的目的就是为了实现本发明的目标,检测待测应用样本是否为恶意应用样本,检测恶意应用样本的人工智能网络可以通过待测应用样本的特征集合,非常快速地判断待测应用样本是否为恶意应用样本。
如图2所示,本发明提供一种随机森林算法训练人工智能网络的方法,所述方法包括:
步骤s21、创建随机向量。
需要说明的是,创建随机向量的方法具体为:随机森林回归依据自助法重采样技术,通过从原始训练样本集s中随机有放回的重复选取k个样本大小为
步骤s22、使用随机向量建立多决策树。
需要说明的是,具体地根据k个子样本的特征集合建立k颗分类树。
步骤s23、k棵分类树一起组成具有分类回归能力的随机森林。
需要说明的是,测试样本的输出结果取决于k棵分类树每种分类结果比例的大小。随机森林回归本质上是决策树回归算法的改进,每棵决策树由一个独立抽取的样本子集合建立,并且每棵决策树具有相同的分布,误差由所有决策树的分类回归能力与它们之间的相关性决定。在分裂节点时,随机选择特征并比较不同特征下分裂误差,选择误差最小的特征作为节点分裂特征。一棵决策树的分类回归能力有限,但随机产生大量决策树后,测试样本可以通过每一个树的分类回归结果统计后选择比例最大的结果作为输出值。
利用朴素贝叶斯算法、knn以及随机森林算法训练的人工智能网络,训练的效果见下表4。
表4不同机器学习方法训练效果表
参考表4的训练效果,随机森林算法的准确率、真正率和真负率都要高于其他两种算法,因此选用随机森林算法有利于提高恶意应用检测准确程度。
如图3所示,本发明提供一种安卓系统恶意应用检测系统,所述系统包括:
获取单元31,用于获取多个恶意应用样本和多个良性应用样本;
处理单元32,用于分别对所述多个恶意应用样本和所述多个良性应用样本进行处理,得到所述恶意应用样本的特征集合和所述良性应用样本的特征集合;
第一运算单元33,用于将所述恶意应用样本的特征集合和所述良性应用样本的特征集合进行随机混合,得到第一特征集合;
第二运算单元34,用于基于所述第一特征集合,构建所有应用样本的特征集合,所述所有应用样本包括所述恶意应用样本和所述良性应用样本;
创建单元35,用于建立人工智能网络,利用从所有应用样本的特征集合中随机挑选出的预设数量训练应用样本的特征集合对所述人工智能网络进行训练;
检测单元36,获取待测应用样本的特征集合,用于利用训练过的人工智能网络对待测应用样本进行检测,检测所述待测应用样本是否为恶意应用样本。
进一步地,所述处理单元32具体用于:
将每个恶意应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取每个恶意应用样本的权限组,所述权限组包括至少一个权限,所述恶意应用样本的所有权限构成了所述恶意应用样本的特征集合;
将每个良性应用样本的manifest.xml文件中声明的变量为起始搜索点,建立对应的函数调用图,并依据构建的psout提供的应用程序接口和权限映射库对应关系,获取良性应用样本的权限组,所述权限组包括至少一个权限,所述良性应用样本的所有权限构成了所述良性应用样本的特征集合。
进一步地,所述第一运算单元33具体用于:
建立s={f1,f2,…,fn},其中s为第一特征集合,fn为第n个权限,所述f1至所述fn为恶意应用样本的所有权限和良性应用样本的所有权限。
进一步地,所述第二运算单元34具体用于:
建立s={(s1,y1),(s2,y2),…,(si,yi)},其中s为所有应用样本的特征集合,si为第i个应用样本的特征集合;
若第i个应用样本具有s={f1,f2,…,fn}的特征,将si对应s的特征值置为1;
若第i个应用样本不具有s={f1,f2,…,fn}的特征,将si对应s的特征值置为0;
若第i个应用样本为良性应用样本,则所述yi=1;若第i个应用样本为恶意应用样本,则所述yi=-1。
实施本发明,具有如下有益效果:
本发明通过获取良性应用样本的权限和恶性应用样本的权限,对良性应用样本的权限和恶性应用样本的权限对人工智能网络进行训练,使用训练后的人工智能网络识别恶意应用样本,解决了现有技术识别速度慢、代价高的问题。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。