首页> 中国专利> 基于贝叶斯网络的Android恶意行为检测方法

基于贝叶斯网络的Android恶意行为检测方法

摘要

本发明公开了基于贝叶斯网络的Android恶意行为检测方法。具体过程为:步骤一:对Android应用训练样本进行静态特征提取;步骤二:进行特征预处理,采用卡方统计的特征选择方法,计算特征和类别之间的关联程度;步骤三:构建基于贝叶斯网络分类算法的Android软件恶意行为检测模型;步骤四:将待测APK提取的特征输入到训练好的贝叶斯网络病毒检测模型中,计算出所属类别的后验概率;步骤五:步骤四中得到两个数据,分别为待测APK提取的特征属于病毒类和正常类的后验概率,通过比较选择后验概率大的类别作为该应用的分类结果。本发明能够有效的检测Android恶意应用,同时在一定程度上降低了贝叶斯网络的学习时间。

著录项

  • 公开/公告号CN105740712A

    专利类型发明专利

  • 公开/公告日2016-07-06

    原文格式PDF

  • 申请/专利权人 哈尔滨工程大学;

    申请/专利号CN201610130821.6

  • 申请日2016-03-09

  • 分类号G06F21/56(20130101);

  • 代理机构

  • 代理人

  • 地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室

  • 入库时间 2023-06-19 00:02:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-24

    授权

    授权

  • 2016-08-03

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20160309

    实质审查的生效

  • 2016-07-06

    公开

    公开

说明书

技术领域

本发明属于Android恶意行为检测领域,尤其涉及一种基于贝叶斯网络的Android恶意行 为检测方法。

背景技术

近几年移动终端技术发展十分迅速,功能也越来越强大,移动智能终端设备在人们的生 活中扮演着越来越重要的角色,各种移动智能终端设备的数量也呈现爆炸式的增长。现在的 移动终端主要采用的智能操作系统有Android、IOS、WindowsPhone等。由于Android是一 个开源系统,所以自推出以来Android系统很快成为各大手机厂商的预装系统。但与此同时, Android系统的恶意软件数量也呈现快速增长的态势,其中恶意扣费、窃取隐私、资源消耗是 Android软件的主要恶意行为。现在应用市场每天都有大量的应用需要通过审核上架,但目前 仍没有有效的检测方法。

在中国地区,Android恶意软件的传播途径主要通过第三方应用市场、短信、社交网络、 系统ROM等方式。而很多应用市场并没有严格的安全标准和检测手段,这便为Androd恶意 软件的传播提供了温床。

Android平台病毒程序的检测方法分为两种:静态分析和动态分析,目前常用的恶意行为 检测方法有以下几种:

1)特征码扫描法。它是静态分析方法,是目前各大安全厂商采用的恶意行为检测方法, 它的主要原理是通过分析病毒的样本,并将提取的病毒样本特征码存入数据库中。在扫描待 检测应用时,提取待检测应用的特征码并与病毒库进行对比,如果病毒库中存在待检测应用 的特征码,则判断为病毒。

2)基于程序行为特征的检测技术。它是动态分析方法,是一种新型的病毒检测方法,主 要通过监控程序运行期间的行为特征来判别恶意程序。通常用来进行主动防御,避免程序运 行期间给用户带来损失的先验行为。

3)启发式扫描技术。它是静态方法,通过分析病毒样本获得恶意行为的统计信息等先验 知识,并将其用于检测未知恶意程序。恶意程序通常有类似的行为特征,通过分析恶意程序 的多种指令序列的组合来识别恶意程序。如果发现应用中包含类似的行为规则,则判断为病 毒。

通过对不同检测技术的分析和对比,静态检测技术是指应用程序的静态特征,它在运行 期间是不会改变的,同时也能够表达程序在运行期间的行为描述。其中挖掘各种信息之间潜 在的关系对检测Android应用的恶意行为有非常重要的意义。机器学习是数据挖局领域的一 个重要分支,将机器学习的技术用于Android恶意行为的检测是研究的一个热点问题。

由于目前Android平台的安全局势和日益增长的病毒数量,给用户带来了严重的威胁,研 制出一种安全、高效的检测方法是很有必要的。在Android应用上架前对APK进行病毒程序 的静态分析,可以有效的阻止Android病毒应用的传播。

发明内容

本发明的目的是提供一种检测率高的,基于贝叶斯网络的Android恶意行为检测方法。

基于贝叶斯网络的Android恶意行为检测方法,包括以下步骤,

步骤一:对Android应用训练样本进行静态特征提取;

步骤二:对步骤一中提取的特征进行特征预处理,采用卡方统计的特征选择方法,计算 特征和类别之间的关联程度;

步骤三:构建基于贝叶斯网络分类算法的Android软件恶意行为检测模型;

步骤四:将待测APK提取的特征输入到训练好的贝叶斯网络病毒检测模型中,计算出所 属类别的后验概率;

步骤五:步骤四中得到两个数据,分别为待测APK提取的特征属于病毒类和正常类的后 验概率,通过比较选择后验概率大的类别作为该应用的分类结果。

本发明基于贝叶斯网络的Android恶意行为检测方法,还可以包括:

1、静态特征提取是指:将apktool作为反编译工具,提取应用申请权限的信息、应用层 API调用的信息、组件声明的信息以及应用的字符串信息,特征提取模块使用的编程语言是 python。

2、Android软件恶意行为检测模型的构建方法为:

1)首先根据样本获取特征的先验概率,利用改进的关联规则算法MApriori挖掘特征之间 的依赖关系;

2)学习贝叶斯网络分类器的模型,基于MApriori算法的贝叶斯网络学习主要分为两个阶 段:结构学习和参数学习。

3、关联规则算法MApriori为:

首先计算特征集合的频繁二项集,然后利用频繁二项集获得两个特征之间的关联规则。

4、结构学习为:

首先根据MApriori算法获得了特征之间存在依赖关系的边的集合,通过最好局部优先搜 索的策略,进行贝叶斯网络结构的学习。

5、参数学习为:

利用最小描述长度全局打分函数,即利用公式

其中b和n是常数,ki是代表Xi节点的父节点数量,si是Xi的取值数量。

6、贝叶斯网络分类器的模型构建方法为:

1)构造图G(V,E),V=Ω,

2)在R选择一条有向弧且满足:①在图中不产生回路;②在R的所有有向边 中使得MDL得最小的打分,将从R中删除,打分值存在变量S 中;

3)重复步骤2,直到R为或者打分值S已为最小值;

其中V表示频繁一项集的集合,并将其初始化为所有频繁一项集的集合,E为边的集合, 并初始化为空集,R为MApriori算法获得的规则的集合。

有益效果:

在现有关联规则的算法Apriori中,挖掘的频繁项集可能包含多个特征的项,但在贝叶斯 网络的构建中,需要表达的是两个特征之间的依赖关系,因此本发明基于Apriori算法提出了 MApriori算法。MApriori算法只计算特征集合的频繁二项集,然后利用频繁二项集获得两个 特征之间的关联规则。将关联规则应用于贝叶斯网络中,一方面可以根据关联规则去除冗余 的特征,另一方面可以根据关联规则获得的频繁项集来预测不同属性组合对分类的影响。

贝叶斯网络以有向无环图的结构来表达特征之间的因果依赖关系,它突破特征之间相互 独立的限制,能够使用更加广泛的特征用于网络的构建,因此对于样本中某个特征缺失的情 况下仍然能有很好的检测率,对于不确定的问题仍有很好的推理能力。

附图说明

图1为机器学习流程图;

图2为Android应用恶意行为检测流程图;

图3为贝叶斯网络结构图。

具体实施方式

下面将结合附图对本发明做进一步详细说明

本发明使用静态分析的方法对Android平台病毒程序进行检测,静态分析方式主要通过 反编译技术获取APK的静态行为特征,并不实际的运行应用程序。本发明将通过静态分析的 方法提取Android软件训练样本的特征,然后通过数据挖掘技术挖掘各种信息之间潜在的关 系,通过对样本数据的分析,自动发现样本数据中存在的规律,利用学习到的规律对未知的 数据进行预测。机器学习是数据挖局领域的一个重要分支,机器学习的目的就是根据已有的 样本数据建立一个具有较好的检测病毒程序的模型。本发明的目的就是建立好的Android恶 意应用的分类模型,尽可能的提高Android恶意程序的检测率,降低恶意程序的漏报率和误 报率。

机器学习的步骤主要包括特征的提取、特征的预处理、分类器的训练、结果预测等步骤, 机器学习流程图如附图1所示。而贝叶斯分类器就属于机器学习的一种,且具有良好的数学 理论基础。所以本发明将贝叶斯分类器应用于Android病毒程序的检测中。

检测Android未知软件的方法流程如附图2所示。从附图2可以看出,基于机器学习的 Android未知软件的检测主要包括三个模块:静态行为特征的获取、特征的预处理和分类器模 型的构建。本发明重点对分类器模型的构建进行了改进,将特征预处理阶段输出的特征向量 输入到基于贝叶斯定理的贝叶斯分类器中,预测应用所属的类别并输出分类的结果。

贝叶斯分类的基本原理是利用样本的先验信息估计它的后验概率。贝叶斯定理中的先验 概率是通过分析样本的数据而得出的某个事件发生的概率。后验概率是给定一个待测样本, 且这个待测样本属于某一个类别的概率。在本发明中此处指的某一类别分为两类:病毒类和 正常类。

本发明针对贝叶斯网络分类算法进行改进的原因如下:

1)贝叶斯网络以有向无环的图形的结构来表达特征之间的因果依赖关系,既考虑了特征 之间的独立关系,也考虑了特征之间的因果关系,更加全面的表现了特征之间的联系,同时 利用条件概率表进行定量的分析,能够根据给出的特征进行有效的因果推理。

2)贝叶斯网络分类算法突破特征之间相互独立的限制,能够使用更加广泛的特征用于网 络的构建,因此对于样本中某个特征缺失的情况下仍然能有很好的检测率,对于不确定的问 题仍有很好的推理能力。

3)贝叶斯网络的结构和条件概率表都是通过样本的先验知识获得的,先验的知识对与未 知类型的应用有很好的预测能力,贝叶斯网络能够充分的利用先验的知识用于未知类型的预 测。

附图3为常见的贝叶斯网络结构图,其中的Xi代表特征节点,C代表类别节点,特征之 间没有边相连接,代表特征之间是条件独立的。对于图中的任意节点Xi,当Xi的父节点集 合一定时,Xi与它的所有非子孙节点条件独立。贝叶斯网络分类器利用联合概率进行分类, 能够充分的利用特征之间存在的依赖关系,从而在一定程度上提高了分类器的分类准确度。

贝叶斯网络模型的训练需要具有完备的样本集合,它的主要步骤如下:

步骤一:根据样本获取特征的先验概率;

步骤二:学习贝叶斯网络分类器的模型;

步骤三:通过将待测APK提取的特征输入到训练好的贝叶斯网络病毒检测模型中,推理 计算出所属类别的后验概率;

步骤四:步骤三中得到两个数据,分别为待测APK提取的特征属于病毒类和正常类的后 验概率,通过比较选择后验概率大的类别作为该应用的分类结果。

在本发明中建立的模型检测结果分为两类:病毒类和正常类。

Android平台是最近几年刚出现的移动系统,现已成为市场占有率最高的终端系统,而且 它的智能终端功能也与PC越来越接近。但Android平台的病毒检测技术相比于PC还不够成 熟,同时由于Android病毒应用的更迭周期较短,传统的特征码检测技术已不能适应移动平 台的发展,且该方法对未知类型的病毒和变种程序病毒的检测率较低。本发明正是针对这一 问题,研究将机器学习用于检测Android平台的病毒程序。本发明提出了将贝叶斯网络分类 算法用于Android软件的恶意行为检测。Android软件恶意行为检测的主要步骤如下:

步骤一:对Android软件训练样本进行静态特征提取;

步骤二:对步骤一中提取的特征进行特征预处理。由于提取的APK文件静态特征数量过 多,为了提取有效的特征用于贝叶斯网络(BN)的分类,提高模型的检测率分类影响大的特 征,需要进行特征预处理。

步骤三:提取待检测APK特征,输入到本发明提出的基于贝叶斯网络分类算法的Android 软件恶意行为检测模型中进行结果预测。它是通过对样本数据的分析,自动发现样本数据中 存在的规律,利用学习到的规律对未知的数据进行预测。

由于实现Android应用的恶意行为需要不同的特征组合,而且不同的特征之间存在一定的 因果依赖关系,为了充分表达特征之间存在的依赖关系,采用贝叶斯网络分类算法有利于提 高Android恶意程序的检测率,本发明将改进的关联规则算法用于贝叶斯网络结构的构建, 根据Noisy-OR模型完成条件概率表的学习,最终将模型用于检测Android软件存在的恶意行 为。

一种基于贝叶斯网络的Android恶意行为检测方法,主要包括如下几个步骤:

步骤一:对Android应用训练样本进行静态特征提取;

步骤二:对步骤一中提取的特征进行特征预处理,采用卡方统计的特征选择方法,计算 特征和类别之间的关联程度;

步骤三:构建基于贝叶斯网络分类算法的Android软件恶意行为检测模型;

步骤四:将待测APK提取的特征输入到训练好的贝叶斯网络病毒检测模型中,计算出所 属类别的后验概率;

步骤五:步骤四中得到两个数据,分别为待测APK提取的特征属于病毒类和正常类的后 验概率,通过比较选择后验概率大的类别作为该应用的分类结果。

在本发明中建立的模型检测结果分为两类:病毒类和正常类。

步骤一中所述的静态特征提取是指:将apktool作为反编译工具,提取应用申请权限的信 息、应用层API调用的信息、组件声明的信息以及应用的字符串信息等,特征提取模块使用 的编程语言是python。

步骤三中所述的基于贝叶斯网络分类算法的Android软件恶意行为检测模型构建方法主 要步骤为:

1)首先根据样本获取特征的先验概率,利用改进的关联规则算法MApriori挖掘特征之间 的依赖关系。

2)学习贝叶斯网络分类器的模型,基于MApriori算法的贝叶斯网络学习主要分为两个阶 段:结构学习和参数学习。

将待测APK提取的特征输入到训练好的贝叶斯网络病毒检测模型中,通过对样本数据的 分析,自动发现样本数据中存在的规律,利用学习到的规律对未知的数据进行预测。

上述步骤1)中所述的改进的关联规则算法MApriori表述为:首先计算特征集合的频繁 二项集,然后利用频繁二项集获得两个特征之间的关联规则。

步骤2)中所述的结构学习表述为:首先根据MApriori算法获得了特征之间存在依赖关 系的边的集合,通过最好局部优先搜索的策略,进行贝叶斯网络结构的学习。

步骤2)中所述的参数学习表述为:利用最小描述长度(MDL)全局打分函数,即利用 公式(1)进行网络结构的学习,其中公式(1)中b和n是常数,ki是代表Xi节点的父节点数量, si是Xi的取值数量。

MDL(G|D)=Σi=1n{[kilog2n+b(si-1)(ΠjFXisj)]-NW(Xi,FXi)}---(1)

步骤2)中所述的贝叶斯网络分类器的模型构建如下,其中V表示频繁一项集的集合, 并将其初始化为所有频繁一项集的集合,E为边的集合,并初始化为空集,R为MApriori算 法获得的规则的集合。

1)构造图G(V,E),V=Ω,

2)在R选择一条有向弧且满足:①在图中不产生回路;②在R的所有有向边 中使得MDL得最小的打分。将从R中删除,打分值存在变量S 中。

3)重复步骤2,直到R为或者打分值S已为最小值。

基于机器学习的Android未知软件的检测主要包括三个模块:静态行为特征的获取、特 征的预处理和分类器模型的构建。下面对静态行为特征的获取和特征的预处理做简单介绍, 着重介绍分类器模型构建的实施步骤。

特征提取模块主要从APK中提取能够代表恶意行为的静态特征,提取的特征送入特征预 处理模块,通过特征选择方法从众多的特征选择有代表性的特征,去除不相关的特征从而缩 减特征的数量,将经过预处理的特征向量送入构建的贝叶斯网络分类器中,预测应用所属的 类别并输出分类的结果。

贝叶斯网络模型的主要步骤如下:

步骤一:根据样本获取特征的先验概率;

步骤二:学习贝叶斯网络分类器的模型;

步骤三:通过将待测APK提取的特征输入到训练好的贝叶斯网络病毒检测模型中,推理 计算出所属类别的后验概率;

步骤四:步骤三中得到两个数据,分别为待测APK提取的特征属于病毒类和正常类的后 验概率,通过比较选择后验概率大的类别作为该应用的分类结果(病毒类或正常类)。

步骤一的具体实施如下:

步骤一的关键是对Android应用训练样本进行特征提取和特征预处理,然后挖掘特征之间 的关联规则,得到在众多的数据特征中特征之间潜在的依赖关系,从无规则的数据中发现有 意义的信息。通过样本的数据分析得出某些特征的出现与发生恶意应用软件的对应关系。然 后通过分析样本获取这些特征的先验概率来估计出它的后验概率。

本发明利用关联规则算法挖掘的特征之间的依赖关系来表达特征之间的依赖关系。关联 规则是形如的蕴含式,其中X是前件,Y是后件。如果存在关联规则则B 特征在某种程度上依赖于A特征而存在。

关联规则生成算法MApriori的具体描述如下:

输入:频繁二项集L2最小置信度:Min_conf最小提升度:Min_lift

输出:关联规则集合R

1)输入频繁二项集L2,计算关联规则的提升度,如果的提升度大于Min_lift 则执行步骤2,否则执行步骤3;

2)计算的置信度,如果的置信度大于Min_conf,则说明为强关联规则, 将其加入到关联规则集合R中,否则执行步骤3;

3)计算关联规则的提升度,如果的提升度大于Min_lift则执行步骤4,否 则执行步骤1;

4)计算的置信度,如果的置信度大于Min_conf,则说明为强关联规则, 将其加入到关联规则集合R中,否则执行步骤1。

规则的置信度(Confidence)是指在样本集D中,同时包含特征X和Y的样本在 只包含X特征的样本中所占的比例,即

规则的提升度(Lift),又称为兴趣度,其计算公式如下所示:

Lift(XY)=P(X,Y)P(X)P(Y)---(3)

其中P(X)表示发生X事件的概率,P(Y)表示发生Y事件的概率,P(X,Y)表示事件X发生 和事件Y发生。在提升度的计算中,如果X和Y是独立的,则的提升度为1,如果 不为1,则代表X与Y之间存在依赖性,如果大于1,则表示X的出现导致Y 的出现,如果小于1,则表示X的出现导致Y的不出现。

本发明通过关联规则不仅能够预测APK文件特征和类别之间的组合,还能够预测特征之 间的关系组合,关联规则主要用于发现项目集合中的频繁项集和关联特性,将关联规则应用 于贝叶斯网络中,一方面可以根据关联规则去除冗余的特征,另一方面可以根据关联规则获 得的频繁项集来预测不同属性组合对分类的影响。关联规则的目的就是挖掘出样本集合中大 于最小提升度和大于最小置信度阀值的关联规则。

步骤二的具体实施如下:

本发明基于MApriori算法的贝叶斯网络学习主要分为两个阶段:结构学习和参数学习。 结构的学习形成符合实际逻辑的网络结构,用图形化的方式表达特征之间的依赖关系;参数 学习主要是条件概率表的学习,发达特征之间的分布函数。

贝叶斯网络的结构学习在实施时,首先根据关联规则挖掘特征之间的依赖关系,然后根 据依赖关系构建贝叶斯分类器的网络结构。在MApriori算法中,获得了特征之间存在依赖关 系的边的集合,通过最好局部优先搜索的策略,进行贝叶斯网络结构的学习。

贝叶斯网络的参数学习在实施时,采用最小描述长度(MDL)全局打分函数进行网络结 构的学习,对网络结构G的全局打分函数如公式如下所示,MDL打分值越小的网络结构越 好。

MDL(G|D)=Σi=1n{[kilog2n+b(si-1)(ΠjFXisj)]-NW(Xi,FXi)}---(4)

其中b和n是常数,ki是代表Xi节点的父节点数量,si是Xi的取值数量。

其中V表示频繁一项集的集合,并将其初始化为所有频繁一项集的集合,E为边的集合, 并初始化为空集,R为MApriori算法获得的规则的集合。本发明产生贝叶斯网络结构的过程 如下:

1)构造图G(V,E),V=Ω,

2)在R选择一条有向弧且满足:①在图中不产生回路;②在R的所有有向边 中使得MDL得最小的打分。将从R中删除,打分值存在变量S 中。

3)重复步骤2,直到R为或者打分值S已为最小值。

至此贝叶斯网络结构已经构建完成,根据MDL打分函数对贝叶斯分类器的网络结构进行 学习,根据先验知识确定存在的弧的数量和方向,得到近似真实的网络结构,同时通过对关 联规则置信度的设定,大大的减少了搜索的空间。最后进行贝叶斯网络参数的学习,完成基 于贝叶斯网络的恶意行为检测模型的构建。

步骤三的具体实施如下:

贝叶斯概率为后验概率,根据已知的样本统计的数据为先验概率,贝叶斯概率就是根据 已有的知识计算后验概率的大小来发现事件发生的可能性。

在Android恶意行为的检测中,利用贝叶斯定理,如果C为类别的集合,在本文中的应 用中类别C为{Benign(正常应用),Malware(恶意应用)}两个类别,A为我们提取的特征 的向量表示,通过计算P(Benign|A)和P(Malware|A)的大小进行分类,分别代表在特征集合 A的条件下,待分类应用属于某一个类别的可能性。将待测应用分类为概率两者中大的的那 一个类别,计算公式如下所示:

P(C|A)=P(C)Πi=1nP(Ai|C)Πi=1nP(Ai)---(5)

由公式可知,P(Aj)可根据所搜集的样本的统计数据计算出来,公式中的分母是每个特征 在样本空间中出现的概率,在特定的样本中,P(Aj)是根据已有的样本获取的先验知识,而分 子的大小是一个全概率的公式,P(Aj|C)为属于类别C时Ai发生的条件概率,通过这个公式求 出P(Benign|A)和P(Malware|A)的大小,并选择大的值为分类的结果。

本发明使用的测试环境主要采用Python编程语言实现恶意行为检测的框架,负责特征的 提取和预处理。使用weka开源平台提供的接口实现本发明提出的方法并验证的方法效果。

1)试验方法:本次实验从AndroidMalwareGenomeProject项目获取1260个恶意样本,并 从Android市场下载通过Virustotal检测的1200个正常应用,采用6折交叉验证的方法。本发明 提出的构建贝叶斯网络分类器的模型用于区分正常应用和恶意应用,实验效果的评价标准主 要有:检测率、误报率和漏报率。检测率是指被正确分类的恶意应用在样本集中恶意应用所 占的比例,误报率是指正常的应用被分类为恶意应用的比例,漏报率是指恶意应用被分类为 正常应用的比例。

2)实验结果:通过实验验证卡方统计的特征提取方法检测效果最好,所以本发明的实验 均采用卡方统计的方法进行选取特征。本发明主要通过提取APK的静态特征检测潜在的恶意 行为,从两个方面对本发明提出的方法进行验证:(1)不同特征的数量构建的模型的检测效 果,(2)本文提出的恶意行为检测模型对检测恶意行为的有效性。

通过提取Android应用的静态特征,构建检测Android恶意程序的贝叶斯网络分类器,不 同数量的特征形成不同的贝叶斯网络,因此分类的效果也不同。实验结果显示基于改进关联 构建的贝叶斯网络分类模型能够有效的检测Android恶意应用,同时在一定程度上降低了贝 叶斯网络的学习时间。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号