首页 / 专利库 / 软件 / 软件套件 / 软件组件 / 软件代码 / 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统

融合频繁项集与随机森林算法的Android恶意应用检测方法及系统

阅读:1016发布:2020-07-23

专利汇可以提供融合频繁项集与随机森林算法的Android恶意应用检测方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种融合频繁项集(Apriori) 算法 与 随机森林 算法的安卓(Android)恶意检测方法,涉及信息处理技术领域。对Android应用样本进行反编译,根据从各反编译文件中提取权限和函数调用静态特征,以获得样本集中权限之间的关联关系;基于Apriori算法挖掘出恶意样本和正常样本的频繁3-项集,进而结合敏感应用程序编程 接口 (Application Programming Interface,API)函数调用生成特征;采用随机森林分类器实现对特征的学习和分类,从而实现Android恶意应用检测。利用本发明进行Android应用 软件 的恶意检测,系统资源消耗低,且具有非常高的检测准确率。,下面是融合频繁项集与随机森林算法的Android恶意应用检测方法及系统专利的具体信息内容。

1.一种融合频繁项集算法随机森林算法的安卓恶意应用检测方法,其特征在于,包括以下步骤:对安卓Android应用软件进行批量反编译获得样本集,得到应用软件权限和敏感应用程序编程接口API函数静态特征;挖掘权限特征的频繁项集对权限特征作降维处理,得到权限的频繁3-项集,以获得样本集中权限之间的关联关系;挖掘出恶意样本和正常样本的频繁3-项集,分别将恶意样本和正常样本的频繁3-项集其与敏感API函数一起作为特征构建特征集,采用信息增益算法对特征集中的特征属性进行筛选和评分,提取重要特征,构建与之对应的向量空间;采用随机森林分类器对向量空间进行学习和分类检测,对正常样本和恶意样本的向量空间进行正常或恶意的属性标记。
2.根据权利要求1所述方法,其特征在于,特征提取之前使用静态分析工具对应用软件进行反编译,得到包含资源文件res、第三方软件开发包的so文件lib、语法文件smali和应用程序描述文件AndroidManifest.xml中包含所述应用软件的各种资源文件、源代码、和其它静态代码特征。
3.根据权利要求1所述方法,其特征在于,采用编程语言python脚本提取特征,解析AndroidManifest.xml文件中提取申请的所有权限获得权限特征,使用python中的方法函数---os.walk()遍历所有smali文件,根据正则匹配方法提取样本集中所有样本的敏感API函数。
4.根据权利要求1所述方法,其特征在于,挖掘权限特征的频繁3-项集具体包括:分别从恶意样本或正常样本中提取权限构建权限集;挖掘频繁权限集的1-项集:计算权限集中每个权限的支持度S,对不满足最小支持度min_s的频繁1-项集进行剪枝,得到候选集L1,再对L1中的元素进行连接;将连接后的候选集作为新的2-项集,挖掘频繁2-项集:对不满足最小支持度min_s的频繁2-项集进行剪枝,形成新的候选集L2,重复进行,直到得到频繁3-项集。
5.根据权利要求1所述方法,其特征在于,采用信息增益(InformationGain,IG)算法具体包括,根据样本集中正常软件或恶意软件分别出现的概率P(Ci),按照公式:
计算样本集的信息熵H(C),按照公式:
计算第i个特征的条件熵H(Y|Xi),根据公式IGi=H(C)-H(Y|
Xi)计算第i个特征的IG值,IG值越大表明相关程恶意样本和正常样本的频繁3-项集度越大,根据相关程度保留重要特征,将重要特征与系统中每个应用软件进行匹配,分别构建与之对应的向量空间。
6.根据权利要求5所述方法,其特征在于,构建向量空间具体包括,将IG值为0的特征剔除,而将其余值不为0的特征保留作为重要特征,构建包含应用软件样本不同的特征向量(x1,x2,…,xn)的特征集X,调用公式ν:s→{0,1}|X|,根据集合X中的特征向量构建向量空间ν,其中,s表示某个应用软件,ν中每一维与X中某一特征相对应,如果s包含该某一特征,则向量空间ν中与该特征对应的标识值为1,否则为0。
7.一种融合频繁项集算法与随机森林算法的安卓恶意应用检测系统,包括:特征提取模、特征处理模块和随机森林分类算法模块,其特征在于,特征提取模块对经过批量反编译的Android应用软件进行特征提取,得到应用软件权限和敏感API函数静态特征;特征处理模块挖掘权限特征的频繁项集,对权限特征作降维处理,得到权限的频繁3-项集,以获得样本集中权限之间的关联关系,挖掘出恶意样本和正常样本的频繁3-项集,将其与敏感API函数一起作为特征构建特征集,采用信息增益算法对特征集中的特征属性进行筛选和评分,提取重要特征,构建与之对应的向量空间;随机森林分类算法模块对向量空间进行学习和分类检测,采用随机森林分类器对正常样本和恶意样本的向量空间进行正常或恶意的属性标记。
8.根据权利要求7所述的检测系统,其特征在于,使用静态分析工具对应用软件进行反编译,得到包含res、lib、smali和AndroidManifest.xml的文件,文件中包含所述应用软件的各种资源文件、源代码、和其它静态代码特征。
9.根据权利要求7所述的检测系统,其特征在于,采用编程语言python脚本提取特征,解析AndroidManifest.xml文件中提取申请的所有权限获得权限特征,使用os.walk()函数遍历所有smali文件,根据正则匹配方法提取各样本的敏感API函数。
10.根据权利要求7所述的检测系统,其特征在于,挖掘权限特征的频繁3-项集具体包括:分别从恶意样本或正常样本中提取权限构建权限集;挖掘频繁权限集的1-项集:计算权限集中每个权限的支持度S,对不满足最小支持度min_s的频繁1-项集进行剪枝,得到候选集L1,再对L1中的元素进行连接;将连接后的候选集作为新的样本集,挖掘频繁2-项集:对不满足最小支持度min_s的频繁2-项集进行剪枝,形成新的候选集L2,重复进行,直到得到频繁3-项集。
11.根据权利要求7所述的检测系统,其特征在于,采用IG算法具体包括,计算特征的熵值与其条件熵的差值得到该特征的IG值,根据样本集中正常软件或恶意软件分别出现的概率P(Ci),按照公式: 计算样本集的信息熵H(C),按照公式:
计算第i个特征的条件熵H(Y|Xi),根据公式IGi=H(C)-H(Y|
Xi)计算第i个特征的IG值,IG值越大表明相关程恶意样本和正常样本的频繁3-项集度越大,根据相关程度保留重要特征,将重要特征与系统中每个应用软件进行匹配,分别构建与之对应的向量空间。
12.根据权利要求11所述的检测系统,其特征在于,IG值越大表明相关程度越大,根据相关程度保留重要特征,将重要特征与系统中每个应用软件进行匹配,分别构建与之对应的向量空间,构建向量空间具备包括,将IG值为0的特征剔除,而将其余值不为0的特征保留作为重要特征,构建包含应用软件样本不同的特征向量(x1,x2,…,xn)的特征集X,调用公式ν:s→{0,1}|X|,根据集合X中的特征向量构建向量空间ν,其中,s表示某个应用软件,ν中每一维与X中某一特征相对应,如果s包含该某一特征,则向量空间ν中与该特征对应的标识值为1,否则为0。

说明书全文

融合频繁项集与随机森林算法的Android恶意应用检测方法

及系统

技术领域

[0001] 本发明涉及网络安全、信息安全检测领域,具体涉及一种Android恶意应用检测方法。

背景技术

[0002] 安卓(Android)作为目前世界上最流行的智能终端系统,以平台开放、免费等特点在全球范围内得到了广泛的应用。因此,许多恶意代码研究者将攻击目标对准了Android平台。随着技术进步,Android恶意程序的制作成本也越来越低,导致Android恶意软件的数量与日俱增。根据360互联网安全中心发布的数据显示,2017年截获Android平台新增恶意软件样本757.3万个,平均每天新增3.1万个。恶意软件使用挖矿、僵尸网络等多种新技术频繁发起攻击,包括窃取用户个人信息,恶意吸费等流氓行为,给用户带来巨大损失。面对如此泛化的恶意攻击,如何有效实现对Android恶意应用的检测,成为当今Android平台安全的首要问题。
[0003] 目前对Android应用的恶意检测主要分为静态检测和动态检测。静态检测是指在无需运行应用软件,而采用反编译等逆向工程手段,对其源程序进行分析,提取其特征,比如签名、权限等,直接分析特征行为。静态检测技术主要是对应用程序描述文件(AndroidManifest.xml)和语法文件(smali)代码文件进行特征提取。Guo等人通过解析AndroidManifest.xml和smali代码文件中的信息标签,提取应用的类、权限、组件、签名、各种被处理的数据和启动信息等。Rashidi B等人将权限和应用程序编程接口(Application Programming Interface,API)函数调用作为特征集合,采用支持向量机(Support Vector Machine,SVM)和K-近邻(K-Nearest Neighbor,KNN)算法对恶意应用进行检测,但存在许多误判。机器学习对于Android应用软件的检测可实现去人工化,提高分析的效率,但依赖提取的应用特征。
[0004] Android恶意应用的动态检测指在应用软件运行过程中,通过注入、钩子(HOOK)等技术获取该应用的特征,但缺陷是需要软件运行,系统资源消耗过大。在动态检测研究方面,Mahindru等人使用追踪器(Strace)采集应用软件行为数据,并将其传至分析服务端,利用分类器训练这些行为样本,最后使用K-近邻算法判断应用是否含有恶意行为。Singh L等人采用API Hook技术,在Android平台上对敏感API进行Hook,一旦系统或应用对特定的API调用时,可截获调用函数,将其重新定向到代理函数以获取详细信息,即可获取行为信息。

发明内容

[0005] 本发明所要解决的技术问题是,针对现有技术的上述缺点,通过调用机器学习算法对Android应用进行学习和检测,降低Android恶意应用检测复杂度,节约系统资源消耗,在解决高维特征和自动化分类检测问题上,进一步提高了对恶意软件的检测准确率。
[0006] 本发明解决上述技术问题的技术方案是,提出一种融合频繁项集(Apriori)算法和随机森林算法的安卓恶意应用检测方法,包括以下步骤:对Android应用软件进行批量反编译,得到应用软件权限和敏感API函数静态特征;挖掘权限特征的频繁项集对权限特征作降维处理,得到权限的频繁3-项集,以获得样本集中权限之间的关联关系;挖掘出恶意样本和正常样本的频繁3-项集,将其与敏感API函数一起作为特征构建特征集,采用信息增益算法对特征集中的特征属性进行筛选和评分,提取重要特征,构建与之对应的向量空间;采用随机森林算法对向量空间进行学习和分类检测,对正常样本和恶意样本的向量空间进行正常或恶意的属性标记。
[0007] 本发明进一步包括,特征提取之前使用静态分析工具对应用软件进行反编译,得到包含资源文件(res)、第三方软件开发包的so文件(lib)、smali和AndroidManifest.xml的文件,文件中包含所述应用软件的各种资源文件、源代码、和其它静态代码特征。
[0008] 本发明进一步包括,采用编程语言(python)脚本提取特征,解析AndroidManifest.xml等扩展标记语言文件中提取申请的所有权限获得权限特征,使用python中的方法函数--os.walk()遍历所有smali文件,根据正则匹配方法提取各样本的敏感API函数。
[0009] 本发明进一步包括,挖掘权限特征的频繁3-项集具体包括:分别从恶意样本和正常样本中提取权限构建权限集;挖掘频繁权限集的1-项集:计算权限集中每个权限的支持度S,对不满足最小支持度min_s的频繁1-项集进行剪枝,得到候选集L1,再对L1中的元素进行连接;将连接后的候选集作为新的样本集,挖掘频繁2-项集:对不满足最小支持度min_s的频繁2-项集进行剪枝,形成新的候选集L2,重复进行,直到得到频繁3-项集。
[0010] 本发明进一步包括,采用信息增益(information gain,IG)算法具体包括,计算特征的熵值与其条件熵的差值得到该特征的IG值,IG值越大表明相关程度越大,根据相关程度保留重要特征,将重要特征与系统中每个应用软件进行匹配,分别构建与之对应的向量空间。构建向量空间具体包括,构建包含应用软件不同的特征向量(x1,x2,…,xn)的特征集X,调用公式ν:s→{0,1}|X|,根据集合X中的特征向量构建向量空间ν,其中,s表示某个应用软件,ν中每一维与X中某一特征相对应,如果s包含该某一特征,则向量空间ν中与该特征对应的标识值为1,否则为0。
[0011] 本发明还提出一种融合Apriori算法与随机森林算法的Android恶意应用检测系统,包括:特征提取模、特征处理模块和随机森林分类算法模块,特征提取模块对经过批量反编译的Android应用软件进行特征提取,得到应用软件权限和敏感API函数静态特征;特征处理模块挖掘权限特征的频繁项集,对权限特征作降维处理,得到权限的频繁3-项集,以获得样本集中权限之间的关联关系,挖掘出恶意样本和正常样本的频繁3-项集,将其与敏感API函数一起作为特征构建特征集,采用信息增益算法对特征集中的特征属性进行筛选和评分,提取重要特征,构建与之对应的向量空间;随机森林分类算法模块对向量空间进行学习和分类检测,对正常样本和恶意样本的向量空间进行正常或恶意的属性标记。
[0012] 本发明采用静态检测方式提取应用数据特征,进而对数据特征采用Apriori算法挖掘出正常和恶意软件中权限的频繁3-项集,再融合敏感API调用函数,采用随机森林创建分类器对其学习和分类。进一步,采用IG算法通过计算特征的熵值与其条件熵的差值得到该特征的IG值,保留重要特征,利用匹配算法对系统中每个应用软件,分别构建与之对应的向量空间。本发明将高维权限特征进行挖掘其频繁3-项集,在系统资源消耗上更少。附图说明
[0013] 图1为融合Apriori算法和随机森林算法的Android恶意应用检测模型。

具体实施方式

[0014] 下面将结合附图对本发明的具体实施过程做详细说明。
[0015] 图1所示为本发明应用检测系统模型示意图。为了实现对安卓系统恶意应用的检测,本发明融合Apriori算法挖掘频繁3-项集与随机森林算法分类,提出一种Android恶意应用检测系统,该模型包括,特征提取模块、特征处理模块和随机森林分类算法模块。
[0016] 首先将收集到的正常软件和恶意软件的样本集中批量进行反编译,从反编译后的应用程序描述文件AndroidManifest.xml和语法文件smali文件中提取应用程序申请的权限(Android permission)和敏感应用程序编程接口API函数调用,然后针对权限特征挖掘权限的频繁3-项集序列,找到在正常样本和恶意样本中权限之间的组合关系,并结合API敏感函数作为学习特征,采用IG算法对其进行优化特征选择,进一步,将保留的重要特征嵌入特征向量形成向量空间,最后使用随机森林算法对其进行训练和分类,以检测Android恶意应用。
[0017] 以下针对各部分作具体说明。
[0018] (1)特征提取模块,利用编程语言Python脚本批量编译样本集,提取反编译后的AndroidManifest.xml和smali文件的特征,提取的特征主要包括权限特征和敏感API函数。对于权限特征提取,从申请某个使用权限中提取对应的权限特征,如解析
AndroidManifest.xml文件中提取申请的所有权限。由于当用户使用系统中的某一功能或访问某些敏感数据时,都要申请使用权限,例如AndroidManifest.xml文件中申请的权限----android.permission.READ_PHONE_STATE,其表示申请读取电话状态权限;对于敏感API函数,每个smali文件代表了一个编程语言(Java)类,包含了该应用调用的各种系统应用接口函数,使用python中的方法---os.walk()函数遍历所有smali文件,从该文件中以调用函数(invoke)开头,根据字符串匹配遍历所有出现的API函数,从所有函数中提取各样本的敏感API函数。通过遍历所有smali文件提取的各样本的敏感API函数,就可相应地获得应用软件潜在的恶意行为。由于smali作为安卓虚拟机(Dalvik)的字节码文件,每个smali文件代表了一个Java类,包含了该应用调用的各种系统应用接口函数;由于恶意软件产生的恶意行为必须调用相应的API函数。因此,将样本集中所有调用的敏感API函数作为随机森林算法的学习特征,经训练后以检测恶意应用。
[0019] 在对每一个样本软件进行特征提取前,必须对样本集进行反编译。可采用反编译工具Apktool将带有.apk后缀的文件进行反编译,以得到包含资源文件(res)、第三方sdk的so文件(lib)、smali和AndroidManifest.xml等文件,此类文件包含各种资源文件、源代码、和其它静态特征。
[0020] 通常恶意软件在产生恶意行为前,会在权限方面申请一些危险权限组合,这些组合会相互依靠而产生恶意行为。因此,恶意软件不仅仅申请单一的危险类权限,而会申请危险类权限组合,例如在恶意样本中,申请权限组合通常为READ_SMS(读取短信)、READ_PHONE_STATE(读取手机状态)、WRITE_SMS(编辑短信)三项,可执行读取用户隐私再发送到其他地方等恶意操作,而正常软件中鲜有这种权限组合,根据权限组合中不同危险权限的互相配合存在潜在的恶意行为,故可判断其为恶意软件。
[0021] Apriori算法是Agrawal等人提出的挖掘布尔关联规则频繁项集的算法。Apriori算法挖掘权限的频繁3-项集。获得了大量的权限特征和敏感API函数。然而,通常获得的权限特征维度非常大,计算复杂度高,因此,采用基于Apriori算法挖掘权限特征的频繁项集对权限特征维度进行降维处理,以得到权限的频繁3-项集。挖掘权限特征的频繁3-项集,以获得样本集中权限之间的关联关系,具体其步骤描述如下。
[0022] 基于Apriori算法挖掘权限的频繁3-项集,具体可为,从所有样本中提取该应用申请的正常软件样本权限集P和恶意样本权限集M,其中,P={p1,p2,…,pn}代表正常软件样本的权限集,表示全部正常软件样本所申请的n个权限,M={m1,m2,…,mx}代表恶意样本的权限集,表示全部恶意样本中所申请的x个权限。分别针对正常样本和恶意样本的权限集挖掘频繁3-项集。具体可采用如下方法:
[0023] 对样本权限的权限集挖掘频繁1-项集:计算样本权限集中每个权限的支持度S,表示该权限在所有样本集中出现的概率,对不满足最小支持度min_s的频繁1-项集进行剪枝,以得到满足条件的集合,并将其作为候选集L1,再对L1中的元素进行连接;然后将连接后的候选集作为新的样本集,此时包含所有2-项集,再从新的样本集中挖掘频繁2-项集,对不满足最小支持度min_s的频繁2-项集进行剪枝,形成新的候选集L2,按照上述步骤,重复进行,直到得到样本权限集的频繁3-项集。
[0024] 连接:在某一频繁n-项集集合中,从该集合的第一项(如为第i项)开始向下寻找前n-1项与其相同的项(如第j项),则将i项中所有元素与j项的第n个元素连接成第n+1项集。
[0025] 从正常软件样本权限集P中,分别计算p1,p2,…,pn出现的频率作为该元素的支持度S,最小支持度为P中各元素最低出现的频率且介于0到1之间,在挖掘频繁1-项集后,根据最小支持度进行剪枝和连接,最后得到正常样本的频繁3-项集。
[0026] 从恶意样本权限集M中,分别计算m1,m2,…,mx出现的频率作为该元素的支持度S,在挖掘频繁1-项集后,根据最小支持度进行剪枝和连接,最后得到恶意样本的频繁3项集。
[0027] (2)特征处理
[0028] 利用Apriori算法挖掘出恶意样本和正常样本的频繁3-项集后,将其与敏感API函数一起作为特征,采用信息增益IG算法对特征属性进行筛选和评分。IG算法通过计算特征的信息熵与其条件熵的差值得到该特征的IG值,该值越大表明相关程度越大。熵值计算:根据样本集中正常软件或恶意软件分别出现的概率P (Ci) ,按照公式 :计算得到样本集的信息熵H(C)。条件熵的计算:按照公式:
分别第i个特征的条件熵H(Y|Xi)。因此,根据公式IGi=H
(C)-H(Y|Xi)计算第i个特征的IG值为,为了从众多特征中筛选有利分类正常或恶意软件的特征,从而使得特征的不确定性减少程度最大,故将IG值为0的特征剔除,而将其余值不为0的特征保留作为重要特征。
[0029] 定义集合X为应用软件保留的特征集,特征集中包括不同的特征(x1,x2,…,xn),其中,n为重要特征数。按照公式,ν:s→{0,1}|X|,根据集合X中的特征构建向量空间ν,令s表示某个应用软件,其中ν中每一维与X中某一特征相对应。如果s包含该特征,则向量空间ν中与该特征对应的标识值为1,否则为0,其标识值代表是否含有该特征。
[0030] 按照上述方法利用匹配算法对系统中每个应用软件,分别构建与之对应的向量空间ν,于是,经过特征筛选后,构建一个包含n个特征的特征集,对应每个样本生成不同的向量空间ν,并将其存入MySQL数据库,作为随机森林分类模块的输入。
[0031] (3)随机森林算法分类
[0032] 得到特征向量后,检测本质上变成一种分类问题。由于检测的结果为正常和恶意两类,所以检测本质上就属于二分类问题。而随机森林算法非常适合解决二分类问题。利用获得的向量空间ν,采用随机森林分类算法实现分类。
[0033] 具体可采用以下方法,有监督分类:针对收集到的已知正常和恶意样本集中每一应用软件,根据各应用软件属于正常还是恶意软件,在与各应用软件对应的每个向量空间的后面,对各应用软件进行正常或恶意属性的标识,如下式所述。
[0034]
[0035] 其中V(S)表示所有应用软件集合,normal表示该应用软件属于正常软件,malware表示该应用软件属于恶意软件。
[0036] 在得到训练样本集的向量空间后,对其进行训练得到随机森林分类器。将待测软件经特征提取和特征处理后,得到向量空间ν,此时的ν不含normal或malware标识符,以空白或’?’代替其值,然后使用训练样本的随机森林分类器对该待测软件的向量空间进行检测分类,在结果中以normal或malware字符串表示该待测软件是正常软件还是恶意软件,由此可实现对恶意软件的检测。
[0037] 本发明利用反编译技术,对应用软件样本集进行批量反编译,对文件中的权限和API函数进行提取。面对高维权限特征,采用Apriori算法进行降维处理,得到权限的频繁3-项集,再结合敏感API函数,通过信息增益进行特征筛选,进一步得到重要特征。将重要特征映射成向量空间,以0或1表示,并将正常应用和恶意应用进行标记,最后得到带有标记的向量空间。采用随机森林算法对样本集进行学习和分类。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈